[PATCH 4/4] usb-a926x: add DAB MMX Daughter board support
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Tue Feb 14 09:31:21 EST 2012
- gpio_keys support
- leds
- uarts 2 and 4 (for oled)
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
---
arch/arm/boards/usb-a926x/init.c | 108 ++++++++++++++++++++++++++++++++++++++
arch/arm/mach-at91/Kconfig | 9 +++
2 files changed, 117 insertions(+), 0 deletions(-)
diff --git a/arch/arm/boards/usb-a926x/init.c b/arch/arm/boards/usb-a926x/init.c
index 364c1ba..af025b4 100644
--- a/arch/arm/boards/usb-a926x/init.c
+++ b/arch/arm/boards/usb-a926x/init.c
@@ -41,6 +41,8 @@
#include <mach/io.h>
#include <mach/at91_pmc.h>
#include <mach/at91_rstc.h>
+#include <gpio_keys.h>
+#include <readkey.h>
static void usb_a9260_set_board_type(void)
{
@@ -219,6 +221,101 @@ static void __init ek_add_device_button(void)
export_env_ull("dfu_button", AT91_PIN_PB10);
}
+#ifdef CONFIG_CALAO_DAB_MMX
+struct gpio_led dab_mmx_leds[] = {
+ {
+ .gpio = AT91_PIN_PB20,
+ .led = {
+ .name = "user_led1",
+ },
+ }, {
+ .gpio = AT91_PIN_PB21,
+ .led = {
+ .name = "user_led2",
+ },
+ }, {
+ .gpio = AT91_PIN_PB22,
+ .led = {
+ .name = "user_led3",
+ },
+ }, {
+ .gpio = AT91_PIN_PB23,
+ .led = {
+ .name = "user_led4",
+ },
+ }, {
+ .gpio = AT91_PIN_PB24,
+ .led = {
+ .name = "red",
+ },
+ }, {
+ .gpio = AT91_PIN_PB30,
+ .led = {
+ .name = "orange",
+ },
+ }, {
+ .gpio = AT91_PIN_PB31,
+ .led = {
+ .name = "green",
+ },
+ },
+};
+
+#ifdef CONFIG_KEYBOARD_GPIO
+struct gpio_keys_button keys[] = {
+ {
+ .code = KEY_UP,
+ .gpio = AT91_PIN_PB25,
+ }, {
+ .code = KEY_HOME,
+ .gpio = AT91_PIN_PB13,
+ }, {
+ .code = KEY_DOWN,
+ .gpio = AT91_PIN_PA26,
+ }, {
+ .code = KEY_ENTER,
+ .gpio = AT91_PIN_PC9,
+ },
+};
+
+struct gpio_keys_platform_data gk_pdata = {
+ .buttons = keys,
+ .nbuttons = ARRAY_SIZE(keys),
+};
+
+static void usb_a9260_keyboard_device_dab_mmx(void)
+{
+ int i;
+
+ for (i = 0; i < gk_pdata.nbuttons; i++) {
+ /* user push button, pull up enabled */
+ keys[i].active_low = 1;
+ at91_set_GPIO_periph(keys[i].gpio, keys[i].active_low);
+ at91_set_deglitch(keys[i].gpio, 1);
+ }
+
+ add_gpio_keys_device(-1, &gk_pdata);
+}
+#else
+static void usb_a9260_keyboard_device_dab_mmx(void) {}
+#endif
+
+static void usb_a9260_device_dab_mmx(void)
+{
+ int i;
+
+ usb_a9260_keyboard_device_dab_mmx();
+
+ for (i = 0; i < ARRAY_SIZE(dab_mmx_leds); i++) {
+ dab_mmx_leds[i].active_low = 1;
+ at91_set_gpio_output(dab_mmx_leds[i].gpio, dab_mmx_leds[i].active_low);
+ led_gpio_register(&dab_mmx_leds[i]);
+ }
+}
+#else
+static void usb_a9260_device_dab_mmx(void) {}
+#endif
+
static int usb_a9260_devices_init(void)
{
usb_a9260_add_device_nand();
@@ -229,6 +326,7 @@ static int usb_a9260_devices_init(void)
ek_add_device_udc();
ek_add_led();
ek_add_device_button();
+ usb_a9260_device_dab_mmx();
armlinux_set_bootparams((void *)(AT91_CHIPSELECT_1 + 0x100));
usb_a9260_set_board_type();
@@ -248,7 +346,17 @@ device_initcall(usb_a9260_devices_init);
static int usb_a9260_console_init(void)
{
+ struct device_d *dev;
+
at91_register_uart(0, 0);
+
+ if (IS_ENABLED(CONFIG_CALAO_DAB_MMX)) {
+ at91_register_uart(2, 0);
+
+ dev = at91_register_uart(4, 0);
+ dev_set_param(dev, "active", "");
+ }
+
return 0;
}
console_initcall(usb_a9260_console_init);
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index 41e9b99..d2bb7bc 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -93,6 +93,9 @@ config ARCH_BAREBOX_MAX_BARE_INIT_SIZE
default 0xF000 if ARCH_AT91SAM9G45
default 0xffffffff
+config SUPPORT_CALAO_DAB_MMX
+ bool
+
# ----------------------------------------------------------
if ARCH_AT91RM9200
@@ -133,6 +136,7 @@ config MACH_TNY_A9260
config MACH_USB_A9260
bool "CALAO USB-A9260"
+ select SUPPORT_CALAO_DAB_MMX
help
Select this if you are using a Calao Systems USB-A9260.
<http://www.calao-systems.com>
@@ -209,6 +213,7 @@ config MACH_TNY_A9G20
config MACH_USB_A9G20
bool "CALAO USB-A9G20"
+ select SUPPORT_CALAO_DAB_MMX
help
Select this if you are using a Calao Systems USB-A9G20.
<http://www.calao-systems.com>
@@ -328,4 +333,8 @@ config LCD_LG_LB043WQ1
endchoice
+config CALAO_DAB_MMX
+ bool "DAB MMX Daughter Board support"
+ depends on SUPPORT_CALAO_DAB_MMX
+
endif
--
1.7.7
More information about the barebox
mailing list