WIP FPC-III support
[linux/fpc-iii.git] / arch / arm / boot / dts / armada-385-clearfog-gtr.dtsi
blob624bbcae68c09dd944a48aaaceaeff17ce3291f7
1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
2 /*
3  * Device Tree file for Clearfog GTR machines rev 1.0 (88F6825)
4  *
5  *  Rabeeh Khoury <rabeeh@solid-run.com>, based on Russell King clearfog work
6  */
8 /*
9         SERDES mapping -
10         0. SATA1 on CON18, or optionally mini PCIe CON3 - PCIe0
11         1. 6141 switch (2.5Gbps capable)
12         2. SATA0 on CON17, or optionally mini PCIe CON4 - PCIe1
13         3. USB 3.0 Host
14         4. mini PCIe CON2 - PCIe2
15         5. SFP connector, or optionally SGMII Ethernet 1512 PHY
17         USB 2.0 mapping -
18         0. USB 2.0 - 0 USB pins header CON12
19         1. USB 2.0 - 1 mini PCIe CON2
20         2. USB 2.0 - 2 to USB 3.0 connector (used with SERDES #3)
22         Pin mapping -
23         0,1 - console UART
24         2,3 - I2C0 - connected to I2C EEPROM, two temperature sensors,
25               front panel and PSE controller
26         4,5 - MDC/MDIO
27         6..17 - RGMII
28         18 - Topaz switch reset (active low)
29         19 - 1512 phy reset
30         20 - 1512 phy reset (eth2, optional)
31         21,28,37,38,39,40 - SD0
32         22 - USB 3.0 current limiter enable (active high)
33         24 - SFP TX fault (input active high)
34         25 - SFP present (input active low)
35         26,27 - I2C1 - connected to SFP
36         29 - Fan PWM
37         30 - CON4 mini PCIe wifi disable
38         31 - CON3 mini PCIe wifi disable
39         32 - Fuse programming power toggle (1.8v)
40         33 - CON4 mini PCIe reset
41         34 - CON2 mini PCIe wifi disable
42         35 - CON3 mini PCIe reset
43         36 - Rear button (GPIO active low)
44         41 - CON1 front panel connector
45         42 - Front LED1, or front panel CON1
46         43 - Micron L-PBGA 24 ball SPI (1Gb) CS, or TPM SPI CS
47         44 - CON2 mini PCIe reset
48         45 - TPM PIRQ signal, or front panel CON1
49         46 - SFP TX disable
50         47 - Control isolation of boot sensitive SAR signals
51         48 - PSE reset
52         49 - PSE OSS signal
53         50 - PSE interrupt
54         52 - Front LED2, or front panel
55         53 - Front button
56         54 - SFP LOS (input active high)
57         55 - Fan sense
58         56(mosi),57(clk),58(miso) - SPI interface - 32Mb SPI, 1Gb SPI and TPM
59         59 - SPI 32Mb W25Q32BVZPIG CS0 chip select (bootable)
62 /dts-v1/;
63 #include <dt-bindings/input/input.h>
64 #include <dt-bindings/gpio/gpio.h>
65 #include <dt-bindings/leds/common.h>
66 #include "armada-385.dtsi"
68 / {
69         compatible = "marvell,armada385", "marvell,armada380";
71         aliases {
72                 /* So that mvebu u-boot can update the MAC addresses */
73                 ethernet1 = &eth0;
74                 ethernet2 = &eth1;
75                 ethernet3 = &eth2;
76                 i2c0 = &i2c0;
77                 i2c1 = &i2c1;
78         };
80         chosen {
81                 stdout-path = "serial0:115200n8";
82         };
84         memory {
85                 device_type = "memory";
86                 reg = <0x00000000 0x10000000>; /* 256 MB */
87         };
89         reg_3p3v: regulator-3p3v {
90                 compatible = "regulator-fixed";
91                 regulator-name = "3P3V";
92                 regulator-min-microvolt = <3300000>;
93                 regulator-max-microvolt = <3300000>;
94                 regulator-always-on;
95         };
97         reg_5p0v: regulator-5p0v {
98                 compatible = "regulator-fixed";
99                 regulator-name = "5P0V";
100                 regulator-min-microvolt = <5000000>;
101                 regulator-max-microvolt = <5000000>;
102                 regulator-always-on;
103         };
105         v_usb3_con: regulator-v-usb3-con {
106                 compatible = "regulator-fixed";
107                 gpio = <&gpio0 22 GPIO_ACTIVE_LOW>;
108                 pinctrl-names = "default";
109                 pinctrl-0 = <&cf_gtr_usb3_con_vbus>;
110                 regulator-max-microvolt = <5000000>;
111                 regulator-min-microvolt = <5000000>;
112                 regulator-name = "v_usb3_con";
113                 vin-supply = <&reg_5p0v>;
114                 regulator-boot-on;
115                 regulator-always-on;
116         };
118         soc {
119                 ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
120                           MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
121                           MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
122                           MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000
123                           MBUS_ID(0x0c, 0x04) 0 0xf1200000 0x100000>;
125                 internal-regs {
127                         rtc@a3800 {
128                                 status = "okay";
129                         };
131                         i2c@11000 { /* ROM, temp sensor and front panel */
132                                 pinctrl-0 = <&i2c0_pins>;
133                                 pinctrl-names = "default";
134                                 status = "okay";
135                         };
137                         i2c@11100 { /* SFP (CON5/CON6) */
138                                 pinctrl-0 = <&cf_gtr_i2c1_pins>;
139                                 pinctrl-names = "default";
140                                 status = "okay";
141                         };
143                         pinctrl@18000 {
144                                 cf_gtr_switch_reset_pins: cf-gtr-switch-reset-pins {
145                                         marvell,pins = "mpp18";
146                                         marvell,function = "gpio";
147                                 };
149                                 cf_gtr_usb3_con_vbus: cf-gtr-usb3-con-vbus {
150                                         marvell,pins = "mpp22";
151                                         marvell,function = "gpio";
152                                 };
154                                 cf_gtr_fan_pwm: cf-gtr-fan-pwm {
155                                         marvell,pins = "mpp23";
156                                         marvell,function = "gpio";
157                                 };
159                                 cf_gtr_i2c1_pins: i2c1-pins {
160                                         /* SFP */
161                                         marvell,pins = "mpp26", "mpp27";
162                                         marvell,function = "i2c1";
163                                 };
165                                 cf_gtr_sdhci_pins: cf-gtr-sdhci-pins {
166                                         marvell,pins = "mpp21", "mpp28",
167                                                        "mpp37", "mpp38",
168                                                        "mpp39", "mpp40";
169                                         marvell,function = "sd0";
170                                 };
172                                 cf_gtr_isolation_pins: cf-gtr-isolation-pins {
173                                         marvell,pins = "mpp47";
174                                         marvell,function = "gpio";
175                                 };
177                                 cf_gtr_poe_reset_pins: cf-gtr-poe-reset-pins {
178                                         marvell,pins = "mpp48";
179                                         marvell,function = "gpio";
180                                 };
182                                 cf_gtr_spi1_cs_pins: spi1-cs-pins {
183                                         marvell,pins = "mpp59";
184                                         marvell,function = "spi1";
185                                 };
187                                 cf_gtr_front_button_pins: cf-gtr-front-button-pins {
188                                         marvell,pins = "mpp53";
189                                         marvell,function = "gpio";
190                                 };
192                                 cf_gtr_rear_button_pins: cf-gtr-rear-button-pins {
193                                         marvell,pins = "mpp36";
194                                         marvell,function = "gpio";
195                                 };
196                         };
198                         sdhci@d8000 {
199                                 bus-width = <4>;
200                                 no-1-8-v;
201                                 non-removable;
202                                 pinctrl-0 = <&cf_gtr_sdhci_pins>;
203                                 pinctrl-names = "default";
204                                 status = "okay";
205                                 vmmc = <&reg_3p3v>;
206                                 wp-inverted;
207                         };
209                         usb@58000 {
210                                 status = "okay";
211                         };
213                         usb3@f0000 {
214                                 status = "okay";
215                         };
217                         usb3@f8000 {
218                                 vbus-supply = <&v_usb3_con>;
219                                 status = "okay";
220                         };
221                 };
223                 pcie {
224                         status = "okay";
225                         /*
226                          * The PCIe units are accessible through
227                          * the mini-PCIe connectors on the board.
228                          */
229                         pcie@1,0 {
230                                 reset-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
231                                 status = "okay";
232                         };
234                         pcie@2,0 {
235                                 reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
236                                 status = "okay";
237                         };
239                         pcie@3,0 {
240                                 reset-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
241                                 status = "okay";
242                         };
243                 };
244         };
246         sfp0: sfp {
247                 compatible = "sff,sfp";
248                 i2c-bus = <&i2c1>;
249                 los-gpio = <&gpio1 22 GPIO_ACTIVE_HIGH>;
250                 mod-def0-gpio = <&gpio0 25 GPIO_ACTIVE_LOW>;
251                 tx-disable-gpio = <&gpio1 14 GPIO_ACTIVE_HIGH>;
252         };
254         gpio-keys {
255                 compatible = "gpio-keys";
256                 pinctrl-0 = <&cf_gtr_rear_button_pins &cf_gtr_front_button_pins>;
257                 pinctrl-names = "default";
259                 button_0 {
260                         label = "Rear Button";
261                         gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
262                         linux,can-disable;
263                         linux,code = <BTN_0>;
264                 };
266                 button_1 {
267                         label = "Front Button";
268                         gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
269                         linux,can-disable;
270                         linux,code = <BTN_1>;
271                 };
272         };
274         gpio-leds {
275                 compatible = "gpio-leds";
277                 led1 {
278                         function = LED_FUNCTION_CPU;
279                         color = <LED_COLOR_ID_GREEN>;
280                         gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
281                 };
283                 led2 {
284                         function = LED_FUNCTION_HEARTBEAT;
285                         color = <LED_COLOR_ID_GREEN>;
286                         gpios = <&gpio1 20 GPIO_ACTIVE_HIGH>;
287                 };
288         };
291 &bm {
292         status = "okay";
295 &bm_bppi {
296         status = "okay";
299 &eth0 {
300         /* ethernet@70000 */
301         pinctrl-0 = <&ge0_rgmii_pins>;
302         pinctrl-names = "default";
303         phy = <&phy_dedicated>;
304         phy-mode = "rgmii-id";
305         buffer-manager = <&bm>;
306         bm,pool-long = <0>;
307         bm,pool-short = <1>;
308         status = "okay";
311 &eth1 {
312         /* ethernet@30000 */
313         bm,pool-long = <2>;
314         bm,pool-short = <1>;
315         buffer-manager = <&bm>;
316         phys = <&comphy1 1>;
317         phy-mode = "2500base-x";
318         status = "okay";
320         fixed-link {
321                 speed = <2500>;
322                 full-duplex;
323         };
326 &eth2 {
327         /* ethernet@34000 */
328         bm,pool-long = <3>;
329         bm,pool-short = <1>;
330         buffer-manager = <&bm>;
331         managed = "in-band-status";
332         phys = <&comphy5 1>;
333         phy-mode = "sgmii";
334         sfp = <&sfp0>;
335         status = "okay";
338 &mdio {
339         pinctrl-names = "default";
340         pinctrl-0 = <&mdio_pins>;
341         status = "okay";
343         phy_dedicated: ethernet-phy@0 {
344                 /*
345                  * Annoyingly, the marvell phy driver configures the LED
346                  * register, rather than preserving reset-loaded setting.
347                  * We undo that rubbish here.
348                  */
349                 marvell,reg-init = <3 16 0 0x1017>;
350                 reg = <0>;
351         };
354 &uart0 {
355         pinctrl-0 = <&uart0_pins>;
356         pinctrl-names = "default";
357         status = "okay";
360 &spi1 {
361         /*
362          * CS0: W25Q32 flash
363          */
364         pinctrl-0 = <&spi1_pins &cf_gtr_spi1_cs_pins>;
365         pinctrl-names = "default";
366         status = "okay";
368         spi-flash@0 {
369                 #address-cells = <1>;
370                 #size-cells = <0>;
371                 compatible = "w25q32", "jedec,spi-nor";
372                 reg = <0>; /* Chip select 0 */
373                 spi-max-frequency = <3000000>;
374                 status = "okay";
375         };
378 &i2c0 {
379         pinctrl-0 = <&i2c0_pins>;
380         pinctrl-names = "default";
381         status = "okay";
383         /* U26 temperature sensor placed near SoC */
384         temp1: nct75@4c {
385                 compatible = "lm75";
386                 reg = <0x4c>;
387         };
389         /* U27 temperature sensor placed near RTC battery */
390         temp2: nct75@4d {
391                 compatible = "lm75";
392                 reg = <0x4d>;
393         };
395         /* 2Kb eeprom */
396         eeprom@53 {
397                 compatible = "atmel,24c02";
398                 reg = <0x53>;
399         };
402 &ahci0 {
403         status = "okay";
406 &ahci1 {
407         status = "okay";
410 &gpio0 {
411         pinctrl-0 = <&cf_gtr_fan_pwm>;
412         pinctrl-names = "default";
414         wifi-disable {
415                 gpio-hog;
416                 gpios = <30 GPIO_ACTIVE_LOW>, <31 GPIO_ACTIVE_LOW>;
417                 output-low;
418                 line-name = "wifi-disable";
419         };
422 &gpio1 {
423         pinctrl-0 = <&cf_gtr_isolation_pins &cf_gtr_poe_reset_pins>;
424         pinctrl-names = "default";
426         lte-disable {
427                 gpio-hog;
428                 gpios = <2 GPIO_ACTIVE_LOW>;
429                 output-low;
430                 line-name = "lte-disable";
431         };
433         /*
434          * This signal, when asserted, isolates Armada 38x sample at reset pins
435          * from control of external devices. Should be de-asserted after reset.
436          */
437         sar-isolation {
438                 gpio-hog;
439                 gpios = <15 GPIO_ACTIVE_LOW>;
440                 output-low;
441                 line-name = "sar-isolation";
442         };
444         poe-reset {
445                 gpio-hog;
446                 gpios = <16 GPIO_ACTIVE_LOW>;
447                 output-low;
448                 line-name = "poe-reset";
449         };