summaryrefslogtreecommitdiff
path: root/firmware/usbstack/usb_core.c
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2008-03-03 12:51:32 +0000
committerFrank Gevaerts <frank@gevaerts.be>2008-03-03 12:51:32 +0000
commitc270b7a28983bd2b39c7449473a52725009c668c (patch)
tree25df734c623c026d1d96d44909a26365abb6200e /firmware/usbstack/usb_core.c
parenta9afca99a8385d42612543b0bdb6ce3ba97ed4c3 (diff)
downloadrockbox-c270b7a28983bd2b39c7449473a52725009c668c.zip
rockbox-c270b7a28983bd2b39c7449473a52725009c668c.tar.gz
rockbox-c270b7a28983bd2b39c7449473a52725009c668c.tar.bz2
rockbox-c270b7a28983bd2b39c7449473a52725009c668c.tar.xz
only send a Charging Only interface if nothing else is sent
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16499 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/usbstack/usb_core.c')
-rw-r--r--firmware/usbstack/usb_core.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/firmware/usbstack/usb_core.c b/firmware/usbstack/usb_core.c
index eef963c..64690a1 100644
--- a/firmware/usbstack/usb_core.c
+++ b/firmware/usbstack/usb_core.c
@@ -631,14 +631,6 @@ static void usb_core_control_request_handler(struct usb_ctrlrequest* req)
}
size = sizeof(struct usb_config_descriptor);
-#ifdef USB_CHARGING_ONLY
- if(usb_core_charging_enabled){
- charging_interface_descriptor.bInterfaceNumber=interface_number;
- interface_number++;
- memcpy(&response_data[size],&charging_interface_descriptor,sizeof(struct usb_interface_descriptor));
- size += sizeof(struct usb_interface_descriptor);
- }
-#endif
#ifdef USB_STORAGE
if(usb_core_storage_enabled){
mass_storage_ep_in_descriptor.wMaxPacketSize=max_packet_size;
@@ -682,6 +674,14 @@ static void usb_core_control_request_handler(struct usb_ctrlrequest* req)
size += sizeof(struct usb_endpoint_descriptor);
}
#endif
+#ifdef USB_CHARGING_ONLY
+ if(usb_core_charging_enabled && interface_number == 0){
+ charging_interface_descriptor.bInterfaceNumber=interface_number;
+ interface_number++;
+ memcpy(&response_data[size],&charging_interface_descriptor,sizeof(struct usb_interface_descriptor));
+ size += sizeof(struct usb_interface_descriptor);
+ }
+#endif
config_descriptor.bNumInterfaces=interface_number;
config_descriptor.wTotalLength = size;
memcpy(&response_data[0],&config_descriptor,sizeof(struct usb_config_descriptor));