Add working USB HID driver, by Tomer Shalev (part of his GSoC work).

This needs support for usb interrupt transfers, so there are some changes in various USB drivers as well (only usb-drv-arc supports it at this point, others won't have working HID yet).

HID is disabled for now, as the apps/ part is not included yet.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20962 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Frank Gevaerts 2009-05-16 15:30:09 +00:00
parent e435e4d976
commit 69a4117c1d
16 changed files with 413 additions and 231 deletions

View file

@ -77,11 +77,12 @@ static int usb_interface;
int usb_serial_request_endpoints(struct usb_class_driver *drv)
{
ep_in = usb_core_request_endpoint(USB_DIR_IN, drv);
ep_in = usb_core_request_endpoint(USB_ENDPOINT_XFER_BULK, USB_DIR_IN, drv);
if (ep_in < 0)
return -1;
ep_out = usb_core_request_endpoint(USB_DIR_OUT, drv);
ep_out = usb_core_request_endpoint(USB_ENDPOINT_XFER_BULK, USB_DIR_OUT,
drv);
if (ep_out < 0) {
usb_core_release_endpoint(ep_in);
return -1;
@ -101,15 +102,15 @@ int usb_serial_get_config_descriptor(unsigned char *dest, int max_packet_size)
unsigned char *orig_dest = dest;
interface_descriptor.bInterfaceNumber = usb_interface;
PACK_DESCRIPTOR(dest, interface_descriptor);
PACK_DATA(dest, interface_descriptor);
endpoint_descriptor.wMaxPacketSize = max_packet_size;
endpoint_descriptor.bEndpointAddress = ep_in;
PACK_DESCRIPTOR(dest, endpoint_descriptor);
PACK_DATA(dest, endpoint_descriptor);
endpoint_descriptor.bEndpointAddress = ep_out;
PACK_DESCRIPTOR(dest, endpoint_descriptor);
PACK_DATA(dest, endpoint_descriptor);
return (dest - orig_dest);
}