[RFC] WIP: add usb keyboard driver

Peter Mamonov pmamonov at gmail.com
Fri Sep 11 07:56:53 PDT 2015


On Thu, 10 Sep 2015 19:21:11 +0200
Sascha Hauer <s.hauer at pengutronix.de> wrote:

> On Thu, Sep 10, 2015 at 06:51:33PM +0300, Peter Mamonov wrote:
> > On Thu, 10 Sep 2015 09:38:15 +0200
> > Sascha Hauer <s.hauer at pengutronix.de> wrote:
> > 
> > > Excellent! This makes the framebuffer console support complete :)
> > 
> > I'm sorry to dissapoint you, but this implementation of the usb
> > keyboard driver seems to be wrong. The driver employs the get_report
> > request to poll the keyboard state via the control endpoint, however
> > the "Device Class Definition for Human Interface Devices (HID)"
> > states the following:
> > "This request is not intended to be used for polling the device
> > state on a regular basis. [...] The Interrupt In pipe should be
> > used for recurring Input reports."
> > 
> > I guess this is the source of the problems with some keyboards: 2
> > of 4 keyboards I've tested changed their state only on key down,
> > but not on key up.
> 
> Yes, same here. The first keyboard I tested ended up with this
> behaviour, the second worked.
> 
> > 
> > So, according the standard, we need to poll a keyboard via interrupt
> > endpoint. However, current implementation of EHCI driver doesn't
> > support interrupt transactions: submit_int_msg() in ehci-hcd.c is a
> > stub. I'll try to implement it.
> 
> U-Boot has an implementation for it, should be possible to adopt the
> corresponding code.

I've ported missing functionality from the u-boot and switched to
polling via interrupt endpoint. After that all keyboards work fine.
Will clean up the code and post the patches.

Peter

> 
> Sascha
> 




More information about the barebox mailing list