From nobody Thu Sep 24 12:53:19 2026 Received: from mail11.truemail.it (mail11.truemail.it [217.194.8.81]) (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 2BACA39CCF6; Thu, 24 Sep 2026 06:57:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.194.8.81 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233084; cv=none; b=gQX9BKKg5saokmUmCOV5LrrLYBrZzNZ5OT5DoFCG3N0y0voOv/LYqPVmX7xT3f8nZfdnHi30rgpkQQ/894LhbuXfDzcuv0TGtF3GTpkW8kC8Bwfcm+mfICgDcbQ87ZyBF4J5ezMMj8ghEHUHXXD7VINq3eXOmwSBYygMkrDlbUA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233084; c=relaxed/simple; bh=iqCe5C8lOZ/zYi4WI8Dp1cLEbo7dXTITBB4PNEZXRTc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GlcFgkytBWdE5IB6Pt9zWH0C3DUD/2qQV58HqC1SJkoPmDyTz8/6jRqw2DDyzgJ43+57mIcBv61En85s+Ini9ms890T3yiWn5azGxGGty3S7oRKj4UkLdKnhPf8DXs7sqqNqGfYV30eM51jkfmyE2SgU38LVBmfMJSX05CR2ah0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it; spf=pass smtp.mailfrom=dolcini.it; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b=XPwKEaA/; arc=none smtp.client-ip=217.194.8.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=dolcini.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b="XPwKEaA/" Received: from francesco-nb.. (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) by mail11.truemail.it (Postfix) with ESMTPA id 8B3712020D; Thu, 24 Sep 2026 08:57:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dolcini.it; s=default; t=1790233067; bh=9imW1wh7P5NcD6+FCFtASpqY9fQcjduq5Jb0jSIcZCk=; h=From:To:Subject; b=XPwKEaA/+oTj2IDcyMNLsr7qvw5nGGrHYPG1V2WEYtUm/nT4Yvj4Roa0AuLBD7VJK XUJHj2Fh1U2rD0XNwsIdamM122hqQlFPOUCcTFcDEkGqbZm8hdRJAf8hZ+DS/a7al5 zfAeGxCpokrGKObCw7Yf/ZW+96l+xvEBWuS3coi/IxvSghh9EN1IvCWwzizDRw4hy3 Y5vZMjaLNPXmtmNglg1QVvbOMp+ZnzMDsV5yGyj+y2it6nYfBAszRjCfHlgzNgaY3A uUM9Z+E1lMVfrh42e7quGI/bATET4zNpx+dTTc2HnyhMp8kcsJ0FIPvgvPQvhWJswW RCuD/UlPhJKWQ== From: Francesco Dolcini To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Shawn Guo Cc: Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Krzysztof Kozlowski Subject: [PATCH v3 1/7] dt-bindings: arm: fsl: Add Lino iMX91/iMX93 Date: Thu, 24 Sep 2026 08:57:27 +0200 Message-ID: <20260924065735.17678-2-francesco@dolcini.it> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260924065735.17678-1-francesco@dolcini.it> References: <20260924065735.17678-1-francesco@dolcini.it> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Francesco Dolcini Add bindings for the Toradex Lino iMX91 and Lino iMX93 SoMs, based on the NXP i.MX91 and i.MX93 SoCs, respectively. Lino SoMs use two board-to-board connectors to interface with a carrier board. They can also be mounted on the Lino-Verdin Adapter, which converts the Lino interface to the Toradex Verdin family pinout and allows the SoM to be used with Verdin-compatible carrier boards. The Lino-Verdin Adapter also provides a Wi-Fi/Bluetooth module, an Ethernet PHY and a GPIO expander. Add compatibles for systems consisting of a Lino SoM mounted on a Lino-Verdin Adapter and connected to either a Verdin Development Board or a Dahlia carrier board. Link: https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx91 Link: https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 Link: https://www.toradex.com/accessories/lino-verdin-adapter Link: https://www.toradex.com/products/carrier-board/dahlia-carrier-board-k= it Link: https://www.toradex.com/products/carrier-board/verdin-development-boa= rd-kit Signed-off-by: Francesco Dolcini Acked-by: Krzysztof Kozlowski --- v3: rebased v2: - add acked-by --- Documentation/devicetree/bindings/arm/fsl.yaml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation= /devicetree/bindings/arm/fsl.yaml index adf209b3b7cf..f3c73510c18b 100644 --- a/Documentation/devicetree/bindings/arm/fsl.yaml +++ b/Documentation/devicetree/bindings/arm/fsl.yaml @@ -1528,6 +1528,15 @@ properties: - fsl,imx91-11x11-frdm-s # FRDM i.MX91S Development Board - const: fsl,imx91 =20 + - description: i.MX91 boards with Toradex Lino Modules and Verdin Ad= apter + items: + - enum: + - toradex,lino-imx91-verdin-dahlia # Lino iMX91 Module on Ve= rdin Dahlia Board + - toradex,lino-imx91-verdin-dev # Lino iMX91 Module on Ve= rdin Dev Board + - const: toradex,lino-imx91-verdin # Lino iMX91 Module on Ve= rdin Adapter + - const: toradex,lino-imx91 + - const: fsl,imx91 + - description: i.MX93 based Boards items: - enum: @@ -1539,6 +1548,15 @@ properties: - fsl,imx93-wireless-frdm # i.MX93 and IW610G WLCSP (Wi-Fi= + BLE + 802.15.4) SiP FRDM Board - const: fsl,imx93 =20 + - description: i.MX93 boards with Toradex Lino Modules and Verdin Ad= apter + items: + - enum: + - toradex,lino-imx93-verdin-dahlia # Lino iMX93 Module on Ve= rdin Dahlia Board + - toradex,lino-imx93-verdin-dev # Lino iMX93 Module on Ve= rdin Dev Board + - const: toradex,lino-imx93-verdin # Lino iMX93 Module on Ve= rdin Adapter + - const: toradex,lino-imx93 + - const: fsl,imx93 + - description: i.MX94 based Boards items: - enum: --=20 2.47.3 From nobody Thu Sep 24 12:53:19 2026 Received: from mail11.truemail.it (mail11.truemail.it [217.194.8.81]) (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 0D93D41B8C6; Thu, 24 Sep 2026 06:57:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.194.8.81 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233089; cv=none; b=hQiPuf33eDJ/ZkH5YZt3cx7Cxpc256OexVOJvYdD561SrHNIXfQ5YuOkyFHp0hPtLxIx8lLJo0EVWBJ5KiZyCUhEtWeL/YqD3KsWj8KgBYsxFcQCChyf8aEktPaKpmyS8p0EO56FDYYbguSsfwagcbrj2pItCIvIBrw38CIue/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233089; c=relaxed/simple; bh=nVIHNhZDkCd+I2iTIx0YOPpZR915Jmu4fKYZcpbCt9o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kHrXiugwVa5DQbA7oqT4EQWkagIXuG1dC11l6WX0WeK3HvgZuVsLJvPWpGlWST1LcDhopugPNxMGbqm3XwE5l9u/zhVAANX6QMtJb9n3y1UgpEegwdjGh6BX8fWg3OXLcRXUGEkyLndOHgUnOy2GvZvN6lt9lN0DJmahFqXWMHU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it; spf=pass smtp.mailfrom=dolcini.it; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b=Qpey4FCw; arc=none smtp.client-ip=217.194.8.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=dolcini.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b="Qpey4FCw" Received: from francesco-nb.. (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) by mail11.truemail.it (Postfix) with ESMTPA id 4FD2720230; Thu, 24 Sep 2026 08:57:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dolcini.it; s=default; t=1790233067; bh=uMiLzq9i2T7hnkODYgCpXEhyVPT7UC5o9DbVtj7kdfM=; h=From:To:Subject; b=Qpey4FCwcVeMI9QWXtX2RX7SLt8mPCtss3pODGJOXP78bTflpCLdKgJ/hTxTwkJcE HbKwGZSdbNUtxu+VWgyJtZhSmM9Vr8DlVY9EwINCQtpwE8J0oivEuw2g+MsFN+bKeU PXye/g/pyQQh00mpZ1KyzahbKYEJRhGwBbBPWSrzthN0wI+jh2isOA3/HZoaef2Sxh qXxeSIxrLQhKKqWsmzUeZVN8cDzhcnhNNIIxkMFYzYVSjWjzBeH0WmHJVxFLbLkNCm trqOGpUEs9PM6AR/p39aYcm4QsfvQhosfe82dF3QFhju2l9c3Q2LOiETJvjryloNK3 00aBxMK0bKHyA== From: Francesco Dolcini To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Shawn Guo Cc: Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Krzysztof Kozlowski Subject: [PATCH v3 2/7] dt-bindings: arm: fsl: Add Toradex OSM iMX91/iMX93 Date: Thu, 24 Sep 2026 08:57:28 +0200 Message-ID: <20260924065735.17678-3-francesco@dolcini.it> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260924065735.17678-1-francesco@dolcini.it> References: <20260924065735.17678-1-francesco@dolcini.it> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Francesco Dolcini Add bindings for the Toradex OSM iMX91 and OSM iMX93 SoMs and the OSM Development Board they can be mated with. The Toradex OSM iMX91 and OSM iMX93 are OSM 1.2-compliant SoMs based on the NXP i.MX91 and i.MX93 SoCs, respectively. Link: https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx91 Link: https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx93 Link: https://www.toradex.com/products/carrier-board/osm-development-board Signed-off-by: Francesco Dolcini Acked-by: Krzysztof Kozlowski --- v3: rebased v2: - add acked-by --- Documentation/devicetree/bindings/arm/fsl.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation= /devicetree/bindings/arm/fsl.yaml index f3c73510c18b..e563d96e4ff7 100644 --- a/Documentation/devicetree/bindings/arm/fsl.yaml +++ b/Documentation/devicetree/bindings/arm/fsl.yaml @@ -1537,6 +1537,12 @@ properties: - const: toradex,lino-imx91 - const: fsl,imx91 =20 + - description: i.MX91 boards with Toradex OSM Modules + items: + - const: toradex,osm-imx91-dev # OSM iMX91 Module on OSM Dev Boa= rd + - const: toradex,osm-imx91 + - const: fsl,imx91 + - description: i.MX93 based Boards items: - enum: @@ -1557,6 +1563,12 @@ properties: - const: toradex,lino-imx93 - const: fsl,imx93 =20 + - description: i.MX93 boards with Toradex OSM Modules + items: + - const: toradex,osm-imx93-dev # OSM iMX93 Module on OSM Dev Boa= rd + - const: toradex,osm-imx93 + - const: fsl,imx93 + - description: i.MX94 based Boards items: - enum: --=20 2.47.3 From nobody Thu Sep 24 12:53:19 2026 Received: from mail11.truemail.it (mail11.truemail.it [217.194.8.81]) (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 03DE8420889; Thu, 24 Sep 2026 06:58:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.194.8.81 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233089; cv=none; b=LoZ6uyOKta3dwM+Z5+CapIKAeijW52FpTAbnx2Gf+BeP4RvduP8jMjiX8WNHyVVZAOlyfkQLcIl05NnM+BTAXSYOLEqgTKrHIRNtOyqWJSAIL4gEjRkNpRSrLGzOMEYmx459GJsU8ihWEKn7TwDFGq73qKIok0sxwM2BMcnyOAA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233089; c=relaxed/simple; bh=jUALjA+AUkzXoeCGOw/GqCilrdl23YMa/7gimkqjU6o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QvNyuglIGswDh+92H7WbUPaEyrcOgoG8AqTJQ53wh05ToedJwnd6MQJZY4CA4zEwamLAqJitEmms8+iSteCqgBh8CzUlTBYNT0ADUUyopmTm2tcHlX8oR9yFrCjs3tvIi4T4RRsIPwDvwByEri4gmiFW9/T8G5ruCse6+xaN6Oo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it; spf=pass smtp.mailfrom=dolcini.it; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b=zXw6U38f; arc=none smtp.client-ip=217.194.8.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=dolcini.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b="zXw6U38f" Received: from francesco-nb.. (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) by mail11.truemail.it (Postfix) with ESMTPA id 0A4E12020F; Thu, 24 Sep 2026 08:57:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dolcini.it; s=default; t=1790233068; bh=ioZHW/FXq+FqWgEmv2pZzI5nC3oBinhzOocRJlhL/wA=; h=From:To:Subject; b=zXw6U38fTqGTWgKdsLCM07kiQwQY/VamaGi4wywXcPCwhIMANsm1/FAnSSkD1CpmO RZ6Maq2TEnoPGZyKQDFkhd08zzJYBCcddh1FK73PtK4HD+hCzLV5CTI+2LCODrNH19 nRe4Wg4Ay57+e85dgFn30gJlzx5Ekpq1nurZk4nWeqK3P9O6QcKkR0Gi40azsY0SLS U/c62oaeV2qPGrUselMOuF6u4I4G76UVqd9mIWxnXMODBgjd2j2Js+Ldxb68XVpZFP tUPd3Zx3Fvi7WbNrUCKU6rV1sTvnZmvuvg0OtFGYEDiBVUNapYp9q+nK2PuKKGbsAV 1lDKOGm0nXyhw== From: Francesco Dolcini To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Shawn Guo Cc: Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Emanuele Ghidoli , Ernest Van Hoecke , Franz Schnyder Subject: [PATCH v3 3/7] arm64: dts: freescale: Add Lino iMX93 Date: Thu, 24 Sep 2026 08:57:29 +0200 Message-ID: <20260924065735.17678-4-francesco@dolcini.it> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260924065735.17678-1-francesco@dolcini.it> References: <20260924065735.17678-1-francesco@dolcini.it> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Francesco Dolcini Add support for the Lino iMX93 SoM, its Verdin adapter and development carrier board. The SoM is available in two variants, with i.MX91 or i.MX93 SoC, using the same PCB (the two chips are pin to pin compatible), to avoid duplication create a common dtsi to share commonalities. Link: https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 Link: https://www.toradex.com/accessories/lino-verdin-adapter Link: https://www.toradex.com/products/carrier-board/verdin-development-boa= rd-kit Co-developed-by: Emanuele Ghidoli Signed-off-by: Emanuele Ghidoli Co-developed-by: Ernest Van Hoecke Signed-off-by: Ernest Van Hoecke Co-developed-by: Franz Schnyder Signed-off-by: Franz Schnyder Signed-off-by: Francesco Dolcini --- v3: rebased v2: - drop #address-cells/#size-cells from &lpi2c1, &lpi2c2, &lpi2c3 and &lpi2c4, already set in imx91_93_common.dtsi. - drop #sound-dai-cells from &sai3, already set in imx91_93_common.dtsi. --- arch/arm64/boot/dts/freescale/Makefile | 1 + .../freescale/imx93-imx91-lino-common.dtsi | 536 ++++++++++++++++++ .../imx93-imx91-lino-verdin-common.dtsi | 175 ++++++ .../imx93-imx91-lino-verdin-dev-common.dtsi | 216 +++++++ .../dts/freescale/imx93-lino-verdin-dev.dts | 24 + arch/arm64/boot/dts/freescale/imx93-lino.dtsi | 359 ++++++++++++ 6 files changed, 1311 insertions(+) create mode 100644 arch/arm64/boot/dts/freescale/imx93-imx91-lino-common.d= tsi create mode 100644 arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-c= ommon.dtsi create mode 100644 arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-d= ev-common.dtsi create mode 100644 arch/arm64/boot/dts/freescale/imx93-lino-verdin-dev.dts create mode 100644 arch/arm64/boot/dts/freescale/imx93-lino.dtsi diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 9971b34f7301..221c56d7845a 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -895,6 +895,7 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx93-14x14-evk.dtb imx93-14x14-evk-mqs-dtbs +=3D imx93-14x14-evk.dtb imx9-mqs.dtbo dtb-$(CONFIG_ARCH_MXC) +=3D imx93-14x14-evk-mqs.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-kontron-bl-osm-s.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx93-lino-verdin-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-phyboard-nash.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-phyboard-segin.dtb =20 diff --git a/arch/arm64/boot/dts/freescale/imx93-imx91-lino-common.dtsi b/a= rch/arm64/boot/dts/freescale/imx93-imx91-lino-common.dtsi new file mode 100644 index 000000000000..f8f13f785860 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-imx91-lino-common.dtsi @@ -0,0 +1,536 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX93/iMX91 SoM + * + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx91 + */ + +#include +#include + +/ { + aliases { + can0 =3D &flexcan1; + can1 =3D &flexcan2; + eeprom0 =3D &som_eeprom; + ethernet0 =3D &eqos; + ethernet1 =3D &fec; + i2c0 =3D &lpi2c2; + i2c1 =3D &lpi2c1; + i2c2 =3D &lpi2c3; + i2c3 =3D &lpi2c4; + mmc0 =3D &usdhc1; + mmc1 =3D &usdhc2; + mmc2 =3D &usdhc3; + serial0 =3D &lpuart6; + serial1 =3D &lpuart7; + serial2 =3D &lpuart1; + serial3 =3D &lpuart2; + usb0 =3D &usbotg1; + usb1 =3D &usbotg2; + }; + + chosen { + stdout-path =3D &lpuart1; + }; + + /* Lino SD_1 Power Supply */ + reg_sd1_vmmc: regulator-sdhci2-vmmc { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sd1_pwr_en>; + /* Lino SD_1_PWR_EN (Lino P72) */ + gpios =3D <&gpio3 7 GPIO_ACTIVE_HIGH>; + enable-active-high; + off-on-delay-us =3D <100000>; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <3300000>; + regulator-name =3D "+V3.3_SD"; + startup-delay-us =3D <20000>; + }; + + reg_sd1_vqmmc: regulator-sdhci2-vqmmc { + compatible =3D "regulator-gpio"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sd1_vsel>; + /* PMIC_SD_2_VSEL */ + gpios =3D <&gpio3 19 GPIO_ACTIVE_HIGH>; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "LDO1-VSEL-SD (PMIC)"; + states =3D <1800000 0x1>, + <3300000 0x0>; + vin-supply =3D <®_sd_3v3_1v8>; + }; + + reg_usb1_vbus: regulator-usb1-vbus { + compatible =3D "regulator-fixed"; + /* Lino USB_1_EN (P27) */ + gpios =3D <&som_gpio_expander 0 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-max-microvolt =3D <5000000>; + regulator-min-microvolt =3D <5000000>; + regulator-name =3D "USB_1_EN"; + startup-delay-us =3D <20000>; + }; + + reg_usb2_vbus: regulator-usb2-vbus { + compatible =3D "regulator-fixed"; + /* Lino USB_2_EN (P61) */ + gpios =3D <&som_gpio_expander 1 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-max-microvolt =3D <5000000>; + regulator-min-microvolt =3D <5000000>; + regulator-name =3D "USB_2_EN"; + startup-delay-us =3D <20000>; + }; +}; + +/* Lino ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + vref-supply =3D <®_1v8>; +}; + +/* Lino ETH_1 */ +&eqos { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_mdio>, <&pinctrl_eth1>; + + mdio: mdio { + compatible =3D "snps,dwmac-mdio"; + #address-cells =3D <1>; + #size-cells =3D <0>; + + status =3D "disabled"; + }; +}; + +/* Lino ETH_2 */ +&fec { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_eth2>; +}; + +/* Lino CAN_1 */ +&flexcan1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_can1>; +}; + +/* Lino CAN_2 */ +&flexcan2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_can2>; +}; + +&gpio1 { + gpio-line-names =3D + "LINO_P18", + "LINO_P16", + "PMIC_I2C_SCL", + "PMIC_I2C_SDA", + "", + "", + "", + "", + "", + "", + "LINO_P65", /* 10 */ + "LINO_S18", + "LINO_S24", + "LINO_S20", + "LINO_S22", + ""; +}; + +&gpio2 { + gpio-line-names =3D + "LINO_P30", + "LINO_P32", + "LINO_P24", + "LINO_P26", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "LINO_P58", + "", + "", + "", + "", + "LINO_P34", + "", + "", + "", /* 20 */ + "", + "LINO_P36", + "", + "LINO_P38", + "", + "", + "", + "LINO_P20", + "LINO_P22"; +}; + +&gpio3 { + gpio-line-names =3D + "LINO_P78", + "", + "", + "", + "", + "", + "", + "LINO_P72", + "", + "", + "", /* 10 */ + "", + "", + "", + "", + "", + "", + "", + "", + "PMIC_SD_2_VSEL", + "", /* 20 */ + "", + "", + "", + "", + "", + "LINO_P40", + "LINO_P42", + "", + "", + "", /* 30 */ + ""; +}; + +&gpio4 { + gpio-line-names =3D + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "", + "", + "LINO_P46", + "LINO_P48", + "", + "", + "", + "", + "", /* 20 */ + "", + "", + "", + "", + "", + "", + "", + "LINO_P44", + "GPIO_EXP_INT#"; +}; + +/* Lino I2C_1 */ +&lpi2c1 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_i2c1>; + pinctrl-1 =3D <&pinctrl_i2c1_gpio>; + clock-frequency =3D <100000>; + scl-gpios =3D <&gpio1 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio1 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; +}; + +/* On-module I2C - PMIC_I2C */ +&lpi2c2 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_pmic_i2c>; + pinctrl-1 =3D <&pinctrl_pmic_i2c_gpio>; + clock-frequency =3D <400000>; + scl-gpios =3D <&gpio1 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; + + status =3D "okay"; + + som_gpio_expander: gpio@21 { + compatible =3D "nxp,pcal6408"; + reg =3D <0x21>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_exp_int>; + #interrupt-cells =3D <2>; + interrupt-controller; + interrupt-parent =3D <&gpio4>; + interrupts =3D <29 IRQ_TYPE_LEVEL_LOW>; + #gpio-cells =3D <2>; + gpio-controller; + gpio-line-names =3D + "Lino_P27", /* Lino USB_1_EN */ + "Lino_P61", /* Lino USB_2_EN */ + "TPM_SPI_CS#", + "Lino_P29", /* Lino USB_1_OC# */ + "Lino_P63", /* Lino USB_2_OC# */ + "PMIC_INT#", + "TPM_IRQ#", + "Lino_S66"; + }; + + pmic@32 { + compatible =3D "nxp,pf9453"; + reg =3D <0x32>; + interrupt-parent =3D <&som_gpio_expander>; + interrupts =3D <5 IRQ_TYPE_EDGE_FALLING>; + + regulators { + BUCK1 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <1100000>; + regulator-min-microvolt =3D <1100000>; + regulator-name =3D "+V1.1_DDR (PMIC BUCK1)"; + }; + + reg_vdd_soc: BUCK2 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <950000>; + regulator-min-microvolt =3D <612500>; + regulator-name =3D "+VDD_SOC (PMIC BUCK2)"; + regulator-ramp-delay =3D <12500>; + }; + + reg_1v8: BUCK3 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <1800000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "+V1.8 / +V1.8_ANA (PMIC BUCK3)"; + }; + + reg_3v3: BUCK4 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <3300000>; + regulator-name =3D "+V3.3 (PMIC BUCK4)"; + }; + + reg_sd_3v3_1v8: LDO1 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "+V3.3_1.8_SD (PMIC LDO1)"; + }; + + LDO2 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <800000>; + regulator-min-microvolt =3D <800000>; + regulator-name =3D "+V0.8_ANA (PMIC LDO2)"; + }; + + LDO-SNVS { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <1800000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "+V1.8_BBSM (PMIC LDO-SNVS)"; + }; + }; + }; + + temperature-sensor@48 { + compatible =3D "ti,tmp1075"; + reg =3D <0x48>; + }; + + som_eeprom: eeprom@50 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x50>; + pagesize =3D <16>; + }; +}; + +/* Lino I2C_2 */ +&lpi2c3 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_i2c2>; + pinctrl-1 =3D <&pinctrl_i2c2_gpio>; + clock-frequency =3D <100000>; + scl-gpios =3D <&gpio2 29 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio2 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; +}; + +/* Lino I2C_3 */ +&lpi2c4 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_i2c3>; + pinctrl-1 =3D <&pinctrl_i2c3_gpio>; + clock-frequency =3D <100000>; + scl-gpios =3D <&gpio2 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio2 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; +}; + +/* Lino SPI_2 */ +&lpspi1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_spi2>, <&pinctrl_spi2_cs0_gpio>; + cs-gpios =3D <&gpio1 11 GPIO_ACTIVE_LOW>, <&som_gpio_expander 2 GPIO_ACTI= VE_LOW>; + + status =3D "okay"; + + tpm@1 { + compatible =3D "infineon,slb9670", "tcg,tpm_tis-spi"; + reg =3D <1>; + interrupt-parent =3D <&som_gpio_expander>; + interrupts =3D <6 IRQ_TYPE_EDGE_FALLING>; + spi-max-frequency =3D <18500000>; + }; +}; + +/* Lino SPI_1 */ +&lpspi8 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_spi1>, <&pinctrl_spi1_cs0_gpio>; + cs-gpios =3D <&gpio2 12 GPIO_ACTIVE_LOW>; +}; + +/* Lino UART_3, used as the Linux Console */ +&lpuart1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart3>; +}; + +/* Lino UART_4 */ +&lpuart2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart4>; +}; + +/* Lino UART_1 */ +&lpuart6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart1>; + uart-has-rtscts; +}; + +/* Lino UART_2 */ +&lpuart7 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart2>; + uart-has-rtscts; +}; + +/* Lino I2S_1 */ +&sai3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_i2s1>; + assigned-clocks =3D <&clk IMX93_CLK_SAI3>; + assigned-clock-parents =3D <&clk IMX93_CLK_AUDIO_PLL>; + assigned-clock-rates =3D <24576000>; +}; + +/* Lino PWM_1 */ +&tpm4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pwm1>; +}; + +/* Lino PWM_2 */ +&tpm5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pwm2>; +}; + +/* Lino PWM_3 */ +&tpm6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pwm3>; +}; + +/* Lino USB_1 */ +&usbotg1 { + dr_mode =3D "otg"; + adp-disable; + hnp-disable; + srp-disable; + usb-role-switch; + disable-over-current; + role-switch-default-mode =3D "peripheral"; + samsung,picophy-dc-vol-level-adjust =3D <7>; + samsung,picophy-pre-emp-curr-control =3D <3>; +}; + +/* Lino USB_2 */ +&usbotg2 { + disable-over-current; + dr_mode =3D "host"; + vbus-supply =3D <®_usb2_vbus>; + samsung,picophy-dc-vol-level-adjust =3D <7>; + samsung,picophy-pre-emp-curr-control =3D <3>; +}; + +/* On-module eMMC */ +&usdhc1 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz"; + pinctrl-0 =3D <&pinctrl_emmc>; + pinctrl-1 =3D <&pinctrl_emmc>; + pinctrl-2 =3D <&pinctrl_emmc>; + no-sd; + no-sdio; + non-removable; + + status =3D "okay"; +}; + +/* Lino SD_1 */ +&usdhc2 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz"; + pinctrl-0 =3D <&pinctrl_sd1>, <&pinctrl_sd1_cd>; + pinctrl-1 =3D <&pinctrl_sd1>, <&pinctrl_sd1_cd>; + pinctrl-2 =3D <&pinctrl_sd1>, <&pinctrl_sd1_cd>; + cd-gpios =3D <&gpio3 0 GPIO_ACTIVE_LOW>; + disable-wp; + vmmc-supply =3D <®_sd1_vmmc>; + vqmmc-supply =3D <®_sd1_vqmmc>; +}; + +/* Lino SD_2 */ +&usdhc3 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz"; + pinctrl-0 =3D <&pinctrl_sd2>; + pinctrl-1 =3D <&pinctrl_sd2>; + pinctrl-2 =3D <&pinctrl_sd2>; +}; + +&wdog3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_wdog>; + fsl,ext-reset-output; + + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-common.d= tsi b/arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-common.dtsi new file mode 100644 index 000000000000..0023e76210ce --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-common.dtsi @@ -0,0 +1,175 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX93/iMX91 SoM on Lino-Verdin Adapter + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx91 + */ + +#include +#include + +/ { + verdin_i2s1_mclk: clock-24576000 { + compatible =3D "fixed-clock"; + #clock-cells =3D <0>; + clock-frequency =3D <24576000>; + }; + + verdin_csi1_mclk: clock-25000000 { + compatible =3D "fixed-clock"; + #clock-cells =3D <0>; + clock-frequency =3D <25000000>; + }; + + connector { + compatible =3D "gpio-usb-b-connector", "usb-b-connector"; + id-gpios =3D <&adapter_gpio_expander 1 GPIO_ACTIVE_HIGH>; + self-powered; + type =3D "micro"; + vbus-supply =3D <®_usb1_vbus>; + + port { + usb_1_connector: endpoint { + remote-endpoint =3D <&usb1_drd_sw>; + }; + }; + }; + + verdin_gpio_keys: gpio-keys { + compatible =3D "gpio-keys"; + + status =3D "disabled"; + + key-wakeup { + debounce-interval =3D <10>; + /* Verdin CTRL_WAKE1_MICO# (SODIMM 252) */ + gpios =3D <&adapter_gpio_expander 2 GPIO_ACTIVE_LOW>; + label =3D "Wake-Up"; + wakeup-source; + linux,code =3D ; + }; + }; +}; + +/* Lino ETH_1 */ +&eqos { + phy-handle =3D <ðphy1>; + phy-mode =3D "rgmii-id"; +}; + +/* Lino I2C_1 */ +&lpi2c1 { + status =3D "okay"; + + i2c-mux@70 { + compatible =3D "nxp,pca9543"; + reg =3D <0x70>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + verdin_i2c_1: i2c@0 { + reg =3D <0>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + status =3D "disabled"; + }; + + adapter_i2c: i2c@1 { + reg =3D <1>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + adapter_gpio_expander: gpio@21 { + compatible =3D "nxp,pcal6416"; + reg =3D <0x21>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_11>; + #interrupt-cells =3D <2>; + interrupt-controller; + interrupt-parent =3D <&gpio1>; + interrupts =3D <10 IRQ_TYPE_LEVEL_LOW>; + #gpio-cells =3D <2>; + gpio-controller; + gpio-line-names =3D + "SODIMM_244", /* Verdin PCIE_1_RESET# */ + "SODIMM_161", /* Verdin USB_1_ID */ + "SODIMM_252", /* Verdin CTRL_WAKE1_MICO# */ + "ETH_1_INT#", + "CTRL_EN_WIFI", + "", + "", + "", + "SODIMM_42", /* Verdin I2S_2_BCLK */ + "SODIMM_48", /* Verdin I2S_2_D_IN */ + "SODIMM_46", /* Verdin I2S_2_D_OUT */ + "SODIMM_44", /* Verdin I2S_2_SYNC */ + "SODIMM_64", /* Verdin QSPI_1_CS2# */ + "SODIMM_66", /* Verdin QSPI_1_DQS */ + "SODIMM_60", /* Verdin QSPI_1_IO2 */ + "SODIMM_62"; /* Verdin QSPI_1_IO3 */ + + verdin_pcie_1_reset_hog: pcie-1-reset-hog { + gpio-hog; + /* Verdin PCIE_1_RESET# (SODIMM 244) */ + gpios =3D <0 GPIO_ACTIVE_LOW>; + line-name =3D "PCIE_1_RESET#"; + output-low; + + status =3D "disabled"; + }; + }; + + /* Current measurement into module VCC */ + hwmon@40 { + compatible =3D "ti,ina219"; + reg =3D <0x40>; + shunt-resistor =3D <10000>; + }; + }; + }; +}; + +/* Lino UART_1 */ +&lpuart6 { + status =3D "okay"; + + bluetooth { + compatible =3D "nxp,88w8987-bt"; + fw-init-baudrate =3D <3000000>; + }; +}; + +/* Lino Ethernet MDIO */ +&mdio { + status =3D "okay"; + + ethphy1: ethernet-phy@1 { + reg =3D <1>; + interrupt-parent =3D <&adapter_gpio_expander>; + interrupts =3D <3 IRQ_TYPE_EDGE_FALLING>; + ti,rx-internal-delay =3D ; + ti,tx-internal-delay =3D ; + }; +}; + +/* Lino USB_1 */ +&usbotg1 { + port { + usb1_drd_sw: endpoint { + remote-endpoint =3D <&usb_1_connector>; + }; + }; +}; + +/* Lino SD_2 */ +&usdhc3 { + keep-power-in-suspend; + non-removable; + + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-dev-comm= on.dtsi b/arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-dev-common.= dtsi new file mode 100644 index 000000000000..1664b380e58e --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-dev-common.dtsi @@ -0,0 +1,216 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX93/iMX91 SoM on Lino-Verdin Adapter / Development carrier board + * + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx91 + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 + * https://www.toradex.com/products/carrier-board/verdin-development-board= -kit + */ + +/ { + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + sound { + compatible =3D "simple-audio-card"; + simple-audio-card,bitclock-master =3D <&codec_dai>; + simple-audio-card,format =3D "i2s"; + simple-audio-card,frame-master =3D <&codec_dai>; + simple-audio-card,mclk-fs =3D <256>; + simple-audio-card,name =3D "verdin-nau8822"; + simple-audio-card,routing =3D + "Headphones", "LHP", + "Headphones", "RHP", + "Speaker", "LSPK", + "Speaker", "RSPK", + "Line Out", "AUXOUT1", + "Line Out", "AUXOUT2", + "LAUX", "Line In", + "RAUX", "Line In", + "LMICP", "Mic In", + "RMICP", "Mic In"; + simple-audio-card,widgets =3D + "Headphones", "Headphones", + "Line Out", "Line Out", + "Speaker", "Speaker", + "Microphone", "Mic In", + "Line", "Line In"; + + codec_dai: simple-audio-card,codec { + sound-dai =3D <&nau8822_1a>; + }; + + simple-audio-card,cpu { + sound-dai =3D <&sai3>; + }; + }; +}; + +/* Lino ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + status =3D "okay"; +}; + +&gpio2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio1>, <&pinctrl_gpio2>, <&pinctrl_gpio3>, + <&pinctrl_gpio4>, <&pinctrl_gpio5>; +}; + +&gpio3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio6>, <&pinctrl_gpio7>; +}; + +&gpio4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio8>, <&pinctrl_gpio9>, <&pinctrl_gpio10>; +}; + +/* Lino ETH_1 */ +&eqos { + status =3D "okay"; +}; + +/* Lino ETH_2 */ +&fec { + phy-handle =3D <ðphy2>; + phy-mode =3D "rgmii-id"; + + status =3D "okay"; +}; + +/* Lino CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Lino CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +/* Lino I2C_2 */ +&lpi2c3 { + status =3D "okay"; +}; + +/* Lino I2C_3 */ +&lpi2c4 { + status =3D "okay"; +}; + +/* Lino SPI_1 */ +&lpspi8 { + status =3D "okay"; +}; + +/* Lino UART_3, used as the Linux Console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Lino UART_4 */ +&lpuart2 { + status =3D "okay"; +}; + +/* Lino UART_2 */ +&lpuart7 { + status =3D "okay"; +}; + +/* Lino Ethernet MDIO */ +&mdio { + ethphy2: ethernet-phy@7 { + compatible =3D "ethernet-phy-ieee802.3-c22"; + reg =3D <7>; + micrel,led-mode =3D <0>; + }; +}; + +/* Lino I2S_1 */ +&sai3 { + status =3D "okay"; +}; + +/* Lino PWM_1 */ +&tpm4 { + status =3D "okay"; +}; + +/* Lino PWM_2 */ +&tpm5 { + status =3D "okay"; +}; + +/* Lino PWM_3 */ +&tpm6 { + status =3D "okay"; +}; + +/* Lino USB_1 */ +&usbotg1 { + status =3D "okay"; +}; + +/* Lino USB_2 */ +&usbotg2 { + status =3D "okay"; +}; + +/* Lino SD_1 */ +&usdhc2 { + status =3D "okay"; +}; + +/* Verdin CTRL_WAKE1_MICO# */ +&verdin_gpio_keys { + status =3D "okay"; +}; + +/* Verdin I2C_1 */ +&verdin_i2c_1 { + status =3D "okay"; + + nau8822_1a: audio-codec@1a { + compatible =3D "nuvoton,nau8822"; + reg =3D <0x1a>; + clock-names =3D "mclk"; + clocks =3D <&verdin_i2s1_mclk>; + #sound-dai-cells =3D <0>; + }; + + carrier_gpio_expander: gpio@21 { + compatible =3D "nxp,pcal6416"; + reg =3D <0x21>; + #gpio-cells =3D <2>; + gpio-controller; + }; + + /* Current measurement into module VCC */ + hwmon@40 { + compatible =3D "ti,ina219"; + reg =3D <0x40>; + shunt-resistor =3D <10000>; + }; + + temperature-sensor@4f { + compatible =3D "ti,tmp75c"; + reg =3D <0x4f>; + }; + + carrier_eeprom: eeprom@57 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x57>; + pagesize =3D <16>; + }; +}; + +/* Verdin PCIE_1_RESET# */ +&verdin_pcie_1_reset_hog { + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx93-lino-verdin-dev.dts b/arch= /arm64/boot/dts/freescale/imx93-lino-verdin-dev.dts new file mode 100644 index 000000000000..a79553d94649 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-lino-verdin-dev.dts @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX93 SoM on Lino-Verdin Adapter / Development carrier board + * + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 + * https://www.toradex.com/products/carrier-board/verdin-development-board= -kit + */ + +/dts-v1/; + +#include "imx93.dtsi" +#include "imx93-lino.dtsi" +#include "imx93-imx91-lino-verdin-common.dtsi" +#include "imx93-imx91-lino-verdin-dev-common.dtsi" + +/ { + model =3D "Toradex Lino iMX93 on Verdin Adapter plus Development Board"; + compatible =3D "toradex,lino-imx93-verdin-dev", + "toradex,lino-imx93-verdin", + "toradex,lino-imx93", + "fsl,imx93"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx93-lino.dtsi b/arch/arm64/boo= t/dts/freescale/imx93-lino.dtsi new file mode 100644 index 000000000000..cab7f344f2fe --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-lino.dtsi @@ -0,0 +1,359 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX93 SoM + * + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 + */ + +#include "imx93-pinfunc.h" +#include "imx93-imx91-lino-common.dtsi" + +/ { + reserved-memory { + ranges; + #address-cells =3D <2>; + #size-cells =3D <2>; + + rsc_table: rsc-table@2021e000 { + reg =3D <0 0x2021e000 0 0x1000>; + no-map; + }; + + vdev0vring0: vdev0vring0@a4000000 { + reg =3D <0 0xa4000000 0 0x8000>; + no-map; + }; + + vdev0vring1: vdev0vring1@a4008000 { + reg =3D <0 0xa4008000 0 0x8000>; + no-map; + }; + + vdev1vring0: vdev1vring0@a4010000 { + reg =3D <0 0xa4010000 0 0x8000>; + no-map; + }; + + vdev1vring1: vdev1vring1@a4018000 { + reg =3D <0 0xa4018000 0 0x8000>; + no-map; + }; + + vdev0buffer: vdev0buffer@a4020000 { + compatible =3D "shared-dma-pool"; + reg =3D <0 0xa4020000 0 0x100000>; + no-map; + }; + }; +}; + +&cm33 { + mbox-names =3D "tx", "rx", "rxdb"; + mboxes =3D <&mu1 0 1>, + <&mu1 1 1>, + <&mu1 3 1>; + memory-region =3D <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>, + <&vdev1vring0>, <&vdev1vring1>, <&rsc_table>; + + status =3D "okay"; +}; + +&mu1 { + status =3D "okay"; +}; + +&iomuxc { + /* Lino CAN_1 */ + pinctrl_can1: can1grp { + fsl,pins =3D , /* Lino P12 */ + ; /* Lino P10 */ + }; + + /* Lino CAN_2 */ + pinctrl_can2: can2grp { + fsl,pins =3D , /* Lino S28 */ + ; /* Lino S30 */ + }; + + /* Lino ETH_1 RGMII */ + pinctrl_eth1: eqosgrp { + fsl,pins =3D , /* Lino P= 77 */ + , /* Lino P79 */ + , /* Lino P81 */ + , /* Lino P83 */ + , /* L= ino P73 */ + , /* Lino P75 */ + , /* Lino P97 */ + , /* Lino P95 */ + , /* Lino P93 */ + , /* Lino P91 */ + , /* L= ino P89 */ + ; /* Lino P85 */ + }; + + /* Lino ETH MDIO */ + pinctrl_mdio: eqosmdiogrp { + fsl,pins =3D , /* Lino P69 */ + ; /* Lino P67 */ + }; + + /* Lino ETH_2 RGMII */ + pinctrl_eth2: fecgrp { + fsl,pins =3D , /* Lino S77 */ + , /* Lino S79 */ + , /* Lino S81 */ + , /* Lino S83 */ + , /* Lino S71 */ + , /* Lino S73 */ + , /* Lino S99 */ + , /* Lino S97 */ + , /* Lino S93 */ + , /* Lino S91 */ + , /* Lino S87 */ + ; /* Lino S89 */ + }; + + /* Lino GPIO_11 */ + pinctrl_gpio_11: gpio1io10grp { + fsl,pins =3D ; /* Lino P65 = */ + }; + + /* Lino SPI_2_CS as GPIO */ + pinctrl_spi2_cs0_gpio: gpio1io11grp { + fsl,pins =3D ; /* Lino S18 */ + }; + + /* Lino GPIO_1 */ + pinctrl_gpio1: gpio2io0grp { + fsl,pins =3D ; /* Lino P30 */ + }; + + /* Lino GPIO_2 */ + pinctrl_gpio2: gpio2io1grp { + fsl,pins =3D ; /* Lino P32 */ + }; + + /* Lino SPI_1_CS as GPIO */ + pinctrl_spi1_cs0_gpio: gpio2io12grp { + fsl,pins =3D ; /* Lino P58 */ + }; + + /* Lino GPIO_3 */ + pinctrl_gpio3: gpio2io17grp { + fsl,pins =3D ; /* Lino P34 */ + }; + + /* Lino GPIO_4 */ + pinctrl_gpio4: gpio2io22grp { + fsl,pins =3D ; /* Lino P36 */ + }; + + /* Lino PWM_3 as GPIO */ + pinctrl_pwm3_gpio: gpio2io23grp { + fsl,pins =3D ; /* Lino P5 */ + }; + + /* Lino GPIO_5 */ + pinctrl_gpio5: gpio2io24grp { + fsl,pins =3D ; /* Lino P38 */ + }; + + /* Lino GPIO_6 */ + pinctrl_gpio6: gpio3io26grp { + fsl,pins =3D ; /* Lino P40 */ + }; + + /* Lino GPIO_7 */ + pinctrl_gpio7: gpio3io27grp { + fsl,pins =3D ; /* Lino P42 */ + }; + + /* Lino GPIO_9 */ + pinctrl_gpio9: gpio4io14grp { + fsl,pins =3D ; /* Lino P46 */ + }; + + /* Lino GPIO_10 */ + pinctrl_gpio10: gpio4io15grp { + fsl,pins =3D ; /* Lino P48 */ + }; + + /* Lino GPIO_8 */ + pinctrl_gpio8: gpio4io28grp { + fsl,pins =3D ; /* Lino P44 */ + }; + + /* On-module GPIO_EXP_INT# */ + pinctrl_gpio_exp_int: gpio4io29grp { + fsl,pins =3D ; /* GPIO_EXP_INT# */ + }; + + /* Lino I2C_1 as GPIO */ + pinctrl_i2c1_gpio: lpi2c1gpiogrp { + fsl,pins =3D , /* Lino P18 */ + ; /* Lino P16 */ + }; + + /* Lino I2C_1 */ + pinctrl_i2c1: lpi2c1grp { + fsl,pins =3D , /* Lino P18 */ + ; /* Lino P16 */ + }; + + /* On-module PMIC I2C as GPIO */ + pinctrl_pmic_i2c_gpio: lpi2c2gpiogrp { + fsl,pins =3D , /* PMIC_I2C_SCL= */ + ; /* PMIC_I2C_SDA */ + }; + + /* On-module PMIC I2C */ + pinctrl_pmic_i2c: lpi2c2grp { + fsl,pins =3D , /* PMIC_I2C_SCL= */ + ; /* PMIC_I2C_SDA */ + }; + + /* Lino I2C_2 as GPIO */ + pinctrl_i2c2_gpio: lpi2c3gpiogrp { + fsl,pins =3D , /* Lino P20 */ + ; /* Lino P22 */ + }; + + /* Lino I2C_2 */ + pinctrl_i2c2: lpi2c3grp { + fsl,pins =3D , /* Lino P20 */ + ; /* Lino P22 */ + }; + + /* Lino I2C_3 as GPIO */ + pinctrl_i2c3_gpio: lpi2c4gpiogrp { + fsl,pins =3D , /* Lino P24 */ + ; /* Lino P26 */ + }; + + /* Lino I2C_3 */ + pinctrl_i2c3: lpi2c4grp { + fsl,pins =3D , /* Lino P24 */ + ; /* Lino P26 */ + }; + + /* Lino SPI_2 */ + pinctrl_spi2: lpspi1grp { + fsl,pins =3D , /* Lino S20 */ + , /* Lino S22 */ + ; /* Lino S24 */ + }; + + /* Lino SPI_1 */ + pinctrl_spi1: lpspi8grp { + fsl,pins =3D , /* Lino P54 */ + , /* Lino P56 */ + ; /* Lino P52 */ + }; + + /* Lino UART_3 */ + pinctrl_uart3: lpuart1grp { + fsl,pins =3D , /* Lino P17 */ + ; /* Lino P19 */ + }; + + /* Lino UART_4 */ + pinctrl_uart4: lpuart2grp { + fsl,pins =3D , /* Lino P23 */ + ; /* Lino P25 */ + }; + + /* Lino UART_1 */ + pinctrl_uart1: lpuart6grp { + fsl,pins =3D , /* Lino P11 */ + , /* Lino P9 */ + , /* Lino P8 */ + ; /* Lino P6 */ + }; + + /* Lino UART_2 */ + pinctrl_uart2: lpuart7grp { + fsl,pins =3D , /* Lino P15 */ + , /* Lino P13 */ + , /* Lino S7 */ + ; /* Lino S5 */ + }; + + /* Lino I2S_1 */ + pinctrl_i2s1: sai3grp { + fsl,pins =3D , /* Lino S94 */ + , /* Lino S98 */ + , /* Lino S100 */ + ; /* Lino S96 */ + }; + + /* Lino PWM_1 */ + pinctrl_pwm1: tpm4ch1grp { + fsl,pins =3D ; /* Lino P1 */ + }; + + /* Lino PWM_2 */ + pinctrl_pwm2: tpm5ch2grp { + fsl,pins =3D ; /* Lino P3 */ + }; + + /* Lino PWM_3 */ + pinctrl_pwm3: tpm6ch1grp { + fsl,pins =3D ; /* Lino P5 */ + }; + + /* On-module eMMC */ + pinctrl_emmc: usdhc1grp { + fsl,pins =3D , /* eMMC_CLK */ + , /* eMMC_CMD */ + , /* eMMC_DATA0 */ + , /* eMMC_DATA1 */ + , /* eMMC_DATA2 */ + , /* eMMC_DATA3 */ + , /* eMMC_DATA4 */ + , /* eMMC_DATA5 */ + , /* eMMC_DATA6 */ + , /* eMMC_DATA7 */ + ; /* eMMC_STROBE */ + }; + + /* Lino SD_1_CD# */ + pinctrl_sd1_cd: usdhc2cdgrp { + fsl,pins =3D ; /* Lino P78 */ + }; + + /* Lino SD_1 */ + pinctrl_sd1: usdhc2grp { + fsl,pins =3D , /* Lino P68 */ + , /* Lino P66 */ + , /* Lino P74 */ + , /* Lino P76 */ + , /* Lino P60 */ + ; /* Lino P64 */ + }; + + /* Lino SD_1_PWR_EN */ + pinctrl_sd1_pwr_en: usdhc2pwrgrp { + fsl,pins =3D ; /* Lino P72 */ + }; + + /* On-module PMIC_SD_2_VSEL */ + pinctrl_sd1_vsel: usdhc2vselgrp { + fsl,pins =3D ; /* PMIC_SD_2_VSEL= */ + }; + + /* Lino SD_2 */ + pinctrl_sd2: usdhc3grp { + fsl,pins =3D , /* Lino S10 */ + , /* Lino S8 */ + , /* Lino S12 */ + , /* Lino S16 */ + , /* Lino S2 */ + ; /* Lino S4 */ + }; + + pinctrl_wdog: wdoggrp { + fsl,pins =3D ; /* PMIC_WDOG_B */ + }; +}; --=20 2.47.3 From nobody Thu Sep 24 12:53:19 2026 Received: from mail11.truemail.it (mail11.truemail.it [217.194.8.81]) (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 F3197420483; Thu, 24 Sep 2026 06:58:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.194.8.81 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233086; cv=none; b=rQKaJnuDgeu89cJ7sOmh77Od4TlZ7krfvAwBwm8j7woqGAe1mWIGtUJXdoaOc1xLdEqTy4N6P+C0ayBegrQ9LAwYSWlI1OZ8WzRz+BZ15nQgvnX1ocEAA0hjCacnx4z5xPSbgKLbmz2F6UXzUy1VEb17NX4b9eXIpKnh0PiwD+Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233086; c=relaxed/simple; bh=tEoFqILJKWjC2InbXVxwhWzSuoa0NpbN8X+UBUSM2cg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=br24ef8vlCZIF6Qpm7kaOXv5q9svLXT501/xe3/pmtW7rBFx3C2ZT6jouiSnbnyTRXTWz/s3evlKT8KvCFaYiyE3oYIobvy+zZohxfQG/7LMPESROpSoLq9waGiZRimb54hElJKP9095PHtiQvUdKZoI7X7GY0cs1Z0nz2aYA/g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it; spf=pass smtp.mailfrom=dolcini.it; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b=UheAD/Ul; arc=none smtp.client-ip=217.194.8.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=dolcini.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b="UheAD/Ul" Received: from francesco-nb.. (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) by mail11.truemail.it (Postfix) with ESMTPA id EA99720223; Thu, 24 Sep 2026 08:57:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dolcini.it; s=default; t=1790233069; bh=yGvAh5haqou+rzon7GQ4Mwf4/kcx5u76WBVG/aWMlJA=; h=From:To:Subject; b=UheAD/UlThLIALv6VeEneBPTjFztc5swkZs9s0Qi3tamM6lIBlVEDVT08GPMaiWHx NME3p2bx0GTHRgbuEvq/WUWkUkEnSDBD9a08sgYryScF84SsJMDRHqf6Pi7bMo/qkN QVof5tyAifMbuZEuNpbgxkxvvk4ckWgwM7OFRJoF+lUE8rm0RAN7MiInXYUhvExdBU pei+b9O8jAmMjAVgzrwOVruXb/Juiu2d5pusME4S36H1WdQkGsiy0HzDka0fMB3COi kwjt7resFeIITQhViURTgRaAKcLW1Ay+tBEYfPvxi/75fKqtva3niLyV5iESc9FCsB dmr8Mj2zBDQ0g== From: Francesco Dolcini To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Shawn Guo Cc: Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 4/7] arm64: dts: freescale: imx93-lino: Add dahlia Date: Thu, 24 Sep 2026 08:57:30 +0200 Message-ID: <20260924065735.17678-5-francesco@dolcini.it> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260924065735.17678-1-francesco@dolcini.it> References: <20260924065735.17678-1-francesco@dolcini.it> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Francesco Dolcini Add support for Lino iMX93 mated with the Verdin adapter and Dahlia carrier board. Link: https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 Link: https://www.toradex.com/accessories/lino-verdin-adapter Link: https://www.toradex.com/products/carrier-board/dahlia-carrier-board-k= it Signed-off-by: Francesco Dolcini --- v3: rebased --- arch/arm64/boot/dts/freescale/Makefile | 1 + ...imx93-imx91-lino-verdin-dahlia-common.dtsi | 198 ++++++++++++++++++ .../freescale/imx93-lino-verdin-dahlia.dts | 24 +++ 3 files changed, 223 insertions(+) create mode 100644 arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-d= ahlia-common.dtsi create mode 100644 arch/arm64/boot/dts/freescale/imx93-lino-verdin-dahlia.= dts diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 221c56d7845a..83688ee447e4 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -895,6 +895,7 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx93-14x14-evk.dtb imx93-14x14-evk-mqs-dtbs +=3D imx93-14x14-evk.dtb imx9-mqs.dtbo dtb-$(CONFIG_ARCH_MXC) +=3D imx93-14x14-evk-mqs.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-kontron-bl-osm-s.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx93-lino-verdin-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-lino-verdin-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-phyboard-nash.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-phyboard-segin.dtb diff --git a/arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-dahlia-c= ommon.dtsi b/arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-dahlia-c= ommon.dtsi new file mode 100644 index 000000000000..5f6136204e30 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-imx91-lino-verdin-dahlia-common.d= tsi @@ -0,0 +1,198 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX93/iMX91 SoM on Lino-Verdin Adapter / Dahlia carrier board + * + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx91 + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 + * https://www.toradex.com/products/carrier-board/dahlia-carrier-board-kit + */ + +/ { + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + reg_1v8_sw: regulator-1v8-sw { + compatible =3D "regulator-fixed"; + regulator-max-microvolt =3D <1800000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "On-carrier +V1.8_SW"; + }; + + sound { + compatible =3D "simple-audio-card"; + simple-audio-card,bitclock-master =3D <&codec_dai>; + simple-audio-card,format =3D "i2s"; + simple-audio-card,frame-master =3D <&codec_dai>; + simple-audio-card,mclk-fs =3D <256>; + simple-audio-card,name =3D "verdin-wm8904"; + simple-audio-card,routing =3D + "Headphone Jack", "HPOUTL", + "Headphone Jack", "HPOUTR", + "IN2L", "Line In Jack", + "IN2R", "Line In Jack", + "Microphone Jack", "MICBIAS", + "IN1L", "Microphone Jack"; + simple-audio-card,widgets =3D + "Microphone", "Microphone Jack", + "Headphone", "Headphone Jack", + "Line", "Line In Jack"; + + codec_dai: simple-audio-card,codec { + sound-dai =3D <&wm8904_1a>; + }; + + simple-audio-card,cpu { + sound-dai =3D <&sai3>; + }; + }; +}; + +/* Lino ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + status =3D "okay"; +}; + +&gpio2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio1>, <&pinctrl_gpio2>, <&pinctrl_gpio3>, + <&pinctrl_gpio4>, <&pinctrl_gpio5>; +}; + +&gpio3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio6>, <&pinctrl_gpio7>; +}; + +&gpio4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio8>, <&pinctrl_gpio9>, <&pinctrl_gpio10>; +}; + +/* Lino ETH_1 */ +&eqos { + status =3D "okay"; +}; + +/* Lino CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Lino CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +/* Lino I2C_2 */ +&lpi2c3 { + status =3D "okay"; +}; + +/* Lino I2C_3 */ +&lpi2c4 { + status =3D "okay"; +}; + +/* Lino SPI_1 */ +&lpspi8 { + status =3D "okay"; +}; + +/* Lino UART_3, used as the Linux Console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Lino UART_4 */ +&lpuart2 { + status =3D "okay"; +}; + +/* Lino UART_2 */ +&lpuart7 { + status =3D "okay"; +}; + +/* Lino I2S_1 */ +&sai3 { + status =3D "okay"; +}; + +/* Lino PWM_1 */ +&tpm4 { + status =3D "okay"; +}; + +/* Lino PWM_2 */ +&tpm5 { + status =3D "okay"; +}; + +/* Lino PWM_3 */ +&tpm6 { + status =3D "okay"; +}; + +/* Lino USB_1 */ +&usbotg1 { + status =3D "okay"; +}; + +/* Lino USB_2 */ +&usbotg2 { + status =3D "okay"; +}; + +/* Lino SD_1 */ +&usdhc2 { + status =3D "okay"; +}; + +/* Verdin CTRL_WAKE1_MICO# */ +&verdin_gpio_keys { + status =3D "okay"; +}; + +/* Verdin I2C_1 */ +&verdin_i2c_1 { + status =3D "okay"; + + wm8904_1a: audio-codec@1a { + compatible =3D "wlf,wm8904"; + reg =3D <0x1a>; + clock-names =3D "mclk"; + clocks =3D <&verdin_i2s1_mclk>; + #sound-dai-cells =3D <0>; + AVDD-supply =3D <®_1v8_sw>; + CPVDD-supply =3D <®_1v8_sw>; + DBVDD-supply =3D <®_1v8_sw>; + DCVDD-supply =3D <®_1v8_sw>; + MICVDD-supply =3D <®_1v8_sw>; + }; + + /* Current measurement into module VCC */ + hwmon@40 { + compatible =3D "ti,ina219"; + reg =3D <0x40>; + shunt-resistor =3D <10000>; + }; + + temperature-sensor@4f { + compatible =3D "ti,tmp75c"; + reg =3D <0x4f>; + }; + + carrier_eeprom: eeprom@57 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x57>; + pagesize =3D <16>; + }; +}; + +/* Verdin PCIE_1_RESET# */ +&verdin_pcie_1_reset_hog { + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx93-lino-verdin-dahlia.dts b/a= rch/arm64/boot/dts/freescale/imx93-lino-verdin-dahlia.dts new file mode 100644 index 000000000000..c708a2e18c90 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-lino-verdin-dahlia.dts @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX93 SoM on Lino-Verdin Adapter / Dahlia carrier board + * + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx93 + * https://www.toradex.com/products/carrier-board/dahlia-carrier-board-kit + */ + +/dts-v1/; + +#include "imx93.dtsi" +#include "imx93-lino.dtsi" +#include "imx93-imx91-lino-verdin-common.dtsi" +#include "imx93-imx91-lino-verdin-dahlia-common.dtsi" + +/ { + model =3D "Toradex Lino iMX93 on Verdin Adapter plus Dahlia Board"; + compatible =3D "toradex,lino-imx93-verdin-dahlia", + "toradex,lino-imx93-verdin", + "toradex,lino-imx93", + "fsl,imx93"; +}; --=20 2.47.3 From nobody Thu Sep 24 12:53:19 2026 Received: from mail11.truemail.it (mail11.truemail.it [217.194.8.81]) (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 53AA640BCDA; Thu, 24 Sep 2026 06:58:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.194.8.81 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233097; cv=none; b=Wv0Ruu86D90RAydVlkDpRBTgBx+Mo7dkGCJVXiztnUYJH7I9H0O2Th2WscAhqvjsoso4VZc23S41ZZV/uwYglCFWcwqz+WxaPDOyKsXg4pHQj6gqL26HvLtJA1Lw52XCO2EAzG44clDIkxkbC9kq9ecvwQrFHYLt5/Z+gTc76Zs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233097; c=relaxed/simple; bh=89sHzTrn+wH/YfrhegNQUZ8DFMMgu2mOh9kWFAcEfTU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QYeW+eQ1vGvR6YYp07rcSMvfmAOhw1kwiEqEhsEInMxnpWnvJPlacOn0q64SsqaBSfhTGraQt8e90a3VEZWrE0Y2eUdCdhjpCRk2DsCDA+NdtV8lCqhxWfP1uJ6nZFSpKOFdmECFuVOxqB0QkLpvIc7njRR/X2ihmJ67cecqgHc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it; spf=pass smtp.mailfrom=dolcini.it; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b=YRQP34rs; arc=none smtp.client-ip=217.194.8.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=dolcini.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b="YRQP34rs" Received: from francesco-nb.. (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) by mail11.truemail.it (Postfix) with ESMTPA id 9D99F2023A; Thu, 24 Sep 2026 08:57:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dolcini.it; s=default; t=1790233070; bh=kfCMPkFn87dDFRcGcYwGsyXtbg27lppi2jS1su4QJw8=; h=From:To:Subject; b=YRQP34rswqWgyx1dmSL2zu6yyh9T1qhkCNnEDeWY/9NkSEoYpCYyOsKhuV6JDViJX ZHyzvLt+trxam+kzMbCx/69Tdcx9wXzCvyGwB7bxlyw2Kg0ZcQdcQkzuGnwosPJr2r D9nmY8tv4i24aBmmJXWzEXRlRRblEWQyQIecec42twSnAToWpFWj6An8vSWu4Vx0iC 1qO2zaTn0ftd0DY9rcP97vqV4PX5t10oAG3kukTnNtA3qKNpL6EZe6vgf5hnJzUASm 546A7kb7l9udT2jfa4nl/FPTwxJ8ZUiHQ8VSmLdE82HVcIq9ODad9O6kWlon/AYHXB 0B6j3TLGubdBw== From: Francesco Dolcini To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Shawn Guo Cc: Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 5/7] arm64: dts: freescale: Add Lino iMX91 Date: Thu, 24 Sep 2026 08:57:31 +0200 Message-ID: <20260924065735.17678-6-francesco@dolcini.it> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260924065735.17678-1-francesco@dolcini.it> References: <20260924065735.17678-1-francesco@dolcini.it> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Francesco Dolcini Add support for the Lino iMX91 SoM, its Verdin adapter, dahlia and development carrier board. Link: https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx91 Link: https://www.toradex.com/accessories/lino-verdin-adapter Link: https://www.toradex.com/products/carrier-board/verdin-development-boa= rd-kit Link: https://www.toradex.com/products/carrier-board/dahlia-carrier-board-k= it Signed-off-by: Francesco Dolcini --- v3: rebased --- arch/arm64/boot/dts/freescale/Makefile | 2 + .../freescale/imx91-lino-verdin-dahlia.dts | 24 ++ .../dts/freescale/imx91-lino-verdin-dev.dts | 24 ++ arch/arm64/boot/dts/freescale/imx91-lino.dtsi | 305 ++++++++++++++++++ 4 files changed, 355 insertions(+) create mode 100644 arch/arm64/boot/dts/freescale/imx91-lino-verdin-dahlia.= dts create mode 100644 arch/arm64/boot/dts/freescale/imx91-lino-verdin-dev.dts create mode 100644 arch/arm64/boot/dts/freescale/imx91-lino.dtsi diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 83688ee447e4..1c4aa73443ba 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -851,6 +851,8 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx91-11x11-frdm.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx91-11x11-frdm-s.dtb imx91-11x11-evk-mqs-dtbs +=3D imx91-11x11-evk.dtb imx9-mqs.dtbo dtb-$(CONFIG_ARCH_MXC) +=3D imx91-11x11-evk-mqs.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx91-lino-verdin-dahlia.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx91-lino-verdin-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx91-phyboard-segin.dtb =20 imx91-9x9-qsb-can1-dtbs +=3D imx91-9x9-qsb.dtb imx91-9x9-qsb-can1.dtbo diff --git a/arch/arm64/boot/dts/freescale/imx91-lino-verdin-dahlia.dts b/a= rch/arm64/boot/dts/freescale/imx91-lino-verdin-dahlia.dts new file mode 100644 index 000000000000..eb3a8cdcd08f --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx91-lino-verdin-dahlia.dts @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX91 SoM on Lino-Verdin Adapter / Dahlia carrier board + * + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx91 + * https://www.toradex.com/products/carrier-board/dahlia-carrier-board-kit + */ + +/dts-v1/; + +#include "imx91.dtsi" +#include "imx91-lino.dtsi" +#include "imx93-imx91-lino-verdin-common.dtsi" +#include "imx93-imx91-lino-verdin-dahlia-common.dtsi" + +/ { + model =3D "Toradex Lino iMX91 on Verdin Adapter plus Dahlia Board"; + compatible =3D "toradex,lino-imx91-verdin-dahlia", + "toradex,lino-imx91-verdin", + "toradex,lino-imx91", + "fsl,imx91"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx91-lino-verdin-dev.dts b/arch= /arm64/boot/dts/freescale/imx91-lino-verdin-dev.dts new file mode 100644 index 000000000000..a988897f3388 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx91-lino-verdin-dev.dts @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX91 SoM on Lino-Verdin Adapter / Development carrier board + * + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx91 + * https://www.toradex.com/products/carrier-board/verdin-development-board= -kit + */ + +/dts-v1/; + +#include "imx91.dtsi" +#include "imx91-lino.dtsi" +#include "imx93-imx91-lino-verdin-common.dtsi" +#include "imx93-imx91-lino-verdin-dev-common.dtsi" + +/ { + model =3D "Toradex Lino iMX91 on Verdin Adapter plus Development Board"; + compatible =3D "toradex,lino-imx91-verdin-dev", + "toradex,lino-imx91-verdin", + "toradex,lino-imx91", + "fsl,imx91"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx91-lino.dtsi b/arch/arm64/boo= t/dts/freescale/imx91-lino.dtsi new file mode 100644 index 000000000000..99d95694e910 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx91-lino.dtsi @@ -0,0 +1,305 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Lino iMX91 SoM + * + * https://www.toradex.com/computer-on-modules/lino-arm-family/nxp-imx91 + */ + +#include "imx91-pinfunc.h" +#include "imx93-imx91-lino-common.dtsi" + +&iomuxc { + /* Lino CAN_1 */ + pinctrl_can1: can1grp { + fsl,pins =3D , /* Lino P12 */ + ; /* Lino P10 */ + }; + + /* Lino CAN_2 */ + pinctrl_can2: can2grp { + fsl,pins =3D , /* Lino S28 */ + ; /* Lino S30 */ + }; + + /* Lino ETH_1 RGMII */ + pinctrl_eth1: eqosgrp { + fsl,pins =3D , /* Lino P= 77 */ + , /* Lino P79 */ + , /* Lino P81 */ + , /* Lino P83 */ + , /* Lino P73 */ + , /* Lino P75 */ + , /* Lino P97 */ + , /* Lino P95 */ + , /* Lino P93 */ + , /* Lino P91 */ + , /* L= ino P89 */ + ; /* Lino P85 */ + }; + + /* Lino ETH MDIO */ + pinctrl_mdio: eqosmdiogrp { + fsl,pins =3D , /* Lino P69 */ + ; /* Lino P67 */ + }; + + /* Lino ETH_2 RGMII */ + pinctrl_eth2: fecgrp { + fsl,pins =3D , /* Lino S77 */ + , /* Lino S79 */ + , /* Lino S81 */ + , /* Lino S83 */ + , /* Lino S71 */ + , /* Lino S73 */ + , /* Lino S99 */ + , /* Lino S97 */ + , /* Lino S93 */ + , /* Lino S91 */ + , /* Lino S87 */ + ; /* Lino S89 */ + }; + + /* Lino GPIO_11 */ + pinctrl_gpio_11: gpio1io10grp { + fsl,pins =3D ; /* Lino P65 = */ + }; + + /* Lino SPI_2_CS as GPIO */ + pinctrl_spi2_cs0_gpio: gpio1io11grp { + fsl,pins =3D ; /* Lino S18 */ + }; + + /* Lino GPIO_1 */ + pinctrl_gpio1: gpio2io0grp { + fsl,pins =3D ; /* Lino P30 */ + }; + + /* Lino GPIO_2 */ + pinctrl_gpio2: gpio2io1grp { + fsl,pins =3D ; /* Lino P32 */ + }; + + /* Lino SPI_1_CS as GPIO */ + pinctrl_spi1_cs0_gpio: gpio2io12grp { + fsl,pins =3D ; /* Lino P58 */ + }; + + /* Lino GPIO_3 */ + pinctrl_gpio3: gpio2io17grp { + fsl,pins =3D ; /* Lino P34 */ + }; + + /* Lino GPIO_4 */ + pinctrl_gpio4: gpio2io22grp { + fsl,pins =3D ; /* Lino P36 */ + }; + + /* Lino PWM_3 as GPIO */ + pinctrl_pwm3_gpio: gpio2io23grp { + fsl,pins =3D ; /* Lino P5 */ + }; + + /* Lino GPIO_5 */ + pinctrl_gpio5: gpio2io24grp { + fsl,pins =3D ; /* Lino P38 */ + }; + + /* Lino GPIO_6 */ + pinctrl_gpio6: gpio3io26grp { + fsl,pins =3D ; /* Lino P40 */ + }; + + /* Lino GPIO_7 */ + pinctrl_gpio7: gpio3io27grp { + fsl,pins =3D ; /* Lino P42 */ + }; + + /* Lino GPIO_9 */ + pinctrl_gpio9: gpio4io14grp { + fsl,pins =3D ; /* Lino P46 */ + }; + + /* Lino GPIO_10 */ + pinctrl_gpio10: gpio4io15grp { + fsl,pins =3D ; /* Lino P48 */ + }; + + /* Lino GPIO_8 */ + pinctrl_gpio8: gpio4io28grp { + fsl,pins =3D ; /* Lino P44 */ + }; + + /* On-module GPIO_EXP_INT# */ + pinctrl_gpio_exp_int: gpio4io29grp { + fsl,pins =3D ; /* GPIO_EXP_INT# */ + }; + + /* Lino I2C_1 as GPIO */ + pinctrl_i2c1_gpio: lpi2c1gpiogrp { + fsl,pins =3D , /* Lino P18 */ + ; /* Lino P16 */ + }; + + /* Lino I2C_1 */ + pinctrl_i2c1: lpi2c1grp { + fsl,pins =3D , /* Lino P18 */ + ; /* Lino P16 */ + }; + + /* On-module PMIC I2C as GPIO */ + pinctrl_pmic_i2c_gpio: lpi2c2gpiogrp { + fsl,pins =3D , /* PMIC_I2C_SCL = */ + ; /* PMIC_I2C_SDA */ + }; + + /* On-module PMIC I2C */ + pinctrl_pmic_i2c: lpi2c2grp { + fsl,pins =3D , /* PMIC_I2C_SCL= */ + ; /* PMIC_I2C_SDA */ + }; + + /* Lino I2C_2 as GPIO */ + pinctrl_i2c2_gpio: lpi2c3gpiogrp { + fsl,pins =3D , /* Lino P20 */ + ; /* Lino P22 */ + }; + + /* Lino I2C_2 */ + pinctrl_i2c2: lpi2c3grp { + fsl,pins =3D , /* Lino P20 */ + ; /* Lino P22 */ + }; + + /* Lino I2C_3 as GPIO */ + pinctrl_i2c3_gpio: lpi2c4gpiogrp { + fsl,pins =3D , /* Lino P24 */ + ; /* Lino P26 */ + }; + + /* Lino I2C_3 */ + pinctrl_i2c3: lpi2c4grp { + fsl,pins =3D , /* Lino P24 */ + ; /* Lino P26 */ + }; + + /* Lino SPI_2 */ + pinctrl_spi2: lpspi1grp { + fsl,pins =3D , /* Lino S20 */ + , /* Lino S22 */ + ; /* Lino S24 */ + }; + + /* Lino SPI_1 */ + pinctrl_spi1: lpspi8grp { + fsl,pins =3D , /* Lino P54 */ + , /* Lino P56 */ + ; /* Lino P52 */ + }; + + /* Lino UART_3 */ + pinctrl_uart3: lpuart1grp { + fsl,pins =3D , /* Lino P17 */ + ; /* Lino P19 */ + }; + + /* Lino UART_4 */ + pinctrl_uart4: lpuart2grp { + fsl,pins =3D , /* Lino P23 */ + ; /* Lino P25 */ + }; + + /* Lino UART_1 */ + pinctrl_uart1: lpuart6grp { + fsl,pins =3D , /* Lino P11 */ + , /* Lino P9 */ + , /* Lino P8 */ + ; /* Lino P6 */ + }; + + /* Lino UART_2 */ + pinctrl_uart2: lpuart7grp { + fsl,pins =3D , /* Lino P15 */ + , /* Lino P13 */ + , /* Lino S7 */ + ; /* Lino S5 */ + }; + + /* Lino I2S_1 */ + pinctrl_i2s1: sai3grp { + fsl,pins =3D , /* Lino S94 */ + , /* Lino S98 */ + , /* Lino S100 */ + ; /* Lino S96 */ + }; + + /* Lino PWM_1 */ + pinctrl_pwm1: tpm4ch1grp { + fsl,pins =3D ; /* Lino P1 */ + }; + + /* Lino PWM_2 */ + pinctrl_pwm2: tpm5ch2grp { + fsl,pins =3D ; /* Lino P3 */ + }; + + /* Lino PWM_3 */ + pinctrl_pwm3: tpm6ch1grp { + fsl,pins =3D ; /* Lino P5 */ + }; + + /* On-module eMMC */ + pinctrl_emmc: usdhc1grp { + fsl,pins =3D , /* eMMC_CLK */ + , /* eMMC_CMD */ + , /* eMMC_DATA0 */ + , /* eMMC_DATA1 */ + , /* eMMC_DATA2 */ + , /* eMMC_DATA3 */ + , /* eMMC_DATA4 */ + , /* eMMC_DATA5 */ + , /* eMMC_DATA6 */ + , /* eMMC_DATA7 */ + ; /* eMMC_STROBE */ + }; + + /* Lino SD_1_CD# */ + pinctrl_sd1_cd: usdhc2cdgrp { + fsl,pins =3D ; /* Lino P78 */ + }; + + /* Lino SD_1 */ + pinctrl_sd1: usdhc2grp { + fsl,pins =3D , /* Lino P68 */ + , /* Lino P66 */ + , /* Lino P74 */ + , /* Lino P76 */ + , /* Lino P60 */ + ; /* Lino P64 */ + }; + + /* Lino SD_1_PWR_EN */ + pinctrl_sd1_pwr_en: usdhc2pwrgrp { + fsl,pins =3D ; /* Lino P72 */ + }; + + /* On-module PMIC_SD_2_VSEL */ + pinctrl_sd1_vsel: usdhc2vselgrp { + fsl,pins =3D ; /* PMIC_SD_2_VSEL= */ + }; + + /* Lino SD_2 */ + pinctrl_sd2: usdhc3grp { + fsl,pins =3D , /* Lino S10 */ + , /* Lino S8 */ + , /* Lino S12 */ + , /* Lino S16 */ + , /* Lino S2 */ + ; /* Lino S4 */ + }; + + pinctrl_wdog: wdoggrp { + fsl,pins =3D ; /* PMIC_WDOG_B */ + }; +}; --=20 2.47.3 From nobody Thu Sep 24 12:53:19 2026 Received: from mail11.truemail.it (mail11.truemail.it [217.194.8.81]) (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 2CD904119F4; Thu, 24 Sep 2026 06:58:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.194.8.81 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233096; cv=none; b=rf5crzS9uegob18TBa8g4wR2tFc8xz5rl3tkfyzmauvjIEHkoJlhxssT79sWAHCkotZkke/t2yeVGGdA1MvHDQvaXG/2borWgD+fNw654ZrafRUfMVWgJWO/agH30ehngjbfMgjTiHjkbFt8u06wFr6oDFUhL3I2QWgn+qM7W/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233096; c=relaxed/simple; bh=m72EJK3ZGTur/kLLdcPEsqNsBsDQLy9gZ2PelzSVPBg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GH8zxUUePzaA59qfwsCXHWGWL3EqLbs7bXpAEYVPb2XMHa2bUt9TN5dF+1fU+XFy/JOi6nL+PDwtP5OTG/DLktierUsnOadTSiTgP+3muy3SpTimCA2FitmriU5YPh7ya/t+Dp5QeCp3cxtMWgs7hy8WZ+aHSh7rFgsQvp8ZC4M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it; spf=pass smtp.mailfrom=dolcini.it; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b=ejNbMnc6; arc=none smtp.client-ip=217.194.8.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=dolcini.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b="ejNbMnc6" Received: from francesco-nb.. (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) by mail11.truemail.it (Postfix) with ESMTPA id 5D73920280; Thu, 24 Sep 2026 08:57:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dolcini.it; s=default; t=1790233071; bh=RHnhMAelPxTVVbqOG/lOrbu3tUeps63O7zGUTbKNhm8=; h=From:To:Subject; b=ejNbMnc6HPTaeIbQSKMueJz8X4ruYpAhgIHYs01HpvZYXj20/9CQOicutp7upXahy Pm0CBlVxOB8+Ax25AXR3lAEHxYlWe8t+Yh0pCrrIeYrbC6S2r4bZajxuv11PkM1ibV p4LKbQMZ71cRFZcFmtnTFTNLUG60dKtz0UESJ/f3uZ2qJM640orSIjUPLiJpGumjg9 acDryoizCla308QbyeSd291pUcn908Ply2N986RFD5n2xt7a2+9u4RmwGqtn3cQhmA G3nQaSX4YZyymKeEqlpi7NFIHuBtBidFfVyceU0qFRmQxavecEj2C78pCICY4X3nN0 byBBsDxSW+1xg== From: Francesco Dolcini To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Shawn Guo Cc: Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Antoine Gouby , Ernest Van Hoecke , Franz Schnyder Subject: [PATCH v3 6/7] arm64: dts: freescale: Add Toradex OSM iMX93 Date: Thu, 24 Sep 2026 08:57:32 +0200 Message-ID: <20260924065735.17678-7-francesco@dolcini.it> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260924065735.17678-1-francesco@dolcini.it> References: <20260924065735.17678-1-francesco@dolcini.it> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Francesco Dolcini Add support for the Toradex OSM iMX93 and its development carrier board. The SoM is available in two variants, with i.MX91 or i.MX93 SoC, using the same PCB (the two chips are pin to pin compatible), to avoid duplication create a common dtsi to share commonalities. Link: https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx93 Link: https://www.toradex.com/products/carrier-board/osm-development-board Co-developed-by: Antoine Gouby Signed-off-by: Antoine Gouby Co-developed-by: Ernest Van Hoecke Signed-off-by: Ernest Van Hoecke Co-developed-by: Franz Schnyder Signed-off-by: Franz Schnyder Signed-off-by: Francesco Dolcini --- v3: rebased v2: - drop #address-cells/#size-cells from &lpi2c1, &lpi2c2 and &lpi2c3, already set in imx91_93_common.dtsi. - drop #sound-dai-cells from &sai3, already set in imx91_93_common.dtsi. --- arch/arm64/boot/dts/freescale/Makefile | 2 + .../imx93-imx91-toradex-osm-common.dtsi | 526 ++++++++++++++++++ .../imx93-imx91-toradex-osm-dev-common.dtsi | 324 +++++++++++ .../dts/freescale/imx93-toradex-osm-dev.dts | 22 + .../boot/dts/freescale/imx93-toradex-osm.dtsi | 357 ++++++++++++ 5 files changed, 1231 insertions(+) create mode 100644 arch/arm64/boot/dts/freescale/imx93-imx91-toradex-osm-c= ommon.dtsi create mode 100644 arch/arm64/boot/dts/freescale/imx93-imx91-toradex-osm-d= ev-common.dtsi create mode 100644 arch/arm64/boot/dts/freescale/imx93-toradex-osm-dev.dts create mode 100644 arch/arm64/boot/dts/freescale/imx93-toradex-osm.dtsi diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 1c4aa73443ba..5aaaf99057fa 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -919,6 +919,8 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx93-phyboard-segin-peb-ev= al-01.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-phyboard-segin-peb-wlbt-05.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-phycore-rpmsg.dtb =20 +dtb-$(CONFIG_ARCH_MXC) +=3D imx93-toradex-osm-dev.dtb + dtb-$(CONFIG_ARCH_MXC) +=3D imx93-tqma9352-mba91xxca.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-tqma9352-mba93xxca.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx93-tqma9352-mba93xxla.dtb diff --git a/arch/arm64/boot/dts/freescale/imx93-imx91-toradex-osm-common.d= tsi b/arch/arm64/boot/dts/freescale/imx93-imx91-toradex-osm-common.dtsi new file mode 100644 index 000000000000..8b0131d4e6e2 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-imx91-toradex-osm-common.dtsi @@ -0,0 +1,526 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Toradex OSM iMX93/iMX91 SoM + * + * https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx93 + * https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx91 + */ + +#include +#include + +/ { + aliases { + can0 =3D &flexcan1; + can1 =3D &flexcan2; + eeprom0 =3D &som_eeprom; + ethernet0 =3D &eqos; + ethernet1 =3D &fec; + i2c0 =3D &lpi2c2; + i2c1 =3D &lpi2c3; + i2c2 =3D &lpi2c1; + mmc0 =3D &usdhc1; + mmc1 =3D &usdhc2; + mmc2 =3D &usdhc3; + rtc0 =3D &rtc_i2c; + rtc1 =3D &bbnsm_rtc; + serial0 =3D &lpuart1; + serial1 =3D &lpuart6; + serial2 =3D &lpuart7; + serial3 =3D &lpuart2; + usb0 =3D &usbotg1; + usb1 =3D &usbotg2; + }; + + chosen { + stdout-path =3D &lpuart1; + }; + + reg_sdio_a_vmmc: regulator-sdhci2-vmmc { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sdio_a_pwr_en>; + /* OSM SDIO_A_PWR_EN (OSM D21) */ + gpios =3D <&gpio3 7 GPIO_ACTIVE_HIGH>; + enable-active-high; + off-on-delay-us =3D <100000>; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <3300000>; + regulator-name =3D "SDIO_A_PWR_EN"; + startup-delay-us =3D <20000>; + }; + + reg_sdio_a_vqmmc: regulator-sdhci2-vqmmc { + compatible =3D "regulator-gpio"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sdio_a_vsel>; + /* PMIC_SD_2_VSEL */ + gpios =3D <&gpio3 19 GPIO_ACTIVE_HIGH>; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "LDO1-VSEL-SD (PMIC)"; + states =3D <1800000 0x1>, + <3300000 0x0>; + vin-supply =3D <®_sd_3v3_1v8>; + }; + + reg_usb_b_vbus: regulator-usb2-vbus { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_usb_b_en>; + /* OSM USB_B_EN (OSM AC20) */ + gpios =3D <&gpio1 10 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-max-microvolt =3D <5000000>; + regulator-min-microvolt =3D <5000000>; + regulator-name =3D "USB_B_EN"; + startup-delay-us =3D <20000>; + }; +}; + +/* OSM ADC_0, ADC_1 */ +&adc1 { + vref-supply =3D <®_1v8>; +}; + +/* OSM ETH_A */ +&eqos { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_mdio>, <&pinctrl_eth_a>; + + mdio: mdio { + compatible =3D "snps,dwmac-mdio"; + #address-cells =3D <1>; + #size-cells =3D <0>; + + status =3D "disabled"; + }; +}; + +/* OSM ETH_B */ +&fec { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_eth_b>; +}; + +/* OSM CAN_A */ +&flexcan1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_can_a>; +}; + +/* OSM CAN_B */ +&flexcan2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_can_b>; +}; + +&gpio1 { + gpio-line-names =3D + "OSM_AA20", + "OSM_AA21", + "PMIC_I2C_SCL", + "PMIC_I2C_SDA", + "", + "", + "", + "", + "", + "", + "OSM_AC20", /* 10 */ + "OSM_AA23", + "", + "", + "", + ""; +}; + +&gpio2 { + gpio-line-names =3D + "OSM_D17", + "OSM_E17", + "OSM_F17", + "OSM_G17", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "OSM_Y15", + "", + "", + "", + "", + "", + "", + "", + "", /* 20 */ + "", + "OSM_H17", + "", + "OSM_J17", + "", + "", + "", + "OSM_AA16", + "OSM_AA15"; +}; + +&gpio3 { + gpio-line-names =3D + "OSM_J21", + "", + "", + "", + "", + "", + "", + "OSM_D21", + "", + "", + "", /* 10 */ + "", + "", + "", + "", + "", + "", + "", + "", + "PMIC_SD_2_VSEL", + "", /* 20 */ + "", + "", + "", + "", + "", + "", + "CTRL_INT#", + "", + "", + "", /* 30 */ + ""; +}; + +&gpio4 { + gpio-line-names =3D + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "", + "", + "OSM_K17", + "OSM_L17", + "", + "", + "", + "", + "", /* 20 */ + "", + "", + "", + "", + "", + "", + "", + "OSM_AC16", + "OSM_AC15"; +}; + +/* OSM I2C_B */ +&lpi2c1 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_i2c_b>; + pinctrl-1 =3D <&pinctrl_i2c_b_gpio>; + clock-frequency =3D <100000>; + scl-gpios =3D <&gpio1 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio1 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; + + status =3D "okay"; + + rtc_i2c: rtc@32 { + compatible =3D "epson,rx8130"; + reg =3D <0x32>; + }; +}; + +/* On-module I2C - PMIC_I2C */ +&lpi2c2 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_pmic_i2c>, <&pinctrl_ctrl_int>; + pinctrl-1 =3D <&pinctrl_pmic_i2c_gpio>, <&pinctrl_ctrl_int>; + clock-frequency =3D <400000>; + scl-gpios =3D <&gpio1 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; + + status =3D "okay"; + + som_gpio_expander: gpio@21 { + compatible =3D "nxp,pcal6416"; + reg =3D <0x21>; + #interrupt-cells =3D <2>; + interrupt-controller; + interrupt-parent =3D <&gpio3>; + interrupts =3D <27 IRQ_TYPE_LEVEL_LOW>; + #gpio-cells =3D <2>; + gpio-controller; + gpio-line-names =3D + "OSM_D19", /* OSM GPIO_B_0 */ + "OSM_E19", /* OSM GPIO_B_1 */ + "OSM_F19", /* OSM GPIO_B_2 */ + "OSM_G19", /* OSM GPIO_B_3 */ + "OSM_H19", /* OSM GPIO_B_4 */ + "OSM_J19", /* OSM GPIO_B_5 */ + "OSM_K19", /* OSM GPIO_B_6 */ + "OSM_L19", /* OSM GPIO_B_7 */ + "OSM_D3", /* OSM GPIO_C_0 */ + "OSM_D4", /* OSM GPIO_C_1 */ + "OSM_E3", /* OSM GPIO_C_2/CAM_B_PWR */ + "OSM_E4", /* OSM GPIO_C_3/CAM_B_RST# */ + "OSM_F3", /* OSM GPIO_C_4/DISP_VDD_EN */ + "OSM_F4", /* OSM GPIO_C_5/DISP_BL_EN */ + "OSM_G3", /* OSM GPIO_C_6/CAM_A_PWR */ + "OSM_G4"; /* OSM GPIO_C_7/CAM_A_RST# */ + }; + + tpm@2e { + compatible =3D "st,st33ktpm2xi2c", "tcg,tpm-tis-i2c"; + reg =3D <0x2e>; + }; + + pmic@32 { + compatible =3D "nxp,pf9453"; + reg =3D <0x32>; + interrupt-parent =3D <&gpio3>; + interrupts =3D <27 IRQ_TYPE_LEVEL_LOW>; + + regulators { + BUCK1 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <1100000>; + regulator-min-microvolt =3D <1100000>; + regulator-name =3D "+V1.1_DDR (PMIC BUCK1)"; + }; + + reg_vdd_soc: BUCK2 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <950000>; + regulator-min-microvolt =3D <612500>; + regulator-name =3D "+VDD_SOC (PMIC BUCK2)"; + regulator-ramp-delay =3D <12500>; + }; + + reg_1v8: BUCK3 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <1800000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "+V1.8 / +V1.8_ANA (PMIC BUCK3)"; + }; + + reg_3v3: BUCK4 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <3300000>; + regulator-name =3D "+V3.3 (PMIC BUCK4)"; + }; + + reg_sd_3v3_1v8: LDO1 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "+V3.3_1.8_SD (PMIC LDO1)"; + }; + + LDO2 { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <800000>; + regulator-min-microvolt =3D <800000>; + regulator-name =3D "+V0.8_ANA (PMIC LDO2)"; + }; + + LDO-SNVS { + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt =3D <1800000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "+V1.8_BBSM (PMIC LDO-SNVS)"; + }; + }; + }; + + temperature-sensor@48 { + compatible =3D "ti,tmp1075"; + reg =3D <0x48>; + }; + + som_eeprom: eeprom@50 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x50>; + pagesize =3D <16>; + }; +}; + +/* OSM I2C_A */ +&lpi2c3 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_i2c_a>; + pinctrl-1 =3D <&pinctrl_i2c_a_gpio>; + clock-frequency =3D <100000>; + scl-gpios =3D <&gpio2 29 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio2 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; +}; + +/* OSM SPI_B */ +&lpspi1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_spi_b>, <&pinctrl_spi_b_cs0_gpio>; + cs-gpios =3D <&gpio1 11 GPIO_ACTIVE_LOW>; +}; + +/* OSM SPI_A */ +&lpspi8 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_spi_a>, <&pinctrl_spi_a_cs0_gpio>; + cs-gpios =3D <&gpio2 12 GPIO_ACTIVE_LOW>; +}; + +/* OSM UART_CON, used as the Linux Console */ +&lpuart1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart_con>; +}; + +/* OSM UART_C */ +&lpuart2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart_c>; +}; + +/* OSM UART_A */ +&lpuart6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart_a>; + uart-has-rtscts; +}; + +/* OSM UART_B */ +&lpuart7 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart_b>; + uart-has-rtscts; +}; + +/* OSM I2S_A */ +&sai3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_i2s_a>; + assigned-clocks =3D <&clk IMX93_CLK_SAI3>; + assigned-clock-parents =3D <&clk IMX93_CLK_AUDIO_PLL>; + assigned-clock-rates =3D <12288000>; + fsl,sai-mclk-direction-output; +}; + +/* OSM PWM_0 */ +&tpm4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pwm0>; +}; + +/* OSM PWM_1 */ +&tpm5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pwm1>; +}; + +/* OSM PWM_2 */ +&tpm6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pwm2>; +}; + +/* OSM USB_A */ +&usbotg1 { + dr_mode =3D "otg"; + adp-disable; + hnp-disable; + srp-disable; + usb-role-switch; + disable-over-current; + role-switch-default-mode =3D "peripheral"; + samsung,picophy-dc-vol-level-adjust =3D <7>; + samsung,picophy-pre-emp-curr-control =3D <3>; +}; + +/* OSM USB_B */ +&usbotg2 { + disable-over-current; + dr_mode =3D "host"; + vbus-supply =3D <®_usb_b_vbus>; + samsung,picophy-dc-vol-level-adjust =3D <7>; + samsung,picophy-pre-emp-curr-control =3D <3>; +}; + +/* On-module eMMC */ +&usdhc1 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz"; + pinctrl-0 =3D <&pinctrl_emmc>; + pinctrl-1 =3D <&pinctrl_emmc>; + pinctrl-2 =3D <&pinctrl_emmc>; + no-sd; + no-sdio; + non-removable; + + status =3D "okay"; +}; + +/* OSM SDIO_A */ +&usdhc2 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz"; + pinctrl-0 =3D <&pinctrl_sdio_a>, <&pinctrl_sdio_a_cd>; + pinctrl-1 =3D <&pinctrl_sdio_a>, <&pinctrl_sdio_a_cd>; + pinctrl-2 =3D <&pinctrl_sdio_a>, <&pinctrl_sdio_a_cd>; + cd-gpios =3D <&gpio3 0 GPIO_ACTIVE_LOW>; + disable-wp; + vmmc-supply =3D <®_sdio_a_vmmc>; + vqmmc-supply =3D <®_sdio_a_vqmmc>; +}; + +/* OSM SDIO_B */ +&usdhc3 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz"; + pinctrl-0 =3D <&pinctrl_sdio_b>; + pinctrl-1 =3D <&pinctrl_sdio_b>; + pinctrl-2 =3D <&pinctrl_sdio_b>; + disable-wp; +}; + +&wdog3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_wdog>; + fsl,ext-reset-output; + + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx93-imx91-toradex-osm-dev-comm= on.dtsi b/arch/arm64/boot/dts/freescale/imx93-imx91-toradex-osm-dev-common.= dtsi new file mode 100644 index 000000000000..566671b32308 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-imx91-toradex-osm-dev-common.dtsi @@ -0,0 +1,324 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Toradex OSM iMX93/iMX91 SoM on OSM Development carrier board + * + * https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx93 + * https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx91 + * https://www.toradex.com/products/carrier-board/osm-development-board + */ + +#include +#include +#include + +/ { + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + reg_carrier_1p8v: regulator-carrier-1p8v { + compatible =3D "regulator-fixed"; + regulator-max-microvolt =3D <1800000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "On-carrier V1.8_SW"; + }; + + sound { + compatible =3D "simple-audio-card"; + simple-audio-card,bitclock-master =3D <&codec_dai>; + simple-audio-card,format =3D "i2s"; + simple-audio-card,frame-master =3D <&codec_dai>; + simple-audio-card,mclk-fs =3D <256>; + simple-audio-card,name =3D "verdin-wm8904"; + simple-audio-card,routing =3D + "Headphone Jack", "HPOUTL", + "Headphone Jack", "HPOUTR", + "IN2L", "Line In Jack", + "IN2R", "Line In Jack", + "Microphone Jack", "MICBIAS", + "IN1L", "Microphone Jack"; + simple-audio-card,widgets =3D + "Microphone", "Microphone Jack", + "Headphone", "Headphone Jack", + "Line", "Line In Jack"; + + codec_dai: simple-audio-card,codec { + sound-dai =3D <&wm8904_1a>; + }; + + simple-audio-card,cpu { + sound-dai =3D <&sai3>; + }; + }; +}; + +/* OSM ADC_0, ADC_1 */ +&adc1 { + status =3D "okay"; +}; + +/* OSM ETH_A */ +&eqos { + phy-handle =3D <ðphy_a>; + phy-mode =3D "rgmii-id"; + + status =3D "okay"; +}; + +/* OSM ETH_B */ +&fec { + phy-handle =3D <ðphy_b>; + phy-mode =3D "rgmii-id"; + + status =3D "okay"; +}; + +/* OSM CAN_A */ +&flexcan1 { + status =3D "okay"; +}; + +/* OSM CAN_B */ +&flexcan2 { + status =3D "okay"; +}; + +&gpio2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_a1>, <&pinctrl_gpio_a2>, <&pinctrl_gpio_a3>, + <&pinctrl_gpio_a4>, <&pinctrl_gpio_a5>; +}; + +&gpio4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_a6>; +}; + +/* OSM I2C_B */ +&lpi2c1 { + i2c-mux@70 { + compatible =3D "nxp,pca9548"; + reg =3D <0x70>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + i2c_csi: i2c@0 { + reg =3D <0>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + i2c_lvds: i2c@1 { + reg =3D <1>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + /* I2C on DSI connector pin #4 and #6 */ + i2c_dsi_1: i2c@2 { + reg =3D <2>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + /* I2C on DSI connector pin #52 and #54 */ + i2c_dsi_2: i2c@3 { + reg =3D <3>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + }; +}; + +/* OSM I2C_A */ +&lpi2c3 { + status =3D "okay"; + + wm8904_1a: audio-codec@1a { + compatible =3D "wlf,wm8904"; + reg =3D <0x1a>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_i2s_a_mclk>; + clocks =3D <&clk IMX93_CLK_SAI3>; + clock-names =3D "mclk"; + #sound-dai-cells =3D <0>; + AVDD-supply =3D <®_carrier_1p8v>; + CPVDD-supply =3D <®_carrier_1p8v>; + DBVDD-supply =3D <®_carrier_1p8v>; + DCVDD-supply =3D <®_carrier_1p8v>; + MICVDD-supply =3D <®_carrier_1p8v>; + }; + + gpio@20 { + compatible =3D "nxp,pcal6408"; + reg =3D <0x20>; + #gpio-cells =3D <2>; + gpio-controller; + gpio-line-names =3D + "PWR_CTRL_CAN_A", /* 0 */ + "PWR_CTRL_CAN_B", + "PWR_CTRL_USB-HUB", + "LVDS_MUX_CTRL", + "USB_MUX_CTRL", + "I2CA_IOEXP_P5", + "I2CA_IOEXP_P6", + "I2CA_IOEXP_P7"; + + lvds_mux_ctrl: lvds-mux-ctrl-hog { + gpio-hog; + gpios =3D <3 GPIO_ACTIVE_HIGH>; + line-name =3D "LVDS_MUX_CTRL"; + output-high; + }; + + usb_mux_ctrl: usb-mux-ctrl-hog { + gpio-hog; + gpios =3D <4 GPIO_ACTIVE_HIGH>; + line-name =3D "USB_MUX_CTRL"; + output-low; + }; + }; + + hwmon@40 { + compatible =3D "ti,ina219"; + reg =3D <0x40>; + shunt-resistor =3D <10000>; + }; + + temperature-sensor@4f { + compatible =3D "ti,tmp1075"; + reg =3D <0x4f>; + }; + + tcpc@52 { + compatible =3D "nxp,ptn5110", "tcpci"; + reg =3D <0x52>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_a0>; + interrupt-parent =3D <&gpio2>; + interrupts =3D <0 IRQ_TYPE_LEVEL_LOW>; + + connector { + compatible =3D "usb-c-connector"; + label =3D "USB_A"; + data-role =3D "dual"; + power-role =3D "dual"; + try-power-role =3D "sink"; + self-powered; + source-pdos =3D ; + sink-pdos =3D ; + op-sink-microwatt =3D <0>; + + port { + usb_c_a_conn_hs: endpoint { + remote-endpoint =3D <&usb_a_hs>; + }; + }; + }; + }; + + carrier_eeprom: eeprom@57 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x57>; + pagesize =3D <16>; + }; +}; + +/* OSM SPI_B */ +&lpspi1 { + status =3D "okay"; +}; + +/* OSM SPI_A */ +&lpspi8 { + status =3D "okay"; +}; + +/* OSM UART_CON, used as the Linux Console */ +&lpuart1 { + status =3D "okay"; +}; + +/* OSM UART_C */ +&lpuart2 { + status =3D "okay"; +}; + +/* OSM UART_A */ +&lpuart6 { + status =3D "okay"; +}; + +/* OSM UART_B */ +&lpuart7 { + status =3D "okay"; +}; + +/* OSM ETH_MDIO */ +&mdio { + status =3D "okay"; + + ethphy_a: ethernet-phy@2 { + reg =3D <2>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_a7>; + interrupt-parent =3D <&gpio4>; + interrupts =3D <15 IRQ_TYPE_LEVEL_LOW>; + ti,rx-internal-delay =3D ; + ti,tx-internal-delay =3D ; + }; + + ethphy_b: ethernet-phy@3 { + reg =3D <3>; + ti,rx-internal-delay =3D ; + ti,tx-internal-delay =3D ; + }; +}; + +/* OSM I2S_A */ +&sai3 { + status =3D "okay"; +}; + +/* OSM PWM_0 */ +&tpm4 { + status =3D "okay"; +}; + +/* OSM PWM_1 */ +&tpm5 { + status =3D "okay"; +}; + +/* OSM PWM_2 */ +&tpm6 { + status =3D "okay"; +}; + +/* OSM USB_A */ +&usbotg1 { + status =3D "okay"; + + port { + usb_a_hs: endpoint { + remote-endpoint =3D <&usb_c_a_conn_hs>; + }; + }; +}; + +/* OSM USB_B */ +&usbotg2 { + status =3D "okay"; +}; + +/* OSM SDIO_A */ +&usdhc2 { + status =3D "okay"; +}; + +/* OSM SDIO_B */ +&usdhc3 { + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx93-toradex-osm-dev.dts b/arch= /arm64/boot/dts/freescale/imx93-toradex-osm-dev.dts new file mode 100644 index 000000000000..a6cc2ae35d04 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-toradex-osm-dev.dts @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Toradex OSM iMX93 SoM on OSM Development carrier board + * + * https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx93 + * https://www.toradex.com/products/carrier-board/osm-development-board + */ + +/dts-v1/; + +#include "imx93.dtsi" +#include "imx93-toradex-osm.dtsi" +#include "imx93-imx91-toradex-osm-dev-common.dtsi" + +/ { + model =3D "Toradex OSM iMX93 on OSM Development Board"; + compatible =3D "toradex,osm-imx93-dev", + "toradex,osm-imx93", + "fsl,imx93"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx93-toradex-osm.dtsi b/arch/ar= m64/boot/dts/freescale/imx93-toradex-osm.dtsi new file mode 100644 index 000000000000..ea5e6055e3f5 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx93-toradex-osm.dtsi @@ -0,0 +1,357 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Toradex OSM iMX93 SoM + * + * https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx93 + */ + +#include "imx93-pinfunc.h" +#include "imx93-imx91-toradex-osm-common.dtsi" + +/ { + reserved-memory { + #address-cells =3D <2>; + #size-cells =3D <2>; + ranges; + + rsc_table: rsc-table@2021e000 { + reg =3D <0 0x2021e000 0 0x1000>; + no-map; + }; + + vdev0vring0: vdev0vring0@a4000000 { + reg =3D <0 0xa4000000 0 0x8000>; + no-map; + }; + + vdev0vring1: vdev0vring1@a4008000 { + reg =3D <0 0xa4008000 0 0x8000>; + no-map; + }; + + vdev1vring0: vdev1vring0@a4010000 { + reg =3D <0 0xa4010000 0 0x8000>; + no-map; + }; + + vdev1vring1: vdev1vring1@a4018000 { + reg =3D <0 0xa4018000 0 0x8000>; + no-map; + }; + + vdev0buffer: vdev0buffer@a4020000 { + compatible =3D "shared-dma-pool"; + reg =3D <0 0xa4020000 0 0x100000>; + no-map; + }; + }; +}; + +&cm33 { + mbox-names =3D "tx", "rx", "rxdb"; + mboxes =3D <&mu1 0 1>, + <&mu1 1 1>, + <&mu1 3 1>; + memory-region =3D <&vdev0buffer>, <&vdev0vring0>, <&vdev0vring1>, + <&vdev1vring0>, <&vdev1vring1>, <&rsc_table>; + + status =3D "okay"; +}; + +&mu1 { + status =3D "okay"; +}; + +&iomuxc { + /* OSM CAN_A */ + pinctrl_can_a: can1grp { + fsl,pins =3D , /* OSM AB17 */ + ; /* OSM AC17 */ + }; + + /* OSM CAN_B */ + pinctrl_can_b: can2grp { + fsl,pins =3D , /* OSM AC19 */ + ; /* OSM AB19 */ + }; + + /* OSM CAM_MCK */ + pinctrl_cam_mck: ccmclk1grp { + fsl,pins =3D ; /* OSM C2 */ + }; + + /* OSM ETH_A RGMII */ + pinctrl_eth_a: eqosgrp { + fsl,pins =3D , /* OSM K1= 5 */ + , /* OSM L15 */ + , /* OSM N15 */ + , /* OSM P15 */ + , /* O= SM R15 */ + , /* OSM M15 */ + , /* OSM H15 */ + , /* OSM G15 */ + , /* OSM H16 */ + , /* OSM G16 */ + , /* O= SM J15 */ + ; /* OSM K16 */ + }; + + /* OSM ETH_MDIO */ + pinctrl_mdio: eqosmdiogrp { + fsl,pins =3D , /* OSM T16 */ + ; /* OSM T15 */ + }; + + /* OSM ETH_B RGMII */ + pinctrl_eth_b: fecgrp { + fsl,pins =3D , /* OSM J1 */ + , /* OSM K1 */ + , /* OSM M1 */ + , /* OSM N1 */ + , /* OSM P1 */ + , /* OSM L1 */ + , /* OSM G1 */ + , /* OSM F1 */ + , /* OSM G2 */ + , /* OSM F2 */ + , /* OSM H1 */ + ; /* OSM J2 */ + }; + + /* OSM SPI_B_CS as GPIO */ + pinctrl_spi_b_cs0_gpio: gpio1io11grp { + fsl,pins =3D ; /* OSM AA23 */ + }; + + /* OSM GPIO_A_0 */ + pinctrl_gpio_a0: gpio2io0grp { + fsl,pins =3D ; /* OSM D17 */ + }; + + /* OSM GPIO_A_1 */ + pinctrl_gpio_a1: gpio2io1grp { + fsl,pins =3D ; /* OSM E17 */ + }; + + /* OSM GPIO_A_2 */ + pinctrl_gpio_a2: gpio2io2grp { + fsl,pins =3D ; /* OSM F17 */ + }; + + /* OSM GPIO_A_3 */ + pinctrl_gpio_a3: gpio2io3grp { + fsl,pins =3D ; /* OSM G17 */ + }; + + /* OSM SPI_A_CS0 as GPIO */ + pinctrl_spi_a_cs0_gpio: gpio2io12grp { + fsl,pins =3D ; /* OSM Y15 */ + }; + + /* OSM PWM_0 as GPIO */ + pinctrl_pwm0_gpio: gpio2io21grp { + fsl,pins =3D ; /* OSM E18 */ + }; + + /* OSM GPIO_A_4 */ + pinctrl_gpio_a4: gpio2io22grp { + fsl,pins =3D ; /* OSM H17 */ + }; + + /* OSM GPIO_A_5 */ + pinctrl_gpio_a5: gpio2io24grp { + fsl,pins =3D ; /* OSM J17 */ + }; + + /* On-module CTRL_INT# */ + pinctrl_ctrl_int: gpio3io27grp { + fsl,pins =3D ; /* CTRL_INT# */ + }; + + /* OSM GPIO_A_6 */ + pinctrl_gpio_a6: gpio4io14grp { + fsl,pins =3D ; /* OSM K17 */ + }; + + /* OSM GPIO_A_7 */ + pinctrl_gpio_a7: gpio4io15grp { + fsl,pins =3D ; /* OSM L17 */ + }; + + /* OSM I2C_B as GPIO */ + pinctrl_i2c_b_gpio: lpi2c1gpiogrp { + fsl,pins =3D , /* OSM AA20 */ + ; /* OSM AA21 */ + }; + + /* OSM I2C_B */ + pinctrl_i2c_b: lpi2c1grp { + fsl,pins =3D , /* OSM AA20 */ + ; /* OSM AA21 */ + }; + + /* On-module PMIC I2C as GPIO */ + pinctrl_pmic_i2c_gpio: lpi2c2gpiogrp { + fsl,pins =3D , /* PMIC_I2C_SCL= */ + ; /* PMIC_I2C_SDA */ + }; + + /* On-module PMIC I2C */ + pinctrl_pmic_i2c: lpi2c2grp { + fsl,pins =3D , /* PMIC_I2C_SCL= */ + ; /* PMIC_I2C_SDA */ + }; + + /* OSM I2C_A as GPIO */ + pinctrl_i2c_a_gpio: lpi2c3gpiogrp { + fsl,pins =3D , /* OSM AA16 */ + ; /* OSM AA15 */ + }; + + /* OSM I2C_A */ + pinctrl_i2c_a: lpi2c3grp { + fsl,pins =3D , /* OSM AA16 */ + ; /* OSM AA15 */ + }; + + /* OSM SPI_B */ + pinctrl_spi_b: lpspi1grp { + fsl,pins =3D , /* OSM Y22 */ + , /* OSM Y21 */ + ; /* OSM Y23 */ + }; + + /* OSM SPI_A */ + pinctrl_spi_a: lpspi8grp { + fsl,pins =3D , /* OSM U15 */ + , /* OSM V15 */ + ; /* OSM U16 */ + }; + + /* OSM UART_CON */ + pinctrl_uart_con: lpuart1grp { + fsl,pins =3D , /* OSM D22 */ + ; /* OSM D23 */ + }; + + /* OSM UART_C */ + pinctrl_uart_c: lpuart2grp { + fsl,pins =3D , /* OSM A22 */ + ; /* OSM B23 */ + }; + + /* OSM UART_A */ + pinctrl_uart_a: lpuart6grp { + fsl,pins =3D , /* OSM B13 */ + , /* OSM A14 */ + , /* OSM C14 */ + ; /* OSM C13 */ + }; + + /* OSM UART_B */ + pinctrl_uart_b: lpuart7grp { + fsl,pins =3D , /* OSM D13 */ + , /* OSM D14 */ + , /* OSM D16 */ + ; /* OSM D15 */ + }; + + /* OSM I2S_A */ + pinctrl_i2s_a: sai3grp { + fsl,pins =3D , /* OSM W20 */ + , /* OSM W21 */ + , /* OSM V21 */ + ; /* OSM W18 */ + }; + + /* OSM I2S_MCLK */ + pinctrl_i2s_a_mclk: sai3mclkgrp { + fsl,pins =3D ; /* OSM V18 */ + }; + + /* OSM PWM_0 */ + pinctrl_pwm0: tpm4ch1grp { + fsl,pins =3D ; /* OSM E18 */ + }; + + /* OSM PWM_1 */ + pinctrl_pwm1: tpm5ch2grp { + fsl,pins =3D ; /* OSM F18 */ + }; + + /* OSM PWM_2 */ + pinctrl_pwm2: tpm6ch1grp { + fsl,pins =3D ; /* OSM G18 */ + }; + + /* OSM USB_A_EN */ + pinctrl_usb_a_en: usb1engrp { + fsl,pins =3D ; /* OSM AC16 */ + }; + + /* OSM USB_A_OC# */ + pinctrl_usb_a_oc: usb1ocgrp { + fsl,pins =3D ; /* OSM AC15 */ + }; + + /* OSM USB_B_EN */ + pinctrl_usb_b_en: usb2engrp { + fsl,pins =3D ; /* OSM AC20 = */ + }; + + /* On-module eMMC */ + pinctrl_emmc: usdhc1grp { + fsl,pins =3D , /* eMMC_CLK */ + , /* eMMC_CMD */ + , /* eMMC_DATA0 */ + , /* eMMC_DATA1 */ + , /* eMMC_DATA2 */ + , /* eMMC_DATA3 */ + , /* eMMC_DATA4 */ + , /* eMMC_DATA5 */ + , /* eMMC_DATA6 */ + , /* eMMC_DATA7 */ + ; /* eMMC_STROBE */ + }; + + /* OSM SDIO_A_CD# */ + pinctrl_sdio_a_cd: usdhc2cdgrp { + fsl,pins =3D ; /* OSM J21 */ + }; + + /* OSM SDIO_A */ + pinctrl_sdio_a: usdhc2grp { + fsl,pins =3D , /* OSM F21 */ + , /* OSM E20 */ + , /* OSM G20 */ + , /* OSM G21 */ + , /* OSM H20 */ + ; /* OSM H21 */ + }; + + /* OSM SDIO_A_PWR_EN */ + pinctrl_sdio_a_pwr_en: usdhc2pwrgrp { + fsl,pins =3D ; /* OSM D21 */ + }; + + /* On-module PMIC_SD_2_VSEL */ + pinctrl_sdio_a_vsel: usdhc2vselgrp { + fsl,pins =3D ; /* PMIC_SD_2_VSEL= */ + }; + + /* OSM SDIO_B */ + pinctrl_sdio_b: usdhc3grp { + fsl,pins =3D , /* OSM K20 */ + , /* OSM K21 */ + , /* OSM L20 */ + , /* OSM L21 */ + , /* OSM M21 */ + ; /* OSM N20 */ + }; + + pinctrl_wdog: wdoggrp { + fsl,pins =3D ; /* PMIC_WDOG_B */ + }; +}; --=20 2.47.3 From nobody Thu Sep 24 12:53:19 2026 Received: from mail11.truemail.it (mail11.truemail.it [217.194.8.81]) (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 5858B423EA4; Thu, 24 Sep 2026 06:58:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.194.8.81 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233099; cv=none; b=toa2VJGFmRvmsecmjYDjAknzEZHPfkVZFdKhQaTixugpzUvbWPXGtNQOq9fjcMXb9wAY+5yzeqho34nO7VLEPRJYuukHfxUfkTrh9IlydTL2R2ZvQ/P3KPuwQn85hO3laAGc/eWUqJhrhoOC7F0xymNTRtWyLBMdSHIiU+2thag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790233099; c=relaxed/simple; bh=oL/L9RQ9NNaSVfIAkHk03CrrdIk8mrHwf7w4VPSerl8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IwpKsfaKOberEszjsfUhya0LM/cg2PWbP1yLy2ZY9U+G+/kGEs+8zPwCvjy0QV11AzG0bYroMFRWKB2KeveMGuvF79J4BuPehRNP/7fk3u3ABrTKQTHSue8CQARsRVQPHCM4ZSaiacudQFSz1156dcZqWuN9seCSSspyBb7DaHU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it; spf=pass smtp.mailfrom=dolcini.it; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b=0vH+iTrv; arc=none smtp.client-ip=217.194.8.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=dolcini.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=dolcini.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dolcini.it header.i=@dolcini.it header.b="0vH+iTrv" Received: from francesco-nb.. (93-49-2-63.ip317.fastwebnet.it [93.49.2.63]) by mail11.truemail.it (Postfix) with ESMTPA id 4CFC320291; Thu, 24 Sep 2026 08:57:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dolcini.it; s=default; t=1790233071; bh=P7/7nwW6FHC6WQ+x5LgkQ6Da7CTexOSJ8a5lXuSBKb8=; h=From:To:Subject; b=0vH+iTrv89Vqe0CuVHRwB+8UaxshewNyKEaGdjHawMJOsPe1ijQrzw+sQW87CNcdn SiJmLsKWzkHUYRD08Qxzh0bSXqIHS1ae7DNQr7CC6LTiocCG+9riipsfj2jb8vKnq0 +A/hxHFNVo7FqwFPlsekHf9uL78xpVYjUm4z8pvrmCyBlH5vppuj2ox8oCZPTerfLt gYZg9gFiEd+f7dc7vP6YPIGvMQrDhiYt5MN8+krShHVDHnJ7BE9lDXYfmfJnsla+ht JpUK/LRelbjAKxsd5Pi5LQn2erLOLIApy+0+FO1QVBQv7If9pLTiFcmLtwcS0K4JkI Cj+p/xj6Fbhfw== From: Francesco Dolcini To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Shawn Guo Cc: Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 7/7] arm64: dts: freescale: Add Toradex OSM iMX91 Date: Thu, 24 Sep 2026 08:57:33 +0200 Message-ID: <20260924065735.17678-8-francesco@dolcini.it> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260924065735.17678-1-francesco@dolcini.it> References: <20260924065735.17678-1-francesco@dolcini.it> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Francesco Dolcini Add support for the OSM iMX91 SoM and the development carrier board that can be mated with. Link: https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx91 Link: https://www.toradex.com/products/carrier-board/osm-development-board Signed-off-by: Francesco Dolcini --- v3: rebased --- arch/arm64/boot/dts/freescale/Makefile | 2 + .../dts/freescale/imx91-toradex-osm-dev.dts | 22 ++ .../boot/dts/freescale/imx91-toradex-osm.dtsi | 303 ++++++++++++++++++ 3 files changed, 327 insertions(+) create mode 100644 arch/arm64/boot/dts/freescale/imx91-toradex-osm-dev.dts create mode 100644 arch/arm64/boot/dts/freescale/imx91-toradex-osm.dtsi diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 5aaaf99057fa..a09672b49709 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -860,6 +860,8 @@ imx91-phyboard-segin-peb-av-18-dtbs +=3D imx91-phyboard= -segin.dtb imx91-phyboard-s dtb-$(CONFIG_ARCH_MXC) +=3D imx91-9x9-qsb-can1.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx91-phyboard-segin-peb-av-18.dtb =20 +dtb-$(CONFIG_ARCH_MXC) +=3D imx91-toradex-osm-dev.dtb + dtb-$(CONFIG_ARCH_MXC) +=3D imx91-tqma9131-mba91xxca.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx91-tqma9131-mba93xxca.dtb =20 diff --git a/arch/arm64/boot/dts/freescale/imx91-toradex-osm-dev.dts b/arch= /arm64/boot/dts/freescale/imx91-toradex-osm-dev.dts new file mode 100644 index 000000000000..ec5e701fb275 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx91-toradex-osm-dev.dts @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Toradex OSM iMX91 SoM on OSM Development carrier board + * + * https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx91 + * https://www.toradex.com/products/carrier-board/osm-development-board + */ + +/dts-v1/; + +#include "imx91.dtsi" +#include "imx91-toradex-osm.dtsi" +#include "imx93-imx91-toradex-osm-dev-common.dtsi" + +/ { + model =3D "Toradex OSM iMX91 on OSM Development Board"; + compatible =3D "toradex,osm-imx91-dev", + "toradex,osm-imx91", + "fsl,imx91"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx91-toradex-osm.dtsi b/arch/ar= m64/boot/dts/freescale/imx91-toradex-osm.dtsi new file mode 100644 index 000000000000..9d990937fd8d --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx91-toradex-osm.dtsi @@ -0,0 +1,303 @@ +// SPDX-License-Identifier: GPL-2.0-only OR MIT +/* + * Copyright (c) Toradex + * + * Toradex OSM iMX91 SoM + * + * https://www.toradex.com/computer-on-modules/osm-arm-family/nxp-imx91 + */ + +#include "imx91-pinfunc.h" +#include "imx93-imx91-toradex-osm-common.dtsi" + +&iomuxc { + /* OSM CAN_A */ + pinctrl_can_a: can1grp { + fsl,pins =3D , /* OSM AB17 */ + ; /* OSM AC17 */ + }; + + /* OSM CAN_B */ + pinctrl_can_b: can2grp { + fsl,pins =3D , /* OSM AC19 */ + ; /* OSM AB19 */ + }; + + /* OSM CAM_MCK */ + pinctrl_cam_mck: ccmclk1grp { + fsl,pins =3D ; /* OSM C2 */ + }; + + /* OSM ETH_A RGMII */ + pinctrl_eth_a: eqosgrp { + fsl,pins =3D , /* OSM K1= 5 */ + , /* OSM L15 */ + , /* OSM N15 */ + , /* OSM P15 */ + , /* OSM R15 */ + , /* OSM M15 */ + , /* OSM H15 */ + , /* OSM G15 */ + , /* OSM H16 */ + , /* OSM G16 */ + , /* O= SM J15 */ + ; /* OSM K16 */ + }; + + /* OSM ETH_MDIO */ + pinctrl_mdio: eqosmdiogrp { + fsl,pins =3D , /* OSM T16 */ + ; /* OSM T15 */ + }; + + /* OSM ETH_B RGMII */ + pinctrl_eth_b: fecgrp { + fsl,pins =3D , /* OSM J1 */ + , /* OSM K1 */ + , /* OSM M1 */ + , /* OSM N1 */ + , /* OSM P1 */ + , /* OSM L1 */ + , /* OSM G1 */ + , /* OSM F1 */ + , /* OSM G2 */ + , /* OSM F2 */ + , /* OSM H1 */ + ; /* OSM J2 */ + }; + + /* OSM SPI_B_CS as GPIO */ + pinctrl_spi_b_cs0_gpio: gpio1io11grp { + fsl,pins =3D ; /* OSM AA23 */ + }; + + /* OSM GPIO_A_0 */ + pinctrl_gpio_a0: gpio2io0grp { + fsl,pins =3D ; /* OSM D17 */ + }; + + /* OSM GPIO_A_1 */ + pinctrl_gpio_a1: gpio2io1grp { + fsl,pins =3D ; /* OSM E17 */ + }; + + /* OSM GPIO_A_2 */ + pinctrl_gpio_a2: gpio2io2grp { + fsl,pins =3D ; /* OSM F17 */ + }; + + /* OSM GPIO_A_3 */ + pinctrl_gpio_a3: gpio2io3grp { + fsl,pins =3D ; /* OSM G17 */ + }; + + /* OSM SPI_A_CS0 as GPIO */ + pinctrl_spi_a_cs0_gpio: gpio2io12grp { + fsl,pins =3D ; /* OSM Y15 */ + }; + + /* OSM PWM_0 as GPIO */ + pinctrl_pwm0_gpio: gpio2io21grp { + fsl,pins =3D ; /* OSM E18 */ + }; + + /* OSM GPIO_A_4 */ + pinctrl_gpio_a4: gpio2io22grp { + fsl,pins =3D ; /* OSM H17 */ + }; + + /* OSM GPIO_A_5 */ + pinctrl_gpio_a5: gpio2io24grp { + fsl,pins =3D ; /* OSM J17 */ + }; + + /* On-module CTRL_INT# */ + pinctrl_ctrl_int: gpio3io27grp { + fsl,pins =3D ; /* CTRL_INT# */ + }; + + /* OSM GPIO_A_6 */ + pinctrl_gpio_a6: gpio4io14grp { + fsl,pins =3D ; /* OSM K17 */ + }; + + /* OSM GPIO_A_7 */ + pinctrl_gpio_a7: gpio4io15grp { + fsl,pins =3D ; /* OSM L17 */ + }; + + /* OSM I2C_B as GPIO */ + pinctrl_i2c_b_gpio: lpi2c1gpiogrp { + fsl,pins =3D , /* OSM AA20 */ + ; /* OSM AA21 */ + }; + + /* OSM I2C_B */ + pinctrl_i2c_b: lpi2c1grp { + fsl,pins =3D , /* OSM AA20 */ + ; /* OSM AA21 */ + }; + + /* On-module PMIC I2C as GPIO */ + pinctrl_pmic_i2c_gpio: lpi2c2gpiogrp { + fsl,pins =3D , /* PMIC_I2C_SCL = */ + ; /* PMIC_I2C_SDA */ + }; + + /* On-module PMIC I2C */ + pinctrl_pmic_i2c: lpi2c2grp { + fsl,pins =3D , /* PMIC_I2C_SCL= */ + ; /* PMIC_I2C_SDA */ + }; + + /* OSM I2C_A as GPIO */ + pinctrl_i2c_a_gpio: lpi2c3gpiogrp { + fsl,pins =3D , /* OSM AA16 */ + ; /* OSM AA15 */ + }; + + /* OSM I2C_A */ + pinctrl_i2c_a: lpi2c3grp { + fsl,pins =3D , /* OSM AA16 */ + ; /* OSM AA15 */ + }; + + /* OSM SPI_B */ + pinctrl_spi_b: lpspi1grp { + fsl,pins =3D , /* OSM Y22 */ + , /* OSM Y21 */ + ; /* OSM Y23 */ + }; + + /* OSM SPI_A */ + pinctrl_spi_a: lpspi8grp { + fsl,pins =3D , /* OSM U15 */ + , /* OSM V15 */ + ; /* OSM U16 */ + }; + + /* OSM UART_CON */ + pinctrl_uart_con: lpuart1grp { + fsl,pins =3D , /* OSM D22 */ + ; /* OSM D23 */ + }; + + /* OSM UART_C */ + pinctrl_uart_c: lpuart2grp { + fsl,pins =3D , /* OSM A22 */ + ; /* OSM B23 */ + }; + + /* OSM UART_A */ + pinctrl_uart_a: lpuart6grp { + fsl,pins =3D , /* OSM B13 */ + , /* OSM A14 */ + , /* OSM C14 */ + ; /* OSM C13 */ + }; + + /* OSM UART_B */ + pinctrl_uart_b: lpuart7grp { + fsl,pins =3D , /* OSM D13 */ + , /* OSM D14 */ + , /* OSM D16 */ + ; /* OSM D15 */ + }; + + /* OSM I2S_A */ + pinctrl_i2s_a: sai3grp { + fsl,pins =3D , /* OSM W20 */ + , /* OSM W21 */ + , /* OSM V21 */ + ; /* OSM W18 */ + }; + + /* OSM I2S_MCLK */ + pinctrl_i2s_a_mclk: sai3mclkgrp { + fsl,pins =3D ; /* OSM V18 */ + }; + + /* OSM PWM_0 */ + pinctrl_pwm0: tpm4ch1grp { + fsl,pins =3D ; /* OSM E18 */ + }; + + /* OSM PWM_1 */ + pinctrl_pwm1: tpm5ch2grp { + fsl,pins =3D ; /* OSM F18 */ + }; + + /* OSM PWM_2 */ + pinctrl_pwm2: tpm6ch1grp { + fsl,pins =3D ; /* OSM G18 */ + }; + + /* OSM USB_A_EN */ + pinctrl_usb_a_en: usb1engrp { + fsl,pins =3D ; /* OSM AC16 */ + }; + + /* OSM USB_A_OC# */ + pinctrl_usb_a_oc: usb1ocgrp { + fsl,pins =3D ; /* OSM AC15 */ + }; + + /* OSM USB_B_EN */ + pinctrl_usb_b_en: usb2engrp { + fsl,pins =3D ; /* OSM AC20 = */ + }; + + /* On-module eMMC */ + pinctrl_emmc: usdhc1grp { + fsl,pins =3D , /* eMMC_CLK */ + , /* eMMC_CMD */ + , /* eMMC_DATA0 */ + , /* eMMC_DATA1 */ + , /* eMMC_DATA2 */ + , /* eMMC_DATA3 */ + , /* eMMC_DATA4 */ + , /* eMMC_DATA5 */ + , /* eMMC_DATA6 */ + , /* eMMC_DATA7 */ + ; /* eMMC_STROBE */ + }; + + /* OSM SDIO_A_CD# */ + pinctrl_sdio_a_cd: usdhc2cdgrp { + fsl,pins =3D ; /* OSM J21 */ + }; + + /* OSM SDIO_A */ + pinctrl_sdio_a: usdhc2grp { + fsl,pins =3D , /* OSM F21 */ + , /* OSM E20 */ + , /* OSM G20 */ + , /* OSM G21 */ + , /* OSM H20 */ + ; /* OSM H21 */ + }; + + /* OSM SDIO_A_PWR_EN */ + pinctrl_sdio_a_pwr_en: usdhc2pwrgrp { + fsl,pins =3D ; /* OSM D21 */ + }; + + /* On-module PMIC_SD_2_VSEL */ + pinctrl_sdio_a_vsel: usdhc2vselgrp { + fsl,pins =3D ; /* PMIC_SD_2_VSEL= */ + }; + + /* OSM SDIO_B */ + pinctrl_sdio_b: usdhc3grp { + fsl,pins =3D , /* OSM K20 */ + , /* OSM K21 */ + , /* OSM L20 */ + , /* OSM L21 */ + , /* OSM M21 */ + ; /* OSM N20 */ + }; + + pinctrl_wdog: wdoggrp { + fsl,pins =3D ; /* PMIC_WDOG_B */ + }; +}; --=20 2.47.3