ipq806x: activate ATAG DTB mangle and EA8500 rootblock in dts
[librecmc/librecmc.git] / target / linux / ipq806x / files / arch / arm / boot / dts / qcom-ipq8064-ea8500.dts
1 #include "qcom-ipq8064-v1.0.dtsi"
2
3 #include <dt-bindings/input/input.h>
4
5 / {
6         model = "Linksys EA8500 WiFi Router";
7         compatible = "linksys,ea8500", "qcom,ipq8064";
8
9         memory@0 {
10                 reg = <0x42000000 0x1e000000>;
11                 device_type = "memory";
12         };
13
14         reserved-memory {
15                 #address-cells = <1>;
16                 #size-cells = <1>;
17                 ranges;
18                 rsvd@41200000 {
19                         reg = <0x41200000 0x300000>;
20                         no-map;
21                 };
22         };
23
24         aliases {
25                 serial0 = &uart4;
26                 mdio-gpio0 = &mdio0;
27         };
28
29         chosen {
30                 bootargs = "console=ttyMSM0,115200n8"; 
31                 linux,stdout-path = "serial0:115200n8";
32                 append-rootblock = "ubi.mtd=";  /* append to bootargs adding the root deviceblock nbr from bootloader */
33         };
34
35         soc {
36                 pinmux@800000 {
37                         i2c4_pins: i2c4_pinmux {
38                                 pins = "gpio12", "gpio13";
39                                 function = "gsbi4";
40                                 bias-disable;
41                         };
42
43                         spi_pins: spi_pins {
44                                 mux {
45                                         pins = "gpio18", "gpio19", "gpio21";
46                                         function = "gsbi5";
47                                         drive-strength = <10>;
48                                         bias-none;
49                                 };
50                         };
51                         nand_pins: nand_pins {
52                                 mux {
53                                         pins = "gpio34", "gpio35", "gpio36",
54                                                "gpio37", "gpio38", "gpio39",
55                                                "gpio40", "gpio41", "gpio42",
56                                                "gpio43", "gpio44", "gpio45",
57                                                "gpio46", "gpio47";
58                                         function = "nand";
59                                         drive-strength = <10>;
60                                         bias-disable;
61                                 };
62                                 pullups {
63                                         pins = "gpio39";
64                                         bias-pull-up;
65                                 };
66                                 hold {
67                                         pins = "gpio40", "gpio41", "gpio42",
68                                                "gpio43", "gpio44", "gpio45",
69                                                "gpio46", "gpio47";
70                                         bias-bus-hold;
71                                 };
72                         };
73
74                         mdio0_pins: mdio0_pins {
75                                 mux {
76                                         pins = "gpio0", "gpio1";
77                                         function = "gpio";
78                                         drive-strength = <8>;
79                                         bias-disable;
80                                 };
81                         };
82
83                         rgmii2_pins: rgmii2_pins {
84                                 mux {
85                                         pins = "gpio27", "gpio28", "gpio29", "gpio30", "gpio31", "gpio32",
86                                                "gpio51", "gpio52", "gpio59", "gpio60", "gpio61", "gpio62" ;
87                                         function = "rgmii2";
88                                         drive-strength = <8>;
89                                         bias-disable;
90                                 };
91                         };
92                         
93                         
94                         
95                 };
96
97                 gsbi@16300000 {
98                         qcom,mode = <GSBI_PROT_I2C_UART>;
99                         status = "ok";
100                         serial@16340000 {
101                                 status = "ok";
102                         };
103                         /*
104                          * The i2c device on gsbi4 should not be enabled.
105                          * On ipq806x designs gsbi4 i2c is meant for exclusive
106                          * RPM usage. Turning this on in kernel manifests as
107                          * i2c failure for the RPM.
108                          */
109                 };
110
111                 sata-phy@1b400000 {
112                         status = "ok";
113                 };
114
115                 sata@29000000 {
116                         status = "ok";
117                 };
118
119                 phy@100f8800 {          /* USB3 port 1 HS phy */
120                         status = "ok";
121                 };
122
123                 phy@100f8830 {          /* USB3 port 1 SS phy */
124                         status = "ok";
125                 };
126
127                 phy@110f8800 {          /* USB3 port 0 HS phy */
128                         status = "ok";
129                 };
130
131                 phy@110f8830 {          /* USB3 port 0 SS phy */
132                         status = "ok";
133                 };
134
135                 usb30@0 {
136                         status = "ok";
137                 };
138
139                 usb30@1 {
140                         status = "ok";
141                 };
142
143                 pcie0: pci@1b500000 {
144                         status = "ok";
145                         phy-tx0-term-offset = <7>;
146                 };
147
148                 pcie1: pci@1b700000 {
149                         status = "ok";
150                         phy-tx0-term-offset = <7>;
151                 };
152                 
153                 pcie2: pci@1b900000 {
154                         status = "ok";
155                         phy-tx0-term-offset = <7>;
156                 };
157                 
158                 nand@1ac00000 {
159                         status = "ok";
160
161                         pinctrl-0 = <&nand_pins>;
162                         pinctrl-names = "default";
163
164                         nand-ecc-strength = <4>;
165                         nand-bus-width = <8>;
166
167                         #address-cells = <1>;
168                         #size-cells = <1>;
169
170                         SBL1@0 {
171                                 label = "SBL1";
172                                 reg = <0x0000000 0x0040000>;
173                                 read-only;
174                         };
175
176                         MIBIB@40000 {
177                                 label = "MIBIB";
178                                 reg = <0x0040000 0x0140000>;
179                                 read-only;
180                         };
181
182                         SBL2@180000 {
183                                 label = "SBL2";
184                                 reg = <0x0180000 0x0140000>;
185                                 read-only;
186                         };
187
188                         SBL3@2c0000 {
189                                 label = "SBL3";
190                                 reg = <0x02c0000 0x0280000>;
191                                 read-only;
192                         };
193
194                         DDRCONFIG@540000 {
195                                 label = "DDRCONFIG";
196                                 reg = <0x0540000 0x0120000>;
197                                 read-only;
198                         };
199
200                         SSD@660000 {
201                                 label = "SSD";
202                                 reg = <0x0660000 0x0120000>;
203                                 read-only;
204                         };
205                         
206                         TZ@780000 {
207                                 label = "TZ";
208                                 reg = <0x0780000 0x0280000>;
209                                 read-only;
210                         };
211
212                         RPM@a00000 {
213                                 label = "RPM";
214                                 reg = <0x0a00000 0x0280000>;
215                                 read-only;
216                         };
217
218                         art: art@c80000 {
219                                 label = "art";
220                                 reg = <0x0c80000 0x0140000>;
221                                 read-only;
222                         };
223
224                         APPSBL@dc0000 {
225                                 label = "APPSBL";
226                                 reg = <0x0dc0000 0x0100000>;
227                                 read-only;
228                         };
229                         
230                         u_env@ec0000 {
231                                 label = "u_env";
232                                 reg = <0x0ec0000 0x0040000>;
233                         };
234                         
235                         s_env@f00000 {
236                                 label = "s_env";
237                                 reg = <0x0f00000 0x0040000>;
238                         };
239                         
240                         devinfo@f40000 {
241                                 label = "devinfo";
242                                 reg = <0x0f40000 0x0040000>;
243                         };
244                         
245                         linux@f80000 { 
246                                 label = "kernel1";
247                                 reg = <0x0f80000 0x2800000>;  /* 3 MB spill to rootfs*/
248                         };
249                         
250                         rootfs@1280000 {
251                                 label = "rootfs1";
252                                 reg = <0x1280000 0x2500000>;
253                         };
254                         
255                         linux2@3780000 {
256                                 label = "kernel2";
257                                 reg = <0x3780000 0x2800000>;
258                         };
259                         
260                         rootfs2@3a80000 {
261                                 label = "rootfs2";
262                                 reg = <0x3a80000 0x2500000>;
263                         };
264                         
265                         syscfg@5f80000 {
266                                 label = "syscfg";
267                                 reg = <0x5f80000 0x2080000>;
268                         };
269
270                 };
271
272                 mdio0: mdio {
273                         compatible = "virtual,mdio-gpio";
274                         #address-cells = <1>;
275                         #size-cells = <0>;
276                         gpios = <&qcom_pinmux 1 0 &qcom_pinmux 0 0>;
277                         pinctrl-0 = <&mdio0_pins>;
278                         pinctrl-names = "default";
279
280                         phy0: ethernet-phy@0 {
281                                 device_type = "ethernet-phy";
282                                 reg = <0>;
283                                 qca,ar8327-initvals = <
284                                         0x00004 0x7600000   /* PAD0_MODE */
285                                         0x00008 0x1000000   /* PAD5_MODE */
286                                         0x0000c 0x80        /* PAD6_MODE */
287                                         0x000e4 0xaa545     /* MAC_POWER_SEL */
288                                         0x000e0 0xc74164de  /* SGMII_CTRL */
289                                         0x0007c 0x4e        /* PORT0_STATUS */
290                                         0x00094 0x4e        /* PORT6_STATUS */
291                                         >;
292                         };
293
294                         phy4: ethernet-phy@4 {
295                                 device_type = "ethernet-phy";
296                                 reg = <4>;
297                         };
298                 };
299
300                 gmac1: ethernet@37200000 {
301                         status = "ok";
302                         phy-mode = "rgmii";
303                         qcom,id = <1>;
304                         qcom,phy_mdio_addr = <4>;
305                         qcom,poll_required = <1>;
306                         qcom,rgmii_delay = <0>;
307                         qcom,emulation = <0>;
308                         pinctrl-0 = <&rgmii2_pins>;
309                         pinctrl-names = "default";
310                         fixed-link {
311                                 speed = <1000>;
312                                 full-duplex;
313                         };
314                 };
315                 //lan
316                 gmac2: ethernet@37400000 {
317                         status = "ok";
318                         phy-mode = "sgmii";
319                         qcom,id = <2>;
320                         qcom,phy_mdio_addr = <0>;       /* none */
321                         qcom,poll_required = <0>;       /* no polling */
322                         qcom,rgmii_delay = <0>;
323                         qcom,emulation = <0>;
324                         fixed-link {
325                                 speed = <1000>;
326                                 full-duplex;
327                         };
328                 };
329
330                 adm_dma: dma@18300000 {
331                         status = "ok";
332                 };
333
334         };
335
336         gpio-keys {
337                 compatible = "gpio-keys";
338
339                 rfkill {
340                         label = "rfkill"; /* WIFI on-off*/
341                         gpios = <&qcom_pinmux 67 GPIO_ACTIVE_LOW>;
342                         linux,code = <KEY_RFKILL>;
343                 };
344
345                 reset {
346                         label = "reset";
347                         gpios = <&qcom_pinmux 68 GPIO_ACTIVE_LOW>;
348                         linux,code = <KEY_RESTART >;
349                 };
350
351                 wps {
352                         label = "wps";
353                         gpios = <&qcom_pinmux 65 GPIO_ACTIVE_LOW>;
354                         linux,code = <KEY_WPS_BUTTON>;
355                 };
356
357         };
358
359         gpio-leds {
360                 compatible = "gpio-leds";
361
362                 wps {
363                         label = "ea8500:green:wps";
364                         gpios = <&qcom_pinmux 53 0>;
365                         default-state = "off";
366                 };
367
368                 power {
369                         label = "ea8500:white:power";
370                         gpios = <&qcom_pinmux 6 1>;
371                         default-state = "off";
372                         linux,default-trigger = "heartbeat";
373                 };
374
375                 wifi {
376                         label = "ea8500:green:wifi";
377                         gpios = <&qcom_pinmux 54 0>;
378                         default-state = "off";
379                 };
380         };
381 };