// SPDX-License-Identifier: GPL-2.0-or-later OR MIT /* * Copyright 2024 Toradex * * Common dtsi for Verdin AM62 SoM on Ivy carrier board * * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62 * https://www.toradex.com/products/carrier-board/ivy-carrier-board */ #include #include #include / { /* AIN1 Voltage w/o AIN1_MODE gpio control */ ain1_voltage_unmanaged: voltage-divider-ain1 { compatible = "voltage-divider"; #io-channel-cells = <1>; io-channels = <&ivy_adc1 0>; full-ohms = <19>; output-ohms = <1>; }; /* AIN1 Current w/o AIN1_MODE gpio control */ ain1_current_unmanaged: current-sense-shunt-ain1 { compatible = "current-sense-shunt"; #io-channel-cells = <0>; io-channels = <&ivy_adc1 1>; shunt-resistor-micro-ohms = <100000000>; }; /* AIN1_MODE - SODIMM 216 */ ain1_mode_mux_ctrl: mux-controller-0 { compatible = "gpio-mux"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_5>; #mux-control-cells = <0>; mux-gpios = <&main_gpio0 40 GPIO_ACTIVE_HIGH>; }; ain1-voltage { compatible = "io-channel-mux"; channels = "ain1_voltage", ""; io-channels = <&ain1_voltage_unmanaged 0>; io-channel-names = "parent"; mux-controls = <&ain1_mode_mux_ctrl>; settle-time-us = <1000>; }; ain1-current { compatible = "io-channel-mux"; channels = "", "ain1_current"; io-channels = <&ain1_current_unmanaged>; io-channel-names = "parent"; mux-controls = <&ain1_mode_mux_ctrl>; settle-time-us = <1000>; }; /* AIN2 Voltage w/o AIN2_MODE gpio control */ ain2_voltage_unmanaged: voltage-divider-ain2 { compatible = "voltage-divider"; #io-channel-cells = <1>; io-channels = <&ivy_adc2 0>; full-ohms = <19>; output-ohms = <1>; }; /* AIN2 Current w/o AIN2_MODE gpio control */ ain2_current_unmanaged: current-sense-shunt-ain2 { compatible = "current-sense-shunt"; #io-channel-cells = <0>; io-channels = <&ivy_adc2 1>; shunt-resistor-micro-ohms = <100000000>; }; /* AIN2_MODE - SODIMM 218 */ ain2_mode_mux_ctrl: mux-controller-1 { compatible = "gpio-mux"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_6>; #mux-control-cells = <0>; mux-gpios = <&main_gpio0 36 GPIO_ACTIVE_HIGH>; }; ain2-voltage { compatible = "io-channel-mux"; channels = "ain2_voltage", ""; io-channels = <&ain2_voltage_unmanaged 0>; io-channel-names = "parent"; mux-controls = <&ain2_mode_mux_ctrl>; settle-time-us = <1000>; }; ain2-current { compatible = "io-channel-mux"; channels = "", "ain2_current"; io-channels = <&ain2_current_unmanaged>; io-channel-names = "parent"; mux-controls = <&ain2_mode_mux_ctrl>; settle-time-us = <1000>; }; leds { compatible = "gpio-leds"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_ivy_leds>; /* D7 Blue - SODIMM 30 - LEDs.GPIO1 */ led-0 { color = ; default-state = "off"; function = LED_FUNCTION_STATUS; function-enumerator = <1>; gpios = <&main_gpio1 11 GPIO_ACTIVE_HIGH>; }; /* D7 Green - SODIMM 32 - LEDs.GPIO2 */ led-1 { color = ; default-state = "off"; function = LED_FUNCTION_STATUS; function-enumerator = <1>; gpios = <&main_gpio1 12 GPIO_ACTIVE_HIGH>; }; /* D7 Red - SODIMM 34 - LEDs.GPIO3 */ led-2 { color = ; default-state = "off"; function = LED_FUNCTION_STATUS; function-enumerator = <1>; gpios = <&main_gpio1 10 GPIO_ACTIVE_HIGH>; }; /* D8 Blue - SODIMM 36 - LEDs.GPIO4 */ led-3 { color = ; default-state = "off"; function = LED_FUNCTION_STATUS; function-enumerator = <2>; gpios = <&main_gpio1 9 GPIO_ACTIVE_HIGH>; }; /* D8 Green - SODIMM 54 - LEDs.GPIO5 */ led-4 { color = ; default-state = "off"; function = LED_FUNCTION_STATUS; function-enumerator = <2>; gpios = <&main_gpio0 11 GPIO_ACTIVE_HIGH>; }; /* D8 Red - SODIMM 44 - LEDs.GPIO6 */ led-5 { color = ; default-state = "off"; function = LED_FUNCTION_STATUS; function-enumerator = <2>; gpios = <&main_gpio0 37 GPIO_ACTIVE_HIGH>; }; /* D9 Blue - SODIMM 46 - LEDs.GPIO7 */ led-6 { color = ; default-state = "off"; function = LED_FUNCTION_STATUS; function-enumerator = <3>; gpios = <&main_gpio0 34 GPIO_ACTIVE_HIGH>; }; /* D9 Red - SODIMM 48 - LEDs.GPIO8 */ led-7 { color = ; default-state = "off"; function = LED_FUNCTION_STATUS; function-enumerator = <3>; gpios = <&main_gpio0 33 GPIO_ACTIVE_HIGH>; }; }; reg_3v2_ain1: regulator-3v2-ain1 { compatible = "regulator-fixed"; regulator-max-microvolt = <3200000>; regulator-min-microvolt = <3200000>; regulator-name = "+3V2_AIN1"; }; reg_3v2_ain2: regulator-3v2-ain2 { compatible = "regulator-fixed"; regulator-max-microvolt = <3200000>; regulator-min-microvolt = <3200000>; regulator-name = "+3V2_AIN2"; }; /* Ivy Power Supply Input Voltage */ ivy-input-voltage { compatible = "voltage-divider"; /* Verdin ADC_1 */ io-channels = <&verdin_som_adc 7>; full-ohms = <204700>; /* 200K + 4.7K */ output-ohms = <4700>; }; ivy-5v-voltage { compatible = "voltage-divider"; /* Verdin ADC_2 */ io-channels = <&verdin_som_adc 6>; full-ohms = <39000>; /* 27K + 12K */ output-ohms = <12000>; }; ivy-3v3-voltage { compatible = "voltage-divider"; /* Verdin ADC_3 */ io-channels = <&verdin_som_adc 5>; full-ohms = <54000>; /* 27K + 27K */ output-ohms = <27000>; }; ivy-1v8-voltage { compatible = "voltage-divider"; /* Verdin ADC_4 */ io-channels = <&verdin_som_adc 4>; full-ohms = <39000>; /* 12K + 27K */ output-ohms = <27000>; }; }; &main_pmx0 { pinctrl_ivy_leds: ivy-leds-default-pins { pinctrl-single,pins = , /* (B18) MCASP0_AXR1.GPIO1_9 */ /* SODIMM 36 */ , /* (B20) MCASP0_AXR0.GPIO1_10 */ /* SODIMM 34 */ , /* (A19) MCASP0_ACLKX.GPIO1_11 */ /* SODIMM 30 */ , /* (A20) MCASP0_AFSX.GPIO1_12 */ /* SODIMM 32 */ , /* (L17) GPMC0_OEn_REn.GPIO0_33 */ /* SODIMM 48 */ , /* (R18) GPMC0_WAIT0.GPIO0_37 */ /* SODIMM 44 */ , /* (L25) GPMC0_WEn.GPIO0_34 */ /* SODIMM 46 */ ; /* (F23) OSPI0_CSn0.GPIO0_11 */ /* SODIMM 54 */ }; }; /* Verdin ETH */ &cpsw3g { status = "okay"; }; /* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */ &cpsw3g_mdio { status = "okay"; cpsw3g_phy1: ethernet-phy@2 { reg = <2>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_eth2_rgmii_int>; interrupt-parent = <&main_gpio0>; interrupts = <38 IRQ_TYPE_EDGE_FALLING>; ti,rx-internal-delay = ; }; }; /* Verdin ETH_1*/ &cpsw_port1 { status = "okay"; }; /* Verdin ETH_2_RGMII */ &cpsw_port2 { phy-handle = <&cpsw3g_phy1>; phy-mode = "rgmii-rxid"; status = "okay"; }; &main_gpio0 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_ctrl_sleep_moci>, <&pinctrl_qspi1_cs2_gpio>, <&pinctrl_qspi1_io0_gpio>, <&pinctrl_qspi1_io1_gpio>, <&pinctrl_qspi1_io2_gpio>, <&pinctrl_qspi1_io3_gpio>; gpio-line-names = "", /* 0 */ "", "", "DIGI_1", /* SODIMM 56 */ "DIGI_2", /* SODIMM 58 */ "REL1", /* SODIMM 60 */ "REL2", /* SODIMM 62 */ "", "", "", "", /* 10 */ "", "REL3", /* SODIMM 64 */ "", "", "", "", "", "", "", "", /* 20 */ "", "", "", "", "", "", "", "", "", "", /* 30 */ "", "", "", "", "", "", "", "", "", "", /* 40 */ "", "", "", "", "", "", "", "", "", "", /* 50 */ "", "", "", "", "", "", "", "", "", "", /* 60 */ "", "", "", "", "", "", "", "", "", "", /* 70 */ "", "", "", "", "", "", "", "", "", "", /* 80 */ "", "", "", "", "", ""; }; &main_gpio1 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_qspi1_dqs_gpio>; gpio-line-names = "", /* 0 */ "", "", "", "", "", "", "", "", "", "", /* 10 */ "", "", "", "", "", "", "", "REL4", /* SODIMM 66 */ "", "", /* 20 */ "", "", "", "", "", "", "", "", "", "", /* 30 */ "", "", "", "", "", "", "", "", "", "", /* 40 */ "", "", "", "", "", "", "", "", "", "", /* 50 */ "", "", "", "", "", "", "", "", "", "", /* 60 */ "", "", "", "", "", "", "", "", "", "", /* 70 */ "", "", "", "", "", "", "", "", "", "", /* 80 */ "", "", "", "", "", "", ""; }; /* Verdin I2C_1 */ &main_i2c1 { status = "okay"; temperature-sensor@4f { compatible = "ti,tmp1075"; reg = <0x4f>; }; eeprom@57 { compatible = "st,24c02", "atmel,24c02"; reg = <0x57>; pagesize = <16>; }; }; /* Verdin I2C_4 CSI */ &main_i2c3 { status = "okay"; ivy_adc1: adc@40 { compatible = "ti,ads1119"; reg = <0x40>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_7>; interrupt-parent = <&main_gpio0>; interrupts = <41 IRQ_TYPE_EDGE_FALLING>; avdd-supply = <®_3v2_ain1>; dvdd-supply = <®_3v2_ain1>; vref-supply = <®_3v2_ain1>; #address-cells = <1>; #io-channel-cells = <1>; #size-cells = <0>; /* AIN1 0-33V Voltage Input */ channel@0 { reg = <0>; diff-channels = <0 1>; }; /* AIN1 0-20mA Current Input */ channel@1 { reg = <1>; diff-channels = <2 3>; }; }; ivy_adc2: adc@41 { compatible = "ti,ads1119"; reg = <0x41>; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_8>; interrupt-parent = <&main_gpio0>; interrupts = <42 IRQ_TYPE_EDGE_FALLING>; avdd-supply = <®_3v2_ain2>; dvdd-supply = <®_3v2_ain2>; vref-supply = <®_3v2_ain2>; #address-cells = <1>; #io-channel-cells = <1>; #size-cells = <0>; /* AIN2 0-33V Voltage Input */ channel@0 { reg = <0>; diff-channels = <0 1>; }; /* AIN2 0-20mA Current Input */ channel@1 { reg = <1>; diff-channels = <2 3>; }; }; }; /* Verdin CAN_1 */ &main_mcan0 { status = "okay"; }; /* Verdin SPI_1 */ &main_spi1 { pinctrl-0 = <&pinctrl_spi1>, <&pinctrl_spi1_cs0>, <&pinctrl_gpio_1>, <&pinctrl_gpio_4>; cs-gpios = <0>, <&mcu_gpio0 1 GPIO_ACTIVE_LOW>, <&mcu_gpio0 4 GPIO_ACTIVE_LOW>; status = "okay"; tpm@1 { compatible = "infineon,slb9670", "tcg,tpm_tis-spi"; reg = <1>; spi-max-frequency = <18500000>; }; fram@2 { compatible = "fujitsu,mb85rs256", "atmel,at25"; reg = <2>; address-width = <16>; size = <32768>; spi-max-frequency = <33000000>; pagesize = <1>; }; }; /* Verdin UART_3 */ &main_uart0 { status = "okay"; }; /* Verdin UART_1 */ &main_uart1 { status = "okay"; }; &mcu_gpio0 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_gpio_2>, <&pinctrl_gpio_3>, <&pinctrl_pcie_1_reset>; gpio-line-names = "", "", "GPIO2", /* Verdin GPIO_2 - SODIMM 208 */ "GPIO3", /* Verdin GPIO_3 - SODIMM 210 */ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""; }; /* Verdin CAN_2 */ &mcu_mcan0 { status = "okay"; }; /* Verdin SD_1 */ &sdhci1 { status = "okay"; }; /* Verdin USB_1*/ &usbss0 { status = "okay"; }; &usb0 { status = "okay"; }; /* Verdin USB_2 */ &usbss1 { status = "okay"; }; &usb1 { status = "okay"; }; /* Verdin PCIE_1_RESET# */ &verdin_pcie_1_reset_hog { status = "okay"; }; /* Verdin UART_2 */ &wkup_uart0 { linux,rs485-enabled-at-boot-time; rs485-rts-active-low; rs485-rx-during-tx; status = "okay"; };