summaryrefslogtreecommitdiff
path: root/firmware/usbstack/usb_hid.c
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2009-10-19 16:21:50 +0000
committerFrank Gevaerts <frank@gevaerts.be>2009-10-19 16:21:50 +0000
commitbad510ad10294083f502e32d55eea568d08b3ccb (patch)
tree6dbac2e084c2bcf84b13b4e969a16c7aaa86c547 /firmware/usbstack/usb_hid.c
parentee6557eeda8aeefa6db169f633ecdb7755dba247 (diff)
downloadrockbox-bad510ad10294083f502e32d55eea568d08b3ccb.tar.gz
rockbox-bad510ad10294083f502e32d55eea568d08b3ccb.zip
Change control handling to start expecting host packets before sending data to the host. This makes the handling less timing sensitive on some controllers
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23263 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/usbstack/usb_hid.c')
-rw-r--r--firmware/usbstack/usb_hid.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/firmware/usbstack/usb_hid.c b/firmware/usbstack/usb_hid.c
index 2f592fcacd..53dd767c59 100644
--- a/firmware/usbstack/usb_hid.c
+++ b/firmware/usbstack/usb_hid.c
@@ -739,10 +739,10 @@ bool usb_hid_control_request(struct usb_ctrlrequest *req, unsigned char *dest)
739 logf("hid: unsup. std. req"); 739 logf("hid: unsup. std. req");
740 break; 740 break;
741 } 741 }
742 if (dest != orig_dest && 742 if (dest != orig_dest)
743 !usb_drv_send(EP_CONTROL, orig_dest, dest - orig_dest))
744 { 743 {
745 usb_core_ack_control(req); 744 usb_drv_recv(EP_CONTROL, NULL, 0); /* ack */
745 usb_drv_send(EP_CONTROL, orig_dest, dest - orig_dest);
746 handled = true; 746 handled = true;
747 } 747 }
748 break; 748 break;
@@ -754,14 +754,14 @@ bool usb_hid_control_request(struct usb_ctrlrequest *req, unsigned char *dest)
754 { 754 {
755 case USB_HID_SET_IDLE: 755 case USB_HID_SET_IDLE:
756 logf("hid: set idle"); 756 logf("hid: set idle");
757 usb_core_ack_control(req); 757 usb_drv_send(EP_CONTROL, NULL, 0); /* ack */
758 handled = true; 758 handled = true;
759 break; 759 break;
760 case USB_HID_SET_REPORT: 760 case USB_HID_SET_REPORT:
761 logf("hid: set report"); 761 logf("hid: set report");
762 if (!usb_hid_set_report(req)) 762 if (!usb_hid_set_report(req))
763 { 763 {
764 usb_core_ack_control(req); 764 usb_drv_send(EP_CONTROL, NULL, 0); /* ack */
765 handled = true; 765 handled = true;
766 } 766 }
767 break; 767 break;