* [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 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
* [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
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.