93e454052dffe2e316e81b6ad9af4119bcf6a553
[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