
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@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