summaryrefslogtreecommitdiff
path: root/firmware/usbstack/usb_charging_only.c
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2008-04-26 19:02:16 +0000
committerFrank Gevaerts <frank@gevaerts.be>2008-04-26 19:02:16 +0000
commitbec6aa3176fc6d5ce80bcd4d6022358aa6c01629 (patch)
treedfbaa924ba3e13d6f73dc446b1a2149610ed3e67 /firmware/usbstack/usb_charging_only.c
parent33c44461e1b5fb9aff2f8ba7470ad2449b3c410e (diff)
downloadrockbox-bec6aa3176fc6d5ce80bcd4d6022358aa6c01629.tar.gz
rockbox-bec6aa3176fc6d5ce80bcd4d6022358aa6c01629.zip
- change the usb class driver framework to allow for device classes with more than one interface or more than one endpoint pair
- move the charging-only dummy driver out of usb_core git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17252 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/usbstack/usb_charging_only.c')
-rw-r--r--firmware/usbstack/usb_charging_only.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/firmware/usbstack/usb_charging_only.c b/firmware/usbstack/usb_charging_only.c
new file mode 100644
index 0000000000..501a7aa596
--- /dev/null
+++ b/firmware/usbstack/usb_charging_only.c
@@ -0,0 +1,72 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id: $
9 *
10 * Copyright (C) 2008 by Frank Gevaerts
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19#include "string.h"
20#include "system.h"
21#include "usb_core.h"
22#include "usb_drv.h"
23#include "kernel.h"
24
25//#define LOGF_ENABLE
26#include "logf.h"
27
28#ifdef USB_CHARGING_ONLY
29
30/* charging_only interface */
31static struct usb_interface_descriptor __attribute__((aligned(2)))
32 interface_descriptor =
33{
34 .bLength = sizeof(struct usb_interface_descriptor),
35 .bDescriptorType = USB_DT_INTERFACE,
36 .bInterfaceNumber = 0,
37 .bAlternateSetting = 0,
38 .bNumEndpoints = 0,
39 .bInterfaceClass = USB_CLASS_VENDOR_SPEC,
40 .bInterfaceSubClass = 0,
41 .bInterfaceProtocol = 0,
42 .iInterface = 0
43};
44
45
46static int usb_interface;
47
48int usb_charging_only_set_first_endpoint(int endpoint)
49{
50 /* The dummy charging_only driver doesn't need an endpoint pair */
51 return endpoint;
52}
53int usb_charging_only_set_first_interface(int interface)
54{
55 usb_interface = interface;
56 return interface + 1;
57}
58
59int usb_charging_only_get_config_descriptor(unsigned char *dest,int max_packet_size)
60{
61 (void)max_packet_size;
62 unsigned char *orig_dest = dest;
63
64 interface_descriptor.bInterfaceNumber=usb_interface;
65 memcpy(dest,&interface_descriptor,sizeof(struct usb_interface_descriptor));
66
67 dest+=sizeof(struct usb_interface_descriptor);
68
69 return (dest-orig_dest);
70}
71
72#endif /*USB_CHARGING_ONLY*/