From nobody Fri Apr 3 03:02:31 2026 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A3893F99E1 for ; Wed, 25 Mar 2026 14:46:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450002; cv=none; b=gIYCFaBcG4RxjwVYOKWTD2zOrVxtGohd8KQvn0bZCaEW0y4VV2wvho1atFjQcYPw0lzEBmn0DgN1hSLOfIoEGAIAzfF1puzIpzw1bveyr6PcX57nJPXmpLzgao/I2NLRMQq4WEqFCOD7X4DPkjGOu27N56PdBjB22QawmiYSNng= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450002; c=relaxed/simple; bh=0ZOYgIbrraUIDmqU9A99qHZczz1+D83J6iifzdZxZRI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZIlRudS9zJBXrtNYzJC/YraBNIh/onj9MYugQ8Z2kmzO25EYS19C3X9ovTABjszrgNMiE+QO4CcESmulwfEEMzVu4TWYxvauXZ2pNbY2TahZB+kcQtJspiHFQmMF+re1gospixNX3Vq5najc2/yZMbxPlRNG5JOKDNFoFIykZps= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=I9tTAmsw; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="I9tTAmsw" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-43b40fb7f95so2453425f8f.3 for ; Wed, 25 Mar 2026 07:46:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774449996; x=1775054796; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=eEAQifmW6GbEwhlfuqNE2AiGxXOiSlZr/1dU3Ei/HJc=; b=I9tTAmswLrXN/TcjxUWhC1M5x3Pto/rO4ym6Ly++WaeluiaSTq1mZP88YDjQJpWasi 46IH7QuMRAGenfPVfbbH172Ucqoam4r64fBEvnMKKvm8F8P1PF7JJO771nOEa0rxH8SV P1osfRaHxlv2gNPoeAx3ThdxidOpZz5p87e0XtQYVGxz9izQ+X+jL88f+8Bluv33j1EG XCODtghJJuDt/0D1U5H+0SqPQDKlQ5SmoKAzG7lUMNUdnUmLc0R0BFIKa/Z60H36T/qm plXYtxH3PiniGFnk4uW/RU6iitzAkIEdu+3gHC8/sxpNhDdGUu40ou2tAo4xJSBRYzY+ hM8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774449996; x=1775054796; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=eEAQifmW6GbEwhlfuqNE2AiGxXOiSlZr/1dU3Ei/HJc=; b=L1v7tmJyfsmBdfgMTu830lEJ44CZ7D3EwvLgKCt36lwJdWof1dO8exx+9cE/10PmJF 49/deL4aww6TcUoV9NFrvryehCEJjPXUpeEIVJyyKNK3u+ORfWB6xY5USgW+K+XacStk kbzx7MYhDoyYxkZ/n0dt+mrW9tlL8gLHPlPJRpR+1Lh0Kh6hBuykixrB/PH2MSMoOaZK WL3imATT89VvgDUBTGxC8lTXiUeKSvAXE4/wjS8o+IbFzZ9vvfLlbN0lBichBpxgr7/U dGM67hQ0iF2qGjfXyjuR4ipg+9AzvOtZOErEFbCbim0bIom/jNKL/o7oqSSog8/b228O fqjw== X-Forwarded-Encrypted: i=1; AJvYcCVu8DLksOf3z8nOBTA4EtLl6cxwTz19sJb905CaVpNHgGhK6vwIyTDvXmmDU3cmsZMVvMLXlKsmtHXELyE=@vger.kernel.org X-Gm-Message-State: AOJu0YzKQ5QxfOjGFkbyfwsOqajrIcCU9LSEEPOzTiV41YqlqgBehXyn EeV26OKVzxyjRV+AFtscti4exGFj9eIZcxiFu1VlR40ngyWPFhGtGxQ8 X-Gm-Gg: ATEYQzzENoAw5+dtHd9etfOj/qINSxLeemty6E+mRMDu6N7xpWClV/zB3J/GFR8hKUR LJhGb8EM+MiaAlU7KofoiU40B9Q8Ug6n9EKwuGIteROn9DnWAXy0OjIB1mcIBzFUk/AI6GPt8O3 oEid/WtQp2jPnWt7klURvOvPgZju0xJKsU4v3OOkeS4C+IFptquGoHts9NBenDGwh/kNh5eis0A HKRlRZfs+w7TagKZ7oIW7VvdIVCOFTsyKF1CR9pyT1zOwUy2jjoCIcY848V9LmfVdkVQyu7Psak dZmeK4MWajM8quLxILQY25mLKKDSoAenaLglAoProZ6Duu9yV0SI3/7q3EMaa/dcVIxfT/x2fRJ X1MgcEU/WiOnd14qNVO4Nuy1CYHnwO37ot4sdWmaSMOaHWCOnrnoS0/yLaL7M5+Eq0l2C/TXIoV LFUXItTiJF2yuJ6NbB0lfzzTrzFdPhZ8lkn9CYtVfWxSGJOkEXWR+G/F+GAf4/WOhcvybpng3eD Xd6Y0cj/h+9I1/UwUvBM+DKGq8= X-Received: by 2002:a5d:5847:0:b0:43b:5672:efe with SMTP id ffacd0b85a97d-43b88994eeemr5561169f8f.9.1774449995254; Wed, 25 Mar 2026 07:46:35 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b9192e305sm304592f8f.8.2026.03.25.07.46.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 07:46:34 -0700 (PDT) From: Ernest Van Hoecke Date: Wed, 25 Mar 2026 15:46:05 +0100 Subject: [PATCH v3 4/6] arm64: dts: freescale: imx95-verdin: Add Ivy carrier board Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-verdin-imx95-upstream-frank-li-base-v3-4-b2b5221a8077@toradex.com> References: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> In-Reply-To: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: Ernest Van Hoecke , Emanuele Ghidoli , Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Add support for the Verdin i.MX95 SoM mated with the Ivy carrier board. Link: https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx= 95 Link: https://www.toradex.com/products/carrier-board/ivy-carrier-board Signed-off-by: Ernest Van Hoecke --- v3: no changes v2: Reordered nodes alphanumerically by node name v1: https://lore.kernel.org/all/20260305-verdin-imx95-upstream-frank-li-bas= e-v1-4-823fad02def9@toradex.com/ --- arch/arm64/boot/dts/freescale/Makefile | 2 + .../arm64/boot/dts/freescale/imx95-verdin-ivy.dtsi | 515 +++++++++++++++++= ++++ .../dts/freescale/imx95-verdin-nonwifi-ivy.dts | 21 + .../boot/dts/freescale/imx95-verdin-wifi-ivy.dts | 21 + 4 files changed, 559 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index bcf54b4ed66c..4417b4a3d245 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -499,8 +499,10 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-tqma9596sa-mb-smarc-= 2.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-var-dart-sonata.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dev.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-ivy.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dev.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-ivy.dtb =20 imx95-15x15-evk-pcie0-ep-dtbs =3D imx95-15x15-evk.dtb imx-pcie0-ep.dtbo dtb-$(CONFIG_ARCH_MXC) +=3D imx95-15x15-evk-pcie0-ep.dtb diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-ivy.dtsi b/arch/arm= 64/boot/dts/freescale/imx95-verdin-ivy.dtsi new file mode 100644 index 000000000000..8337c8b25f05 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-ivy.dtsi @@ -0,0 +1,515 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * Common dtsi for Verdin iMX95 SoM on Ivy carrier board + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/ivy-carrier-board + */ + +#include +#include +#include + +/ { + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + ain1-current { + compatible =3D "io-channel-mux"; + channels =3D "", "ain1_current"; + io-channels =3D <&ain1_current_unmanaged>; + io-channel-names =3D "parent"; + mux-controls =3D <&ain1_mode_mux_ctrl>; + settle-time-us =3D <1000>; + }; + + ain1-voltage { + compatible =3D "io-channel-mux"; + channels =3D "ain1_voltage", ""; + io-channels =3D <&ain1_voltage_unmanaged 0>; + io-channel-names =3D "parent"; + mux-controls =3D <&ain1_mode_mux_ctrl>; + settle-time-us =3D <1000>; + }; + + ain2-current { + compatible =3D "io-channel-mux"; + channels =3D "", "ain2_current"; + io-channels =3D <&ain2_current_unmanaged>; + io-channel-names =3D "parent"; + mux-controls =3D <&ain2_mode_mux_ctrl>; + settle-time-us =3D <1000>; + }; + + ain2-voltage { + compatible =3D "io-channel-mux"; + channels =3D "ain2_voltage", ""; + io-channels =3D <&ain2_voltage_unmanaged 0>; + io-channel-names =3D "parent"; + mux-controls =3D <&ain2_mode_mux_ctrl>; + settle-time-us =3D <1000>; + }; + + /* AIN1 Current w/o AIN1_MODE gpio control */ + ain1_current_unmanaged: current-sense-shunt-ain1 { + compatible =3D "current-sense-shunt"; + #io-channel-cells =3D <0>; + io-channels =3D <&ivy_adc1 1>; + shunt-resistor-micro-ohms =3D <100000000>; + }; + + /* AIN2 Current w/o AIN2_MODE gpio control */ + ain2_current_unmanaged: current-sense-shunt-ain2 { + compatible =3D "current-sense-shunt"; + #io-channel-cells =3D <0>; + io-channels =3D <&ivy_adc2 1>; + shunt-resistor-micro-ohms =3D <100000000>; + }; + + /* Ivy Power Supply Input Voltage */ + ivy-1v8-voltage { + compatible =3D "voltage-divider"; + /* Verdin ADC_4 */ + io-channels =3D <&adc1 3>; + full-ohms =3D <39000>; /* 12k + 27k */ + output-ohms =3D <27000>; + }; + + ivy-3v3-voltage { + compatible =3D "voltage-divider"; + /* Verdin ADC_3 */ + io-channels =3D <&adc1 2>; + full-ohms =3D <54000>; /* 27k + 27k */ + output-ohms =3D <27000>; + }; + + ivy-5v-voltage { + compatible =3D "voltage-divider"; + /* Verdin ADC_2 */ + io-channels =3D <&adc1 1>; + full-ohms =3D <39000>; /* 27k + 12k */ + output-ohms =3D <12000>; + }; + + ivy-input-voltage { + compatible =3D "voltage-divider"; + /* Verdin ADC_1 */ + io-channels =3D <&adc1 0>; + full-ohms =3D <204700>; /* 200k + 4.7k */ + output-ohms =3D <4700>; + }; + + leds { + compatible =3D "gpio-leds"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ivy_leds>; + + /* D7 Blue - SODIMM 30 - LEDs.GPIO1 */ + led-0 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <1>; + gpios =3D <&gpio2 16 GPIO_ACTIVE_HIGH>; + }; + + /* D7 Green - SODIMM 32 - LEDs.GPIO2 */ + led-1 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <1>; + gpios =3D <&gpio2 26 GPIO_ACTIVE_HIGH>; + }; + + /* D7 Red - SODIMM 34 - LEDs.GPIO3 */ + led-2 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <1>; + gpios =3D <&gpio2 21 GPIO_ACTIVE_HIGH>; + }; + + /* D8 Blue - SODIMM 36 - LEDs.GPIO4 */ + led-3 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <2>; + gpios =3D <&gpio2 20 GPIO_ACTIVE_HIGH>; + }; + + /* D8 Green - SODIMM 54 - LEDs.GPIO5 */ + led-4 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <2>; + gpios =3D <&gpio5 10 GPIO_ACTIVE_HIGH>; + }; + + /* D8 Red - SODIMM 44 - LEDs.GPIO6 */ + led-5 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <2>; + gpios =3D <&gpio5 5 GPIO_ACTIVE_HIGH>; + }; + + /* D9 Blue - SODIMM 46 - LEDs.GPIO7 */ + led-6 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <3>; + gpios =3D <&gpio5 4 GPIO_ACTIVE_HIGH>; + }; + + /* D9 Red - SODIMM 48 - LEDs.GPIO8 */ + led-7 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <3>; + gpios =3D <&gpio5 7 GPIO_ACTIVE_HIGH>; + }; + }; + + /* AIN1_MODE - SODIMM 216 */ + ain1_mode_mux_ctrl: mux-controller-0 { + compatible =3D "gpio-mux"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio5>; + #mux-control-cells =3D <0>; + mux-gpios =3D <&gpio4 28 GPIO_ACTIVE_HIGH>; + }; + + /* AIN2_MODE - SODIMM 218 */ + ain2_mode_mux_ctrl: mux-controller-1 { + compatible =3D "gpio-mux"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio6>; + #mux-control-cells =3D <0>; + mux-gpios =3D <&gpio3 27 GPIO_ACTIVE_HIGH>; + }; + + reg_3v2_ain1: regulator-3v2-ain1 { + compatible =3D "regulator-fixed"; + regulator-max-microvolt =3D <3200000>; + regulator-min-microvolt =3D <3200000>; + regulator-name =3D "+3V2_AIN1"; + }; + + reg_3v2_ain2: regulator-3v2-ain2 { + compatible =3D "regulator-fixed"; + regulator-max-microvolt =3D <3200000>; + regulator-min-microvolt =3D <3200000>; + regulator-name =3D "+3V2_AIN2"; + }; + + /* AIN1 Voltage w/o AIN1_MODE gpio control */ + ain1_voltage_unmanaged: voltage-divider-ain1 { + compatible =3D "voltage-divider"; + #io-channel-cells =3D <1>; + io-channels =3D <&ivy_adc1 0>; + full-ohms =3D <19>; + output-ohms =3D <1>; + }; + + /* AIN2 Voltage w/o AIN2_MODE gpio control */ + ain2_voltage_unmanaged: voltage-divider-ain2 { + compatible =3D "voltage-divider"; + #io-channel-cells =3D <1>; + io-channels =3D <&ivy_adc2 0>; + full-ohms =3D <19>; + output-ohms =3D <1>; + }; +}; + +/* Verdin ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + status =3D "okay"; +}; + +/* Verdin ETH_1 (On-module PHY) */ +&enetc_port0 { + status =3D "okay"; +}; + +/* Verdin ETH_2_RGMII */ +&enetc_port1 { + phy-handle =3D <ðphy2>; + phy-mode =3D "rgmii-id"; + + status =3D "okay"; +}; + +/* Verdin CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Verdin CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +&gpio1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ctrl_sleep_moci>; + gpio-line-names =3D ""; +}; + +&gpio2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio2>, + <&pinctrl_gpio3>; + gpio-line-names =3D + "", /* 0 */ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "", + "", + "", + "", + "", + "", + "GPIO2", /* Verdin GPIO_2 - SODIMM 208 */ + "", + "", /* 20 */ + "", + "", + "", + "GPIO3", /* Verdin GPIO_3 - SODIMM 210 */ + "", + "", + "", + "", + "", + "", /* 30 */ + ""; +}; + +&gpio3 { + gpio-line-names =3D ""; +}; + +&gpio4 { + gpio-line-names =3D ""; +}; + +&gpio5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_qspi1_cs2_gpio>, + <&pinctrl_qspi1_dqs_gpio>, + <&pinctrl_qspi1_io0_gpio>, + <&pinctrl_qspi1_io1_gpio>, + <&pinctrl_qspi1_io2_gpio>, + <&pinctrl_qspi1_io3_gpio>; + gpio-line-names =3D + "DIGI_1", /* SODIMM 56 */ + "DIGI_2", /* SODIMM 58 */ + "REL1", /* SODIMM 60 */ + "REL2", /* SODIMM 62 */ + "", + "", + "", + "", + "REL4", /* SODIMM 66 */ + "", + "", /* 10 */ + "REL3", /* SODIMM 64 */ + "", + "", + "", + "", + "", + ""; +}; + +/* Verdin I2C_1 */ +&lpi2c4 { + status =3D "okay"; + + temperature-sensor@4f { + compatible =3D "ti,tmp1075"; + reg =3D <0x4f>; + }; + + carrier_eeprom: eeprom@57 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x57>; + pagesize =3D <16>; + }; +}; + +/* Verdin I2C_4_CSI */ +&lpi2c5 { + status =3D "okay"; + + ivy_adc1: adc@40 { + compatible =3D "ti,ads1119"; + reg =3D <0x40>; + interrupt-parent =3D <&som_gpio_expander>; + interrupts =3D <0 IRQ_TYPE_EDGE_FALLING>; + avdd-supply =3D <®_3v2_ain1>; + dvdd-supply =3D <®_3v2_ain1>; + vref-supply =3D <®_3v2_ain1>; + #address-cells =3D <1>; + #io-channel-cells =3D <1>; + #size-cells =3D <0>; + + /* AIN1 0-33V Voltage Input */ + channel@0 { + reg =3D <0>; + diff-channels =3D <0 1>; + }; + + /* AIN1 0-20mA Current Input */ + channel@1 { + reg =3D <1>; + diff-channels =3D <2 3>; + }; + }; + + ivy_adc2: adc@41 { + compatible =3D "ti,ads1119"; + reg =3D <0x41>; + interrupt-parent =3D <&som_gpio_expander>; + interrupts =3D <1 IRQ_TYPE_EDGE_FALLING>; + avdd-supply =3D <®_3v2_ain2>; + dvdd-supply =3D <®_3v2_ain2>; + vref-supply =3D <®_3v2_ain2>; + #address-cells =3D <1>; + #io-channel-cells =3D <1>; + #size-cells =3D <0>; + + /* AIN2 0-33V Voltage Input */ + channel@0 { + reg =3D <0>; + diff-channels =3D <0 1>; + }; + + /* AIN2 0-20mA Current Input */ + channel@1 { + reg =3D <1>; + diff-channels =3D <2 3>; + }; + }; +}; + +/* Verdin SPI_1 */ +&lpspi6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_lpspi6>, + <&pinctrl_spi1_cs>, + <&pinctrl_gpio1>, + <&pinctrl_gpio4>; + cs-gpios =3D <&gpio4 29 GPIO_ACTIVE_LOW>, + <&som_gpio_expander 13 GPIO_ACTIVE_LOW>, + <&gpio2 0 GPIO_ACTIVE_LOW>, + <&gpio5 12 GPIO_ACTIVE_LOW>; + + tpm@2 { + compatible =3D "infineon,slb9670", "tcg,tpm_tis-spi"; + reg =3D <2>; + spi-max-frequency =3D <18500000>; + }; + + fram@3 { + compatible =3D "fujitsu,mb85rs256", "atmel,at25"; + reg =3D <3>; + address-width =3D <16>; + size =3D <32768>; + spi-max-frequency =3D <33000000>; + pagesize =3D <1>; + }; +}; + +/* Verdin UART_3, used as the Linux console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Verdin UART_1 */ +&lpuart7 { + status =3D "okay"; +}; + +/* Verdin UART_2, through RS485 transceiver */ +&lpuart8 { + rs485-rts-active-low; + rs485-rx-during-tx; + linux,rs485-enabled-at-boot-time; + + status =3D "okay"; +}; + +&netc_emdio { + ethphy2: ethernet-phy@2 { + reg =3D <2>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_eth2_rgmii_int>; + interrupt-parent =3D <&gpio1>; + interrupts =3D <12 IRQ_TYPE_LEVEL_LOW>; + ti,rx-internal-delay =3D ; + ti,tx-internal-delay =3D ; + }; +}; + +/* Verdin PCIE_1 */ +&pcie0 { + status =3D "okay"; +}; + +&som_gpio_expander { + gpio-line-names =3D ""; +}; + +/* Verdin USB_1 */ +&usb2 { + status =3D "okay"; +}; + +/* Verdin USB_2 */ +&usb3 { + fsl,permanently-attached; + + status =3D "okay"; +}; + +&usb3_phy { + status =3D "okay"; +}; + +/* Verdin SD_1 */ +&usdhc2 { + status =3D "okay"; +}; + +&scmi_iomuxc { + pinctrl_ivy_leds: ivyledsgrp { + fsl,pins =3D , /* SODIMM 30 = */ + , /* SODIMM 32 */ + , /* SODIMM 34 */ + , /* SODIMM 36 */ + , /* SODIMM 44 */ + , /* SODIMM 46 */ + , /* SODIMM 48 */ + ; /* SODIMM 54 */ + }; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-ivy.dts b/a= rch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-ivy.dts new file mode 100644 index 000000000000..ebe1aec1ffa4 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-ivy.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/ivy-carrier-board + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-nonwifi.dtsi" +#include "imx95-verdin-ivy.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 on Ivy Board"; + compatible =3D "toradex,verdin-imx95-nonwifi-ivy", + "toradex,verdin-imx95-nonwifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-ivy.dts b/arch= /arm64/boot/dts/freescale/imx95-verdin-wifi-ivy.dts new file mode 100644 index 000000000000..7ff2d03a254d --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-ivy.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/ivy-carrier-board + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-wifi.dtsi" +#include "imx95-verdin-ivy.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 WB on Ivy Board"; + compatible =3D "toradex,verdin-imx95-wifi-ivy", + "toradex,verdin-imx95-wifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; --=20 2.43.0