[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