xref: /linux/arch/arm64/boot/dts/freescale/imx8mp-verdin-ivy.dtsi (revision c771600c6af14749609b49565ffb4cac2959710d)
1*b98948b0SJoão Paulo Gonçalves// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2*b98948b0SJoão Paulo Gonçalves/*
3*b98948b0SJoão Paulo Gonçalves * Copyright 2024 Toradex
4*b98948b0SJoão Paulo Gonçalves *
5*b98948b0SJoão Paulo Gonçalves * Common dtsi for Verdin IMX8MP SoM on Ivy carrier board
6*b98948b0SJoão Paulo Gonçalves *
7*b98948b0SJoão Paulo Gonçalves * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx-8m-plus
8*b98948b0SJoão Paulo Gonçalves * https://www.toradex.com/products/carrier-board/ivy-carrier-board
9*b98948b0SJoão Paulo Gonçalves */
10*b98948b0SJoão Paulo Gonçalves
11*b98948b0SJoão Paulo Gonçalves#include <dt-bindings/mux/mux.h>
12*b98948b0SJoão Paulo Gonçalves#include <dt-bindings/leds/common.h>
13*b98948b0SJoão Paulo Gonçalves#include <dt-bindings/net/ti-dp83867.h>
14*b98948b0SJoão Paulo Gonçalves
15*b98948b0SJoão Paulo Gonçalves/ {
16*b98948b0SJoão Paulo Gonçalves	/* AIN1 Voltage w/o AIN1_MODE gpio control */
17*b98948b0SJoão Paulo Gonçalves	ain1_voltage_unmanaged: voltage-divider-ain1 {
18*b98948b0SJoão Paulo Gonçalves		compatible = "voltage-divider";
19*b98948b0SJoão Paulo Gonçalves		#io-channel-cells = <1>;
20*b98948b0SJoão Paulo Gonçalves		io-channels = <&ivy_adc1 0>;
21*b98948b0SJoão Paulo Gonçalves		full-ohms = <19>;
22*b98948b0SJoão Paulo Gonçalves		output-ohms = <1>;
23*b98948b0SJoão Paulo Gonçalves	};
24*b98948b0SJoão Paulo Gonçalves
25*b98948b0SJoão Paulo Gonçalves	/* AIN1 Current w/o AIN1_MODE gpio control */
26*b98948b0SJoão Paulo Gonçalves	ain1_current_unmanaged: current-sense-shunt-ain1 {
27*b98948b0SJoão Paulo Gonçalves		compatible = "current-sense-shunt";
28*b98948b0SJoão Paulo Gonçalves		#io-channel-cells = <0>;
29*b98948b0SJoão Paulo Gonçalves		io-channels = <&ivy_adc1 1>;
30*b98948b0SJoão Paulo Gonçalves		shunt-resistor-micro-ohms = <100000000>;
31*b98948b0SJoão Paulo Gonçalves	};
32*b98948b0SJoão Paulo Gonçalves
33*b98948b0SJoão Paulo Gonçalves	/* AIN1_MODE - SODIMM 216 */
34*b98948b0SJoão Paulo Gonçalves	ain1_mode_mux_ctrl: mux-controller-0 {
35*b98948b0SJoão Paulo Gonçalves		compatible = "gpio-mux";
36*b98948b0SJoão Paulo Gonçalves		pinctrl-names = "default";
37*b98948b0SJoão Paulo Gonçalves		pinctrl-0 = <&pinctrl_gpio5>;
38*b98948b0SJoão Paulo Gonçalves		#mux-control-cells = <0>;
39*b98948b0SJoão Paulo Gonçalves		mux-gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
40*b98948b0SJoão Paulo Gonçalves	};
41*b98948b0SJoão Paulo Gonçalves
42*b98948b0SJoão Paulo Gonçalves	ain1-voltage {
43*b98948b0SJoão Paulo Gonçalves		compatible = "io-channel-mux";
44*b98948b0SJoão Paulo Gonçalves		channels = "ain1_voltage", "";
45*b98948b0SJoão Paulo Gonçalves		io-channels = <&ain1_voltage_unmanaged 0>;
46*b98948b0SJoão Paulo Gonçalves		io-channel-names = "parent";
47*b98948b0SJoão Paulo Gonçalves		mux-controls = <&ain1_mode_mux_ctrl>;
48*b98948b0SJoão Paulo Gonçalves		settle-time-us = <1000>;
49*b98948b0SJoão Paulo Gonçalves	};
50*b98948b0SJoão Paulo Gonçalves
51*b98948b0SJoão Paulo Gonçalves	ain1-current {
52*b98948b0SJoão Paulo Gonçalves		compatible = "io-channel-mux";
53*b98948b0SJoão Paulo Gonçalves		channels = "", "ain1_current";
54*b98948b0SJoão Paulo Gonçalves		io-channels = <&ain1_current_unmanaged>;
55*b98948b0SJoão Paulo Gonçalves		io-channel-names = "parent";
56*b98948b0SJoão Paulo Gonçalves		mux-controls = <&ain1_mode_mux_ctrl>;
57*b98948b0SJoão Paulo Gonçalves		settle-time-us = <1000>;
58*b98948b0SJoão Paulo Gonçalves	};
59*b98948b0SJoão Paulo Gonçalves
60*b98948b0SJoão Paulo Gonçalves	/* AIN2 Voltage w/o AIN2_MODE gpio control */
61*b98948b0SJoão Paulo Gonçalves	ain2_voltage_unmanaged: voltage-divider-ain2 {
62*b98948b0SJoão Paulo Gonçalves		compatible = "voltage-divider";
63*b98948b0SJoão Paulo Gonçalves		#io-channel-cells = <1>;
64*b98948b0SJoão Paulo Gonçalves		io-channels = <&ivy_adc2 0>;
65*b98948b0SJoão Paulo Gonçalves		full-ohms = <19>;
66*b98948b0SJoão Paulo Gonçalves		output-ohms = <1>;
67*b98948b0SJoão Paulo Gonçalves	};
68*b98948b0SJoão Paulo Gonçalves
69*b98948b0SJoão Paulo Gonçalves	/* AIN2 Current w/o AIN2_MODE gpio control */
70*b98948b0SJoão Paulo Gonçalves	ain2_current_unmanaged: current-sense-shunt-ain2 {
71*b98948b0SJoão Paulo Gonçalves		compatible = "current-sense-shunt";
72*b98948b0SJoão Paulo Gonçalves		#io-channel-cells = <0>;
73*b98948b0SJoão Paulo Gonçalves		io-channels = <&ivy_adc2 1>;
74*b98948b0SJoão Paulo Gonçalves		shunt-resistor-micro-ohms = <100000000>;
75*b98948b0SJoão Paulo Gonçalves	};
76*b98948b0SJoão Paulo Gonçalves
77*b98948b0SJoão Paulo Gonçalves	/* AIN2_MODE - SODIMM 218 */
78*b98948b0SJoão Paulo Gonçalves	ain2_mode_mux_ctrl: mux-controller-1 {
79*b98948b0SJoão Paulo Gonçalves		compatible = "gpio-mux";
80*b98948b0SJoão Paulo Gonçalves		pinctrl-names = "default";
81*b98948b0SJoão Paulo Gonçalves		pinctrl-0 = <&pinctrl_gpio6>;
82*b98948b0SJoão Paulo Gonçalves		#mux-control-cells = <0>;
83*b98948b0SJoão Paulo Gonçalves		mux-gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
84*b98948b0SJoão Paulo Gonçalves	};
85*b98948b0SJoão Paulo Gonçalves
86*b98948b0SJoão Paulo Gonçalves	ain2-voltage {
87*b98948b0SJoão Paulo Gonçalves		compatible = "io-channel-mux";
88*b98948b0SJoão Paulo Gonçalves		channels = "ain2_voltage", "";
89*b98948b0SJoão Paulo Gonçalves		io-channels = <&ain2_voltage_unmanaged 0>;
90*b98948b0SJoão Paulo Gonçalves		io-channel-names = "parent";
91*b98948b0SJoão Paulo Gonçalves		mux-controls = <&ain2_mode_mux_ctrl>;
92*b98948b0SJoão Paulo Gonçalves		settle-time-us = <1000>;
93*b98948b0SJoão Paulo Gonçalves	};
94*b98948b0SJoão Paulo Gonçalves
95*b98948b0SJoão Paulo Gonçalves	ain2-current {
96*b98948b0SJoão Paulo Gonçalves		compatible = "io-channel-mux";
97*b98948b0SJoão Paulo Gonçalves		channels = "", "ain2_current";
98*b98948b0SJoão Paulo Gonçalves		io-channels = <&ain2_current_unmanaged>;
99*b98948b0SJoão Paulo Gonçalves		io-channel-names = "parent";
100*b98948b0SJoão Paulo Gonçalves		mux-controls = <&ain2_mode_mux_ctrl>;
101*b98948b0SJoão Paulo Gonçalves		settle-time-us = <1000>;
102*b98948b0SJoão Paulo Gonçalves	};
103*b98948b0SJoão Paulo Gonçalves
104*b98948b0SJoão Paulo Gonçalves	leds {
105*b98948b0SJoão Paulo Gonçalves		compatible = "gpio-leds";
106*b98948b0SJoão Paulo Gonçalves		pinctrl-names = "default";
107*b98948b0SJoão Paulo Gonçalves		pinctrl-0 = <&pinctrl_ivy_leds>;
108*b98948b0SJoão Paulo Gonçalves
109*b98948b0SJoão Paulo Gonçalves		/* D7 Blue - SODIMM 30 - LEDs.GPIO1 */
110*b98948b0SJoão Paulo Gonçalves		led-0 {
111*b98948b0SJoão Paulo Gonçalves			color = <LED_COLOR_ID_BLUE>;
112*b98948b0SJoão Paulo Gonçalves			default-state = "off";
113*b98948b0SJoão Paulo Gonçalves			function = LED_FUNCTION_STATUS;
114*b98948b0SJoão Paulo Gonçalves			function-enumerator = <1>;
115*b98948b0SJoão Paulo Gonçalves			gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>;
116*b98948b0SJoão Paulo Gonçalves		};
117*b98948b0SJoão Paulo Gonçalves
118*b98948b0SJoão Paulo Gonçalves		/* D7 Green - SODIMM 32 - LEDs.GPIO2 */
119*b98948b0SJoão Paulo Gonçalves		led-1 {
120*b98948b0SJoão Paulo Gonçalves			color = <LED_COLOR_ID_GREEN>;
121*b98948b0SJoão Paulo Gonçalves			default-state = "off";
122*b98948b0SJoão Paulo Gonçalves			function = LED_FUNCTION_STATUS;
123*b98948b0SJoão Paulo Gonçalves			function-enumerator = <1>;
124*b98948b0SJoão Paulo Gonçalves			gpios = <&gpio3 22 GPIO_ACTIVE_HIGH>;
125*b98948b0SJoão Paulo Gonçalves		};
126*b98948b0SJoão Paulo Gonçalves
127*b98948b0SJoão Paulo Gonçalves		/* D7 Red - SODIMM 34 - LEDs.GPIO3 */
128*b98948b0SJoão Paulo Gonçalves		led-2 {
129*b98948b0SJoão Paulo Gonçalves			color = <LED_COLOR_ID_RED>;
130*b98948b0SJoão Paulo Gonçalves			default-state = "off";
131*b98948b0SJoão Paulo Gonçalves			function = LED_FUNCTION_STATUS;
132*b98948b0SJoão Paulo Gonçalves			function-enumerator = <1>;
133*b98948b0SJoão Paulo Gonçalves			gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;
134*b98948b0SJoão Paulo Gonçalves		};
135*b98948b0SJoão Paulo Gonçalves
136*b98948b0SJoão Paulo Gonçalves		/* D8 Blue - SODIMM 36 - LEDs.GPIO4 */
137*b98948b0SJoão Paulo Gonçalves		led-3 {
138*b98948b0SJoão Paulo Gonçalves			color = <LED_COLOR_ID_BLUE>;
139*b98948b0SJoão Paulo Gonçalves			default-state = "off";
140*b98948b0SJoão Paulo Gonçalves			function = LED_FUNCTION_STATUS;
141*b98948b0SJoão Paulo Gonçalves			function-enumerator = <2>;
142*b98948b0SJoão Paulo Gonçalves			gpios = <&gpio4 2 GPIO_ACTIVE_HIGH>;
143*b98948b0SJoão Paulo Gonçalves		};
144*b98948b0SJoão Paulo Gonçalves
145*b98948b0SJoão Paulo Gonçalves		/* D8 Green - SODIMM 54 - LEDs.GPIO5 */
146*b98948b0SJoão Paulo Gonçalves		led-4 {
147*b98948b0SJoão Paulo Gonçalves			color = <LED_COLOR_ID_GREEN>;
148*b98948b0SJoão Paulo Gonçalves			default-state = "off";
149*b98948b0SJoão Paulo Gonçalves			function = LED_FUNCTION_STATUS;
150*b98948b0SJoão Paulo Gonçalves			function-enumerator = <2>;
151*b98948b0SJoão Paulo Gonçalves			gpios = <&gpio3 1 GPIO_ACTIVE_HIGH>;
152*b98948b0SJoão Paulo Gonçalves		};
153*b98948b0SJoão Paulo Gonçalves
154*b98948b0SJoão Paulo Gonçalves		/* D8 Red - SODIMM 44 - LEDs.GPIO6 */
155*b98948b0SJoão Paulo Gonçalves		led-5 {
156*b98948b0SJoão Paulo Gonçalves			color = <LED_COLOR_ID_RED>;
157*b98948b0SJoão Paulo Gonçalves			default-state = "off";
158*b98948b0SJoão Paulo Gonçalves			function = LED_FUNCTION_STATUS;
159*b98948b0SJoão Paulo Gonçalves			function-enumerator = <2>;
160*b98948b0SJoão Paulo Gonçalves			gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>;
161*b98948b0SJoão Paulo Gonçalves		};
162*b98948b0SJoão Paulo Gonçalves
163*b98948b0SJoão Paulo Gonçalves		/* D9 Blue - SODIMM 46 - LEDs.GPIO7 */
164*b98948b0SJoão Paulo Gonçalves		led-6 {
165*b98948b0SJoão Paulo Gonçalves			color = <LED_COLOR_ID_BLUE>;
166*b98948b0SJoão Paulo Gonçalves			default-state = "off";
167*b98948b0SJoão Paulo Gonçalves			function = LED_FUNCTION_STATUS;
168*b98948b0SJoão Paulo Gonçalves			function-enumerator = <3>;
169*b98948b0SJoão Paulo Gonçalves			gpios = <&gpio5 01 GPIO_ACTIVE_HIGH>;
170*b98948b0SJoão Paulo Gonçalves		};
171*b98948b0SJoão Paulo Gonçalves
172*b98948b0SJoão Paulo Gonçalves		/* D9 Red - SODIMM 48 - LEDs.GPIO8 */
173*b98948b0SJoão Paulo Gonçalves		led-7 {
174*b98948b0SJoão Paulo Gonçalves			color = <LED_COLOR_ID_RED>;
175*b98948b0SJoão Paulo Gonçalves			default-state = "off";
176*b98948b0SJoão Paulo Gonçalves			function = LED_FUNCTION_STATUS;
177*b98948b0SJoão Paulo Gonçalves			function-enumerator = <3>;
178*b98948b0SJoão Paulo Gonçalves			gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>;
179*b98948b0SJoão Paulo Gonçalves		};
180*b98948b0SJoão Paulo Gonçalves	};
181*b98948b0SJoão Paulo Gonçalves
182*b98948b0SJoão Paulo Gonçalves	reg_3v2_ain1: regulator-3v2-ain1 {
183*b98948b0SJoão Paulo Gonçalves		compatible = "regulator-fixed";
184*b98948b0SJoão Paulo Gonçalves		regulator-max-microvolt = <3200000>;
185*b98948b0SJoão Paulo Gonçalves		regulator-min-microvolt = <3200000>;
186*b98948b0SJoão Paulo Gonçalves		regulator-name = "+3V2_AIN1";
187*b98948b0SJoão Paulo Gonçalves	};
188*b98948b0SJoão Paulo Gonçalves
189*b98948b0SJoão Paulo Gonçalves	reg_3v2_ain2: regulator-3v2-ain2 {
190*b98948b0SJoão Paulo Gonçalves		compatible = "regulator-fixed";
191*b98948b0SJoão Paulo Gonçalves		regulator-max-microvolt = <3200000>;
192*b98948b0SJoão Paulo Gonçalves		regulator-min-microvolt = <3200000>;
193*b98948b0SJoão Paulo Gonçalves		regulator-name = "+3V2_AIN2";
194*b98948b0SJoão Paulo Gonçalves	};
195*b98948b0SJoão Paulo Gonçalves
196*b98948b0SJoão Paulo Gonçalves	/* Ivy Power Supply Input Voltage */
197*b98948b0SJoão Paulo Gonçalves	ivy-input-voltage {
198*b98948b0SJoão Paulo Gonçalves		compatible = "voltage-divider";
199*b98948b0SJoão Paulo Gonçalves		/* Verdin ADC_1 */
200*b98948b0SJoão Paulo Gonçalves		io-channels = <&verdin_som_adc 7>;
201*b98948b0SJoão Paulo Gonçalves		full-ohms = <204700>; /* 200k + 4.7k */
202*b98948b0SJoão Paulo Gonçalves		output-ohms = <4700>;
203*b98948b0SJoão Paulo Gonçalves	};
204*b98948b0SJoão Paulo Gonçalves
205*b98948b0SJoão Paulo Gonçalves	ivy-5v-voltage {
206*b98948b0SJoão Paulo Gonçalves		compatible = "voltage-divider";
207*b98948b0SJoão Paulo Gonçalves		/* Verdin ADC_2 */
208*b98948b0SJoão Paulo Gonçalves		io-channels = <&verdin_som_adc 6>;
209*b98948b0SJoão Paulo Gonçalves		full-ohms = <39000>; /* 27k + 12k */
210*b98948b0SJoão Paulo Gonçalves		output-ohms = <12000>;
211*b98948b0SJoão Paulo Gonçalves	};
212*b98948b0SJoão Paulo Gonçalves
213*b98948b0SJoão Paulo Gonçalves	ivy-3v3-voltage {
214*b98948b0SJoão Paulo Gonçalves		compatible = "voltage-divider";
215*b98948b0SJoão Paulo Gonçalves		/* Verdin ADC_3 */
216*b98948b0SJoão Paulo Gonçalves		io-channels = <&verdin_som_adc 5>;
217*b98948b0SJoão Paulo Gonçalves		full-ohms = <54000>; /* 27k + 27k */
218*b98948b0SJoão Paulo Gonçalves		output-ohms = <27000>;
219*b98948b0SJoão Paulo Gonçalves	};
220*b98948b0SJoão Paulo Gonçalves
221*b98948b0SJoão Paulo Gonçalves	ivy-1v8-voltage {
222*b98948b0SJoão Paulo Gonçalves		compatible = "voltage-divider";
223*b98948b0SJoão Paulo Gonçalves		/* Verdin ADC_4 */
224*b98948b0SJoão Paulo Gonçalves		io-channels = <&verdin_som_adc 4>;
225*b98948b0SJoão Paulo Gonçalves		full-ohms = <39000>; /* 12k + 27k */
226*b98948b0SJoão Paulo Gonçalves		output-ohms = <27000>;
227*b98948b0SJoão Paulo Gonçalves	};
228*b98948b0SJoão Paulo Gonçalves};
229*b98948b0SJoão Paulo Gonçalves
230*b98948b0SJoão Paulo Gonçalves/* Verdin SPI_1 */
231*b98948b0SJoão Paulo Gonçalves&ecspi1 {
232*b98948b0SJoão Paulo Gonçalves	pinctrl-0 = <&pinctrl_ecspi1>,
233*b98948b0SJoão Paulo Gonçalves		    <&pinctrl_gpio1>,
234*b98948b0SJoão Paulo Gonçalves		    <&pinctrl_gpio4>;
235*b98948b0SJoão Paulo Gonçalves	cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>,
236*b98948b0SJoão Paulo Gonçalves		   <&gpio1 0 GPIO_ACTIVE_LOW>,
237*b98948b0SJoão Paulo Gonçalves		   <&gpio1 6 GPIO_ACTIVE_LOW>;
238*b98948b0SJoão Paulo Gonçalves	status = "okay";
239*b98948b0SJoão Paulo Gonçalves
240*b98948b0SJoão Paulo Gonçalves	tpm@1 {
241*b98948b0SJoão Paulo Gonçalves		compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
242*b98948b0SJoão Paulo Gonçalves		reg = <1>;
243*b98948b0SJoão Paulo Gonçalves		spi-max-frequency = <18500000>;
244*b98948b0SJoão Paulo Gonçalves	};
245*b98948b0SJoão Paulo Gonçalves
246*b98948b0SJoão Paulo Gonçalves	fram@2 {
247*b98948b0SJoão Paulo Gonçalves		compatible = "fujitsu,mb85rs256", "atmel,at25";
248*b98948b0SJoão Paulo Gonçalves		reg = <2>;
249*b98948b0SJoão Paulo Gonçalves		address-width = <16>;
250*b98948b0SJoão Paulo Gonçalves		size = <32768>;
251*b98948b0SJoão Paulo Gonçalves		spi-max-frequency = <33000000>;
252*b98948b0SJoão Paulo Gonçalves		pagesize = <1>;
253*b98948b0SJoão Paulo Gonçalves	};
254*b98948b0SJoão Paulo Gonçalves};
255*b98948b0SJoão Paulo Gonçalves
256*b98948b0SJoão Paulo Gonçalves/* EEPROM on Ivy */
257*b98948b0SJoão Paulo Gonçalves&eeprom_carrier_board {
258*b98948b0SJoão Paulo Gonçalves	status = "okay";
259*b98948b0SJoão Paulo Gonçalves};
260*b98948b0SJoão Paulo Gonçalves
261*b98948b0SJoão Paulo Gonçalves/* Verdin ETH_1 */
262*b98948b0SJoão Paulo Gonçalves&eqos {
263*b98948b0SJoão Paulo Gonçalves	status = "okay";
264*b98948b0SJoão Paulo Gonçalves};
265*b98948b0SJoão Paulo Gonçalves
266*b98948b0SJoão Paulo Gonçalves/* Verdin ETH_2 */
267*b98948b0SJoão Paulo Gonçalves&fec {
268*b98948b0SJoão Paulo Gonçalves	phy-handle = <&ethphy2>;
269*b98948b0SJoão Paulo Gonçalves	phy-mode = "rgmii-id";
270*b98948b0SJoão Paulo Gonçalves	status = "okay";
271*b98948b0SJoão Paulo Gonçalves};
272*b98948b0SJoão Paulo Gonçalves
273*b98948b0SJoão Paulo Gonçalves&verdin_eth2_mdio {
274*b98948b0SJoão Paulo Gonçalves	ethphy2: ethernet-phy@2 {
275*b98948b0SJoão Paulo Gonçalves		reg = <2>;
276*b98948b0SJoão Paulo Gonçalves		interrupt-parent = <&gpio4>;
277*b98948b0SJoão Paulo Gonçalves		interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
278*b98948b0SJoão Paulo Gonçalves		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
279*b98948b0SJoão Paulo Gonçalves		ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
280*b98948b0SJoão Paulo Gonçalves	};
281*b98948b0SJoão Paulo Gonçalves};
282*b98948b0SJoão Paulo Gonçalves
283*b98948b0SJoão Paulo Gonçalves/* Verdin CAN_1 */
284*b98948b0SJoão Paulo Gonçalves&flexcan1 {
285*b98948b0SJoão Paulo Gonçalves	status = "okay";
286*b98948b0SJoão Paulo Gonçalves};
287*b98948b0SJoão Paulo Gonçalves
288*b98948b0SJoão Paulo Gonçalves/* Verdin CAN_2 */
289*b98948b0SJoão Paulo Gonçalves&flexcan2 {
290*b98948b0SJoão Paulo Gonçalves	status = "okay";
291*b98948b0SJoão Paulo Gonçalves};
292*b98948b0SJoão Paulo Gonçalves
293*b98948b0SJoão Paulo Gonçalves&gpio1 {
294*b98948b0SJoão Paulo Gonçalves	gpio-line-names =
295*b98948b0SJoão Paulo Gonçalves		"", /* 0 */
296*b98948b0SJoão Paulo Gonçalves		"GPIO2", /* Verdin GPIO_2 - SODIMM 208 */
297*b98948b0SJoão Paulo Gonçalves		"",
298*b98948b0SJoão Paulo Gonçalves		"",
299*b98948b0SJoão Paulo Gonçalves		"",
300*b98948b0SJoão Paulo Gonçalves		"GPIO3", /* Verdin GPIO_3 - SODIMM 210 */
301*b98948b0SJoão Paulo Gonçalves		"",
302*b98948b0SJoão Paulo Gonçalves		"",
303*b98948b0SJoão Paulo Gonçalves		"",
304*b98948b0SJoão Paulo Gonçalves		"",
305*b98948b0SJoão Paulo Gonçalves		"",
306*b98948b0SJoão Paulo Gonçalves		"", /* 10 */
307*b98948b0SJoão Paulo Gonçalves		"",
308*b98948b0SJoão Paulo Gonçalves		"",
309*b98948b0SJoão Paulo Gonçalves		"",
310*b98948b0SJoão Paulo Gonçalves		"",
311*b98948b0SJoão Paulo Gonçalves		"",
312*b98948b0SJoão Paulo Gonçalves		"",
313*b98948b0SJoão Paulo Gonçalves		"",
314*b98948b0SJoão Paulo Gonçalves		"",
315*b98948b0SJoão Paulo Gonçalves		"",
316*b98948b0SJoão Paulo Gonçalves		"", /* 20 */
317*b98948b0SJoão Paulo Gonçalves		"",
318*b98948b0SJoão Paulo Gonçalves		"",
319*b98948b0SJoão Paulo Gonçalves		"",
320*b98948b0SJoão Paulo Gonçalves		"",
321*b98948b0SJoão Paulo Gonçalves		"",
322*b98948b0SJoão Paulo Gonçalves		"",
323*b98948b0SJoão Paulo Gonçalves		"",
324*b98948b0SJoão Paulo Gonçalves		"",
325*b98948b0SJoão Paulo Gonçalves		"";
326*b98948b0SJoão Paulo Gonçalves};
327*b98948b0SJoão Paulo Gonçalves
328*b98948b0SJoão Paulo Gonçalves&gpio3 {
329*b98948b0SJoão Paulo Gonçalves	gpio-line-names =
330*b98948b0SJoão Paulo Gonçalves		"", /* 0 */
331*b98948b0SJoão Paulo Gonçalves		"",
332*b98948b0SJoão Paulo Gonçalves		"",
333*b98948b0SJoão Paulo Gonçalves		"",
334*b98948b0SJoão Paulo Gonçalves		"",
335*b98948b0SJoão Paulo Gonçalves		"",
336*b98948b0SJoão Paulo Gonçalves		"DIG_1", /* SODIMM 56 */
337*b98948b0SJoão Paulo Gonçalves		"DIG_2", /* SODIMM 58 */
338*b98948b0SJoão Paulo Gonçalves		"REL1",  /* SODIMM 60 */
339*b98948b0SJoão Paulo Gonçalves		"REL2",  /* SODIMM 62 */
340*b98948b0SJoão Paulo Gonçalves		"", /* 10 */
341*b98948b0SJoão Paulo Gonçalves		"",
342*b98948b0SJoão Paulo Gonçalves		"",
343*b98948b0SJoão Paulo Gonçalves		"",
344*b98948b0SJoão Paulo Gonçalves		"REL4", /* SODIMM 66 */
345*b98948b0SJoão Paulo Gonçalves		"",
346*b98948b0SJoão Paulo Gonçalves		"REL3", /* SODIMM 64 */
347*b98948b0SJoão Paulo Gonçalves		"",
348*b98948b0SJoão Paulo Gonçalves		"",
349*b98948b0SJoão Paulo Gonçalves		"",
350*b98948b0SJoão Paulo Gonçalves		"", /* 20 */
351*b98948b0SJoão Paulo Gonçalves		"",
352*b98948b0SJoão Paulo Gonçalves		"",
353*b98948b0SJoão Paulo Gonçalves		"",
354*b98948b0SJoão Paulo Gonçalves		"",
355*b98948b0SJoão Paulo Gonçalves		"",
356*b98948b0SJoão Paulo Gonçalves		"",
357*b98948b0SJoão Paulo Gonçalves		"",
358*b98948b0SJoão Paulo Gonçalves		"",
359*b98948b0SJoão Paulo Gonçalves		"";
360*b98948b0SJoão Paulo Gonçalves};
361*b98948b0SJoão Paulo Gonçalves
362*b98948b0SJoão Paulo Gonçalves/* Temperature sensor on Ivy */
363*b98948b0SJoão Paulo Gonçalves&hwmon_temp {
364*b98948b0SJoão Paulo Gonçalves	compatible = "ti,tmp1075";
365*b98948b0SJoão Paulo Gonçalves	status = "okay";
366*b98948b0SJoão Paulo Gonçalves};
367*b98948b0SJoão Paulo Gonçalves
368*b98948b0SJoão Paulo Gonçalves/* Verdin I2C_4 CSI */
369*b98948b0SJoão Paulo Gonçalves&i2c3 {
370*b98948b0SJoão Paulo Gonçalves	status = "okay";
371*b98948b0SJoão Paulo Gonçalves
372*b98948b0SJoão Paulo Gonçalves	ivy_adc1: adc@40 {
373*b98948b0SJoão Paulo Gonçalves		compatible = "ti,ads1119";
374*b98948b0SJoão Paulo Gonçalves		reg = <0x40>;
375*b98948b0SJoão Paulo Gonçalves		pinctrl-names = "default";
376*b98948b0SJoão Paulo Gonçalves		pinctrl-0 = <&pinctrl_gpio7>;
377*b98948b0SJoão Paulo Gonçalves		interrupt-parent = <&gpio4>;
378*b98948b0SJoão Paulo Gonçalves		interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
379*b98948b0SJoão Paulo Gonçalves		avdd-supply = <&reg_3v2_ain1>;
380*b98948b0SJoão Paulo Gonçalves		dvdd-supply = <&reg_3v2_ain1>;
381*b98948b0SJoão Paulo Gonçalves		vref-supply = <&reg_3v2_ain1>;
382*b98948b0SJoão Paulo Gonçalves		#address-cells = <1>;
383*b98948b0SJoão Paulo Gonçalves		#io-channel-cells = <1>;
384*b98948b0SJoão Paulo Gonçalves		#size-cells = <0>;
385*b98948b0SJoão Paulo Gonçalves
386*b98948b0SJoão Paulo Gonçalves		/* AIN1 0-33V Voltage Input */
387*b98948b0SJoão Paulo Gonçalves		channel@0 {
388*b98948b0SJoão Paulo Gonçalves			reg = <0>;
389*b98948b0SJoão Paulo Gonçalves			diff-channels = <0 1>;
390*b98948b0SJoão Paulo Gonçalves		};
391*b98948b0SJoão Paulo Gonçalves
392*b98948b0SJoão Paulo Gonçalves		/* AIN1 0-20mA Current Input */
393*b98948b0SJoão Paulo Gonçalves		channel@1 {
394*b98948b0SJoão Paulo Gonçalves			reg = <1>;
395*b98948b0SJoão Paulo Gonçalves			diff-channels = <2 3>;
396*b98948b0SJoão Paulo Gonçalves		};
397*b98948b0SJoão Paulo Gonçalves	};
398*b98948b0SJoão Paulo Gonçalves
399*b98948b0SJoão Paulo Gonçalves	ivy_adc2: adc@41 {
400*b98948b0SJoão Paulo Gonçalves		compatible = "ti,ads1119";
401*b98948b0SJoão Paulo Gonçalves		reg = <0x41>;
402*b98948b0SJoão Paulo Gonçalves		pinctrl-names = "default";
403*b98948b0SJoão Paulo Gonçalves		pinctrl-0 = <&pinctrl_gpio8>;
404*b98948b0SJoão Paulo Gonçalves		interrupt-parent = <&gpio4>;
405*b98948b0SJoão Paulo Gonçalves		interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
406*b98948b0SJoão Paulo Gonçalves		avdd-supply = <&reg_3v2_ain2>;
407*b98948b0SJoão Paulo Gonçalves		dvdd-supply = <&reg_3v2_ain2>;
408*b98948b0SJoão Paulo Gonçalves		vref-supply = <&reg_3v2_ain2>;
409*b98948b0SJoão Paulo Gonçalves		#address-cells = <1>;
410*b98948b0SJoão Paulo Gonçalves		#io-channel-cells = <1>;
411*b98948b0SJoão Paulo Gonçalves		#size-cells = <0>;
412*b98948b0SJoão Paulo Gonçalves
413*b98948b0SJoão Paulo Gonçalves		/* AIN2 0-33V Voltage Input */
414*b98948b0SJoão Paulo Gonçalves		channel@0 {
415*b98948b0SJoão Paulo Gonçalves			reg = <0>;
416*b98948b0SJoão Paulo Gonçalves			diff-channels = <0 1>;
417*b98948b0SJoão Paulo Gonçalves		};
418*b98948b0SJoão Paulo Gonçalves
419*b98948b0SJoão Paulo Gonçalves		/* AIN2 0-20mA Current Input */
420*b98948b0SJoão Paulo Gonçalves		channel@1 {
421*b98948b0SJoão Paulo Gonçalves			reg = <1>;
422*b98948b0SJoão Paulo Gonçalves			diff-channels = <2 3>;
423*b98948b0SJoão Paulo Gonçalves		};
424*b98948b0SJoão Paulo Gonçalves	};
425*b98948b0SJoão Paulo Gonçalves};
426*b98948b0SJoão Paulo Gonçalves
427*b98948b0SJoão Paulo Gonçalves/* Verdin I2C_1 */
428*b98948b0SJoão Paulo Gonçalves&i2c4 {
429*b98948b0SJoão Paulo Gonçalves	status = "okay";
430*b98948b0SJoão Paulo Gonçalves};
431*b98948b0SJoão Paulo Gonçalves
432*b98948b0SJoão Paulo Gonçalves/* Verdin PCIE_1 */
433*b98948b0SJoão Paulo Gonçalves&pcie {
434*b98948b0SJoão Paulo Gonçalves	status = "okay";
435*b98948b0SJoão Paulo Gonçalves};
436*b98948b0SJoão Paulo Gonçalves
437*b98948b0SJoão Paulo Gonçalves&pcie_phy {
438*b98948b0SJoão Paulo Gonçalves	status = "okay";
439*b98948b0SJoão Paulo Gonçalves};
440*b98948b0SJoão Paulo Gonçalves
441*b98948b0SJoão Paulo Gonçalves/* Verdin UART_1 */
442*b98948b0SJoão Paulo Gonçalves&uart1 {
443*b98948b0SJoão Paulo Gonçalves	status = "okay";
444*b98948b0SJoão Paulo Gonçalves};
445*b98948b0SJoão Paulo Gonçalves
446*b98948b0SJoão Paulo Gonçalves/* Verdin UART_2 */
447*b98948b0SJoão Paulo Gonçalves&uart2 {
448*b98948b0SJoão Paulo Gonçalves	linux,rs485-enabled-at-boot-time;
449*b98948b0SJoão Paulo Gonçalves	rs485-rx-during-tx;
450*b98948b0SJoão Paulo Gonçalves	status = "okay";
451*b98948b0SJoão Paulo Gonçalves};
452*b98948b0SJoão Paulo Gonçalves
453*b98948b0SJoão Paulo Gonçalves/* Verdin UART_3 */
454*b98948b0SJoão Paulo Gonçalves&uart3 {
455*b98948b0SJoão Paulo Gonçalves	status = "okay";
456*b98948b0SJoão Paulo Gonçalves};
457*b98948b0SJoão Paulo Gonçalves
458*b98948b0SJoão Paulo Gonçalves/* Verdin USB_1 */
459*b98948b0SJoão Paulo Gonçalves&usb3_0 {
460*b98948b0SJoão Paulo Gonçalves	status = "okay";
461*b98948b0SJoão Paulo Gonçalves};
462*b98948b0SJoão Paulo Gonçalves
463*b98948b0SJoão Paulo Gonçalves&usb3_phy0 {
464*b98948b0SJoão Paulo Gonçalves	status = "okay";
465*b98948b0SJoão Paulo Gonçalves};
466*b98948b0SJoão Paulo Gonçalves
467*b98948b0SJoão Paulo Gonçalves/* Verdin USB_2 */
468*b98948b0SJoão Paulo Gonçalves&usb3_1 {
469*b98948b0SJoão Paulo Gonçalves	status = "okay";
470*b98948b0SJoão Paulo Gonçalves};
471*b98948b0SJoão Paulo Gonçalves
472*b98948b0SJoão Paulo Gonçalves&usb3_phy1 {
473*b98948b0SJoão Paulo Gonçalves	status = "okay";
474*b98948b0SJoão Paulo Gonçalves};
475*b98948b0SJoão Paulo Gonçalves
476*b98948b0SJoão Paulo Gonçalves/* Verdin SD_1 */
477*b98948b0SJoão Paulo Gonçalves&usdhc2 {
478*b98948b0SJoão Paulo Gonçalves	status = "okay";
479*b98948b0SJoão Paulo Gonçalves};
480*b98948b0SJoão Paulo Gonçalves
481*b98948b0SJoão Paulo Gonçalves&iomuxc {
482*b98948b0SJoão Paulo Gonçalves
483*b98948b0SJoão Paulo Gonçalves	pinctrl-names = "default";
484*b98948b0SJoão Paulo Gonçalves	pinctrl-0 = <&pinctrl_gpio2>, <&pinctrl_gpio3>,
485*b98948b0SJoão Paulo Gonçalves		    <&pinctrl_ivy_dig_inputs>, <&pinctrl_ivy_relays>;
486*b98948b0SJoão Paulo Gonçalves
487*b98948b0SJoão Paulo Gonçalves	pinctrl_ivy_dig_inputs: ivydiginputsgrp {
488*b98948b0SJoão Paulo Gonçalves		fsl,pins =
489*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_NAND_DATA00__GPIO3_IO06	0x96>, /* SODIMM 56 */
490*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_NAND_DATA01__GPIO3_IO07	0x96>; /* SODIMM 58 */
491*b98948b0SJoão Paulo Gonçalves	};
492*b98948b0SJoão Paulo Gonçalves
493*b98948b0SJoão Paulo Gonçalves	pinctrl_ivy_leds: ivyledsgrp {
494*b98948b0SJoão Paulo Gonçalves		fsl,pins =
495*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_SAI5_MCLK__GPIO3_IO25	0x16>, /* SODIMM 30 */
496*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_SAI5_RXD1__GPIO3_IO22	0x16>, /* SODIMM 32 */
497*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_SAI5_RXFS__GPIO3_IO19	0x16>, /* SODIMM 34 */
498*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_SAI1_RXD0__GPIO4_IO02	0x16>, /* SODIMM 36 */
499*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_SAI3_TXFS__GPIO4_IO31	0x16>, /* SODIMM 44 */
500*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_SAI3_TXD__GPIO5_IO01	0x16>, /* SODIMM 46 */
501*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_SAI3_RXD__GPIO4_IO30	0x16>, /* SODIMM 48 */
502*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_NAND_CE0_B__GPIO3_IO01	0x16>; /* SODIMM 54 */
503*b98948b0SJoão Paulo Gonçalves	};
504*b98948b0SJoão Paulo Gonçalves
505*b98948b0SJoão Paulo Gonçalves	pinctrl_ivy_relays: ivyrelaysgrp {
506*b98948b0SJoão Paulo Gonçalves		fsl,pins =
507*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_NAND_DATA02__GPIO3_IO08	0x16>, /* SODIMM 60 */
508*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_NAND_DATA03__GPIO3_IO09	0x16>, /* SODIMM 62 */
509*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_NAND_READY_B__GPIO3_IO16	0x16>, /* SODIMM 64 */
510*b98948b0SJoão Paulo Gonçalves			<MX8MP_IOMUXC_NAND_DQS__GPIO3_IO14	0x16>; /* SODIMM 66 */
511*b98948b0SJoão Paulo Gonçalves	};
512*b98948b0SJoão Paulo Gonçalves};
513