From bad510ad10294083f502e32d55eea568d08b3ccb Mon Sep 17 00:00:00 2001 From: Frank Gevaerts Date: Mon, 19 Oct 2009 16:21:50 +0000 Subject: 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 --- firmware/usbstack/usb_hid.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'firmware/usbstack/usb_hid.c') 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) logf("hid: unsup. std. req"); break; } - if (dest != orig_dest && - !usb_drv_send(EP_CONTROL, orig_dest, dest - orig_dest)) + if (dest != orig_dest) { - usb_core_ack_control(req); + usb_drv_recv(EP_CONTROL, NULL, 0); /* ack */ + usb_drv_send(EP_CONTROL, orig_dest, dest - orig_dest); handled = true; } break; @@ -754,14 +754,14 @@ bool usb_hid_control_request(struct usb_ctrlrequest *req, unsigned char *dest) { case USB_HID_SET_IDLE: logf("hid: set idle"); - usb_core_ack_control(req); + usb_drv_send(EP_CONTROL, NULL, 0); /* ack */ handled = true; break; case USB_HID_SET_REPORT: logf("hid: set report"); if (!usb_hid_set_report(req)) { - usb_core_ack_control(req); + usb_drv_send(EP_CONTROL, NULL, 0); /* ack */ handled = true; } break; -- cgit v1.2.3