[U-Boot] [PATCH v2 1/3] USB: make usb_kbd obey USB DMA alignment requirements

Allen Martin amartin at nvidia.com
Wed Oct 24 02:46:26 CEST 2012


On Tue, Oct 23, 2012 at 05:39:50PM -0700, Allen Martin wrote:
> On Tue, Oct 23, 2012 at 03:03:34PM -0700, Marek Vasut wrote:
> > Dear Allen Martin,
> > 
> > > On Tue, Oct 23, 2012 at 09:51:06AM -0700, Stephen Warren wrote:
> > > > On 10/22/2012 11:47 PM, Allen Martin wrote:
> > > > > Change usb_kbd driver to obey alignment requirements for USB DMA on
> > > > > the buffer used for data transfer.  This is necessary for
> > > > > architectures that enable dcache and enable USB DMA.
> > > > 
> > > > The series,
> > > > Tested-by: Stephen Warren <swarren at nvidia.com>
> > > > 
> > > > BTW, I tested tegra-kbc too, and that does indeed currently work (at
> > > > least in my local dev branch based on u-boot/master).
> > > 
> > > Yes, I also tried on a seaboard with internal keyboard and it works,
> > > although once the USB keyboard driver loads the internal keyboard
> > > stops working.  I haven't tracked down why, but it seems like a bug I
> > > can live with for now as seaboards with internal keyboards are pretty
> > > rare these days, and how many keyboards do you need in u-boot anyway?
> > 
> > Good thing you pointed it out. Please let's not ignore a bug. How come it 
> > happens? What happens if you have two usb keyboards connected?
> > 
> 
> I'm pretty sure the USB keyboard driver doesn't support multiple
> devices, I see this in drv_usb_kbd_init():
> 
>                 /* We found a keyboard, check if it is already
>                 registered. */
>                 USB_KBD_PRINTF("USB KBD: found set up device.\n");
>                 old_dev = stdio_get_by_name(DEVNAME);
>                 if (old_dev) {
>                         /* Already registered, just return ok. */
>                         USB_KBD_PRINTF("USB KBD: is already
>                 registered.\n");
>                         return 1;
>                 }
> 
> The bug is almost certainly inside the tegra kbd driver, which is why
> I'm not terribly concerned about it.  The only boards that use that
> driver are inside NVIDIA, and even those are rare.
> 

Ok, I dug into the driver code a little.  It's because the tegra
keyboard driver doesn't support CONSOLE_MUX, so when the USB keyboard
calls into iomux it takes away stdin from the tegra kbd driver, and it
has no way of ever getting it back.  Definately a bug, but unrelated
to this change.

-Allen
-- 
nvpublic


More information about the U-Boot mailing list