[U-Boot] [PATCH] usb: kbd: Fix key repeat not always using

Marek Vasut marex at denx.de
Wed May 13 22:03:47 CEST 2015


On Wednesday, May 13, 2015 at 02:46:34 PM, Hans de Goede wrote:
> Hi,
> 
> On 12-05-15 21:30, Marek Vasut wrote:
> > On Tuesday, May 12, 2015 at 06:58:23 PM, Hans de Goede wrote:
> >> The usb-kbd key repeat code assumes that reports get repeated every 40
> >> ms, this is never true when using
> >> CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP, and does not always works for
> >> CONFIG_SYS_USB_EVENT_POLL and
> >> CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE since not all usb keyboards
> >> honor the usb_set_idle() command.
> >> 
> >> For CONFIG_SYS_USB_EVENT_POLL we must use usb_set_idle() since we do a
> >> blocking wait for the hid report, so if we do not tell the keyboard to
> >> send a hid report every 40ms even if nothing changes then we will block
> >> u-boot for 1s (the default u-boot usb interrupt packet timeout). Note
> >> that in this case on keyboards which do not support usb_set_idle() we
> >> loose and we actually get 1s latencies on other u-boot activities.
> >> 
> >> For the other poll-methods this commit stops using usb_set_idle() and
> >> instead repeats the last received hid-report every 40 ms as long as no
> >> new hid-report is received. This fixes key-repeat not working at all
> >> with CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP and fixes it not working
> >> with keyboards which do not implement usb_set_idle() when using
> >> CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE.
> >> 
> >> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> > 
> > Looks reasonable, I don't really care about the ifdef indent, but the
> > data type for get_timer() should be fixed. Otherwise,
> 
> OK v2 with last_report changed to unsigned_long is coming up.
> 
> > Reviewed-by: Marek Vasut <marex at denx.de>
> > 
> > Would this finally be a patch to pick through the USB tree ? :b
> 
> Yes!  :)

It's been getting quite boring in u-boot-usb, thanks ;-)

Best regards,
Marek Vasut


More information about the U-Boot mailing list