diff options
author | Frank Gevaerts <frank@gevaerts.be> | 2009-10-19 16:21:50 +0000 |
---|---|---|
committer | Frank Gevaerts <frank@gevaerts.be> | 2009-10-19 16:21:50 +0000 |
commit | bad510ad10294083f502e32d55eea568d08b3ccb (patch) | |
tree | 6dbac2e084c2bcf84b13b4e969a16c7aaa86c547 /firmware/usbstack/usb_hid.c | |
parent | ee6557eeda8aeefa6db169f633ecdb7755dba247 (diff) | |
download | rockbox-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.c | 10 |
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; |