Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / arch / arm / boot / dts / imx6sx-softing-vining-2000.dts
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (C) 2016 Christoph Fritz <chf.fritz@googlemail.com>
4  */
5
6 /dts-v1/;
7
8 #include <dt-bindings/gpio/gpio.h>
9 #include <dt-bindings/input/input.h>
10 #include "imx6sx.dtsi"
11
12 / {
13         model = "Softing VIN|ING 2000";
14         compatible = "samtec,imx6sx-vining-2000", "fsl,imx6sx";
15
16         chosen {
17                 stdout-path = &uart1;
18         };
19
20         memory@80000000 {
21                 device_type = "memory";
22                 reg = <0x80000000 0x40000000>;
23         };
24
25         reg_usb_otg1_vbus: regulator-usb_otg1_vbus {
26                 compatible = "regulator-fixed";
27                 regulator-name = "usb_otg1_vbus";
28                 pinctrl-names = "default";
29                 pinctrl-0 = <&pinctrl_usb_otg1>;
30                 regulator-min-microvolt = <5000000>;
31                 regulator-max-microvolt = <5000000>;
32                 gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
33                 enable-active-high;
34         };
35
36         reg_peri_3v3: regulator-peri_3v3 {
37                 compatible = "regulator-fixed";
38                 regulator-name = "peri_3v3";
39                 regulator-min-microvolt = <3300000>;
40                 regulator-max-microvolt = <3300000>;
41         };
42
43         pwmleds {
44                 compatible = "pwm-leds";
45
46                 red {
47                         label = "red";
48                         max-brightness = <255>;
49                         pwms = <&pwm6 0 50000>;
50                 };
51
52                 green {
53                         label = "green";
54                         max-brightness = <255>;
55                         pwms = <&pwm2 0 50000>;
56                 };
57
58                 blue {
59                         label = "blue";
60                         max-brightness = <255>;
61                         pwms = <&pwm1 0 50000>;
62                 };
63         };
64 };
65
66 &adc1 {
67         vref-supply = <&reg_peri_3v3>;
68         status = "okay";
69 };
70
71 &cpu0 {
72         /*
73          * This board has a shared rail of reg_arm and reg_soc (supplied by
74          * sw1a_reg) which is modeled below, but still this module behaves
75          * unstable without higher voltages. Hence, set higher voltages here.
76          */
77         operating-points = <
78                 /* kHz    uV */
79                 996000  1250000
80                 792000  1175000
81                 396000  1175000
82                 198000  1175000
83                 >;
84         fsl,soc-operating-points = <
85                 /* ARM kHz  SOC uV */
86                 996000  1250000
87                 792000  1175000
88                 396000  1175000
89                 198000  1175000
90         >;
91 };
92
93 &ecspi4 {
94         pinctrl-names = "default";
95         pinctrl-0 = <&pinctrl_ecspi4>;
96         cs-gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;
97         status = "okay";
98 };
99
100 &fec1 {
101         pinctrl-names = "default";
102         pinctrl-0 = <&pinctrl_enet1>;
103         phy-supply = <&reg_peri_3v3>;
104         phy-reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
105         phy-reset-duration = <5>;
106         phy-mode = "rmii";
107         phy-handle = <&ethphy0>;
108         status = "okay";
109
110         mdio {
111                 #address-cells = <1>;
112                 #size-cells = <0>;
113
114                 ethphy0: ethernet0-phy@0 {
115                         reg = <0>;
116                         max-speed = <100>;
117                         interrupt-parent = <&gpio2>;
118                         interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
119                 };
120         };
121 };
122
123 &fec2 {
124         pinctrl-names = "default";
125         pinctrl-0 = <&pinctrl_enet2>;
126         phy-supply = <&reg_peri_3v3>;
127         phy-reset-gpios = <&gpio5 21 GPIO_ACTIVE_LOW>;
128         phy-reset-duration = <5>;
129         phy-mode = "rmii";
130         phy-handle = <&ethphy1>;
131         status = "okay";
132
133         mdio {
134                 #address-cells = <1>;
135                 #size-cells = <0>;
136
137                 ethphy1: ethernet1-phy@0 {
138                         reg = <0>;
139                         max-speed = <100>;
140                         interrupt-parent = <&gpio2>;
141                         interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
142                 };
143         };
144 };
145
146 &flexcan1 {
147         pinctrl-names = "default";
148         pinctrl-0 = <&pinctrl_flexcan1>;
149         status = "okay";
150 };
151
152 &flexcan2 {
153         pinctrl-names = "default";
154         pinctrl-0 = <&pinctrl_flexcan2>;
155         status = "okay";
156 };
157
158 &i2c1 {
159         clock-frequency = <100000>;
160         pinctrl-names = "default";
161         pinctrl-0 = <&pinctrl_i2c1>;
162         status = "okay";
163
164         proximity: sx9500@28 {
165                 compatible = "semtech,sx9500";
166                 reg = <0x28>;
167                 pinctrl-names = "default";
168                 pinctrl-0 = <&pinctrl_sx9500>;
169                 interrupt-parent = <&gpio2>;
170                 interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
171                 reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
172         };
173
174         pmic: pfuze100@8 {
175                 compatible = "fsl,pfuze200";
176                 reg = <0x08>;
177
178                 regulators {
179                         sw1a_reg: sw1ab {
180                                 regulator-min-microvolt = <300000>;
181                                 regulator-max-microvolt = <1875000>;
182                                 regulator-boot-on;
183                                 regulator-always-on;
184                                 regulator-ramp-delay = <6250>;
185                         };
186
187                         sw2_reg: sw2 {
188                                 regulator-min-microvolt = <800000>;
189                                 regulator-max-microvolt = <3300000>;
190                                 regulator-boot-on;
191                                 regulator-always-on;
192                         };
193
194                         sw3a_reg: sw3a {
195                                 regulator-min-microvolt = <400000>;
196                                 regulator-max-microvolt = <1975000>;
197                                 regulator-boot-on;
198                                 regulator-always-on;
199                         };
200
201                         sw3b_reg: sw3b {
202                                 regulator-min-microvolt = <400000>;
203                                 regulator-max-microvolt = <1975000>;
204                                 regulator-boot-on;
205                                 regulator-always-on;
206                         };
207
208                         snvs_reg: vsnvs {
209                                 regulator-min-microvolt = <1000000>;
210                                 regulator-max-microvolt = <3000000>;
211                                 regulator-boot-on;
212                                 regulator-always-on;
213                         };
214
215                         vref_reg: vrefddr {
216                                 regulator-boot-on;
217                                 regulator-always-on;
218                         };
219
220                         vgen1_reg: vgen1 {
221                                 regulator-min-microvolt = <800000>;
222                                 regulator-max-microvolt = <1550000>;
223                                 regulator-always-on;
224                         };
225
226                         vgen2_reg: vgen2 {
227                                 regulator-min-microvolt = <800000>;
228                                 regulator-max-microvolt = <1550000>;
229                         };
230
231                         vgen3_reg: vgen3 {
232                                 regulator-min-microvolt = <1800000>;
233                                 regulator-max-microvolt = <3300000>;
234                                 regulator-always-on;
235                         };
236
237                         vgen4_reg: vgen4 {
238                                 regulator-min-microvolt = <1800000>;
239                                 regulator-max-microvolt = <3300000>;
240                                 regulator-always-on;
241                         };
242
243                         vgen5_reg: vgen5 {
244                                 regulator-min-microvolt = <1800000>;
245                                 regulator-max-microvolt = <3300000>;
246                                 regulator-always-on;
247                         };
248
249                         vgen6_reg: vgen6 {
250                                 regulator-min-microvolt = <1800000>;
251                                 regulator-max-microvolt = <3300000>;
252                                 regulator-always-on;
253                         };
254                 };
255         };
256 };
257
258 &i2c3 {
259         clock-frequency = <100000>;
260         pinctrl-names = "default";
261         pinctrl-0 = <&pinctrl_i2c3>;
262         status = "okay";
263 };
264
265 &iomuxc {
266         pinctrl-names = "default";
267         pinctrl-0 = <&pinctrl_gpios>;
268
269         pinctrl_ecspi4: ecspi4grp {
270                 fsl,pins = <
271                         MX6SX_PAD_SD3_CLK__ECSPI4_SCLK          0x130b1
272                         MX6SX_PAD_SD3_DATA3__ECSPI4_MISO        0x130b1
273                         MX6SX_PAD_SD3_CMD__ECSPI4_MOSI          0x130b1
274                         MX6SX_PAD_SD3_DATA2__GPIO7_IO_4         0x30b0
275                 >;
276         };
277
278         pinctrl_enet1: enet1grp {
279                 fsl,pins = <
280                         MX6SX_PAD_RGMII1_RD0__ENET1_RX_DATA_0   0x30c1
281                         MX6SX_PAD_RGMII1_RD1__ENET1_RX_DATA_1   0x30c1
282                         MX6SX_PAD_RGMII1_TD0__ENET1_TX_DATA_0   0xa0f9
283                         MX6SX_PAD_RGMII1_TD1__ENET1_TX_DATA_1   0xa0f9
284                         MX6SX_PAD_RGMII1_RX_CTL__ENET1_RX_EN    0x30c1
285                         MX6SX_PAD_RGMII1_TX_CTL__ENET1_TX_EN    0xa0f9
286                         MX6SX_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  0x4000a038
287                         /* LAN8720 PHY Reset */
288                         MX6SX_PAD_RGMII1_TD3__GPIO5_IO_9        0x10b0
289                         /* MDIO */
290                         MX6SX_PAD_ENET1_MDC__ENET1_MDC          0xa0f9
291                         MX6SX_PAD_ENET1_MDIO__ENET1_MDIO        0xa0f9
292                         /* IRQ from PHY */
293                         MX6SX_PAD_KEY_ROW2__GPIO2_IO_17         0x10b0
294                 >;
295         };
296
297         pinctrl_enet2: enet2grp {
298                 fsl,pins = <
299                         MX6SX_PAD_RGMII2_TD0__ENET2_TX_DATA_0   0x1b0b0
300                         MX6SX_PAD_RGMII2_TD1__ENET2_TX_DATA_1   0x1b0b0
301                         MX6SX_PAD_RGMII2_RD0__ENET2_RX_DATA_0   0x1b0b0
302                         MX6SX_PAD_RGMII2_RD1__ENET2_RX_DATA_1   0x1b0b0
303                         MX6SX_PAD_RGMII2_RX_CTL__ENET2_RX_EN    0x1b0b0
304                         MX6SX_PAD_RGMII2_TX_CTL__ENET2_TX_EN    0x1b0b0
305                         MX6SX_PAD_ENET2_TX_CLK__ENET2_REF_CLK2  0x4000a038
306                         /* LAN8720 PHY Reset */
307                         MX6SX_PAD_RGMII2_TD3__GPIO5_IO_21       0x10b0
308                         /* MDIO */
309                         MX6SX_PAD_ENET1_COL__ENET2_MDC          0xa0f9
310                         MX6SX_PAD_ENET1_CRS__ENET2_MDIO         0xa0f9
311                         /* IRQ from PHY */
312                         MX6SX_PAD_KEY_ROW4__GPIO2_IO_19         0x10b0
313                 >;
314         };
315
316         pinctrl_flexcan1: flexcan1grp {
317                 fsl,pins = <
318                         MX6SX_PAD_QSPI1B_DQS__CAN1_TX           0x1b0b0
319                         MX6SX_PAD_QSPI1A_SS1_B__CAN1_RX         0x1b0b0
320                 >;
321         };
322
323         pinctrl_flexcan2: flexcan2grp {
324                 fsl,pins = <
325                         MX6SX_PAD_QSPI1B_SS1_B__CAN2_RX         0x1b0b0
326                         MX6SX_PAD_QSPI1A_DQS__CAN2_TX           0x1b0b0
327                 >;
328         };
329
330         pinctrl_gpios: gpiosgrp {
331                 fsl,pins = <
332                         /* reset external uC */
333                         MX6SX_PAD_QSPI1A_DATA3__GPIO4_IO_19     0x10b0
334                         /* IRQ from external uC */
335                         MX6SX_PAD_KEY_ROW0__GPIO2_IO_15         0x10b0
336                         /* overcurrent detection */
337                         MX6SX_PAD_GPIO1_IO08__GPIO1_IO_8        0x10b0
338                 >;
339         };
340
341         pinctrl_i2c1: i2c1grp {
342                 fsl,pins = <
343                         MX6SX_PAD_GPIO1_IO01__I2C1_SDA          0x4001b8b1
344                         MX6SX_PAD_GPIO1_IO00__I2C1_SCL          0x4001b8b1
345                 >;
346         };
347
348         pinctrl_i2c3: i2c3grp {
349                 fsl,pins = <
350                         MX6SX_PAD_NAND_ALE__I2C3_SDA            0x4001b8b1
351                         MX6SX_PAD_NAND_CLE__I2C3_SCL            0x4001b8b1
352                 >;
353         };
354
355         pinctrl_pwm1: pwm1grp-1 {
356                 fsl,pins = <
357                         /* blue LED */
358                         MX6SX_PAD_RGMII2_RD3__PWM1_OUT          0x1b0b1
359                 >;
360         };
361
362         pinctrl_pwm2: pwm2grp-1 {
363                 fsl,pins = <
364                         /* green LED */
365                         MX6SX_PAD_RGMII2_RD2__PWM2_OUT          0x1b0b1
366                 >;
367         };
368
369         pinctrl_pwm6: pwm6grp-1 {
370                 fsl,pins = <
371                         /* red LED */
372                         MX6SX_PAD_RGMII2_TD2__PWM6_OUT          0x1b0b1
373                 >;
374         };
375
376         pinctrl_sx9500: sx9500grp {
377                 fsl,pins = <
378                         /* Reset */
379                         MX6SX_PAD_KEY_COL0__GPIO2_IO_10         0x838
380                         /* IRQ */
381                         MX6SX_PAD_KEY_ROW1__GPIO2_IO_16         0x70e0
382                 >;
383         };
384
385         pinctrl_uart1: uart1grp {
386                 fsl,pins = <
387                         MX6SX_PAD_GPIO1_IO04__UART1_TX          0x1b0b1
388                         MX6SX_PAD_GPIO1_IO05__UART1_RX          0x1b0b1
389                 >;
390         };
391
392         pinctrl_uart2: uart2grp {
393                 fsl,pins = <
394                         MX6SX_PAD_GPIO1_IO06__UART2_TX          0x1b0b1
395                         MX6SX_PAD_GPIO1_IO07__UART2_RX          0x1b0b1
396                 >;
397         };
398
399         pinctrl_usb_otg1: usbotg1grp {
400                 fsl,pins = <
401                         MX6SX_PAD_GPIO1_IO09__GPIO1_IO_9        0x10b0
402                 >;
403         };
404
405         pinctrl_usb_otg1_id: usbotg1idgrp {
406                 fsl,pins = <
407                         MX6SX_PAD_GPIO1_IO10__ANATOP_OTG1_ID    0x17059
408                 >;
409         };
410
411         pinctrl_usdhc2_50mhz: usdhc2grp-50mhz {
412                 fsl,pins = <
413                         MX6SX_PAD_SD2_CLK__USDHC2_CLK           0x10059
414                         MX6SX_PAD_SD2_CMD__USDHC2_CMD           0x17059
415                         MX6SX_PAD_SD2_DATA0__USDHC2_DATA0       0x17059
416                         MX6SX_PAD_SD2_DATA1__USDHC2_DATA1       0x17059
417                         MX6SX_PAD_SD2_DATA2__USDHC2_DATA2       0x17059
418                         MX6SX_PAD_SD2_DATA3__USDHC2_DATA3       0x17059
419                         MX6SX_PAD_LCD1_VSYNC__GPIO3_IO_28       0x1b000
420                         MX6SX_PAD_LCD1_HSYNC__GPIO3_IO_26       0x10b0
421                 >;
422         };
423
424         pinctrl_usdhc2_100mhz: usdhc2grp-100mhz {
425                 fsl,pins = <
426                         MX6SX_PAD_SD2_CLK__USDHC2_CLK           0x100b9
427                         MX6SX_PAD_SD2_CMD__USDHC2_CMD           0x170b9
428                         MX6SX_PAD_SD2_DATA0__USDHC2_DATA0       0x170b9
429                         MX6SX_PAD_SD2_DATA1__USDHC2_DATA1       0x170b9
430                         MX6SX_PAD_SD2_DATA2__USDHC2_DATA2       0x170b9
431                         MX6SX_PAD_SD2_DATA3__USDHC2_DATA3       0x170b9
432                 >;
433         };
434
435         pinctrl_usdhc2_200mhz: usdhc2grp-200mhz {
436                 fsl,pins = <
437                         MX6SX_PAD_SD2_CLK__USDHC2_CLK           0x100f9
438                         MX6SX_PAD_SD2_CMD__USDHC2_CMD           0x170f9
439                         MX6SX_PAD_SD2_DATA0__USDHC2_DATA0       0x170f9
440                         MX6SX_PAD_SD2_DATA1__USDHC2_DATA1       0x170f9
441                         MX6SX_PAD_SD2_DATA2__USDHC2_DATA2       0x170f9
442                         MX6SX_PAD_SD2_DATA3__USDHC2_DATA3       0x170f9
443                 >;
444         };
445
446         pinctrl_usdhc4_50mhz: usdhc4grp-50mhz {
447                 fsl,pins = <
448                         MX6SX_PAD_SD4_CLK__USDHC4_CLK           0x10059
449                         MX6SX_PAD_SD4_CMD__USDHC4_CMD           0x17059
450                         MX6SX_PAD_SD4_DATA0__USDHC4_DATA0       0x17059
451                         MX6SX_PAD_SD4_DATA1__USDHC4_DATA1       0x17059
452                         MX6SX_PAD_SD4_DATA2__USDHC4_DATA2       0x17059
453                         MX6SX_PAD_SD4_DATA3__USDHC4_DATA3       0x17059
454                         MX6SX_PAD_SD4_DATA4__USDHC4_DATA4       0x17059
455                         MX6SX_PAD_SD4_DATA5__USDHC4_DATA5       0x17059
456                         MX6SX_PAD_SD4_DATA6__USDHC4_DATA6       0x17059
457                         MX6SX_PAD_SD4_DATA7__USDHC4_DATA7       0x17059
458                         MX6SX_PAD_SD4_RESET_B__USDHC4_RESET_B   0x17068
459                 >;
460         };
461
462         pinctrl_usdhc4_100mhz: usdhc4-100mhz {
463                 fsl,pins = <
464                         MX6SX_PAD_SD4_CLK__USDHC4_CLK           0x100b9
465                         MX6SX_PAD_SD4_CMD__USDHC4_CMD           0x170b9
466                         MX6SX_PAD_SD4_DATA0__USDHC4_DATA0       0x170b9
467                         MX6SX_PAD_SD4_DATA1__USDHC4_DATA1       0x170b9
468                         MX6SX_PAD_SD4_DATA2__USDHC4_DATA2       0x170b9
469                         MX6SX_PAD_SD4_DATA3__USDHC4_DATA3       0x170b9
470                         MX6SX_PAD_SD4_DATA4__USDHC4_DATA4       0x170b9
471                         MX6SX_PAD_SD4_DATA5__USDHC4_DATA5       0x170b9
472                         MX6SX_PAD_SD4_DATA6__USDHC4_DATA6       0x170b9
473                         MX6SX_PAD_SD4_DATA7__USDHC4_DATA7       0x170b9
474                 >;
475         };
476
477         pinctrl_usdhc4_200mhz: usdhc4-200mhz {
478                 fsl,pins = <
479                         MX6SX_PAD_SD4_CLK__USDHC4_CLK           0x100f9
480                         MX6SX_PAD_SD4_CMD__USDHC4_CMD           0x170f9
481                         MX6SX_PAD_SD4_DATA0__USDHC4_DATA0       0x170f9
482                         MX6SX_PAD_SD4_DATA1__USDHC4_DATA1       0x170f9
483                         MX6SX_PAD_SD4_DATA2__USDHC4_DATA2       0x170f9
484                         MX6SX_PAD_SD4_DATA3__USDHC4_DATA3       0x170f9
485                         MX6SX_PAD_SD4_DATA4__USDHC4_DATA4       0x170f9
486                         MX6SX_PAD_SD4_DATA5__USDHC4_DATA5       0x170f9
487                         MX6SX_PAD_SD4_DATA6__USDHC4_DATA6       0x170f9
488                         MX6SX_PAD_SD4_DATA7__USDHC4_DATA7       0x170f9
489                 >;
490         };
491 };
492
493 &pwm1 {
494         pinctrl-names = "default";
495         pinctrl-0 = <&pinctrl_pwm1>;
496         status = "okay";
497 };
498
499 &pwm2 {
500         pinctrl-names = "default";
501         pinctrl-0 = <&pinctrl_pwm2>;
502         status = "okay";
503 };
504
505 &pwm6 {
506         pinctrl-names = "default";
507         pinctrl-0 = <&pinctrl_pwm6>;
508         status = "okay";
509 };
510
511 &reg_arm {
512         vin-supply = <&sw1a_reg>;
513 };
514
515 &reg_soc {
516         vin-supply = <&sw1a_reg>;
517 };
518
519 &snvs_poweroff {
520         status = "okay";
521 };
522
523 &uart1 {
524         pinctrl-names = "default";
525         pinctrl-0 = <&pinctrl_uart1>;
526         status = "okay";
527 };
528
529 &uart2 {
530         pinctrl-names = "default";
531         pinctrl-0 = <&pinctrl_uart2>;
532         status = "okay";
533 };
534
535 &usbotg1 {
536         vbus-supply = <&reg_usb_otg1_vbus>;
537         pinctrl-names = "default";
538         pinctrl-0 = <&pinctrl_usb_otg1_id>;
539         status = "okay";
540 };
541
542 &usbotg2 {
543         dr_mode = "host";
544         status = "okay";
545 };
546
547 &usdhc2 {
548         pinctrl-names = "default", "state_100mhz", "state_200mhz";
549         pinctrl-0 = <&pinctrl_usdhc2_50mhz>;
550         pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
551         pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
552         cd-gpios = <&gpio3 28 GPIO_ACTIVE_LOW>;
553         keep-power-in-suspend;
554         status = "okay";
555 };
556
557 &usdhc4 {
558         /* hs200-mode is currently unsupported because Vccq is on 3.1V, but
559          * not on necessary 1.8V.
560          */
561         pinctrl-names = "default", "state_100mhz", "state_200mhz";
562         pinctrl-0 = <&pinctrl_usdhc4_50mhz>;
563         pinctrl-1 = <&pinctrl_usdhc4_100mhz>;
564         pinctrl-2 = <&pinctrl_usdhc4_200mhz>;
565         bus-width = <8>;
566         keep-power-in-suspend;
567         non-removable;
568         cap-mmc-hw-reset;
569         status = "okay";
570 };