* [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements @ 2012-10-22 21:39 Allen Martin 2012-10-22 21:39 ` [U-Boot] [PATCH 2/2] tegra: seaboard: Enable USB keyboard Allen Martin 2012-10-22 21:59 ` [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements Stephen Warren 0 siblings, 2 replies; 7+ messages in thread From: Allen Martin @ 2012-10-22 21:39 UTC (permalink / raw) To: u-boot 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. Signed-off-by: Allen Martin <amartin@nvidia.com> --- common/usb_kbd.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/common/usb_kbd.c b/common/usb_kbd.c index 19f01db..cfc1281 100644 --- a/common/usb_kbd.c +++ b/common/usb_kbd.c @@ -28,6 +28,7 @@ #include <malloc.h> #include <stdio_dev.h> #include <asm/byteorder.h> +#include <linux/compiler.h> #include <usb.h> @@ -106,17 +107,17 @@ static const unsigned char usb_kbd_num_keypad[] = { (USB_KBD_NUMLOCK | USB_KBD_CAPSLOCK | USB_KBD_SCROLLLOCK) struct usb_kbd_pdata { + uint8_t new[8]; + uint8_t old[8]; + uint32_t repeat_delay; uint32_t usb_in_pointer; uint32_t usb_out_pointer; uint8_t usb_kbd_buffer[USB_KBD_BUFFER_LEN]; - uint8_t new[8]; - uint8_t old[8]; - uint8_t flags; -}; +} __aligned(USB_DMA_MINALIGN); /* Generic keyboard event polling. */ void usb_kbd_generic_poll(void) -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 2/2] tegra: seaboard: Enable USB keyboard 2012-10-22 21:39 [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements Allen Martin @ 2012-10-22 21:39 ` Allen Martin 2012-10-22 21:56 ` Stephen Warren 2012-10-22 21:59 ` [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements Stephen Warren 1 sibling, 1 reply; 7+ messages in thread From: Allen Martin @ 2012-10-22 21:39 UTC (permalink / raw) To: u-boot Enable USB keyboard for the springbank variant of seaboard Signed-off-by: Allen Martin <amartin@nvidia.com> --- include/configs/seaboard.h | 5 ++++- include/configs/tegra20-common.h | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/configs/seaboard.h b/include/configs/seaboard.h index 0727a4c..9e27050 100644 --- a/include/configs/seaboard.h +++ b/include/configs/seaboard.h @@ -33,6 +33,9 @@ #define CONFIG_TPS6586X_POWER #define CONFIG_TEGRA_CLOCK_SCALING +/* Enable USB keyboard */ +#define CONFIG_USB_KEYBOARD + #include "tegra20-common.h" /* Enable fdt support for Seaboard. Flash the image in u-boot-dtb.bin */ @@ -99,7 +102,7 @@ #define CONFIG_KEYBOARD #undef TEGRA_DEVICE_SETTINGS -#define TEGRA_DEVICE_SETTINGS "stdin=serial,tegra-kbc\0" \ +#define TEGRA_DEVICE_SETTINGS "stdin=serial,tegra-kbc,usbkbd\0" \ "stdout=serial\0" \ "stderr=serial\0" diff --git a/include/configs/tegra20-common.h b/include/configs/tegra20-common.h index d7d6dc3..1448888 100644 --- a/include/configs/tegra20-common.h +++ b/include/configs/tegra20-common.h @@ -102,6 +102,11 @@ #define CONFIG_EHCI_IS_TDI #define CONFIG_EHCI_DCACHE +#ifdef CONFIG_USB_KEYBOARD +#define CONFIG_SYS_USB_EVENT_POLL +#define CONFIG_PREBOOT "usb start" +#endif /* CONFIG_USB_KEYBOARD */ + /* Total I2C ports on Tegra20 */ #define TEGRA_I2C_NUM_CONTROLLERS 4 -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 2/2] tegra: seaboard: Enable USB keyboard 2012-10-22 21:39 ` [U-Boot] [PATCH 2/2] tegra: seaboard: Enable USB keyboard Allen Martin @ 2012-10-22 21:56 ` Stephen Warren 2012-10-22 22:58 ` Allen Martin 0 siblings, 1 reply; 7+ messages in thread From: Stephen Warren @ 2012-10-22 21:56 UTC (permalink / raw) To: u-boot On 10/22/2012 03:39 PM, Allen Martin wrote: > Enable USB keyboard for the springbank variant of seaboard This sounds nice! > diff --git a/include/configs/seaboard.h b/include/configs/seaboard.h > #undef TEGRA_DEVICE_SETTINGS > -#define TEGRA_DEVICE_SETTINGS "stdin=serial,tegra-kbc\0" \ > +#define TEGRA_DEVICE_SETTINGS "stdin=serial,tegra-kbc,usbkbd\0" \ > "stdout=serial\0" \ > "stderr=serial\0" Rather than duplicating this everywhere (and I imagine now that this support works, most Tegra boards will want to turn on USB keyboard), can't we do something automatic in tegra-common-post.h, like: #ifdef CONFIG_TEGRA_KEYBOARD #define STDIN_KBD_KBC ",tegra-kbc" #else #define STDIN_KBD_KBC "" #endif #ifdef CONFIG_USB_KEYBOARD #define STDIN_KBD_USB ",usbkbd" #else #define STDIN_KBD_USB "" #endif #define TEGRA_DEVICE_SETTINGS \ "stdin=serial" STDIN_KBD_KBC STDIN_KBD_USB "\" \ ... By the way, does tegra-kbc work now/yet? The last time I tried it, I don't think it did. > diff --git a/include/configs/tegra20-common.h b/include/configs/tegra20-common.h > +#ifdef CONFIG_USB_KEYBOARD > +#define CONFIG_SYS_USB_EVENT_POLL > +#define CONFIG_PREBOOT "usb start" > +#endif /* CONFIG_USB_KEYBOARD */ Similarly, we could also e.g. turn on CONFIG_KEYBOARD whenever CONFIG_TEGRA_KEYBOARD is turned on, and perhaps a bunch of other similar things, like moving much of the partition/filesystem/command/... support into the Tegra common files. That would be something for another patch though. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 2/2] tegra: seaboard: Enable USB keyboard 2012-10-22 21:56 ` Stephen Warren @ 2012-10-22 22:58 ` Allen Martin 2012-10-22 23:13 ` Stephen Warren 0 siblings, 1 reply; 7+ messages in thread From: Allen Martin @ 2012-10-22 22:58 UTC (permalink / raw) To: u-boot On Mon, Oct 22, 2012 at 02:56:44PM -0700, Stephen Warren wrote: > On 10/22/2012 03:39 PM, Allen Martin wrote: > > Enable USB keyboard for the springbank variant of seaboard > > This sounds nice! > > > diff --git a/include/configs/seaboard.h b/include/configs/seaboard.h > > > #undef TEGRA_DEVICE_SETTINGS > > -#define TEGRA_DEVICE_SETTINGS "stdin=serial,tegra-kbc\0" \ > > +#define TEGRA_DEVICE_SETTINGS "stdin=serial,tegra-kbc,usbkbd\0" \ > > "stdout=serial\0" \ > > "stderr=serial\0" > > Rather than duplicating this everywhere (and I imagine now that this > support works, most Tegra boards will want to turn on USB keyboard), > can't we do something automatic in tegra-common-post.h, like: > > #ifdef CONFIG_TEGRA_KEYBOARD > #define STDIN_KBD_KBC ",tegra-kbc" > #else > #define STDIN_KBD_KBC "" > #endif > > #ifdef CONFIG_USB_KEYBOARD > #define STDIN_KBD_USB ",usbkbd" > #else > #define STDIN_KBD_USB "" > #endif > > #define TEGRA_DEVICE_SETTINGS \ > "stdin=serial" STDIN_KBD_KBC STDIN_KBD_USB "\" \ > ... The only issue I see with that is TEGRA_DEVICE_SETTINGS can be used by boards today to add additional environment as well as override stdin/stdout/stderr. I don't think any boards actually do though, so we could just make a TEGRA_EXTRA_DEVICE_SETTINGS if that need comes up. We might as well just put this directly in CONFIG_EXTRA_ENV_SETTINGS because if TEGRA_DEVICE_SETTINGS is private to tegra-common-post.h there's really no reason for it to exist. > > By the way, does tegra-kbc work now/yet? The last time I tried it, I > don't think it did. It was working at one point, but I haven't tried it recently. > > > diff --git a/include/configs/tegra20-common.h b/include/configs/tegra20-common.h > > > +#ifdef CONFIG_USB_KEYBOARD > > +#define CONFIG_SYS_USB_EVENT_POLL > > +#define CONFIG_PREBOOT "usb start" > > +#endif /* CONFIG_USB_KEYBOARD */ > > Similarly, we could also e.g. turn on CONFIG_KEYBOARD whenever > CONFIG_TEGRA_KEYBOARD is turned on, and perhaps a bunch of other similar > things, like moving much of the partition/filesystem/command/... support > into the Tegra common files. That would be something for another patch > though. Sure, looks like there's pleny of room for commonizing more stuff from the board confgs and triggering off tegra feature defines like CONFIG_TEGRA_I2C, CONFIG_TEGRA_MMC, CONFIG_USB_EHCI_TEGRA, CONFIG_TEGRA_KEYBOARD. I'll look at making a separate patch for that. -Allen -- nvpublic ^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 2/2] tegra: seaboard: Enable USB keyboard 2012-10-22 22:58 ` Allen Martin @ 2012-10-22 23:13 ` Stephen Warren 0 siblings, 0 replies; 7+ messages in thread From: Stephen Warren @ 2012-10-22 23:13 UTC (permalink / raw) To: u-boot On 10/22/2012 04:58 PM, Allen Martin wrote: > On Mon, Oct 22, 2012 at 02:56:44PM -0700, Stephen Warren wrote: >> On 10/22/2012 03:39 PM, Allen Martin wrote: >>> Enable USB keyboard for the springbank variant of seaboard >> >> This sounds nice! >> >>> diff --git a/include/configs/seaboard.h b/include/configs/seaboard.h >> >>> #undef TEGRA_DEVICE_SETTINGS >>> -#define TEGRA_DEVICE_SETTINGS "stdin=serial,tegra-kbc\0" \ >>> +#define TEGRA_DEVICE_SETTINGS "stdin=serial,tegra-kbc,usbkbd\0" \ >>> "stdout=serial\0" \ >>> "stderr=serial\0" >> >> Rather than duplicating this everywhere (and I imagine now that this >> support works, most Tegra boards will want to turn on USB keyboard), >> can't we do something automatic in tegra-common-post.h, like: >> >> #ifdef CONFIG_TEGRA_KEYBOARD >> #define STDIN_KBD_KBC ",tegra-kbc" >> #else >> #define STDIN_KBD_KBC "" >> #endif >> >> #ifdef CONFIG_USB_KEYBOARD >> #define STDIN_KBD_USB ",usbkbd" >> #else >> #define STDIN_KBD_USB "" >> #endif >> >> #define TEGRA_DEVICE_SETTINGS \ >> "stdin=serial" STDIN_KBD_KBC STDIN_KBD_USB "\" \ >> ... > > The only issue I see with that is TEGRA_DEVICE_SETTINGS can be used by > boards today to add additional environment as well as override > stdin/stdout/stderr. I don't think any boards actually do though, so > we could just make a TEGRA_EXTRA_DEVICE_SETTINGS if that need comes > up. The common file could always only #define TEGRA_DEVICE_SETTINGS if the board didn't already define a custom version. > We might as well just put this directly in CONFIG_EXTRA_ENV_SETTINGS > because if TEGRA_DEVICE_SETTINGS is private to tegra-common-post.h > there's really no reason for it to exist. It may be useful to keep it; I separated out MEM_LAYOUT_ENV_SETTINGS and BOOTCMDS_COMMON for example just so that EXTRA_ENV_SETTINGS could be built out of a few smaller and hence more manageable pieces. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements 2012-10-22 21:39 [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements Allen Martin 2012-10-22 21:39 ` [U-Boot] [PATCH 2/2] tegra: seaboard: Enable USB keyboard Allen Martin @ 2012-10-22 21:59 ` Stephen Warren 2012-10-22 22:35 ` Allen Martin 1 sibling, 1 reply; 7+ messages in thread From: Stephen Warren @ 2012-10-22 21:59 UTC (permalink / raw) To: u-boot On 10/22/2012 03:39 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. > diff --git a/common/usb_kbd.c b/common/usb_kbd.c > struct usb_kbd_pdata { > + uint8_t new[8]; > + uint8_t old[8]; > + > uint32_t repeat_delay; > > uint32_t usb_in_pointer; > uint32_t usb_out_pointer; > uint8_t usb_kbd_buffer[USB_KBD_BUFFER_LEN]; > > - uint8_t new[8]; > - uint8_t old[8]; > - > uint8_t flags; > -}; > +} __aligned(USB_DMA_MINALIGN); Surely you need to edit the malloc() call in usb_kbd_probe() instead of adding __aligned to the type; does the alignment on the type really get propagated into malloc(), or as custom code at the call-site somehow? ^ permalink raw reply [flat|nested] 7+ messages in thread
* [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements 2012-10-22 21:59 ` [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements Stephen Warren @ 2012-10-22 22:35 ` Allen Martin 0 siblings, 0 replies; 7+ messages in thread From: Allen Martin @ 2012-10-22 22:35 UTC (permalink / raw) To: u-boot On Mon, Oct 22, 2012 at 02:59:43PM -0700, Stephen Warren wrote: > On 10/22/2012 03:39 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. > > > diff --git a/common/usb_kbd.c b/common/usb_kbd.c > > > struct usb_kbd_pdata { > > + uint8_t new[8]; > > + uint8_t old[8]; > > + > > uint32_t repeat_delay; > > > > uint32_t usb_in_pointer; > > uint32_t usb_out_pointer; > > uint8_t usb_kbd_buffer[USB_KBD_BUFFER_LEN]; > > > > - uint8_t new[8]; > > - uint8_t old[8]; > > - > > uint8_t flags; > > -}; > > +} __aligned(USB_DMA_MINALIGN); > > Surely you need to edit the malloc() call in usb_kbd_probe() instead of > adding __aligned to the type; does the alignment on the type really get > propagated into malloc(), or as custom code at the call-site somehow? Yes, you're right. I misread the code and thought it came from a static allocation. I got reassured when I added the change and the cache flush alignment warnings went away, but I guess these alignment things are always a crapshoot anyway. I'll fix, thanks for finding that. -Allen -- nvpublic ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-10-22 23:13 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-10-22 21:39 [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements Allen Martin 2012-10-22 21:39 ` [U-Boot] [PATCH 2/2] tegra: seaboard: Enable USB keyboard Allen Martin 2012-10-22 21:56 ` Stephen Warren 2012-10-22 22:58 ` Allen Martin 2012-10-22 23:13 ` Stephen Warren 2012-10-22 21:59 ` [U-Boot] [PATCH 1/2] USB: make usb_kbd obey USB DMA alignment requirements Stephen Warren 2012-10-22 22:35 ` Allen Martin
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.