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