summaryrefslogtreecommitdiffstats
path: root/target/linux/adm5120/files/arch/mips
diff options
context:
space:
mode:
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-06-08 06:37:31 +0000
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>2008-06-08 06:37:31 +0000
commitce23f8648eece445f381024a330a013fee06dd57 (patch)
treec0e3b2be7b1ef035250cd5b4673fe5c5fb6e9120 /target/linux/adm5120/files/arch/mips
parent096bb4f920ce8e2c366029ed9ac75161256d015f (diff)
[adm5120] add button devices to several boards
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11402 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/adm5120/files/arch/mips')
-rw-r--r--target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c17
-rw-r--r--target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c9
-rw-r--r--target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c12
-rw-r--r--target/linux/adm5120/files/arch/mips/adm5120/platform.c43
4 files changed, 66 insertions, 15 deletions
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c
index 0d856466d..1af0eb2d4 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/compex.c
@@ -3,8 +3,8 @@
*
* Compex boards
*
- * Copyright (C) 2007 OpenWrt.org
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007-2008 OpenWrt.org
+ * Copyright (C) 2007-2008 Gabor Juhos <juhosg at openwrt.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
@@ -57,6 +57,7 @@ static struct platform_device *np2xg_devices[] __initdata = {
static struct platform_device *wp54_devices[] __initdata = {
&adm5120_flash0_device,
+ &adm5120_buttons_device,
};
unsigned char np27g_vlans[6] __initdata = {
@@ -132,19 +133,17 @@ static void __init wp54_setup(void)
/* setup data for flash0 device */
adm5120_flash0_data.switch_bank = switch_bank_gpio5;
+ adm5120_buttons_data.nbuttons = 1;
+ adm5120_buttons[0].desc = "reset button";
+ adm5120_buttons[0].gpio = ADM5120_GPIO_PIN2;
+
/* TODO: setup mac address */
}
static void __init wp54_wrt_setup(void)
{
- gpio_request(ADM5120_GPIO_PIN5, NULL); /* for flash A20 line */
- gpio_direction_output(ADM5120_GPIO_PIN5, 0);
-
- gpio_request(ADM5120_GPIO_PIN3, NULL); /* for system reset */
- gpio_direction_output(ADM5120_GPIO_PIN3, 1);
+ wp54_setup();
- /* setup data for flash0 device */
- adm5120_flash0_data.switch_bank = switch_bank_gpio5;
adm5120_flash0_data.nr_parts = ARRAY_SIZE(wp54g_wrt_partitions);
adm5120_flash0_data.parts = wp54g_wrt_partitions;
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c
index fc3b0049c..65023ab66 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/edimax.c
@@ -3,8 +3,8 @@
*
* Edimax boards
*
- * Copyright (C) 2007 OpenWrt.org
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007-2008 OpenWrt.org
+ * Copyright (C) 2007-2008 Gabor Juhos <juhosg at openwrt.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
@@ -46,6 +46,7 @@ static struct mtd_partition br61xx_partitions[] = {
static struct platform_device *br6104k_devices[] __initdata = {
&adm5120_flash0_device,
&adm5120_hcd_device,
+ &adm5120_buttons_device,
};
static struct platform_device *br61x4wg_devices[] __initdata = {
@@ -57,6 +58,10 @@ static void __init br61xx_setup(void) {
adm5120_flash0_data.nr_parts = ARRAY_SIZE(br61xx_partitions);
adm5120_flash0_data.parts = br61xx_partitions;
+ adm5120_buttons_data.nbuttons = 1;
+ adm5120_buttons[0].desc = "reset button";
+ adm5120_buttons[0].gpio = ADM5120_GPIO_PIN2;
+
/* TODO: setup mac addresses, if possible */
}
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c
index 48a7272af..772b0eba1 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c
@@ -3,8 +3,8 @@
*
* Mikrotik RouterBOARD 1xx series
*
- * Copyright (C) 2007 OpenWrt.org
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007-2008 OpenWrt.org
+ * Copyright (C) 2007-2008 Gabor Juhos <juhosg at openwrt.org>
*
* NAND initialization code was based on a driver for Linux 2.6.19+ which
* was derived from the driver for Linux 2.4.xx published by Mikrotik for
@@ -248,6 +248,10 @@ static void __init rb1xx_setup(void)
adm5120_nand_set_spn(1);
adm5120_nand_set_wpn(0);
+ adm5120_buttons_data.nbuttons = 1;
+ adm5120_buttons[0].desc = "reset button";
+ adm5120_buttons[0].gpio = ADM5120_GPIO_PIN7;
+
rb1xx_flash_setup();
rb1xx_mac_setup();
}
@@ -269,6 +273,10 @@ static void __init rb150_setup(void)
adm5120_nand_data.ctrl.cmd_ctrl = rb150_nand_cmd_ctrl;
adm5120_nand_data.ctrl.dev_ready = rb150_nand_ready;
+ adm5120_buttons_data.nbuttons = 1;
+ adm5120_buttons[0].desc = "reset button";
+ adm5120_buttons[0].gpio = ADM5120_GPIO_PIN1;
+
adm5120_flash0_data.window_size = 512*1024;
rb1xx_flash_setup();
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/platform.c b/target/linux/adm5120/files/arch/mips/adm5120/platform.c
index bc35162cc..841d68fa4 100644
--- a/target/linux/adm5120/files/arch/mips/adm5120/platform.c
+++ b/target/linux/adm5120/files/arch/mips/adm5120/platform.c
@@ -3,8 +3,8 @@
*
* Generic ADM5120 platform devices
*
- * Copyright (C) 2007 OpenWrt.org
- * Copyright (C) 2007 Gabor Juhos <juhosg at openwrt.org>
+ * Copyright (C) 2007-2008 OpenWrt.org
+ * Copyright (C) 2007-2008 Gabor Juhos <juhosg at openwrt.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
@@ -177,6 +177,45 @@ struct amba_device adm5120_uart1_device = {
.periphid = 0x0041010,
};
+#define ADM5120_BUTTON_THRESHOLD 5
+#define ADM5120_BUTTON_INTERVAL 20
+
+struct gpio_button adm5120_buttons[ADM5120_NUM_BUTTONS] = {
+ {
+ .type = EV_KEY,
+ .code = BTN_0,
+ .threshold = ADM5120_BUTTON_THRESHOLD,
+ }, {
+ .type = EV_KEY,
+ .code = BTN_1,
+ .threshold = ADM5120_BUTTON_THRESHOLD,
+ }, {
+ .type = EV_KEY,
+ .code = BTN_2,
+ .threshold = ADM5120_BUTTON_THRESHOLD,
+ }, {
+ .type = EV_KEY,
+ .code = BTN_3,
+ .threshold = ADM5120_BUTTON_THRESHOLD,
+ }, {
+ .type = EV_KEY,
+ .code = BTN_4,
+ .threshold = ADM5120_BUTTON_THRESHOLD,
+ }
+};
+
+struct gpio_buttons_platform_data adm5120_buttons_data = {
+ .poll_interval = ADM5120_BUTTON_INTERVAL,
+ .nbuttons = ARRAY_SIZE(adm5120_buttons),
+ .buttons = adm5120_buttons,
+};
+
+struct platform_device adm5120_buttons_device = {
+ .name = "gpio-buttons",
+ .id = 0,
+ .dev.platform_data = &adm5120_buttons_data,
+};
+
void adm5120_uart_set_mctrl(struct amba_device *dev, void __iomem *base,
unsigned int mctrl)
{