diff options
| author | Frank Gevaerts <frank@gevaerts.be> | 2008-04-26 19:02:16 +0000 |
|---|---|---|
| committer | Frank Gevaerts <frank@gevaerts.be> | 2008-04-26 19:02:16 +0000 |
| commit | bec6aa3176fc6d5ce80bcd4d6022358aa6c01629 (patch) | |
| tree | dfbaa924ba3e13d6f73dc446b1a2149610ed3e67 /firmware/usbstack/usb_storage.c | |
| parent | 33c44461e1b5fb9aff2f8ba7470ad2449b3c410e (diff) | |
| download | rockbox-bec6aa3176fc6d5ce80bcd4d6022358aa6c01629.zip rockbox-bec6aa3176fc6d5ce80bcd4d6022358aa6c01629.tar.gz rockbox-bec6aa3176fc6d5ce80bcd4d6022358aa6c01629.tar.bz2 rockbox-bec6aa3176fc6d5ce80bcd4d6022358aa6c01629.tar.xz | |
- 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_storage.c')
| -rw-r--r-- | firmware/usbstack/usb_storage.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/firmware/usbstack/usb_storage.c b/firmware/usbstack/usb_storage.c index 693d50c..c7bced9 100644 --- a/firmware/usbstack/usb_storage.c +++ b/firmware/usbstack/usb_storage.c @@ -326,23 +326,32 @@ void usb_storage_init(void) } -int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size, - int interface_number,int endpoint) +int usb_storage_set_first_endpoint(int endpoint) { - endpoint_descriptor.wMaxPacketSize=max_packet_size; - interface_descriptor.bInterfaceNumber=interface_number; + usb_endpoint = endpoint; + return endpoint + 1; +} +int usb_storage_set_first_interface(int interface) +{ + usb_interface = interface; + return interface + 1; +} +int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size) +{ + endpoint_descriptor.wMaxPacketSize=max_packet_size; + interface_descriptor.bInterfaceNumber=usb_interface; memcpy(dest,&interface_descriptor, sizeof(struct usb_interface_descriptor)); dest+=sizeof(struct usb_interface_descriptor); - endpoint_descriptor.bEndpointAddress = endpoint | USB_DIR_IN, + endpoint_descriptor.bEndpointAddress = usb_endpoint | USB_DIR_IN, memcpy(dest,&endpoint_descriptor, sizeof(struct usb_endpoint_descriptor)); dest+=sizeof(struct usb_endpoint_descriptor); - endpoint_descriptor.bEndpointAddress = endpoint | USB_DIR_OUT, + endpoint_descriptor.bEndpointAddress = usb_endpoint | USB_DIR_OUT, memcpy(dest,&endpoint_descriptor, sizeof(struct usb_endpoint_descriptor)); @@ -350,11 +359,8 @@ int usb_storage_get_config_descriptor(unsigned char *dest,int max_packet_size, 2*sizeof(struct usb_endpoint_descriptor); } -void usb_storage_init_connection(int interface,int endpoint) +void usb_storage_init_connection(void) { - usb_interface = interface; - usb_endpoint = endpoint; - logf("ums: set config"); /* prime rx endpoint. We only need room for commands */ state = WAITING_FOR_COMMAND; @@ -377,8 +383,9 @@ void usb_storage_init_connection(int interface,int endpoint) } /* called by usb_core_transfer_complete() */ -void usb_storage_transfer_complete(bool in,int status,int length) +void usb_storage_transfer_complete(int ep,bool in,int status,int length) { + (void)ep; struct command_block_wrapper* cbw = (void*)tb.transfer_buffer; //logf("transfer result %X %d", status, length); |