From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Sat, 14 Nov 2015 02:16:46 +0100 Subject: [U-Boot] [PATCH] usb: kbd: don't use int xfers when polling via ctrl xfers In-Reply-To: <1447446849-10438-1-git-send-email-swarren@wwwdotorg.org> References: <1447446849-10438-1-git-send-email-swarren@wwwdotorg.org> Message-ID: <201511140216.46768.marex@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Friday, November 13, 2015 at 09:34:09 PM, Stephen Warren wrote: > From: Stephen Warren > > When CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP is enabled, use a > GET_REPORT control transfer to retrieve the initial state of the > keyboard. This matches the technique used to poll the keyboard state. > This is useful since it eliminates the remaining use of interrupt > transfers from the USB keyboard driver, which allows it to work with > USB HCD that don't support interrupt transfers. > > Cc: Hans de Goede > Signed-off-by: Stephen Warren > --- > Are there any disadvantages to using control transfers over interrupt > transfers? I'm not aware of any, but I assume there must be a reason > that U-Boot typically uses interrupt transfers. I initially implemented the control EP polling because I had a keyboard which had issues with interrupt transfers. Reviewed-by: Marek Vasut > --- > common/usb_kbd.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/common/usb_kbd.c b/common/usb_kbd.c > index 95912f99c767..81c4d62c632b 100644 > --- a/common/usb_kbd.c > +++ b/common/usb_kbd.c > @@ -475,6 +475,9 @@ static int usb_kbd_probe(struct usb_device *dev, > unsigned int ifnum) USB_KBD_BOOT_REPORT_SIZE, data->new, > data->intinterval); > if (!data->intq) { > +#elif defined(CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP) > + if (usb_get_report(dev, iface->desc.bInterfaceNumber, > + 1, 0, data->new, USB_KBD_BOOT_REPORT_SIZE) < 0) { > #else > if (usb_submit_int_msg(dev, data->intpipe, data->new, data->intpktsize, > data->intinterval) < 0) { Best regards, Marek Vasut