diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2012-03-14 15:39:35 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2012-05-15 11:49:11 -0400 |
commit | 9598111f49ade848aa44f431ee81a42a000c8b3c (patch) | |
tree | cdc3e6c1172ca8363332a63fad47d604bc1923e2 /arch/mips/ath79 | |
parent | ec9502599cd837c8e4e279585817d1ffb1249126 (diff) |
MIPS: ath79: add initial support for the Atheros DB120 board
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
Acked-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
Cc: linux-mips@linux-mips.org
Cc: mcgrof@infradead.org
Patchwork: https://patchwork.linux-mips.org/patch/3517/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/ath79')
-rw-r--r-- | arch/mips/ath79/Kconfig | 12 | ||||
-rw-r--r-- | arch/mips/ath79/Makefile | 1 | ||||
-rw-r--r-- | arch/mips/ath79/mach-db120.c | 134 | ||||
-rw-r--r-- | arch/mips/ath79/machtypes.h | 1 |
4 files changed, 148 insertions, 0 deletions
diff --git a/arch/mips/ath79/Kconfig b/arch/mips/ath79/Kconfig index ea28e89d0a3c..f44feee2d67f 100644 --- a/arch/mips/ath79/Kconfig +++ b/arch/mips/ath79/Kconfig | |||
@@ -26,6 +26,18 @@ config ATH79_MACH_AP81 | |||
26 | Say 'Y' here if you want your kernel to support the | 26 | Say 'Y' here if you want your kernel to support the |
27 | Atheros AP81 reference board. | 27 | Atheros AP81 reference board. |
28 | 28 | ||
29 | config ATH79_MACH_DB120 | ||
30 | bool "Atheros DB120 reference board" | ||
31 | select SOC_AR934X | ||
32 | select ATH79_DEV_GPIO_BUTTONS | ||
33 | select ATH79_DEV_LEDS_GPIO | ||
34 | select ATH79_DEV_SPI | ||
35 | select ATH79_DEV_USB | ||
36 | select ATH79_DEV_WMAC | ||
37 | help | ||
38 | Say 'Y' here if you want your kernel to support the | ||
39 | Atheros DB120 reference board. | ||
40 | |||
29 | config ATH79_MACH_PB44 | 41 | config ATH79_MACH_PB44 |
30 | bool "Atheros PB44 reference board" | 42 | bool "Atheros PB44 reference board" |
31 | select SOC_AR71XX | 43 | select SOC_AR71XX |
diff --git a/arch/mips/ath79/Makefile b/arch/mips/ath79/Makefile index 221a76a9fb45..2b54d98263f3 100644 --- a/arch/mips/ath79/Makefile +++ b/arch/mips/ath79/Makefile | |||
@@ -28,5 +28,6 @@ obj-$(CONFIG_ATH79_DEV_WMAC) += dev-wmac.o | |||
28 | # | 28 | # |
29 | obj-$(CONFIG_ATH79_MACH_AP121) += mach-ap121.o | 29 | obj-$(CONFIG_ATH79_MACH_AP121) += mach-ap121.o |
30 | obj-$(CONFIG_ATH79_MACH_AP81) += mach-ap81.o | 30 | obj-$(CONFIG_ATH79_MACH_AP81) += mach-ap81.o |
31 | obj-$(CONFIG_ATH79_MACH_DB120) += mach-db120.o | ||
31 | obj-$(CONFIG_ATH79_MACH_PB44) += mach-pb44.o | 32 | obj-$(CONFIG_ATH79_MACH_PB44) += mach-pb44.o |
32 | obj-$(CONFIG_ATH79_MACH_UBNT_XM) += mach-ubnt-xm.o | 33 | obj-$(CONFIG_ATH79_MACH_UBNT_XM) += mach-ubnt-xm.o |
diff --git a/arch/mips/ath79/mach-db120.c b/arch/mips/ath79/mach-db120.c new file mode 100644 index 000000000000..1983e4d2af4b --- /dev/null +++ b/arch/mips/ath79/mach-db120.c | |||
@@ -0,0 +1,134 @@ | |||
1 | /* | ||
2 | * Atheros DB120 reference board support | ||
3 | * | ||
4 | * Copyright (c) 2011 Qualcomm Atheros | ||
5 | * Copyright (c) 2011 Gabor Juhos <juhosg@openwrt.org> | ||
6 | * | ||
7 | * Permission to use, copy, modify, and/or distribute this software for any | ||
8 | * purpose with or without fee is hereby granted, provided that the above | ||
9 | * copyright notice and this permission notice appear in all copies. | ||
10 | * | ||
11 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
12 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
13 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
14 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
15 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
16 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
17 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
18 | * | ||
19 | */ | ||
20 | |||
21 | #include <linux/pci.h> | ||
22 | #include <linux/ath9k_platform.h> | ||
23 | |||
24 | #include "machtypes.h" | ||
25 | #include "dev-gpio-buttons.h" | ||
26 | #include "dev-leds-gpio.h" | ||
27 | #include "dev-spi.h" | ||
28 | #include "dev-wmac.h" | ||
29 | #include "pci.h" | ||
30 | |||
31 | #define DB120_GPIO_LED_WLAN_5G 12 | ||
32 | #define DB120_GPIO_LED_WLAN_2G 13 | ||
33 | #define DB120_GPIO_LED_STATUS 14 | ||
34 | #define DB120_GPIO_LED_WPS 15 | ||
35 | |||
36 | #define DB120_GPIO_BTN_WPS 16 | ||
37 | |||
38 | #define DB120_KEYS_POLL_INTERVAL 20 /* msecs */ | ||
39 | #define DB120_KEYS_DEBOUNCE_INTERVAL (3 * DB120_KEYS_POLL_INTERVAL) | ||
40 | |||
41 | #define DB120_WMAC_CALDATA_OFFSET 0x1000 | ||
42 | #define DB120_PCIE_CALDATA_OFFSET 0x5000 | ||
43 | |||
44 | static struct gpio_led db120_leds_gpio[] __initdata = { | ||
45 | { | ||
46 | .name = "db120:green:status", | ||
47 | .gpio = DB120_GPIO_LED_STATUS, | ||
48 | .active_low = 1, | ||
49 | }, | ||
50 | { | ||
51 | .name = "db120:green:wps", | ||
52 | .gpio = DB120_GPIO_LED_WPS, | ||
53 | .active_low = 1, | ||
54 | }, | ||
55 | { | ||
56 | .name = "db120:green:wlan-5g", | ||
57 | .gpio = DB120_GPIO_LED_WLAN_5G, | ||
58 | .active_low = 1, | ||
59 | }, | ||
60 | { | ||
61 | .name = "db120:green:wlan-2g", | ||
62 | .gpio = DB120_GPIO_LED_WLAN_2G, | ||
63 | .active_low = 1, | ||
64 | }, | ||
65 | }; | ||
66 | |||
67 | static struct gpio_keys_button db120_gpio_keys[] __initdata = { | ||
68 | { | ||
69 | .desc = "WPS button", | ||
70 | .type = EV_KEY, | ||
71 | .code = KEY_WPS_BUTTON, | ||
72 | .debounce_interval = DB120_KEYS_DEBOUNCE_INTERVAL, | ||
73 | .gpio = DB120_GPIO_BTN_WPS, | ||
74 | .active_low = 1, | ||
75 | }, | ||
76 | }; | ||
77 | |||
78 | static struct spi_board_info db120_spi_info[] = { | ||
79 | { | ||
80 | .bus_num = 0, | ||
81 | .chip_select = 0, | ||
82 | .max_speed_hz = 25000000, | ||
83 | .modalias = "s25sl064a", | ||
84 | } | ||
85 | }; | ||
86 | |||
87 | static struct ath79_spi_platform_data db120_spi_data = { | ||
88 | .bus_num = 0, | ||
89 | .num_chipselect = 1, | ||
90 | }; | ||
91 | |||
92 | #ifdef CONFIG_PCI | ||
93 | static struct ath9k_platform_data db120_ath9k_data; | ||
94 | |||
95 | static int db120_pci_plat_dev_init(struct pci_dev *dev) | ||
96 | { | ||
97 | switch (PCI_SLOT(dev->devfn)) { | ||
98 | case 0: | ||
99 | dev->dev.platform_data = &db120_ath9k_data; | ||
100 | break; | ||
101 | } | ||
102 | |||
103 | return 0; | ||
104 | } | ||
105 | |||
106 | static void __init db120_pci_init(u8 *eeprom) | ||
107 | { | ||
108 | memcpy(db120_ath9k_data.eeprom_data, eeprom, | ||
109 | sizeof(db120_ath9k_data.eeprom_data)); | ||
110 | |||
111 | ath79_pci_set_plat_dev_init(db120_pci_plat_dev_init); | ||
112 | ath79_register_pci(); | ||
113 | } | ||
114 | #else | ||
115 | static inline void db120_pci_init(void) {} | ||
116 | #endif /* CONFIG_PCI */ | ||
117 | |||
118 | static void __init db120_setup(void) | ||
119 | { | ||
120 | u8 *art = (u8 *) KSEG1ADDR(0x1fff0000); | ||
121 | |||
122 | ath79_register_leds_gpio(-1, ARRAY_SIZE(db120_leds_gpio), | ||
123 | db120_leds_gpio); | ||
124 | ath79_register_gpio_keys_polled(-1, DB120_KEYS_POLL_INTERVAL, | ||
125 | ARRAY_SIZE(db120_gpio_keys), | ||
126 | db120_gpio_keys); | ||
127 | ath79_register_spi(&db120_spi_data, db120_spi_info, | ||
128 | ARRAY_SIZE(db120_spi_info)); | ||
129 | ath79_register_wmac(art + DB120_WMAC_CALDATA_OFFSET); | ||
130 | db120_pci_init(art + DB120_PCIE_CALDATA_OFFSET); | ||
131 | } | ||
132 | |||
133 | MIPS_MACHINE(ATH79_MACH_DB120, "DB120", "Atheros DB120 reference board", | ||
134 | db120_setup); | ||
diff --git a/arch/mips/ath79/machtypes.h b/arch/mips/ath79/machtypes.h index 9a1f3826626e..af92e5c30d66 100644 --- a/arch/mips/ath79/machtypes.h +++ b/arch/mips/ath79/machtypes.h | |||
@@ -18,6 +18,7 @@ enum ath79_mach_type { | |||
18 | ATH79_MACH_GENERIC = 0, | 18 | ATH79_MACH_GENERIC = 0, |
19 | ATH79_MACH_AP121, /* Atheros AP121 reference board */ | 19 | ATH79_MACH_AP121, /* Atheros AP121 reference board */ |
20 | ATH79_MACH_AP81, /* Atheros AP81 reference board */ | 20 | ATH79_MACH_AP81, /* Atheros AP81 reference board */ |
21 | ATH79_MACH_DB120, /* Atheros DB120 reference board */ | ||
21 | ATH79_MACH_PB44, /* Atheros PB44 reference board */ | 22 | ATH79_MACH_PB44, /* Atheros PB44 reference board */ |
22 | ATH79_MACH_UBNT_XM, /* Ubiquiti Networks XM board rev 1.0 */ | 23 | ATH79_MACH_UBNT_XM, /* Ubiquiti Networks XM board rev 1.0 */ |
23 | }; | 24 | }; |