brcm63xx: refresh patches
[openwrt/openwrt.git] / target / linux / brcm63xx / patches-3.14 / 501-board-NB4.patch
1 --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
2 +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
3 @@ -12,6 +12,12 @@
4 #include <linux/string.h>
5 #include <linux/gpio_keys.h>
6 #include <linux/input.h>
7 +#include <linux/platform_device.h>
8 +#include <linux/spi/spi.h>
9 +#include <linux/spi/spi_gpio.h>
10 +#if 0 /* FIXME: 3.14 removed non-DT support */
11 +#include <linux/spi/74x164.h>
12 +#endif
13 #include <asm/addrspace.h>
14 #include <bcm63xx_board.h>
15 #include <bcm63xx_cpu.h>
16 @@ -31,6 +37,12 @@
17 #define BCM963XX_KEYS_POLL_INTERVAL 20
18 #define BCM963XX_KEYS_DEBOUNCE_INTERVAL (BCM963XX_KEYS_POLL_INTERVAL * 3)
19
20 +#define NB4_PID_OFFSET 0xff80
21 +#define NB4_74X164_GPIO_BASE 64
22 +#define NB4_SPI_GPIO_MOSI 7
23 +#define NB4_SPI_GPIO_CLK 6
24 +#define NB4_74HC64_GPIO(X) (NB4_74X164_GPIO_BASE + (X))
25 +
26 /*
27 * known 3368 boards
28 */
29 @@ -747,6 +759,268 @@ static struct board_info __initdata boar
30
31 .has_ohci0 = 1,
32 };
33 +
34 +struct spi_gpio_platform_data nb4_spi_gpio_data = {
35 + .sck = NB4_SPI_GPIO_CLK,
36 + .mosi = NB4_SPI_GPIO_MOSI,
37 + .miso = SPI_GPIO_NO_MISO,
38 + .num_chipselect = 1,
39 +};
40 +
41 +
42 +static struct platform_device nb4_spi_gpio = {
43 + .name = "spi_gpio",
44 + .id = 1,
45 + .dev = {
46 + .platform_data = &nb4_spi_gpio_data,
47 + },
48 +};
49 +
50 +static struct platform_device * __initdata nb4_devices[] = {
51 + &nb4_spi_gpio,
52 +};
53 +
54 +#if 0 /* FIXME: 3.14 removed non-DT support */
55 +const struct gen_74x164_chip_platform_data nb4_74x164_platform_data = {
56 + .base = NB4_74X164_GPIO_BASE
57 +};
58 +#endif
59 +
60 +static struct spi_board_info nb4_spi_devices[] = {
61 +#if 0 /* FIXME: 3.14 removed non-DT support */
62 + {
63 + .modalias = "74x164",
64 + .max_speed_hz = 781000,
65 + .bus_num = 1,
66 + .controller_data = (void *) SPI_GPIO_NO_CHIPSELECT,
67 + .mode = SPI_MODE_0,
68 + .platform_data = &nb4_74x164_platform_data
69 + }
70 +#endif
71 +};
72 +
73 +static struct board_info __initdata board_nb4_ser_r0 = {
74 + .name = "NB4-SER-r0",
75 + .expected_cpu_id = 0x6358,
76 +
77 + .has_uart0 = 1,
78 + .has_enet0 = 1,
79 + .has_enet1 = 1,
80 + .has_pci = 1,
81 +
82 + .enet0 = {
83 + .has_phy = 1,
84 + .use_internal_phy = 1,
85 + },
86 +
87 + .enet1 = {
88 + .has_phy = 1,
89 + .phy_id = 0,
90 + .force_speed_100 = 1,
91 + .force_duplex_full = 1,
92 + },
93 +
94 +
95 + .has_ohci0 = 1,
96 + .has_pccard = 1,
97 + .has_ehci0 = 1,
98 + .num_usbh_ports = 2,
99 +
100 + .leds = {
101 + {
102 + .name = "NB4-SER-r0:white:adsl",
103 + .gpio = NB4_74HC64_GPIO(4),
104 + .active_low = 1,
105 + },
106 + {
107 + .name = "NB4-SER-r0:white:traffic",
108 + .gpio = 2,
109 + .active_low = 1,
110 + },
111 + {
112 + .name = "NB4-SER-r0:white:tel",
113 + .gpio = NB4_74HC64_GPIO(3),
114 + .active_low = 1,
115 + },
116 + {
117 + .name = "NB4-SER-r0:white:tv",
118 + .gpio = NB4_74HC64_GPIO(2),
119 + .active_low = 1,
120 + },
121 + {
122 + .name = "NB4-SER-r0:white:wifi",
123 + .gpio = 15,
124 + .active_low = 1,
125 + },
126 + {
127 + .name = "NB4-SER-r0:white:alarm",
128 + .gpio = NB4_74HC64_GPIO(0),
129 + .active_low = 1,
130 + },
131 + {
132 + .name = "NB4-SER-r0:red:service",
133 + .gpio = 29,
134 + .active_low = 1,
135 + },
136 + {
137 + .name = "NB4-SER-r0:green:service",
138 + .gpio = 30,
139 + .active_low = 1,
140 + },
141 + {
142 + .name = "NB4-SER-r0:blue:service",
143 + .gpio = 4,
144 + .active_low = 1,
145 + },
146 + },
147 + .buttons = {
148 + {
149 + .desc = "reset",
150 + .gpio = 34,
151 + .type = EV_KEY,
152 + .code = KEY_RESTART,
153 + .active_low = 1,
154 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
155 + },
156 + {
157 + .desc = "wps",
158 + .gpio = 37,
159 + .type = EV_KEY,
160 + .code = KEY_WPS_BUTTON,
161 + .active_low = 1,
162 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
163 + },
164 + {
165 + .desc = "service",
166 + .gpio = 27,
167 + .type = EV_KEY,
168 + .code = BTN_0,
169 + .active_low = 1,
170 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
171 + },
172 + {
173 + .desc = "clip",
174 + .gpio = 31,
175 + .type = EV_KEY,
176 + .code = BTN_1,
177 + .active_low = 1,
178 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
179 + },
180 + },
181 + .devs = nb4_devices,
182 + .num_devs = ARRAY_SIZE(nb4_devices),
183 + .spis = nb4_spi_devices,
184 + .num_spis = ARRAY_SIZE(nb4_spi_devices),
185 +};
186 +
187 +static struct board_info __initdata board_nb4_fxc_r1 = {
188 + .name = "NB4-FXC-r1",
189 + .expected_cpu_id = 0x6358,
190 +
191 + .has_uart0 = 1,
192 + .has_enet0 = 1,
193 + .has_enet1 = 1,
194 + .has_pci = 1,
195 +
196 + .enet0 = {
197 + .has_phy = 1,
198 + .use_internal_phy = 1,
199 + },
200 +
201 + .enet1 = {
202 + .has_phy = 1,
203 + .phy_id = 0,
204 + .force_speed_100 = 1,
205 + .force_duplex_full = 1,
206 + },
207 +
208 +
209 + .has_ohci0 = 1,
210 + .has_pccard = 1,
211 + .has_ehci0 = 1,
212 + .num_usbh_ports = 2,
213 +
214 + .leds = {
215 + {
216 + .name = "NB4-FXC-r1:white:adsl",
217 + .gpio = NB4_74HC64_GPIO(4),
218 + .active_low = 1,
219 + },
220 + {
221 + .name = "NB4-FXC-r1:white:traffic",
222 + .gpio = 2,
223 + },
224 + {
225 + .name = "NB4-FXC-r1:white:tel",
226 + .gpio = NB4_74HC64_GPIO(3),
227 + .active_low = 1,
228 + },
229 + {
230 + .name = "NB4-FXC-r1:white:tv",
231 + .gpio = NB4_74HC64_GPIO(2),
232 + .active_low = 1,
233 + },
234 + {
235 + .name = "NB4-FXC-r1:white:wifi",
236 + .gpio = 15,
237 + },
238 + {
239 + .name = "NB4-FXC-r1:white:alarm",
240 + .gpio = NB4_74HC64_GPIO(0),
241 + .active_low = 1,
242 + },
243 + {
244 + .name = "NB4-FXC-r1:red:service",
245 + .gpio = 29,
246 + },
247 + {
248 + .name = "NB4-FXC-r1:green:service",
249 + .gpio = 30,
250 + },
251 + {
252 + .name = "NB4-FXC-r1:blue:service",
253 + .gpio = 4,
254 + },
255 + },
256 + .buttons = {
257 + {
258 + .desc = "reset",
259 + .gpio = 34,
260 + .type = EV_KEY,
261 + .code = KEY_RESTART,
262 + .active_low = 1,
263 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
264 + },
265 + {
266 + .desc = "wps",
267 + .gpio = 37,
268 + .type = EV_KEY,
269 + .code = KEY_WPS_BUTTON,
270 + .active_low = 1,
271 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
272 + },
273 + {
274 + .desc = "service",
275 + .gpio = 27,
276 + .type = EV_KEY,
277 + .code = BTN_0,
278 + .active_low = 1,
279 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
280 + },
281 + {
282 + .desc = "clip",
283 + .gpio = 31,
284 + .type = EV_KEY,
285 + .code = BTN_1,
286 + .active_low = 1,
287 + .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
288 + },
289 + },
290 + .devs = nb4_devices,
291 + .num_devs = ARRAY_SIZE(nb4_devices),
292 + .spis = nb4_spi_devices,
293 + .num_spis = ARRAY_SIZE(nb4_spi_devices),
294 +};
295 #endif /* CONFIG_BCM63XX_CPU_6358 */
296
297 /*
298 @@ -783,6 +1057,8 @@ static const struct board_info __initcon
299 &board_96358vw2,
300 &board_AGPFS0,
301 &board_DWVS0,
302 + &board_nb4_ser_r0,
303 + &board_nb4_fxc_r1,
304 #endif
305 };
306
307 @@ -824,6 +1100,8 @@ static struct of_device_id const bcm963x
308 { .compatible = "pirelli,a226m", .data = &board_DWVS0, },
309 { .compatible = "pirelli,a226m-fwb", .data = &board_DWVS0, },
310 { .compatible = "pirelli,agpf-s0", .data = &board_AGPFS0, },
311 + { .compatible = "sfr,nb4-ser-r0", .data = &board_nb4_ser_r0, },
312 + { .compatible = "sfr,nb4-fxc-r1", .data = &board_nb4_fxc_r1, },
313 #endif
314 #ifdef CONFIG_BCM63XX_CPU_6368
315 #endif