brcm63xx: Add DT support for CT-5365
[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 @@ -764,6 +776,270 @@ 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 +       .of_board_id                    = "sfr,nb4-ser-r0",
76 +       .expected_cpu_id                = 0x6358,
77 +
78 +       .has_uart0                      = 1,
79 +       .has_enet0                      = 1,
80 +       .has_enet1                      = 1,
81 +       .has_pci                        = 1,
82 +
83 +       .enet0 = {
84 +               .has_phy                = 1,
85 +               .use_internal_phy       = 1,
86 +       },
87 +
88 +       .enet1 = {
89 +               .has_phy                = 1,
90 +               .phy_id                 = 0,
91 +               .force_speed_100        = 1,
92 +               .force_duplex_full      = 1,
93 +       },
94 +
95 +
96 +       .has_ohci0 = 1,
97 +       .has_pccard = 1,
98 +       .has_ehci0 = 1,
99 +       .num_usbh_ports                 = 2,
100 +
101 +       .leds = {
102 +               {
103 +                       .name           = "NB4-SER-r0:white:adsl",
104 +                       .gpio           = NB4_74HC64_GPIO(4),
105 +                       .active_low     = 1,
106 +               },
107 +               {
108 +                       .name           = "NB4-SER-r0:white:traffic",
109 +                       .gpio           = 2,
110 +                       .active_low     = 1,
111 +               },
112 +               {
113 +                       .name           = "NB4-SER-r0:white:tel",
114 +                       .gpio           = NB4_74HC64_GPIO(3),
115 +                       .active_low     = 1,
116 +               },
117 +               {
118 +                       .name           = "NB4-SER-r0:white:tv",
119 +                       .gpio           = NB4_74HC64_GPIO(2),
120 +                       .active_low     = 1,
121 +               },
122 +               {
123 +                       .name           = "NB4-SER-r0:white:wifi",
124 +                       .gpio           = 15,
125 +                       .active_low     = 1,
126 +               },
127 +               {
128 +                       .name           = "NB4-SER-r0:white:alarm",
129 +                       .gpio           = NB4_74HC64_GPIO(0),
130 +                       .active_low     = 1,
131 +               },
132 +               {
133 +                       .name           = "NB4-SER-r0:red:service",
134 +                       .gpio           = 29,
135 +                       .active_low     = 1,
136 +               },
137 +               {
138 +                       .name           = "NB4-SER-r0:green:service",
139 +                       .gpio           = 30,
140 +                       .active_low     = 1,
141 +               },
142 +               {
143 +                       .name           = "NB4-SER-r0:blue:service",
144 +                       .gpio           = 4,
145 +                       .active_low     = 1,
146 +               },
147 +       },
148 +       .buttons = {
149 +               {
150 +                       .desc           = "reset",
151 +                       .gpio           = 34,
152 +                       .type           = EV_KEY,
153 +                       .code           = KEY_RESTART,
154 +                       .active_low     = 1,
155 +                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
156 +               },
157 +               {
158 +                       .desc           = "wps",
159 +                       .gpio           = 37,
160 +                       .type           = EV_KEY,
161 +                       .code           = KEY_WPS_BUTTON,
162 +                       .active_low     = 1,
163 +                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
164 +               },
165 +               {
166 +                       .desc           = "service",
167 +                       .gpio           = 27,
168 +                       .type           = EV_KEY,
169 +                       .code           = BTN_0,
170 +                       .active_low     = 1,
171 +                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
172 +               },
173 +               {
174 +                       .desc           = "clip",
175 +                       .gpio           = 31,
176 +                       .type           = EV_KEY,
177 +                       .code           = BTN_1,
178 +                       .active_low     = 1,
179 +                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
180 +               },
181 +       },
182 +       .devs = nb4_devices,
183 +       .num_devs = ARRAY_SIZE(nb4_devices),
184 +       .spis = nb4_spi_devices,
185 +       .num_spis = ARRAY_SIZE(nb4_spi_devices),
186 +};
187 +
188 +static struct board_info __initdata board_nb4_fxc_r1 = {
189 +       .name                           = "NB4-FXC-r1",
190 +       .of_board_id                    = "sfr,nb4-fxc-r1",
191 +       .expected_cpu_id                = 0x6358,
192 +
193 +       .has_uart0                      = 1,
194 +       .has_enet0                      = 1,
195 +       .has_enet1                      = 1,
196 +       .has_pci                        = 1,
197 +
198 +       .enet0 = {
199 +               .has_phy                = 1,
200 +               .use_internal_phy       = 1,
201 +       },
202 +
203 +       .enet1 = {
204 +               .has_phy                = 1,
205 +               .phy_id                 = 0,
206 +               .force_speed_100        = 1,
207 +               .force_duplex_full      = 1,
208 +       },
209 +
210 +
211 +       .has_ohci0 = 1,
212 +       .has_pccard = 1,
213 +       .has_ehci0 = 1,
214 +       .num_usbh_ports                 = 2,
215 +
216 +       .leds = {
217 +               {
218 +                       .name           = "NB4-FXC-r1:white:adsl",
219 +                       .gpio           = NB4_74HC64_GPIO(4),
220 +                       .active_low     = 1,
221 +               },
222 +               {
223 +                       .name           = "NB4-FXC-r1:white:traffic",
224 +                       .gpio           = 2,
225 +               },
226 +               {
227 +                       .name           = "NB4-FXC-r1:white:tel",
228 +                       .gpio           = NB4_74HC64_GPIO(3),
229 +                       .active_low     = 1,
230 +               },
231 +               {
232 +                       .name           = "NB4-FXC-r1:white:tv",
233 +                       .gpio           = NB4_74HC64_GPIO(2),
234 +                       .active_low     = 1,
235 +               },
236 +               {
237 +                       .name           = "NB4-FXC-r1:white:wifi",
238 +                       .gpio           = 15,
239 +               },
240 +               {
241 +                       .name           = "NB4-FXC-r1:white:alarm",
242 +                       .gpio           = NB4_74HC64_GPIO(0),
243 +                       .active_low     = 1,
244 +               },
245 +               {
246 +                       .name           = "NB4-FXC-r1:red:service",
247 +                       .gpio           = 29,
248 +               },
249 +               {
250 +                       .name           = "NB4-FXC-r1:green:service",
251 +                       .gpio           = 30,
252 +               },
253 +               {
254 +                       .name           = "NB4-FXC-r1:blue:service",
255 +                       .gpio           = 4,
256 +               },
257 +       },
258 +       .buttons = {
259 +               {
260 +                       .desc           = "reset",
261 +                       .gpio           = 34,
262 +                       .type           = EV_KEY,
263 +                       .code           = KEY_RESTART,
264 +                       .active_low     = 1,
265 +                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
266 +               },
267 +               {
268 +                       .desc           = "wps",
269 +                       .gpio           = 37,
270 +                       .type           = EV_KEY,
271 +                       .code           = KEY_WPS_BUTTON,
272 +                       .active_low     = 1,
273 +                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
274 +               },
275 +               {
276 +                       .desc           = "service",
277 +                       .gpio           = 27,
278 +                       .type           = EV_KEY,
279 +                       .code           = BTN_0,
280 +                       .active_low     = 1,
281 +                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
282 +               },
283 +               {
284 +                       .desc           = "clip",
285 +                       .gpio           = 31,
286 +                       .type           = EV_KEY,
287 +                       .code           = BTN_1,
288 +                       .active_low     = 1,
289 +                       .debounce_interval = BCM963XX_KEYS_DEBOUNCE_INTERVAL,
290 +               },
291 +       },
292 +       .devs = nb4_devices,
293 +       .num_devs = ARRAY_SIZE(nb4_devices),
294 +       .spis = nb4_spi_devices,
295 +       .num_spis = ARRAY_SIZE(nb4_spi_devices),
296 +};
297  #endif /* CONFIG_BCM63XX_CPU_6358 */
298  
299  /*
300 @@ -800,6 +1076,8 @@ static const struct board_info __initcon
301         &board_96358vw2,
302         &board_AGPFS0,
303         &board_DWVS0,
304 +       &board_nb4_ser_r0,
305 +       &board_nb4_fxc_r1,
306  #endif
307  };
308