From nobody Fri Apr 3 01:26:31 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (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 180BA3E6DFD for ; Wed, 25 Mar 2026 14:46:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774449996; cv=none; b=b/MqFpJuaOA3sKidrSLcPclj+92/KW4bvCdphItX+Tj0fQ7xKIgV6MSqN8TuwvetlrEwCfx1JROmstYf7YHwDGXvHkomU2j7jJ6g9L1KZ2Axjp2rzATFAQfKWwIgp/I5BOp6fBgIy6UBLZYVS6lA3+Ny565mGh1ykqPJ5YIonDc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774449996; c=relaxed/simple; bh=V8d2l5KSrI/IBbjUOMQ1WmyhZ85uFel/9Iqrn9rmxU4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=H0BDuXRTxIVjYw1u0zfIpnrG7Wbalkr3uUA0rdnsmw538GsmJL41Hr3llWvbU/WX3GVJ+RBEwROnZbB7f8NSpDHcVpOh/KiCdsY/2w52OdbosH02aUC1oan7wyqLBVnlFT/m5W6t+k+K2oP6O97A/lgg918+rGmk46STpSBb6ns= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VkLwFqze; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VkLwFqze" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-439b97a8a8cso5463048f8f.1 for ; Wed, 25 Mar 2026 07:46:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774449992; x=1775054792; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=BQww7rYHgSiW8MzkVP4frc74sj8xqXnVytlTkph1S4Y=; b=VkLwFqzes5cI2VgToRwlWzTEX8Sq0CWGDVNpQzAH7dc6nl2lqDDfGmbsdL2SB3xM5G Q08pYyi+28OVuTZ/JP4D+r0Bkep762rfygYUWBXFux/Kgy62l0aLMdddKcQWWbPxold6 TFb14wAnt8uQAapM5RIYeCIw88efxpEYqSrzc5qU/Gn+GtJgSvO3oEpTonp66d9Qn+If v7vT2T8tW55m2c3zM4TZUwmUOAqiK1K5yZTTJJPmacJzp0vqmArMddFLQiFP0cqcQ0G+ 9nV0PVqYs5ZqcfCiLxKmnUJ6gst/5OS1uI8shfQJCviz3PUfDZ6qkgcxL5ErXngozkaY Nhcg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774449992; x=1775054792; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=BQww7rYHgSiW8MzkVP4frc74sj8xqXnVytlTkph1S4Y=; b=YEoW6XQK4aL58qu8WOucRImcKyQcUwRbuj+MdrGhqjznFN0IW0Ai8rR77JcZmIe9wc kjiWKJ5oQ0/pnaJG3XOkRvdICH+EveimE2/s7gDi4hpI6vsPjELf4GOs/Ucin0UQ/6zf dOvD+p92JgNJ4y9z2nSh9GM06UJsDnz6M51RgO3miMkIMEIb3Z7XgH3xssYJfVcChp8i M3DI03vePjoo0V6o9UTmS3H8Y39W9PZevxfzDtzBJqAlCtj0PIFnsFmqiPMWVj3MC8dH csxxr3eZpuZ8Gtnjxb4LO/TV2VJiS0LarYpx6dxEKakC7bVPn25gHVJ0hNvdOPm4zloS Jxlw== X-Forwarded-Encrypted: i=1; AJvYcCX3Nu/nFAMDlAPKeQEylRp8DHeJsKD7Jqrzoq9yn3XoVVQWcg+DdIBxXEilMuZvq/8EtcskySxevvCqjVk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz2K3bjpVQSxYkyBSD7iziw4NZLLY9B9RKV35CAdqQtjTctSg1h 6IxUh9+mHCddQ5LZ1rJ3iT79Uj+J98wZEAb5Q/7Ge3y0mrDLDh4j8UyS X-Gm-Gg: ATEYQzx+rjhLdVsMhimOL9GJ5Jq+4dW7qxfE/iW09n2cIPKMD/mqId2o22qxIpDs/rS DuFDP8acWdNngDacE5o9jrCRfX/yq0rA0VhxiUhZZqjeyEvHHWZqAbKgpChYDrYHdGLgwU6kVjk watkN2FB27rTZpwdChOaZJXZ5aqx2o9byjEFClnThU2kGbPzQ4QoFU/Uo+DREJi7N2SjW1M+8yF y2spKWVEDe+FfbrQRzF8OqQN8fUr6SzK8uRIdZH9xlQJUM146vcAk3Imy2l+3qDOz5+mecP6MEO TKy2NPDrUomP/nwTkhq0mKmTAYKBZYZVJFVwX9S/LAEGKO08qrfcBWn7ObY6Ef6oXdDxpjx009P +2Onora5kos4f1wIG5SUvxXqm2Jaf5744saTdIpduQy4XHFLRMkSx95rdMATnPxzKxR6FBq8LYq yoe9crlS2eh8wFPwD9DHi0IxCr079Zb/Gy1fuQsarXYBevwYsDpECcySqSB+Rr7loKvP1Uhi1Gg yddIQ1CknagjGoX1H9pOpjmiks= X-Received: by 2002:a05:6000:2502:b0:439:b744:c5fe with SMTP id ffacd0b85a97d-43b88a39af3mr5165742f8f.52.1774449992180; Wed, 25 Mar 2026 07:46:32 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b9192e305sm304592f8f.8.2026.03.25.07.46.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 07:46:31 -0700 (PDT) From: Ernest Van Hoecke Date: Wed, 25 Mar 2026 15:46:02 +0100 Subject: [PATCH v3 1/6] dt-bindings: arm: fsl: add Verdin iMX95 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-verdin-imx95-upstream-frank-li-base-v3-1-b2b5221a8077@toradex.com> References: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> In-Reply-To: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: Ernest Van Hoecke , Emanuele Ghidoli , Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Krzysztof Kozlowski X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Add DT compatible strings for the Verdin i.MX95 SoM and its supported carrier boards: the Verdin Development Board, and the Dahlia, Ivy, Mallow and Yavia carrier boards. Link: https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx= 95 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 Link: https://www.toradex.com/products/carrier-board/ivy-carrier-board Link: https://www.toradex.com/products/carrier-board/mallow-carrier-board Link: https://www.toradex.com/products/carrier-board/yavia Reviewed-by: Krzysztof Kozlowski Signed-off-by: Ernest Van Hoecke --- v3: no changes v2: Added Krzysztof's reviewed-by v1: https://lore.kernel.org/all/20260305-verdin-imx95-upstream-frank-li-bas= e-v1-1-823fad02def9@toradex.com/ --- Documentation/devicetree/bindings/arm/fsl.yaml | 24 ++++++++++++++++++++++= ++ 1 file changed, 24 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation= /devicetree/bindings/arm/fsl.yaml index 5716d701292c..f0701143b237 100644 --- a/Documentation/devicetree/bindings/arm/fsl.yaml +++ b/Documentation/devicetree/bindings/arm/fsl.yaml @@ -1477,6 +1477,30 @@ properties: - const: toradex,smarc-imx95 # Toradex SMARC iMX95 Module - const: fsl,imx95 =20 + - description: Toradex Boards with Verdin iMX95 Modules + items: + - enum: + - toradex,verdin-imx95-nonwifi-dahlia # Verdin iMX95 Module = on Dahlia + - toradex,verdin-imx95-nonwifi-dev # Verdin iMX95 Module = on Verdin Development Board + - toradex,verdin-imx95-nonwifi-ivy # Verdin iMX95 Module = on Ivy + - toradex,verdin-imx95-nonwifi-mallow # Verdin iMX95 Module = on Mallow + - toradex,verdin-imx95-nonwifi-yavia # Verdin iMX95 Module = on Yavia + - const: toradex,verdin-imx95-nonwifi # Verdin iMX95 Module = without Wi-Fi / BT + - const: toradex,verdin-imx95 # Verdin iMX95 Module + - const: fsl,imx95 + + - description: Toradex Boards with Verdin iMX95 Wi-Fi / BT Modules + items: + - enum: + - toradex,verdin-imx95-wifi-dahlia # Verdin iMX95 Wi-Fi / B= T Module on Dahlia + - toradex,verdin-imx95-wifi-dev # Verdin iMX95 Wi-Fi / B= T Module on Verdin Development B. + - toradex,verdin-imx95-wifi-ivy # Verdin iMX95 Wi-Fi / B= T Module on Ivy + - toradex,verdin-imx95-wifi-mallow # Verdin iMX95 Wi-Fi / B= T Module on Mallow + - toradex,verdin-imx95-wifi-yavia # Verdin iMX95 Wi-Fi / B= T Module on Yavia + - const: toradex,verdin-imx95-wifi # Verdin iMX95 Wi-Fi / B= T Module + - const: toradex,verdin-imx95 # Verdin iMX95 Module + - const: fsl,imx95 + - description: i.MXRT1050 based Boards items: - enum: --=20 2.43.0 From nobody Fri Apr 3 01:26:31 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 636843F9F28 for ; Wed, 25 Mar 2026 14:46:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450002; cv=none; b=rc2F7ty+LYrZhvE5PPVFHPPAwlwPuU+m6IFJ7QOHcOeIXMDhSjn9SHIFALVj5ZCqWyjPE/2oPA3NK9oNp1+cu4NNhjYFQmbaMlFyuehGrPnPjpD2TvzpfE4N/BOeU/oYqhOZ+6zOYYO7v8qlBRJWwT+Tno1P724fEM7C4nJaC9I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450002; c=relaxed/simple; bh=gyxNWfqII1rgHjFocCAbBI1TPV35XB7Mpu9HW67BQ8s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pLytQt2F2dYmniz5tqEj+3s4PdvlUcfflwdTeXiwanHkSZPS8687z4vJlnWLvEAfEHoqcZZzZMshZpf/DDizrjZvXO8shcqCr7sfTrJUJovO0kHqnDE2rSluCDlfHVEmKigqPurdWrw93AdWxF25Qup2GZ+T9wttjHbLwvGTrsk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XdIPhpMd; arc=none smtp.client-ip=209.85.221.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XdIPhpMd" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-43b527ac5d0so2784009f8f.2 for ; Wed, 25 Mar 2026 07:46:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774449994; x=1775054794; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=QtGF/u+VA2+2umoEtjNJkB92Rvb8pz5TiEEUuRi/H/I=; b=XdIPhpMdJ3qpsfA6T/FjcRNwxYQcRv8HtT8zd/1XfEJeaDhGDTtz95FTMSv69Yfn77 GBtYHvTGBM8Z4s3BsiAgSYeoWWaclopN318mkobfdfzyZZMrGpoWkSZqoXuBZE4T5Wk9 EaQS2pM8ICS1bYhzpZUqUUr0E45xJjVG+vD4CLpsRPzahTzvNuzEg0aCt6jaEOEcmK+I HxKz2IIGOnph6HXeIqQldO3QCJIyTDGX64zRLLkNWgX/RSS1zM7ZMm5m+4NZygRWErwL sd8olmxuW2BVgLAMwvCA0oGLqwx9Z262ZJ7PhxCfImFm93fcKAfUyAqn21cpPgXwzbEH Fqww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774449994; x=1775054794; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=QtGF/u+VA2+2umoEtjNJkB92Rvb8pz5TiEEUuRi/H/I=; b=RvIh9xxSKQpHD4AHcu9kxNKpdoqSpIZKcDxKuz6BsVv8Zmw6Adguj3WOsSS/8RB1RS /GhDbH47qEd+P7E3XmdnSVNrvdlqbuszCMRQeqFxFzWpgaEXfgKarfKEyYMaFnS7b8Ct VKJFfCASpkiYbPP3bio5XRbMHQakuAlDkyFJ7pJ12yZ+N0Rjwm0EqYPD1tJYDguaUD8s LabiJraBFJGRj0lcj9drpxhSC1+oQkd7UdpRgQTZnTAox8KEP4x1bhRce7vrsFmdA14T zTU2z5AvOHsaeCase4NLE3DG6sPwAE1xBKQ2MiVLpOlItcMxblTVI5ZfHKdJn08LJt// cTuw== X-Forwarded-Encrypted: i=1; AJvYcCUyeB5cfcObZV6plCyiWo8bW8KE6OmHvjUDuHi5AwTfXrKvuvropYDdxjaMu5hxhNK+7LpdzKByYwgPnOs=@vger.kernel.org X-Gm-Message-State: AOJu0YxZjM8Noc+JuObJvwJn9Qz65nssz6oUUhSkvYIsT/PUyW8Vf4jq W1CQar7inyEMReoCge5i2QQKuhCJo/wvVZoPKwOKO5e7GMSoITEDhEGo X-Gm-Gg: ATEYQzwpUM4mJzdH/PvMVkvJswsdIByVaGV5f1b0apEIND9sqxbgm0w6Nk+5jxesaHX hQAxy0Gd9YHG1c6YEb3gAMYSXmIRLIbDwmDwtrfVIdreiENERF0uNKnDpHt9qgJAf+tBby1u7hZ UkksT/V8Iu2/lLJsbqdXWqaFSEvJSIpL0u3uPHkqYjd3PJwW6+bPT12ojscXVpvjHn5LEU82W3V 9kzunWHBv7/IU7tiwwIinUdCY+mN9mwBNu/J0rEegjVRzls6XArb6X0kzccPRlDKYnhkrXpwEbp YQf2oAAlTIPpzrx1OBQFz5ZPrDQV1cu8QsRl3NcI1aGFK8170vOTjStpvvUCpK/bURshsE1c3Ev zlp5svYaxrCWXbw+zCamkZV14N3Ond+romXONKokgy+/kdrQPkJrH615TGxSCwq//0Uc6fqh//x 3LzzkvRXIIk1d1gTJx3BjYCezAqXlTusSM/DS/oL+3VJxhIPnp0B7gKJd7Esq6Z+RMstzXegrdw 1IzC5aUlEYbKeMqmro4LugZDtI= X-Received: by 2002:a05:6000:26ce:b0:43b:4273:a6ce with SMTP id ffacd0b85a97d-43b889ac04emr5574780f8f.3.1774449993234; Wed, 25 Mar 2026 07:46:33 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b9192e305sm304592f8f.8.2026.03.25.07.46.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 07:46:32 -0700 (PDT) From: Ernest Van Hoecke Date: Wed, 25 Mar 2026 15:46:03 +0100 Subject: [PATCH v3 2/6] arm64: dts: freescale: Add Verdin iMX95 support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-verdin-imx95-upstream-frank-li-base-v3-2-b2b5221a8077@toradex.com> References: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> In-Reply-To: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: Ernest Van Hoecke , Emanuele Ghidoli , Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Add support for the Toradex Verdin iMX95 and its development carrier board. The module consists of an NXP i.MX95 family SoC, up to 16GB LPDDR4x RAM, up to 128GB of storage, a USB 3.2 OTG and USB 2.0 Host, a Gigabit Ethernet PHY, an I2C EEPROM and Temperature Sensor, an RX8130 RTC, an I3C bus, one Quad lane CSI interface, one Quad lane DSI or CSI interface, one LVDS interface (one or two channels), and some optional addons: TPM 2.0, and a WiFi/BT module. Link: https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx= 95 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: Francesco Dolcini Signed-off-by: Francesco Dolcini Signed-off-by: Ernest Van Hoecke --- v3: Rebased v2: Reordered nodes alphanumerically by node name v1: https://lore.kernel.org/all/20260305-verdin-imx95-upstream-frank-li-bas= e-v1-2-823fad02def9@toradex.com/ --- arch/arm64/boot/dts/freescale/Makefile | 2 + .../arm64/boot/dts/freescale/imx95-verdin-dev.dtsi | 250 +++++ .../dts/freescale/imx95-verdin-nonwifi-dev.dts | 21 + .../boot/dts/freescale/imx95-verdin-nonwifi.dtsi | 16 + .../boot/dts/freescale/imx95-verdin-wifi-dev.dts | 21 + .../boot/dts/freescale/imx95-verdin-wifi.dtsi | 50 + arch/arm64/boot/dts/freescale/imx95-verdin.dtsi | 1162 ++++++++++++++++= ++++ 7 files changed, 1522 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 2da6dc4f8a14..c46059cd2331 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -497,6 +497,8 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-19x19-evk-sof.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-toradex-smarc-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-tqma9596sa-mb-smarc-2.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-var-dart-sonata.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dev.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dev.dtb =20 imx95-15x15-evk-pcie0-ep-dtbs =3D imx95-15x15-evk.dtb imx-pcie0-ep.dtbo dtb-$(CONFIG_ARCH_MXC) +=3D imx95-15x15-evk-pcie0-ep.dtb diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-dev.dtsi b/arch/arm= 64/boot/dts/freescale/imx95-verdin-dev.dtsi new file mode 100644 index 000000000000..2848f9adf152 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-dev.dtsi @@ -0,0 +1,250 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * Common dtsi for Verdin iMX95 SoM on development carrier board + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * 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 { + clocks =3D <&scmi_clk IMX95_CLK_SAI3>; + sound-dai =3D <&nau8822_1a>; + }; + + simple-audio-card,cpu { + sound-dai =3D <&sai3>; + }; + }; +}; + +/* Verdin ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + status =3D "okay"; +}; + +/* Verdin ETH_1 (On-module PHY) */ +&enetc_port0 { + status =3D "okay"; +}; + +/* Verdin ETH_2_RGMII */ +&enetc_port1 { + phy-handle =3D <ðphy2>; + phy-mode =3D "rgmii-id"; + + status =3D "okay"; +}; + +/* Verdin CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Verdin CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +/* Verdin QSPI_1 */ +&flexspi1 { + status =3D "okay"; +}; + +&gpio1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ctrl_sleep_moci>; +}; + +&gpio2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio1>, + <&pinctrl_gpio2>, + <&pinctrl_gpio3>; +}; + +&gpio3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio6>; +}; + +&gpio4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio5>; +}; + +&gpio5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio4>; +}; + +/* Verdin I2C_3_HDMI */ +&i3c2 { + status =3D "okay"; +}; + +/* Verdin I2C_2_DSI */ +&lpi2c3 { + status =3D "okay"; +}; + +/* Verdin I2C_1 */ +&lpi2c4 { + status =3D "okay"; + + nau8822_1a: audio-codec@1a { + compatible =3D "nuvoton,nau8822"; + reg =3D <0x1a>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sai3_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 I2C_4_CSI */ +&lpi2c5 { + status =3D "okay"; +}; + +/* Verdin UART_3, used as the Linux console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Verdin UART_4 */ +&lpuart2 { + status =3D "okay"; +}; + +/* Verdin UART_1, connector X50 through RS485 transceiver */ +&lpuart7 { + rs485-rts-active-low; + rs485-rx-during-tx; + linux,rs485-enabled-at-boot-time; + + status =3D "okay"; +}; + +/* Verdin UART_2 */ +&lpuart8 { + status =3D "okay"; +}; + +&netc_emdio { + ethphy2: ethernet-phy@7 { + compatible =3D "ethernet-phy-ieee802.3-c22"; + reg =3D <7>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_eth2_rgmii_int>; + interrupt-parent =3D <&gpio1>; + interrupts =3D <12 IRQ_TYPE_LEVEL_LOW>; + micrel,led-mode =3D <0>; + }; +}; + +/* Verdin PCIE_1 */ +&pcie0 { + status =3D "okay"; +}; + +/* Verdin I2S_1 */ +&sai3 { + status =3D "okay"; +}; + +/* Verdin PWM_1 */ +&tpm4 { + status =3D "okay"; +}; + +/* Verdin PWM_2 */ +&tpm5 { + status =3D "okay"; +}; + +/* Verdin PWM_3_DSI */ +&tpm6 { + status =3D "okay"; +}; + +/* Verdin USB_1 */ +&usb2 { + status =3D "okay"; +}; + +/* Verdin USB_2 */ +&usb3 { + fsl,permanently-attached; + + status =3D "okay"; +}; + +&usb3_phy { + status =3D "okay"; +}; + +/* Verdin SD_1 */ +&usdhc2 { + status =3D "okay"; +}; + +/* Verdin CTRL_WAKE1_MICO# */ +&verdin_gpio_keys { + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-dev.dts b/a= rch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-dev.dts new file mode 100644 index 000000000000..97636ec7c26a --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-dev.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/verdin-development-board= -kit + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-nonwifi.dtsi" +#include "imx95-verdin-dev.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 on Verdin Development Board"; + compatible =3D "toradex,verdin-imx95-nonwifi-dev", + "toradex,verdin-imx95-nonwifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi.dtsi b/arch= /arm64/boot/dts/freescale/imx95-verdin-nonwifi.dtsi new file mode 100644 index 000000000000..7aba22067de5 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi.dtsi @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * Common dtsi for Verdin iMX95 SoM non-WB variant + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + */ + +/* SDIO on MSP 30, 31, 32, 33, 34, 35 */ +&usdhc3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_usdhc3>; + + status =3D "disabled"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-dev.dts b/arch= /arm64/boot/dts/freescale/imx95-verdin-wifi-dev.dts new file mode 100644 index 000000000000..345d37247025 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-dev.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/verdin-development-board= -kit + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-wifi.dtsi" +#include "imx95-verdin-dev.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 WB on Verdin Development Board"; + compatible =3D "toradex,verdin-imx95-wifi-dev", + "toradex,verdin-imx95-wifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-wifi.dtsi b/arch/ar= m64/boot/dts/freescale/imx95-verdin-wifi.dtsi new file mode 100644 index 000000000000..256c9ed04605 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-wifi.dtsi @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * Common dtsi for Verdin iMX95 SoM WB variant + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + */ + +/ { + reg_wifi_en: regulator-wifi-en { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_wifi_pwr_en>; + /* PMIC_EN_WIFI */ + gpios =3D <&gpio1 11 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <3300000>; + regulator-name =3D "PDn_MAYA-W260"; + startup-delay-us =3D <2000>; + }; +}; + +/* On-module Bluetooth */ +&lpuart6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_bt_uart>; + uart-has-rtscts; + + status =3D "okay"; + + som_bt: bluetooth { + compatible =3D "nxp,88w8987-bt"; + fw-init-baudrate =3D <3000000>; + }; +}; + +/* On-module Wi-Fi */ +&usdhc3 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz"; + pinctrl-0 =3D <&pinctrl_usdhc3>; + pinctrl-1 =3D <&pinctrl_usdhc3>; + pinctrl-2 =3D <&pinctrl_usdhc3_200mhz>; + keep-power-in-suspend; + non-removable; + vmmc-supply =3D <®_wifi_en>; + + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin.dtsi b/arch/arm64/b= oot/dts/freescale/imx95-verdin.dtsi new file mode 100644 index 000000000000..d3737956e2f9 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin.dtsi @@ -0,0 +1,1162 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * Common dtsi for Verdin iMX95 SoM + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + */ + +#include +#include "imx95.dtsi" + +/ { + aliases { + can0 =3D &flexcan1; + can1 =3D &flexcan2; + eeprom0 =3D &som_eeprom; + ethernet0 =3D &enetc_port0; + ethernet1 =3D &enetc_port1; + i2c0 =3D &lpi2c2; + i2c1 =3D &lpi2c4; + i2c2 =3D &lpi2c3; + i2c3 =3D &i3c2; + i2c4 =3D &lpi2c5; + mmc0 =3D &usdhc1; + mmc1 =3D &usdhc2; + mmc2 =3D &usdhc3; + rtc0 =3D &rtc_i2c; + rtc1 =3D &scmi_bbm; + serial0 =3D &lpuart7; + serial1 =3D &lpuart8; + serial2 =3D &lpuart1; + serial3 =3D &lpuart2; + serial4 =3D &lpuart6; + usb0 =3D &usb2; + usb1 =3D &usb3; + }; + + chosen { + stdout-path =3D "serial2:115200n8"; + }; + + connector { + compatible =3D "gpio-usb-b-connector", "usb-b-connector"; + /* Verdin USB_1_ID (SODIMM 161) */ + id-gpios =3D <&som_gpio_expander 5 GPIO_ACTIVE_HIGH>; + label =3D "USB_1"; + self-powered; + vbus-supply =3D <®_usb1_vbus>; + + port { + usb_dr_connector: endpoint { + remote-endpoint =3D <&usb1_id>; + }; + }; + }; + + verdin_gpio_keys: gpio-keys { + compatible =3D "gpio-keys"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ctrl_wake1_mico>; + + status =3D "disabled"; + + verdin_key_wakeup: key-wakeup { + /* Verdin CTRL_WAKE1_MICO# (SODIMM 252) */ + gpios =3D <&gpio1 10 GPIO_ACTIVE_LOW>; + label =3D "Wake-Up"; + linux,code =3D ; + wakeup-source; + }; + }; + + reg_1p8v: regulator-1p8v { + compatible =3D "regulator-fixed"; + regulator-max-microvolt =3D <1800000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "On-module +V1.8"; + }; + + /* + * By default we enable CTRL_SLEEP_MOCI#, this is required to have + * peripherals on the carrier board powered. + * If more granularity or power saving is required this can be disabled + * in the carrier board device tree files. + */ + reg_force_sleep_moci: regulator-force-sleep-moci { + compatible =3D "regulator-fixed"; + /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */ + gpios =3D <&gpio1 14 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + regulator-boot-on; + regulator-name =3D "CTRL_SLEEP_MOCI#"; + }; + + reg_usb1_vbus: regulator-usb1-vbus { + compatible =3D "regulator-fixed"; + /* Verdin USB_1_EN (SODIMM 155) */ + gpios =3D <&som_gpio_expander 7 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-name =3D "USB_1_EN"; + }; + + reg_usb2_vbus: regulator-usb2-vbus { + compatible =3D "regulator-fixed"; + /* Verdin USB_2_EN (SODIMM 185) */ + gpios =3D <&som_gpio_expander 8 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-name =3D "USB_2_EN"; + }; + + reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc { + compatible =3D "regulator-gpio"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_usdhc2_vsel>; + gpios =3D <&gpio3 19 GPIO_ACTIVE_HIGH>; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <1800000>; + states =3D <1800000 0x1>, + <3300000 0x0>; + regulator-name =3D "PMIC_SD2_VSEL"; + }; + + reg_usdhc2_vmmc: regulator-vmmc-usdhc2 { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_usdhc2_pwr_en>; + /* Verdin SD_1_PWR_EN (SODIMM 76) */ + 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 "SD_1_PWR_EN"; + startup-delay-us =3D <20000>; + }; + + cm7: remoteproc-cm7 { + compatible =3D "fsl,imx95-cm7"; + mbox-names =3D "tx", "rx", "rxdb"; + mboxes =3D <&mu7 0 1 + &mu7 1 1 + &mu7 3 1>; + memory-region =3D <&vdevbuffer>, <&vdev0vring0>, <&vdev0vring1>, + <&vdev1vring0>, <&vdev1vring1>, <&rsc_table>, <&m7_reserved>; + }; + + reserved-memory { + #address-cells =3D <2>; + #size-cells =3D <2>; + ranges; + + linux_cma: linux,cma { + compatible =3D "shared-dma-pool"; + reusable; + size =3D <0 0x3c000000>; + alloc-ranges =3D <0 0x80000000 0 0x7F000000>; + linux,cma-default; + }; + + m7_reserved: memory@80000000 { + reg =3D <0 0x80000000 0 0x1000000>; + no-map; + }; + + vdev0vring0: vdev0vring0@88000000 { + reg =3D <0 0x88000000 0 0x8000>; + no-map; + }; + + vdev0vring1: vdev0vring1@88008000 { + reg =3D <0 0x88008000 0 0x8000>; + no-map; + }; + + vdev1vring0: vdev1vring0@88010000 { + reg =3D <0 0x88010000 0 0x8000>; + no-map; + }; + + vdev1vring1: vdev1vring1@88018000 { + reg =3D <0 0x88018000 0 0x8000>; + no-map; + }; + + vdevbuffer: vdevbuffer@88020000 { + compatible =3D "shared-dma-pool"; + reg =3D <0 0x88020000 0 0x100000>; + no-map; + }; + + rsc_table: rsc-table@88220000 { + reg =3D <0 0x88220000 0 0x1000>; + no-map; + }; + }; +}; + +/* Verdin ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + vref-supply =3D <®_1p8v>; +}; + +/* Verdin ETH_1 (On-module PHY) */ +&enetc_port0 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_enetc0>; + phy-handle =3D <ðphy1>; + phy-mode =3D "rgmii-id"; +}; + +/* Verdin ETH_2_RGMII */ +&enetc_port1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_enetc1>; +}; + +/* Verdin CAN_1 */ +&flexcan1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_flexcan1>; +}; + +/* Verdin CAN_2 */ +&flexcan2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_flexcan2>; +}; + +/* Verdin QSPI_1 */ +&flexspi1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_flexspi1>; +}; + +&gpio1 { + gpio-line-names =3D + "", /* 0 */ + "", + "", + "", + "SODIMM_147", + "SODIMM_149", + "SODIMM_151", + "SODIMM_153", + "SODIMM_20", + "SODIMM_22", + "SODIMM_252", /* 10 */ + "", + "SODIMM_189", + "IO_EXP_INT", + "SODIMM_256", + ""; + + status =3D "okay"; +}; + +&gpio2 { + gpio-line-names =3D + "SODIMM_206", /* 0 */ + "SODIMM_198", + "SODIMM_200", + "SODIMM_196", + "", + "SODIMM_15", + "SODIMM_16", + "", + "SODIMM_131", + "SODIMM_129", + "SODIMM_135", /* 10 */ + "SODIMM_133", + "SODIMM_139", + "SODIMM_137", + "SODIMM_143", + "SODIMM_141", + "SODIMM_30", + "SODIMM_38", + "SODIMM_208", + "SODIMM_19", + "SODIMM_36", /* 20 */ + "SODIMM_34", + "SODIMM_93", + "SODIMM_95", + "SODIMM_210", + "SODIMM_24", + "SODIMM_32", + "SODIMM_26", + "SODIMM_53", + "SODIMM_55", + "SODIMM_12", /* 30 */ + "SODIMM_14"; +}; + +&gpio3 { + gpio-line-names =3D + "SODIMM_84", /* 0 */ + "SODIMM_78", + "SODIMM_74", + "SODIMM_80", + "SODIMM_82", + "SODIMM_70", + "SODIMM_72", + "SODIMM_76", + "", + "", + "", /* 10 */ + "", + "", + "", + "", + "", + "", + "", + "", + "PMIC_SD2_VSEL", + "", /* 20 */ + "", + "", + "", + "", + "", + "SODIMM_91", + "SODIMM_218", + "", + "", + "", /* 30 */ + ""; +}; + +&gpio4 { + gpio-line-names =3D + "SODIMM_59", /* 0 */ + "SODIMM_57", + "", + "", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "", + "", + "SODIMM_193", + "SODIMM_191", + "SODIMM_215", + "SODIMM_217", + "SODIMM_219", + "SODIMM_221", + "SODIMM_211", /* 20 */ + "SODIMM_213", + "SODIMM_199", + "SODIMM_197", + "SODIMM_201", + "SODIMM_203", + "SODIMM_205", + "SODIMM_207", + "SODIMM_216", + "SODIMM_202"; +}; + +&gpio5 { + gpio-line-names =3D + "SODIMM_56", /* 0 */ + "SODIMM_58", + "SODIMM_60", + "SODIMM_62", + "SODIMM_46", + "SODIMM_44", + "SODIMM_42", + "SODIMM_48", + "SODIMM_66", + "SODIMM_52", + "SODIMM_54", /* 10 */ + "SODIMM_64", + "SODIMM_212", + "", + "", + "", + "", + ""; +}; + +/* Verdin I2C_3_HDMI */ +&i3c2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_i3c2>; + i2c-scl-hz =3D <400000>; +}; + +/* CTRL_I2C (On-module I2C) */ +&lpi2c2 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_lpi2c2>, <&pinctrl_io_exp_int>; + pinctrl-1 =3D <&pinctrl_lpi2c2_gpio>, <&pinctrl_io_exp_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@20 { + compatible =3D "nxp,pcal6416"; + reg =3D <0x20>; + #interrupt-cells =3D <2>; + interrupt-controller; + interrupt-parent =3D <&gpio1>; + interrupts =3D <13 IRQ_TYPE_LEVEL_LOW>; + #gpio-cells =3D <2>; + gpio-controller; + + gpio-line-names =3D + "SODIMM_220", /* 0 */ + "SODIMM_222", + "SODIMM_17", + "SODIMM_21", + "SODIMM_244", + "SODIMM_161", + "SODIMM_157", + "SODIMM_155", + "SODIMM_185", + "SODIMM_187", + "USB_RECOV_CTRL#", /* 10 */ + "ENET1_INT#", + "TPM_INT#", + "TPM_CS#", + "", + ""; + + /* + * Switch USB to default position: + * - SoC USB2 -> Verdin USB_1 + * - SoC USB1 -> Verdin USB_2 + * Reset configuration: + * - SoC USB1 -> Verdin USB_1 (USB recovery) + * - SoC USB2 not connected + */ + usb_recov_ctrl: usb-recov-ctrl-hog { + gpio-hog; + gpios =3D <10 GPIO_ACTIVE_HIGH>; + line-name =3D "USB_RECOV_CTRL#"; + output-high; + }; + }; + + rtc_i2c: rtc@32 { + compatible =3D "epson,rx8130"; + reg =3D <0x32>; + }; + + 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>; + }; +}; + +/* Verdin I2C_2_DSI */ +&lpi2c3 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_lpi2c3>; + pinctrl-1 =3D <&pinctrl_lpi2c3_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; +}; + +/* Verdin I2C_1 */ +&lpi2c4 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_lpi2c4>; + pinctrl-1 =3D <&pinctrl_lpi2c4_gpio>; + clock-frequency =3D <100000>; + scl-gpios =3D <&gpio2 31 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio2 30 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; +}; + +/* Verdin I2C_4_CSI */ +&lpi2c5 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_lpi2c5>; + pinctrl-1 =3D <&pinctrl_lpi2c5_gpio>; + clock-frequency =3D <100000>; + scl-gpios =3D <&gpio2 23 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio2 22 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + single-master; +}; + +/* Verdin SPI_1 */ +&lpspi6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_lpspi6>, <&pinctrl_spi1_cs>; + cs-gpios =3D <&gpio4 29 GPIO_ACTIVE_LOW>, + <&som_gpio_expander 13 GPIO_ACTIVE_LOW>; + + status =3D "okay"; + + som_tpm: tpm@1 { + compatible =3D "infineon,slb9670", "tcg,tpm_tis-spi"; + reg =3D <0x1>; + interrupt-parent =3D <&som_gpio_expander>; + interrupts =3D <12 IRQ_TYPE_EDGE_FALLING>; + /* + * Maximum TPM-supported speed is 18.5 MHz, limited to 12 MHz + * here as lpspi6's per-clock (twice the max speed) is 24 MHz + */ + spi-max-frequency =3D <12000000>; + }; +}; + +/* Verdin UART_3, used as the Linux console */ +&lpuart1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart1>; +}; + +/* Verdin UART_4 */ +&lpuart2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart2>; +}; + +/* Verdin UART_1 */ +&lpuart7 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart7>; + uart-has-rtscts; +}; + +/* Verdin UART_2 */ +&lpuart8 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart8>; + uart-has-rtscts; +}; + +&mu7 { + status =3D "okay"; +}; + +&netc_blk_ctrl { + status =3D "okay"; +}; + +&netc_bus0 { + msi-map =3D <0x0 &its 0x60 0x1>, //ENETC0 PF + <0x10 &its 0x61 0x1>, //ENETC0 VF0 + <0x20 &its 0x62 0x1>, //ENETC0 VF1 + <0x40 &its 0x63 0x1>, //ENETC1 PF + <0x50 &its 0x65 0x1>, //ENETC1 VF0 + <0x60 &its 0x66 0x1>, //ENETC1 VF1 + <0x80 &its 0x64 0x1>, //ENETC2 PF + <0xc0 &its 0x67 0x1>; //NETC Timer + iommu-map =3D <0x0 &smmu 0x20 0x1>, + <0x10 &smmu 0x21 0x1>, + <0x20 &smmu 0x22 0x1>, + <0x40 &smmu 0x23 0x1>, + <0x50 &smmu 0x25 0x1>, + <0x60 &smmu 0x26 0x1>, + <0x80 &smmu 0x24 0x1>, + <0xc0 &smmu 0x27 0x1>; +}; + +/* Verdin ETH_2_RGMII_MDIO, shared between all ethernet ports */ +&netc_emdio { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_emdio>; + + status =3D "okay"; + + ethphy1: ethernet-phy@0 { + reg =3D <0>; + interrupt-parent =3D <&som_gpio_expander>; + interrupts =3D <11 IRQ_TYPE_EDGE_FALLING>; + ti,rx-internal-delay =3D ; + ti,tx-internal-delay =3D ; + }; +}; + +&netc_timer { + status =3D "okay"; +}; + +&netcmix_blk_ctrl { + status =3D "okay"; +}; + +/* Verdin PCIE_1 */ +&pcie0 { + /* PCIE_1_RESET# (SODIMM 244) */ + reset-gpios =3D <&som_gpio_expander 4 GPIO_ACTIVE_LOW>; +}; + +/* Verdin I2S_1 */ +&sai3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sai3>; + assigned-clocks =3D <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>, + <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>, + <&scmi_clk IMX95_CLK_AUDIOPLL1>, + <&scmi_clk IMX95_CLK_AUDIOPLL2>, + <&scmi_clk IMX95_CLK_SAI3>; + assigned-clock-parents =3D <0>, <0>, <0>, <0>, + <&scmi_clk IMX95_CLK_AUDIOPLL1>; + assigned-clock-rates =3D <3932160000>, + <3612672000>, <393216000>, + <361267200>, <12288000>; + #sound-dai-cells =3D <0>; + fsl,sai-mclk-direction-output; +}; + +&scmi_bbm { + linux,code =3D ; +}; + +&thermal_zones { + /* PF09 Main PMIC */ + pf09-thermal { + polling-delay =3D <2000>; + polling-delay-passive =3D <250>; + thermal-sensors =3D <&scmi_sensor 2>; + + trips { + trip0 { + hysteresis =3D <2000>; + temperature =3D <155000>; + type =3D "critical"; + }; + }; + }; + + /* PF53 VDD_ARM PMIC */ + pf53-arm-thermal { + polling-delay =3D <2000>; + polling-delay-passive =3D <250>; + thermal-sensors =3D <&scmi_sensor 4>; + + trips { + trip0 { + hysteresis =3D <2000>; + temperature =3D <155000>; + type =3D "critical"; + }; + }; + }; + + /* PF53 VDD_SOC PMIC */ + pf53-soc-thermal { + polling-delay =3D <2000>; + polling-delay-passive =3D <250>; + thermal-sensors =3D <&scmi_sensor 3>; + + trips { + trip0 { + hysteresis =3D <2000>; + temperature =3D <155000>; + type =3D "critical"; + }; + }; + }; +}; + +/* Verdin PWM_1 */ +&tpm4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_tpm4>; +}; + +/* Verdin PWM_2 */ +&tpm5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_tpm5>; +}; + +/* Verdin PWM_3_DSI */ +&tpm6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_tpm6>; +}; + +/* Verdin USB_1 */ +&usb2 { + dr_mode =3D "otg"; + adp-disable; + hnp-disable; + srp-disable; + usb-role-switch; + vbus-supply =3D <®_usb1_vbus>; + + port { + usb1_id: endpoint { + remote-endpoint =3D <&usb_dr_connector>; + }; + }; +}; + +/* Verdin USB_2 */ +&usb3 { + fsl,disable-port-power-control; +}; + +&usb3_dwc3 { + dr_mode =3D "host"; +}; + +&usb3_phy { + vbus-supply =3D <®_usb2_vbus>; +}; + +/* On-module eMMC */ +&usdhc1 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz"; + pinctrl-0 =3D <&pinctrl_usdhc1>; + pinctrl-1 =3D <&pinctrl_usdhc1>; + pinctrl-2 =3D <&pinctrl_usdhc1_200mhz>; + bus-width =3D <8>; + non-removable; + no-sdio; + no-sd; + + status =3D "okay"; +}; + +/* Verdin SD_1 */ +&usdhc2 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz", "sleep"; + pinctrl-0 =3D <&pinctrl_usdhc2>, <&pinctrl_usdhc2_cd>; + pinctrl-1 =3D <&pinctrl_usdhc2>, <&pinctrl_usdhc2_cd>; + pinctrl-2 =3D <&pinctrl_usdhc2_200mhz>,<&pinctrl_usdhc2_cd>; + pinctrl-3 =3D <&pinctrl_usdhc2_sleep>, <&pinctrl_usdhc2_cd>; + cd-gpios =3D <&gpio3 0 GPIO_ACTIVE_LOW>; + vmmc-supply =3D <®_usdhc2_vmmc>; + vqmmc-supply =3D <®_usdhc2_vqmmc>; +}; + +&wdog3 { + fsl,ext-reset-output; + + status =3D "okay"; +}; + +&scmi_iomuxc { + /* On-module Bluetooth on WB SKUs, module-specific UART otherwise */ + pinctrl_bt_uart: btuartgrp { + fsl,pins =3D , /* WiFi_UART_SoC_T= XD */ + , /* WiFi_UART_SoC_RXD */ + , /* WiFi_UART_SoC_CTS */ + ; /* WiFi_UART_SoC_RTS */ + }; + + /* Verdin CSI_1_MCLK */ + pinctrl_csi1_mclk: csi1mclkgrp { + fsl,pins =3D ; /* SO= DIMM 91 */ + }; + + /* Verdin CTRL_SLEEP_MOCI# */ + pinctrl_ctrl_sleep_moci: ctrlsleepmocigrp { + fsl,pins =3D ; /* = SODIMM 256 */ + }; + + /* Verdin CTRL_WAKE1_MICO# */ + pinctrl_ctrl_wake1_mico: ctrlwake1micogrp { + fsl,pins =3D ; /* SODIMM 252 */ + }; + + /* Verdin ETH_2_RGMII_MDIO, shared between all ethernet ports */ + pinctrl_emdio: emdiogrp { + fsl,pins =3D , /* ENET2= _MDC, SODIMM 193 */ + ; /* ENET2_MDIO, = SODIMM 191 */ + }; + + /* Verdin ETH_1 (On-module PHY) */ + pinctrl_enetc0: enetc0grp { + fsl,pins =3D , /* ENET1_TX_CTL */ + , /* ENET= 1_TXC */ + , /* ENET1_T= DO */ + , /* ENET1_T= D1 */ + , /* ENET1_T= D2 */ + , /* ENET1_T= D3 */ + , /* EN= ET1_RX_CTL */ + , /* ENET= 1_RXC */ + , /* ENET1_R= D0 */ + , /* ENET1_R= D1 */ + , /* ENET1_R= D2 */ + ; /* ENET1_R= D3 */ + }; + + /* Verdin ETH_2_RGMII */ + pinctrl_enetc1: enetc1grp { + fsl,pins =3D , /* ENET2_TX_CTL */ + , /* ENET= 2_TXC */ + , /* ENET2_T= D0 */ + , /* ENET2_T= D1 */ + , /* ENET2_T= D2 */ + , /* ENET2_T= D3 */ + , /* EN= ET2_RX_CTL */ + , /* ENET= 2_RXC */ + , /* ENET2_R= D0 */ + , /* ENET2_R= D1 */ + , /* ENET2_R= D2 */ + ; /* ENET2_R= D3 */ + }; + + /* Verdin ETH_2_RGMII_INT# */ + pinctrl_eth2_rgmii_int: eth2rgmiiintgrp { + fsl,pins =3D ; /* S= ODIMM 189 */ + }; + + /* Verdin CAN_1 */ + pinctrl_flexcan1: flexcan1grp { + fsl,pins =3D , /* SODIMM 2= 0 */ + ; /* SODIMM 22 = */ + }; + + /* Verdin CAN_2 */ + pinctrl_flexcan2: flexcan2grp { + fsl,pins =3D , /* SODIMM 24 */ + ; /* SODIMM 26 */ + }; + + /* Verdin QSPI_1 */ + pinctrl_flexspi1: flexspi1grp { + fsl,pins =3D , /* SODIMM = 54 */ + , /* SODIMM 64 */ + , /* SODIMM 52 */ + , /* SODIMM 56 */ + , /* SODIMM 58 */ + , /* SODIMM 60 */ + , /* SODIMM 62 */ + ; /* SODIMM 66 */ + }; + + /* Verdin GPIO_1 */ + pinctrl_gpio1: gpio1grp { + fsl,pins =3D ; /* SODIMM 206 */ + }; + + /* Verdin GPIO_2 */ + pinctrl_gpio2: gpio2grp { + fsl,pins =3D ; /* SODIMM 208 = */ + }; + + /* Verdin GPIO_3 */ + pinctrl_gpio3: gpio3grp { + fsl,pins =3D ; /* SODIMM 210 = */ + }; + + /* Verdin GPIO_4 */ + pinctrl_gpio4: gpio4grp { + fsl,pins =3D ; /* SODIMM 212 = */ + }; + + /* Verdin GPIO_5_CSI */ + pinctrl_gpio5: gpio5grp { + fsl,pins =3D ; /* SODIMM 216 = */ + }; + + /* Verdin GPIO_6_CSI */ + pinctrl_gpio6: gpio6grp { + fsl,pins =3D ; /* SODIMM 218 = */ + }; + + /* Verdin I2S_2_BCLK as GPIO (conflict with Verdin I2S_2) */ + pinctrl_i2s_2_bclk_gpio: i2s2bclkgpiogrp { + fsl,pins =3D ; /* SODIMM 42 = */ + }; + + /* Verdin I2S_2_D_IN as GPIO (conflict with Verdin I2S_2) */ + pinctrl_i2s_2_d_in_gpio: i2s2dingpiogrp { + fsl,pins =3D ; /* SODIMM 48 = */ + }; + + /* Verdin I2S_2_D_OUT as GPIO (conflict with Verdin I2S_2) */ + pinctrl_i2s_2_d_out_gpio: i2s2doutgpiogrp { + fsl,pins =3D ; /* SODIMM 46 = */ + }; + + /* Verdin I2S_2_SYNC as GPIO (conflict with Verdin I2S_2) */ + pinctrl_i2s_2_sync_gpio: i2s2syncgpiogrp { + fsl,pins =3D ; /* SODIMM 44 = */ + }; + + /* Verdin I2C_3_HDMI */ + pinctrl_i3c2: i3c2cgrp { + fsl,pins =3D , /* SODIMM 59 */ + ; /* SODIMM 57 */ + }; + + pinctrl_io_exp_int: ioexpintgrp { + fsl,pins =3D ; /* = IO_EXP_INT */ + }; + + /* CTRL_I2C (On-module I2C) */ + pinctrl_lpi2c2_gpio: lpi2c2gpiogrp { + fsl,pins =3D , = /* CTRL_I2C_SCL */ + ; /* CTRL_I= 2C_SDA */ + }; + + pinctrl_lpi2c2: lpi2c2grp { + fsl,pins =3D , /* = CTRL_I2C_SCL */ + ; /* CTRL_I2C_= SDA */ + }; + + /* Verdin I2C_2_DSI */ + pinctrl_lpi2c3_gpio: lpi2c3gpiogrp { + fsl,pins =3D , /* SODIMM= 53 */ + ; /* SODIMM 55 */ + }; + + pinctrl_lpi2c3: lpi2c3grp { + fsl,pins =3D , /* SODIMM 53 = */ + ; /* SODIMM 55 */ + }; + + /* Verdin I2C_1 */ + pinctrl_lpi2c4_gpio: lpi2c4gpiogrp { + fsl,pins =3D , /* SODIMM= 14 */ + ; /* SODIMM 12 */ + }; + + pinctrl_lpi2c4: lpi2c4grp { + fsl,pins =3D , /* SODIMM 14 = */ + ; /* SODIMM 12 */ + }; + + /* Verdin I2C_4_CSI */ + pinctrl_lpi2c5_gpio: lpi2c5gpiogrp { + fsl,pins =3D , /* SODIMM= 93 */ + ; /* SODIMM 95 */ + }; + + pinctrl_lpi2c5: lpi2c5grp { + fsl,pins =3D , /* SODIMM 93 = */ + ; /* SODIMM 95 */ + }; + + /* Verdin SPI_1 */ + pinctrl_lpspi6: lpspi6grp { + fsl,pins =3D , /* SODIMM 198 */ + , /* SODIMM 200 */ + ; /* SODIMM 196 */ + }; + + /* Verdin QSPI_1_CLK as GPIO (conflict with Verdin QSPI_1 interface) */ + pinctrl_qspi1_clk_gpio: qspi1clkgpiogrp { + fsl,pins =3D ; /* SODIMM 52 = */ + }; + + /* Verdin QSPI_1_CS2# as GPIO (conflict with Verdin QSPI_1 interface) */ + pinctrl_qspi1_cs2_gpio: qspi1cs2gpiogrp { + fsl,pins =3D ; /* SODIMM 64= */ + }; + + /* Verdin QSPI_1_CS# as GPIO (conflict with Verdin QSPI_1 interface) */ + pinctrl_qspi1_cs_gpio: qspi1csgpiogrp { + fsl,pins =3D ; /* SODIMM 54= */ + }; + + /* Verdin QSPI_1_DQS as GPIO (conflict with Verdin QSPI_1 interface) */ + pinctrl_qspi1_dqs_gpio: qspi1dqsgpiogrp { + fsl,pins =3D ; /* SODIMM 66 */ + }; + + /* Verdin QSPI_1_IO0 as GPIO (conflict with Verdin QSPI_1 interface) */ + pinctrl_qspi1_io0_gpio: qspi1io0gpiogrp { + fsl,pins =3D ; /* SODIMM 56= */ + }; + + /* Verdin QSPI_1_IO1 as GPIO (conflict with Verdin QSPI_1 interface) */ + pinctrl_qspi1_io1_gpio: qspi1io1gpiogrp { + fsl,pins =3D ; /* SODIMM 58= */ + }; + + /* Verdin QSPI_1_IO2 as GPIO (conflict with Verdin QSPI_1 interface) */ + pinctrl_qspi1_io2_gpio: qspi1io2gpiogrp { + fsl,pins =3D ; /* SODIMM 60 = */ + }; + + /* Verdin QSPI_1_IO3 as GPIO (conflict with Verdin QSPI_1 interface) */ + pinctrl_qspi1_io3_gpio: qspi1io3gpiogrp { + fsl,pins =3D ; /* SODIMM 62 = */ + }; + + /* Verdin I2S_1 */ + pinctrl_sai3: sai3grp { + fsl,pins =3D , /* SODIMM 30 */ + , /* SODIMM 36 */ + , /* SODIMM 34 */ + ; /* SODIMM 32 */ + }; + + /* Verdin I2S_1_MCLK */ + pinctrl_sai3_mclk: sai3mclkgrp { + fsl,pins =3D ; /* SODIMM 38 */ + }; + + /* Verdin I2S_2 */ + pinctrl_sai5: sai5grp { + fsl,pins =3D , /* SODIMM= 46 */ + , /* SODIMM 44 */ + , /* SODIMM 42 */ + ; /* SODIMM 48 */ + }; + + /* Verdin SPI_1_CS */ + pinctrl_spi1_cs: spi1csgrp { + fsl,pins =3D ; /* SODIMM 202 = */ + }; + + /* Verdin PWM_1 */ + pinctrl_tpm4: tpm4grp { + fsl,pins =3D ; /* SODIMM 15 */ + }; + + /* Verdin PWM_2 */ + pinctrl_tpm5: tpm5grp { + fsl,pins =3D ; /* SODIMM 16 */ + }; + + /* Verdin PWM_3_DSI as GPIO */ + pinctrl_tpm6_gpio: tpm6gpiogrp { + fsl,pins =3D ; /* SODIMM 19 */ + }; + + /* Verdin PWM_3_DSI */ + pinctrl_tpm6: tpm6grp { + fsl,pins =3D ; /* SODIMM 19 */ + }; + + /* Verdin UART_3, used as the Linux Console */ + pinctrl_uart1: uart1grp { + fsl,pins =3D , /* SODI= MM 147 */ + ; /* SODIMM 149 */ + }; + + /* Verdin UART_4 */ + pinctrl_uart2: uart2grp { + fsl,pins =3D , /* SODI= MM 151 */ + ; /* SODIMM 153 */ + }; + + /* Verdin UART_1 */ + pinctrl_uart7: uart7grp { + fsl,pins =3D , /* SODIMM 131 */ + , /* SODIMM 129 */ + , /* SODIMM 135 */ + ; /* SODIMM 133 */ + }; + + /* Verdin UART_2 */ + pinctrl_uart8: uart8grp { + fsl,pins =3D , /* SODIMM 139 */ + , /* SODIMM 137 */ + , /* SODIMM 143 */ + ; /* SODIMM 141 */ + }; + + /* On-module eMMC */ + pinctrl_usdhc1: usdhc1grp { + fsl,pins =3D , /* SD1_CLK */ + , /* SD1_CMD */ + , /* SD1_DATA0 */ + , /* SD1_DATA1 */ + , /* SD1_DATA2 */ + , /* SD1_DATA3 */ + , /* SD1_DATA4 */ + , /* SD1_DATA5 */ + , /* SD1_DATA6 */ + , /* SD1_DATA7 */ + ; /* SD1_STROBE */ + }; + + pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp { + fsl,pins =3D , /* SD1_CLK */ + , /* SD1_CMD */ + , /* SD1_DATA0 */ + , /* SD1_DATA1 */ + , /* SD1_DATA2 */ + , /* SD1_DATA3 */ + , /* SD1_DATA4 */ + , /* SD1_DATA5 */ + , /* SD1_DATA6 */ + , /* SD1_DATA7 */ + ; /* SD1_STROBE */ + }; + + /* Verdin SD_1 */ + pinctrl_usdhc2: usdhc2grp { + fsl,pins =3D , /* SODIMM 78 */ + , /* SODIMM 74 */ + , /* SODIMM 80 */ + , /* SODIMM 82 */ + , /* SODIMM 70 */ + ; /* SODIMM 72 */ + }; + + pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp { + fsl,pins =3D , /* SODIMM 78 */ + , /* SODIMM 74 */ + , /* SODIMM 80 */ + , /* SODIMM 82 */ + , /* SODIMM 70 */ + ; /* SODIMM 72 */ + }; + + pinctrl_usdhc2_sleep: usdhc2-sleepgrp { + fsl,pins =3D , /* SODIMM 78 */ + , /* SODIMM 74 */ + , /* SODIMM 80 */ + , /* SODIMM 82 */ + , /* SODIMM 70 */ + ; /* SODIMM 72 */ + }; + + /* Verdin SD_1_CD# */ + pinctrl_usdhc2_cd: usdhc2-cdgrp { + fsl,pins =3D ; /* SODIMM 84 */ + }; + + /* Verdin SD_1_PWR_EN */ + pinctrl_usdhc2_pwr_en: usdhc2-pwrengrp { + fsl,pins =3D ; /* SODIMM 76 = */ + }; + + pinctrl_usdhc2_vsel: usdhc2-vselgrp { + fsl,pins =3D ; /* PMIC_SD2_VS= EL */ + }; + + /* On-module Wi-Fi on WB SKUs, module-specific SDIO otherwise */ + pinctrl_usdhc3: usdhc3grp { + fsl,pins =3D , /* SD3_CLK */ + , /* SD3_CMD */ + , /* SD3_DATA0 */ + , /* SD3_DATA1 */ + , /* SD3_DATA2 */ + ; /* SD3_DATA3 */ + }; + + pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp { + fsl,pins =3D , /* SD3_CLK */ + , /* SD3_CMD */ + , /* SD3_DATA1 */ + , /* SD3_DATA2 */ + , /* SD3_DATA3 */ + ; /* SD3_DATA4 */ + }; + + pinctrl_wifi_pwr_en: wifipwrengrp { + fsl,pins =3D ; /* = PMIC_EN_WIFI */ + }; +}; --=20 2.43.0 From nobody Fri Apr 3 01:26:31 2026 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) (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 1EF643F9F4C for ; Wed, 25 Mar 2026 14:46:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450000; cv=none; b=LEiMC0tAkc+2ARVUyGEzVhlVl5BOSUODBEpzobPeLrJBdbtzQUZbgr8CGblQ2sfOJUi+pX4jGU1LXVi+xKpJumZTRPEPSLvlDRcyZ3vp90E831HrhOQH+OVGOXKzPFMG4XnDHjoj2+80XfWCFCX7hkfc/OHXd57fdPt28kEI8aA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450000; c=relaxed/simple; bh=0M8bC8s4CQRoL47kiXxXJsMthW3oUTt23PyDFJOgaNw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y+kH6ZY8qP5tQlPJpkVJjghmz6kPJtD1J2NH9vGqu02eWsV6ivhID55G9zKDuoZvILHE2UUlG4eHmgadZ5Zy+Fl4Jqk1ObD5uieTL8IUNW8AQK+vMqTcCYh4bfX7083K3DWnA7zxwQd9Va+v03nGDo4M6eSexAXnr6VevBi9/jw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VjDFqywM; arc=none smtp.client-ip=209.85.221.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VjDFqywM" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-439b9b190easo1976141f8f.2 for ; Wed, 25 Mar 2026 07:46:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774449994; x=1775054794; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=K56QdSgJZYNMBcYP6tlC/3xyKloobCMQ/93giVqKRL4=; b=VjDFqywMr8XK/Csu50MvpVEd+c8IafE0k3DTHvlTT7AgP7lNYbXcK2tGKsc8RIxsqe zOwsCgPlLSTpw7NQuhHLl8PO6GC2Xzh2ffehK03KpYd/zrYL86hxDPS5CVxsa8zg+MUj GmN4LWwFSmhJ+vs2DsQpefM9RYytQ5P1JkrsFnK6nXBRfmSofxoZLII0UKlz1cvTuE7y VuKw+EM0a+ccnAeT44m7H7hrV4iD37Wx9j2ZeIDucu8buq+BerWLwrrrK/izLnISdYu3 61s2mBOGp3/IR3bup9vi1FG/s/b52kg3pf+yvNU8PTHuWjE1QaP0PjpVA973Sc1hMxkT 04Uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774449994; x=1775054794; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=K56QdSgJZYNMBcYP6tlC/3xyKloobCMQ/93giVqKRL4=; b=puK9PyZb5ONOfmeFmeHReJFpCw69azAWQyt6ICGbZJyH6+3Y9Ge1xEtySaXSQu7vjm FQcGzDLbhT1NCVM+9NduYUdbR7+SlTGsineJC2pQU7ahLiLsswzPbHdKVHaqVU81npcz CQ8rRoENcv2rnuLZ6itKGBQfqwhmzAqa4y/2dSnwMtTf18CRF7nHSksi5aiS0tNLFvdQ jgm+UFmwO7htXadJxIQMc6T8z9hEBclH2xVEMnsd1Sj8a9aDqPd8b3HK9+LZkvcXZ531 8tvQc9wUcWRPwihrI0AoAypaMQV64BWVz1e0kvFwiMLaD4d9PkxaNI4wtvaYXdmQkei+ 84DA== X-Forwarded-Encrypted: i=1; AJvYcCURMjVXyMvCiLw/E05leJ7YcIgQDMJ8CnY6CzXVtvyM3W7D0xzKaTd1oXagHNLQIM994zNFXVQn1+8TkAM=@vger.kernel.org X-Gm-Message-State: AOJu0YyiOBmO8ODNEFm7kn8ULslVbIFFWjRxPpXjqtzzVN6RTEK6WQRg A4cGWExq5QCkJg69oy88TG8w2foc/Sg5yZujGfQwAPXoUvz1CR9NyFof X-Gm-Gg: ATEYQzxHx7WfSYbLhORaDTzNv/G6Groz+2ZRfzEeINA5FEhgDoOEb3IFc2fnfnyHdRd sF65vrzFowcAFR/jg2q75rmcQfK7+6KgG03wMrTLRMG0Dz7qMXRGv07g/PDuwFmzKZCeLpP4w0u Bceg+8RRz6jn1kgkzNFH2BWNkKeNx3HqJfdWhJuu431nnsv6nZUqiUzyr2tHQQxDy7DJND//nju froaNEYgzjIaI/MdbGo6LT8s817aKEfDgaaTkEZdK1R0C00weXQoUSARS5C72QtctrNKpRqdJHA dOTBrmTUiIO3guDZNCRi2OJ/gKMctFfS0rl5B5E8dcTMQP+G78nCOSWStCW0bY6E7Nk+fpOB5NT shDA+SlL/ZUw9gYjHZnzAB+PWysZAkBaGlhdbYDeVkHy/EGZQNrRSlJyfOb9t46DkvzfROyh6sY dkKZ4udRLsW0+vS3FMlcEJQrauxdhAtaWyhodq+9ZEyPQYxhT94kyzlQV5bvpm5xyGul/RpLte4 wSa1r6nGAvLJfFSnBTFWCGDOe0X72D1LapWJw== X-Received: by 2002:a5d:5270:0:b0:43b:88e9:588 with SMTP id ffacd0b85a97d-43b88e9083amr4001503f8f.37.1774449994187; Wed, 25 Mar 2026 07:46:34 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b9192e305sm304592f8f.8.2026.03.25.07.46.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 07:46:33 -0700 (PDT) From: Ernest Van Hoecke Date: Wed, 25 Mar 2026 15:46:04 +0100 Subject: [PATCH v3 3/6] arm64: dts: freescale: imx95-verdin: Add Dahlia carrier board Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-verdin-imx95-upstream-frank-li-base-v3-3-b2b5221a8077@toradex.com> References: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> In-Reply-To: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: Ernest Van Hoecke , Emanuele Ghidoli , Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Add support for the Verdin i.MX95 mated with the Verdin Dahlia carrier board. Link: https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx= 95 Link: https://www.toradex.com/products/carrier-board/dahlia-carrier-board-k= it Signed-off-by: Ernest Van Hoecke --- v3: Rebased v2: Reordered nodes alphanumerically by node name v1: https://lore.kernel.org/all/20260305-verdin-imx95-upstream-frank-li-bas= e-v1-3-823fad02def9@toradex.com/ --- arch/arm64/boot/dts/freescale/Makefile | 2 + .../boot/dts/freescale/imx95-verdin-dahlia.dtsi | 270 +++++++++++++++++= ++++ .../dts/freescale/imx95-verdin-nonwifi-dahlia.dts | 21 ++ .../dts/freescale/imx95-verdin-wifi-dahlia.dts | 21 ++ 4 files changed, 314 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index c46059cd2331..bcf54b4ed66c 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -497,7 +497,9 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-19x19-evk-sof.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-toradex-smarc-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-tqma9596sa-mb-smarc-2.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-var-dart-sonata.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dev.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dev.dtb =20 imx95-15x15-evk-pcie0-ep-dtbs =3D imx95-15x15-evk.dtb imx-pcie0-ep.dtbo diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-dahlia.dtsi b/arch/= arm64/boot/dts/freescale/imx95-verdin-dahlia.dtsi new file mode 100644 index 000000000000..889b71aa3de0 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-dahlia.dtsi @@ -0,0 +1,270 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * Common dtsi for Verdin iMX95 SoM on Dahlia carrier board + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * 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"; + }; + + reg_pcie: regulator-pcie { + compatible =3D "regulator-fixed"; + /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */ + gpios =3D <&gpio1 14 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-boot-on; + regulator-name =3D "PCIE_1_PWR_EN"; + }; + + reg_usb_hub: regulator-usb-hub { + compatible =3D "regulator-fixed"; + /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */ + gpios =3D <&gpio1 14 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-boot-on; + regulator-name =3D "HUB_PWR_EN"; + }; + + 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>; + }; + }; +}; + +/* Verdin ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + status =3D "okay"; +}; + +/* Verdin ETH_1 (On-module PHY) */ +&enetc_port0 { + status =3D "okay"; +}; + +/* Verdin CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Verdin CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +/* Verdin QSPI_1 */ +&flexspi1 { + status =3D "okay"; +}; + +&gpio1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ctrl_sleep_moci>; +}; + +&gpio2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio1>, + <&pinctrl_gpio2>, + <&pinctrl_gpio3>; +}; + +&gpio3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio6>; +}; + +&gpio4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio5>; +}; + +&gpio5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio4>; +}; + +/* Verdin I2C_3_HDMI */ +&i3c2 { + status =3D "okay"; +}; + +/* Verdin I2C_2_DSI */ +&lpi2c3 { + status =3D "okay"; +}; + +/* Verdin I2C_1 */ +&lpi2c4 { + status =3D "okay"; + + wm8904_1a: audio-codec@1a { + compatible =3D "wlf,wm8904"; + reg =3D <0x1a>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sai3_mclk>; + clocks =3D <&scmi_clk IMX95_CLK_SAI3>; + clock-names =3D "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 I2C_4_CSI */ +&lpi2c5 { + status =3D "okay"; +}; + +/* Verdin UART_3, used as the Linux console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Verdin UART_4 */ +&lpuart2 { + status =3D "okay"; +}; + +/* Verdin UART_1 */ +&lpuart7 { + status =3D "okay"; +}; + +/* Verdin UART_2 */ +&lpuart8 { + status =3D "okay"; +}; + +/* Verdin PCIE_1 */ +&pcie0 { + vpcie-supply =3D <®_pcie>; + + status =3D "okay"; +}; + +/* We support turning off sleep moci on Dahlia */ +®_force_sleep_moci { + status =3D "disabled"; +}; + +/* Verdin I2S_1 */ +&sai3 { + status =3D "okay"; +}; + +/* Verdin PWM_1 */ +&tpm4 { + status =3D "okay"; +}; + +/* Verdin PWM_2 */ +&tpm5 { + status =3D "okay"; +}; + +/* Verdin PWM_3_DSI */ +&tpm6 { + status =3D "okay"; +}; + +/* Verdin USB_1 */ +&usb2 { + status =3D "okay"; +}; + +/* Verdin USB_2 */ +&usb3 { + fsl,permanently-attached; + + status =3D "okay"; +}; + +&usb3_dwc3 { + #address-cells =3D <1>; + #size-cells =3D <0>; + + usb_hub_3_0: usb-hub@1 { + compatible =3D "usb424,5744"; + reg =3D <1>; + peer-hub =3D <&usb_hub_2_0>; + vdd-supply =3D <®_usb_hub>; + }; + + usb_hub_2_0: usb-hub@2 { + compatible =3D "usb424,2744"; + reg =3D <2>; + peer-hub =3D <&usb_hub_3_0>; + vdd-supply =3D <®_usb_hub>; + }; +}; + +&usb3_phy { + status =3D "okay"; +}; + +/* Verdin SD_1 */ +&usdhc2 { + status =3D "okay"; +}; + +/* Verdin CTRL_WAKE1_MICO# */ +&verdin_gpio_keys { + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-dahlia.dts = b/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-dahlia.dts new file mode 100644 index 000000000000..16975ae12fcb --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-dahlia.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/dahlia-carrier-board-kit + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-nonwifi.dtsi" +#include "imx95-verdin-dahlia.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 on Dahlia Board"; + compatible =3D "toradex,verdin-imx95-nonwifi-dahlia", + "toradex,verdin-imx95-nonwifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-dahlia.dts b/a= rch/arm64/boot/dts/freescale/imx95-verdin-wifi-dahlia.dts new file mode 100644 index 000000000000..bafbe1179ec8 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-dahlia.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/dahlia-carrier-board-kit + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-wifi.dtsi" +#include "imx95-verdin-dahlia.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 WB on Dahlia Board"; + compatible =3D "toradex,verdin-imx95-wifi-dahlia", + "toradex,verdin-imx95-wifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; --=20 2.43.0 From nobody Fri Apr 3 01:26:31 2026 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A3893F99E1 for ; Wed, 25 Mar 2026 14:46:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450002; cv=none; b=gIYCFaBcG4RxjwVYOKWTD2zOrVxtGohd8KQvn0bZCaEW0y4VV2wvho1atFjQcYPw0lzEBmn0DgN1hSLOfIoEGAIAzfF1puzIpzw1bveyr6PcX57nJPXmpLzgao/I2NLRMQq4WEqFCOD7X4DPkjGOu27N56PdBjB22QawmiYSNng= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450002; c=relaxed/simple; bh=0ZOYgIbrraUIDmqU9A99qHZczz1+D83J6iifzdZxZRI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZIlRudS9zJBXrtNYzJC/YraBNIh/onj9MYugQ8Z2kmzO25EYS19C3X9ovTABjszrgNMiE+QO4CcESmulwfEEMzVu4TWYxvauXZ2pNbY2TahZB+kcQtJspiHFQmMF+re1gospixNX3Vq5najc2/yZMbxPlRNG5JOKDNFoFIykZps= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=I9tTAmsw; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="I9tTAmsw" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-43b40fb7f95so2453425f8f.3 for ; Wed, 25 Mar 2026 07:46:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774449996; x=1775054796; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=eEAQifmW6GbEwhlfuqNE2AiGxXOiSlZr/1dU3Ei/HJc=; b=I9tTAmswLrXN/TcjxUWhC1M5x3Pto/rO4ym6Ly++WaeluiaSTq1mZP88YDjQJpWasi 46IH7QuMRAGenfPVfbbH172Ucqoam4r64fBEvnMKKvm8F8P1PF7JJO771nOEa0rxH8SV P1osfRaHxlv2gNPoeAx3ThdxidOpZz5p87e0XtQYVGxz9izQ+X+jL88f+8Bluv33j1EG XCODtghJJuDt/0D1U5H+0SqPQDKlQ5SmoKAzG7lUMNUdnUmLc0R0BFIKa/Z60H36T/qm plXYtxH3PiniGFnk4uW/RU6iitzAkIEdu+3gHC8/sxpNhDdGUu40ou2tAo4xJSBRYzY+ hM8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774449996; x=1775054796; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=eEAQifmW6GbEwhlfuqNE2AiGxXOiSlZr/1dU3Ei/HJc=; b=L1v7tmJyfsmBdfgMTu830lEJ44CZ7D3EwvLgKCt36lwJdWof1dO8exx+9cE/10PmJF 49/deL4aww6TcUoV9NFrvryehCEJjPXUpeEIVJyyKNK3u+ORfWB6xY5USgW+K+XacStk kbzx7MYhDoyYxkZ/n0dt+mrW9tlL8gLHPlPJRpR+1Lh0Kh6hBuykixrB/PH2MSMoOaZK WL3imATT89VvgDUBTGxC8lTXiUeKSvAXE4/wjS8o+IbFzZ9vvfLlbN0lBichBpxgr7/U dGM67hQ0iF2qGjfXyjuR4ipg+9AzvOtZOErEFbCbim0bIom/jNKL/o7oqSSog8/b228O fqjw== X-Forwarded-Encrypted: i=1; AJvYcCVu8DLksOf3z8nOBTA4EtLl6cxwTz19sJb905CaVpNHgGhK6vwIyTDvXmmDU3cmsZMVvMLXlKsmtHXELyE=@vger.kernel.org X-Gm-Message-State: AOJu0YzKQ5QxfOjGFkbyfwsOqajrIcCU9LSEEPOzTiV41YqlqgBehXyn EeV26OKVzxyjRV+AFtscti4exGFj9eIZcxiFu1VlR40ngyWPFhGtGxQ8 X-Gm-Gg: ATEYQzzENoAw5+dtHd9etfOj/qINSxLeemty6E+mRMDu6N7xpWClV/zB3J/GFR8hKUR LJhGb8EM+MiaAlU7KofoiU40B9Q8Ug6n9EKwuGIteROn9DnWAXy0OjIB1mcIBzFUk/AI6GPt8O3 oEid/WtQp2jPnWt7klURvOvPgZju0xJKsU4v3OOkeS4C+IFptquGoHts9NBenDGwh/kNh5eis0A HKRlRZfs+w7TagKZ7oIW7VvdIVCOFTsyKF1CR9pyT1zOwUy2jjoCIcY848V9LmfVdkVQyu7Psak dZmeK4MWajM8quLxILQY25mLKKDSoAenaLglAoProZ6Duu9yV0SI3/7q3EMaa/dcVIxfT/x2fRJ X1MgcEU/WiOnd14qNVO4Nuy1CYHnwO37ot4sdWmaSMOaHWCOnrnoS0/yLaL7M5+Eq0l2C/TXIoV LFUXItTiJF2yuJ6NbB0lfzzTrzFdPhZ8lkn9CYtVfWxSGJOkEXWR+G/F+GAf4/WOhcvybpng3eD Xd6Y0cj/h+9I1/UwUvBM+DKGq8= X-Received: by 2002:a5d:5847:0:b0:43b:5672:efe with SMTP id ffacd0b85a97d-43b88994eeemr5561169f8f.9.1774449995254; Wed, 25 Mar 2026 07:46:35 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b9192e305sm304592f8f.8.2026.03.25.07.46.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 07:46:34 -0700 (PDT) From: Ernest Van Hoecke Date: Wed, 25 Mar 2026 15:46:05 +0100 Subject: [PATCH v3 4/6] arm64: dts: freescale: imx95-verdin: Add Ivy carrier board Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-verdin-imx95-upstream-frank-li-base-v3-4-b2b5221a8077@toradex.com> References: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> In-Reply-To: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: Ernest Van Hoecke , Emanuele Ghidoli , Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Add support for the Verdin i.MX95 SoM mated with the Ivy carrier board. Link: https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx= 95 Link: https://www.toradex.com/products/carrier-board/ivy-carrier-board Signed-off-by: Ernest Van Hoecke --- v3: no changes v2: Reordered nodes alphanumerically by node name v1: https://lore.kernel.org/all/20260305-verdin-imx95-upstream-frank-li-bas= e-v1-4-823fad02def9@toradex.com/ --- arch/arm64/boot/dts/freescale/Makefile | 2 + .../arm64/boot/dts/freescale/imx95-verdin-ivy.dtsi | 515 +++++++++++++++++= ++++ .../dts/freescale/imx95-verdin-nonwifi-ivy.dts | 21 + .../boot/dts/freescale/imx95-verdin-wifi-ivy.dts | 21 + 4 files changed, 559 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index bcf54b4ed66c..4417b4a3d245 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -499,8 +499,10 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-tqma9596sa-mb-smarc-= 2.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-var-dart-sonata.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dev.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-ivy.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dev.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-ivy.dtb =20 imx95-15x15-evk-pcie0-ep-dtbs =3D imx95-15x15-evk.dtb imx-pcie0-ep.dtbo dtb-$(CONFIG_ARCH_MXC) +=3D imx95-15x15-evk-pcie0-ep.dtb diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-ivy.dtsi b/arch/arm= 64/boot/dts/freescale/imx95-verdin-ivy.dtsi new file mode 100644 index 000000000000..8337c8b25f05 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-ivy.dtsi @@ -0,0 +1,515 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * Common dtsi for Verdin iMX95 SoM on Ivy carrier board + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/ivy-carrier-board + */ + +#include +#include +#include + +/ { + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + ain1-current { + compatible =3D "io-channel-mux"; + channels =3D "", "ain1_current"; + io-channels =3D <&ain1_current_unmanaged>; + io-channel-names =3D "parent"; + mux-controls =3D <&ain1_mode_mux_ctrl>; + settle-time-us =3D <1000>; + }; + + ain1-voltage { + compatible =3D "io-channel-mux"; + channels =3D "ain1_voltage", ""; + io-channels =3D <&ain1_voltage_unmanaged 0>; + io-channel-names =3D "parent"; + mux-controls =3D <&ain1_mode_mux_ctrl>; + settle-time-us =3D <1000>; + }; + + ain2-current { + compatible =3D "io-channel-mux"; + channels =3D "", "ain2_current"; + io-channels =3D <&ain2_current_unmanaged>; + io-channel-names =3D "parent"; + mux-controls =3D <&ain2_mode_mux_ctrl>; + settle-time-us =3D <1000>; + }; + + ain2-voltage { + compatible =3D "io-channel-mux"; + channels =3D "ain2_voltage", ""; + io-channels =3D <&ain2_voltage_unmanaged 0>; + io-channel-names =3D "parent"; + mux-controls =3D <&ain2_mode_mux_ctrl>; + settle-time-us =3D <1000>; + }; + + /* AIN1 Current w/o AIN1_MODE gpio control */ + ain1_current_unmanaged: current-sense-shunt-ain1 { + compatible =3D "current-sense-shunt"; + #io-channel-cells =3D <0>; + io-channels =3D <&ivy_adc1 1>; + shunt-resistor-micro-ohms =3D <100000000>; + }; + + /* AIN2 Current w/o AIN2_MODE gpio control */ + ain2_current_unmanaged: current-sense-shunt-ain2 { + compatible =3D "current-sense-shunt"; + #io-channel-cells =3D <0>; + io-channels =3D <&ivy_adc2 1>; + shunt-resistor-micro-ohms =3D <100000000>; + }; + + /* Ivy Power Supply Input Voltage */ + ivy-1v8-voltage { + compatible =3D "voltage-divider"; + /* Verdin ADC_4 */ + io-channels =3D <&adc1 3>; + full-ohms =3D <39000>; /* 12k + 27k */ + output-ohms =3D <27000>; + }; + + ivy-3v3-voltage { + compatible =3D "voltage-divider"; + /* Verdin ADC_3 */ + io-channels =3D <&adc1 2>; + full-ohms =3D <54000>; /* 27k + 27k */ + output-ohms =3D <27000>; + }; + + ivy-5v-voltage { + compatible =3D "voltage-divider"; + /* Verdin ADC_2 */ + io-channels =3D <&adc1 1>; + full-ohms =3D <39000>; /* 27k + 12k */ + output-ohms =3D <12000>; + }; + + ivy-input-voltage { + compatible =3D "voltage-divider"; + /* Verdin ADC_1 */ + io-channels =3D <&adc1 0>; + full-ohms =3D <204700>; /* 200k + 4.7k */ + output-ohms =3D <4700>; + }; + + leds { + compatible =3D "gpio-leds"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ivy_leds>; + + /* D7 Blue - SODIMM 30 - LEDs.GPIO1 */ + led-0 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <1>; + gpios =3D <&gpio2 16 GPIO_ACTIVE_HIGH>; + }; + + /* D7 Green - SODIMM 32 - LEDs.GPIO2 */ + led-1 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <1>; + gpios =3D <&gpio2 26 GPIO_ACTIVE_HIGH>; + }; + + /* D7 Red - SODIMM 34 - LEDs.GPIO3 */ + led-2 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <1>; + gpios =3D <&gpio2 21 GPIO_ACTIVE_HIGH>; + }; + + /* D8 Blue - SODIMM 36 - LEDs.GPIO4 */ + led-3 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <2>; + gpios =3D <&gpio2 20 GPIO_ACTIVE_HIGH>; + }; + + /* D8 Green - SODIMM 54 - LEDs.GPIO5 */ + led-4 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <2>; + gpios =3D <&gpio5 10 GPIO_ACTIVE_HIGH>; + }; + + /* D8 Red - SODIMM 44 - LEDs.GPIO6 */ + led-5 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <2>; + gpios =3D <&gpio5 5 GPIO_ACTIVE_HIGH>; + }; + + /* D9 Blue - SODIMM 46 - LEDs.GPIO7 */ + led-6 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <3>; + gpios =3D <&gpio5 4 GPIO_ACTIVE_HIGH>; + }; + + /* D9 Red - SODIMM 48 - LEDs.GPIO8 */ + led-7 { + color =3D ; + default-state =3D "off"; + function =3D LED_FUNCTION_STATUS; + function-enumerator =3D <3>; + gpios =3D <&gpio5 7 GPIO_ACTIVE_HIGH>; + }; + }; + + /* AIN1_MODE - SODIMM 216 */ + ain1_mode_mux_ctrl: mux-controller-0 { + compatible =3D "gpio-mux"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio5>; + #mux-control-cells =3D <0>; + mux-gpios =3D <&gpio4 28 GPIO_ACTIVE_HIGH>; + }; + + /* AIN2_MODE - SODIMM 218 */ + ain2_mode_mux_ctrl: mux-controller-1 { + compatible =3D "gpio-mux"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio6>; + #mux-control-cells =3D <0>; + mux-gpios =3D <&gpio3 27 GPIO_ACTIVE_HIGH>; + }; + + reg_3v2_ain1: regulator-3v2-ain1 { + compatible =3D "regulator-fixed"; + regulator-max-microvolt =3D <3200000>; + regulator-min-microvolt =3D <3200000>; + regulator-name =3D "+3V2_AIN1"; + }; + + reg_3v2_ain2: regulator-3v2-ain2 { + compatible =3D "regulator-fixed"; + regulator-max-microvolt =3D <3200000>; + regulator-min-microvolt =3D <3200000>; + regulator-name =3D "+3V2_AIN2"; + }; + + /* AIN1 Voltage w/o AIN1_MODE gpio control */ + ain1_voltage_unmanaged: voltage-divider-ain1 { + compatible =3D "voltage-divider"; + #io-channel-cells =3D <1>; + io-channels =3D <&ivy_adc1 0>; + full-ohms =3D <19>; + output-ohms =3D <1>; + }; + + /* AIN2 Voltage w/o AIN2_MODE gpio control */ + ain2_voltage_unmanaged: voltage-divider-ain2 { + compatible =3D "voltage-divider"; + #io-channel-cells =3D <1>; + io-channels =3D <&ivy_adc2 0>; + full-ohms =3D <19>; + output-ohms =3D <1>; + }; +}; + +/* Verdin ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + status =3D "okay"; +}; + +/* Verdin ETH_1 (On-module PHY) */ +&enetc_port0 { + status =3D "okay"; +}; + +/* Verdin ETH_2_RGMII */ +&enetc_port1 { + phy-handle =3D <ðphy2>; + phy-mode =3D "rgmii-id"; + + status =3D "okay"; +}; + +/* Verdin CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Verdin CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +&gpio1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ctrl_sleep_moci>; + gpio-line-names =3D ""; +}; + +&gpio2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio2>, + <&pinctrl_gpio3>; + gpio-line-names =3D + "", /* 0 */ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "", + "", + "", + "", + "", + "", + "GPIO2", /* Verdin GPIO_2 - SODIMM 208 */ + "", + "", /* 20 */ + "", + "", + "", + "GPIO3", /* Verdin GPIO_3 - SODIMM 210 */ + "", + "", + "", + "", + "", + "", /* 30 */ + ""; +}; + +&gpio3 { + gpio-line-names =3D ""; +}; + +&gpio4 { + gpio-line-names =3D ""; +}; + +&gpio5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_qspi1_cs2_gpio>, + <&pinctrl_qspi1_dqs_gpio>, + <&pinctrl_qspi1_io0_gpio>, + <&pinctrl_qspi1_io1_gpio>, + <&pinctrl_qspi1_io2_gpio>, + <&pinctrl_qspi1_io3_gpio>; + gpio-line-names =3D + "DIGI_1", /* SODIMM 56 */ + "DIGI_2", /* SODIMM 58 */ + "REL1", /* SODIMM 60 */ + "REL2", /* SODIMM 62 */ + "", + "", + "", + "", + "REL4", /* SODIMM 66 */ + "", + "", /* 10 */ + "REL3", /* SODIMM 64 */ + "", + "", + "", + "", + "", + ""; +}; + +/* Verdin I2C_1 */ +&lpi2c4 { + status =3D "okay"; + + temperature-sensor@4f { + compatible =3D "ti,tmp1075"; + reg =3D <0x4f>; + }; + + carrier_eeprom: eeprom@57 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x57>; + pagesize =3D <16>; + }; +}; + +/* Verdin I2C_4_CSI */ +&lpi2c5 { + status =3D "okay"; + + ivy_adc1: adc@40 { + compatible =3D "ti,ads1119"; + reg =3D <0x40>; + interrupt-parent =3D <&som_gpio_expander>; + interrupts =3D <0 IRQ_TYPE_EDGE_FALLING>; + avdd-supply =3D <®_3v2_ain1>; + dvdd-supply =3D <®_3v2_ain1>; + vref-supply =3D <®_3v2_ain1>; + #address-cells =3D <1>; + #io-channel-cells =3D <1>; + #size-cells =3D <0>; + + /* AIN1 0-33V Voltage Input */ + channel@0 { + reg =3D <0>; + diff-channels =3D <0 1>; + }; + + /* AIN1 0-20mA Current Input */ + channel@1 { + reg =3D <1>; + diff-channels =3D <2 3>; + }; + }; + + ivy_adc2: adc@41 { + compatible =3D "ti,ads1119"; + reg =3D <0x41>; + interrupt-parent =3D <&som_gpio_expander>; + interrupts =3D <1 IRQ_TYPE_EDGE_FALLING>; + avdd-supply =3D <®_3v2_ain2>; + dvdd-supply =3D <®_3v2_ain2>; + vref-supply =3D <®_3v2_ain2>; + #address-cells =3D <1>; + #io-channel-cells =3D <1>; + #size-cells =3D <0>; + + /* AIN2 0-33V Voltage Input */ + channel@0 { + reg =3D <0>; + diff-channels =3D <0 1>; + }; + + /* AIN2 0-20mA Current Input */ + channel@1 { + reg =3D <1>; + diff-channels =3D <2 3>; + }; + }; +}; + +/* Verdin SPI_1 */ +&lpspi6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_lpspi6>, + <&pinctrl_spi1_cs>, + <&pinctrl_gpio1>, + <&pinctrl_gpio4>; + cs-gpios =3D <&gpio4 29 GPIO_ACTIVE_LOW>, + <&som_gpio_expander 13 GPIO_ACTIVE_LOW>, + <&gpio2 0 GPIO_ACTIVE_LOW>, + <&gpio5 12 GPIO_ACTIVE_LOW>; + + tpm@2 { + compatible =3D "infineon,slb9670", "tcg,tpm_tis-spi"; + reg =3D <2>; + spi-max-frequency =3D <18500000>; + }; + + fram@3 { + compatible =3D "fujitsu,mb85rs256", "atmel,at25"; + reg =3D <3>; + address-width =3D <16>; + size =3D <32768>; + spi-max-frequency =3D <33000000>; + pagesize =3D <1>; + }; +}; + +/* Verdin UART_3, used as the Linux console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Verdin UART_1 */ +&lpuart7 { + status =3D "okay"; +}; + +/* Verdin UART_2, through RS485 transceiver */ +&lpuart8 { + rs485-rts-active-low; + rs485-rx-during-tx; + linux,rs485-enabled-at-boot-time; + + status =3D "okay"; +}; + +&netc_emdio { + ethphy2: ethernet-phy@2 { + reg =3D <2>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_eth2_rgmii_int>; + interrupt-parent =3D <&gpio1>; + interrupts =3D <12 IRQ_TYPE_LEVEL_LOW>; + ti,rx-internal-delay =3D ; + ti,tx-internal-delay =3D ; + }; +}; + +/* Verdin PCIE_1 */ +&pcie0 { + status =3D "okay"; +}; + +&som_gpio_expander { + gpio-line-names =3D ""; +}; + +/* Verdin USB_1 */ +&usb2 { + status =3D "okay"; +}; + +/* Verdin USB_2 */ +&usb3 { + fsl,permanently-attached; + + status =3D "okay"; +}; + +&usb3_phy { + status =3D "okay"; +}; + +/* Verdin SD_1 */ +&usdhc2 { + status =3D "okay"; +}; + +&scmi_iomuxc { + pinctrl_ivy_leds: ivyledsgrp { + fsl,pins =3D , /* SODIMM 30 = */ + , /* SODIMM 32 */ + , /* SODIMM 34 */ + , /* SODIMM 36 */ + , /* SODIMM 44 */ + , /* SODIMM 46 */ + , /* SODIMM 48 */ + ; /* SODIMM 54 */ + }; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-ivy.dts b/a= rch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-ivy.dts new file mode 100644 index 000000000000..ebe1aec1ffa4 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-ivy.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/ivy-carrier-board + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-nonwifi.dtsi" +#include "imx95-verdin-ivy.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 on Ivy Board"; + compatible =3D "toradex,verdin-imx95-nonwifi-ivy", + "toradex,verdin-imx95-nonwifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-ivy.dts b/arch= /arm64/boot/dts/freescale/imx95-verdin-wifi-ivy.dts new file mode 100644 index 000000000000..7ff2d03a254d --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-ivy.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/ivy-carrier-board + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-wifi.dtsi" +#include "imx95-verdin-ivy.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 WB on Ivy Board"; + compatible =3D "toradex,verdin-imx95-wifi-ivy", + "toradex,verdin-imx95-wifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; --=20 2.43.0 From nobody Fri Apr 3 01:26:31 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 335EF3F9F43 for ; Wed, 25 Mar 2026 14:46:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450002; cv=none; b=swd8os/dQ1rWfTndrq6yDPmVpiuRlWET/0UHMQf9qXq2aFGtAMTwp0PD3e7Kws78gqDnehrHadKynIpJVapt9Ds6iLFHkm8T/FrrjRdX8GkG736DeVUKJIi/O8TXLywdqGtyBkfBCI8+Zaw2vmfFZHoBfuibufTOcwuSoUwmw3o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450002; c=relaxed/simple; bh=S+vDA/CUAW0AdwEu4XTgNPMcU/k9DOtf8L80RrxtbY8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=t542kaBs1Syxn0QnB9mYNRZuG0uYGz9qjkXun5addrheV/p5TohZWmQ/bxGWIChdI8vcxAfNuAzsbi8tTQu9kU0XmFVoMhjLq+uHF0Dt2TSiN3L7xdgKicqWvW3tUa25jx4c+k2J8cZAmr4ER1HgceR+t/FM+sgSakKMZ0OjI0c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=P6l5osPc; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="P6l5osPc" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-483487335c2so56187795e9.2 for ; Wed, 25 Mar 2026 07:46:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774449996; x=1775054796; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=iBdxpWorokQAvNVpC6lVKaJZ3EjyzK0DA7aANYhbAVE=; b=P6l5osPcHz8m+6hSUNPWIHYqDt3TghAbo2BJL34+Dx8+NhWvnzYcCznc60wCvsionN G/szK17/T7ZTwDudzqmymSrIuvsW4IdB1hlFNnSmPjCfGg88Wlahyp6b1Mqk7gL2x37D YRrOnUJ43XIXrdm4SIA/iOVCIrXiBCRn8qAb8uBkw8k2IUMq4UCVlze/jE6i0oTnGurr ZFTzfzDAhSFUZHfBtPi7fiOgysqJAO00Ru76Z/GwsR8cQERv8WOjDHsukM59kJFtY5y1 JNh/tYgzRWw21pp7mAU2OSGK5wWF7nLsy/aA1/hF/wHDXzlhuplaGRsd/LWOly2E751t ufSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774449996; x=1775054796; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=iBdxpWorokQAvNVpC6lVKaJZ3EjyzK0DA7aANYhbAVE=; b=d/wzr5BOKavqIBFib+n1NJWrR8KJauK95iKKLPldaT6IEiYuHUGgUPfvhsKTRug5ON CN/wgqqptInbYZhS71/GIdwgWObXeWFd4Ws3W4HNXK5vT/2JRrVta/lbUOzr+hMdRR34 PGtHjxOpcuCTeInAq97Oqsu1y6LYhCJI62APdsSEXSwJcIPd5IekM0nfuzY3B7W7BXt2 eFPr1v8nD/A2G/2GMcpagvZt5msxLQT9gEaluKPN6i+STkpi83x7av3993XJDZ6r8vrw 33oFvYxKIuNQeDiEJ5xZwPV6cND4duQLbZM6FJlXJ3jHXze/XoDlnhvElpgAcOHyjdjW EmTg== X-Forwarded-Encrypted: i=1; AJvYcCW7bNZ2uXAeRi7DfHEUC9L0eMtQiXVM1Hl2DHRZ7tq2JPsT4/Sjh5djX02qL/RSpvhxOfcN1bjUgXoll+I=@vger.kernel.org X-Gm-Message-State: AOJu0YyU7QTPekcRIVQLV9AMooTHL90AeMwAlSkKSsJZ8k7hk1zij3I5 rLkgWj1tn5aLVJzzaBrgtcwBKqzlQFHSvfxi8I72hvWqEGiwPDfLif8Y X-Gm-Gg: ATEYQzz24M6jBejberEfhW+/kXw04d8s1jnIZaH/7cr3suPsvibhst95WdJ1kXC30YL GXbfbCqSUJ1SIF3/gD7OCuAjoWsBY+1coQ6BQPTwHh6rJwTKQfC4QfuODhXWP3kKNht/+XlmEX5 Wxlo62mQFYEusXXphndMNcteYqlbK24MwLVw41czsdNpW4gM6vIwSHnf4FqaoCq/sJZwJSk6clj g43/zJgxdsj8nQHWEkPaVTqId2kVyQUATAEqj+bZBurDKjblDP3+MJyHSjM3SmFOLzBWKWQcsPj sucoro9vQ4yJ/zeGFGP17Rcd5hvccFeR4Q2YOPhnDSryt+NXi/2ZzWxg737SGp5RXAodp29VHke 9Kk6g9GiMWDxhIEljiMDyyGe4AaYr0++om7FmKq7R6wuAFVTllnjANhuXgRdPAAlNMtqh5Pmgno 0e1W+jPwc3h7DK9Q46N1wUD0d1bnnr+belQLxZX2BrMM5gWK4xiu662y2CL6L8GOVxGdxHmAOKD 3aGYhr89LwruMUSarhrdPW1YNg= X-Received: by 2002:a05:6000:400e:b0:43b:40ef:5d1a with SMTP id ffacd0b85a97d-43b88999322mr5728065f8f.5.1774449996226; Wed, 25 Mar 2026 07:46:36 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b9192e305sm304592f8f.8.2026.03.25.07.46.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 07:46:35 -0700 (PDT) From: Ernest Van Hoecke Date: Wed, 25 Mar 2026 15:46:06 +0100 Subject: [PATCH v3 5/6] arm64: dts: freescale: imx95-verdin: Add Mallow carrier board Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-verdin-imx95-upstream-frank-li-base-v3-5-b2b5221a8077@toradex.com> References: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> In-Reply-To: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: Ernest Van Hoecke , Emanuele Ghidoli , Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Add support for the Verdin i.MX95 SoM mated with the Mallow carrier board. Link: https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx= 95 Link: https://www.toradex.com/products/carrier-board/mallow-carrier-board Signed-off-by: Ernest Van Hoecke --- v3: no changes v2: no changes v1: https://lore.kernel.org/all/20260305-verdin-imx95-upstream-frank-li-bas= e-v1-5-823fad02def9@toradex.com/ --- arch/arm64/boot/dts/freescale/Makefile | 2 + .../boot/dts/freescale/imx95-verdin-mallow.dtsi | 223 +++++++++++++++++= ++++ .../dts/freescale/imx95-verdin-nonwifi-mallow.dts | 21 ++ .../dts/freescale/imx95-verdin-wifi-mallow.dts | 21 ++ 4 files changed, 267 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 4417b4a3d245..10417fc895de 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -500,9 +500,11 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-var-dart-sonata.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-ivy.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-mallow.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-ivy.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-mallow.dtb =20 imx95-15x15-evk-pcie0-ep-dtbs =3D imx95-15x15-evk.dtb imx-pcie0-ep.dtbo dtb-$(CONFIG_ARCH_MXC) +=3D imx95-15x15-evk-pcie0-ep.dtb diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-mallow.dtsi b/arch/= arm64/boot/dts/freescale/imx95-verdin-mallow.dtsi new file mode 100644 index 000000000000..53506b7550f5 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-mallow.dtsi @@ -0,0 +1,223 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * Common dtsi for Verdin iMX95 SoM on Mallow carrier board + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/mallow-carrier-board + */ + +#include + +/ { + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + leds { + compatible =3D "gpio-leds"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_qspi1_clk_gpio>, + <&pinctrl_qspi1_cs_gpio>, + <&pinctrl_qspi1_io0_gpio>, + <&pinctrl_qspi1_io1_gpio>; + + /* SODIMM 52 - USER_LED_1_RED */ + led-0 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <1>; + gpios =3D <&gpio5 9 GPIO_ACTIVE_HIGH>; + }; + + /* SODIMM 54 - USER_LED_1_GREEN */ + led-1 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <1>; + gpios =3D <&gpio5 10 GPIO_ACTIVE_HIGH>; + }; + + /* SODIMM 56 - USER_LED_2_RED */ + led-2 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <2>; + gpios =3D <&gpio5 0 GPIO_ACTIVE_HIGH>; + }; + + /* SODIMM 58 - USER_LED_2_GREEN */ + led-3 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <2>; + gpios =3D <&gpio5 1 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +/* Verdin ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + status =3D "okay"; +}; + +/* Verdin ETH_1 (On-module PHY) */ +&enetc_port0 { + status =3D "okay"; +}; + +/* Verdin CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Verdin CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +&gpio1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ctrl_sleep_moci>; +}; + +&gpio2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio1>, + <&pinctrl_gpio2>, + <&pinctrl_gpio3>; +}; + +&gpio3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio6>; +}; + +&gpio4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio5>; +}; + +&gpio5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio4>; +}; + +/* Verdin I2C_3_HDMI */ +&i3c2 { + status =3D "okay"; +}; + +/* Verdin I2C_2_DSI */ +&lpi2c3 { + status =3D "okay"; +}; + +/* Verdin I2C_1 */ +&lpi2c4 { + status =3D "okay"; + + temperature-sensor@4f { + compatible =3D "ti,tmp1075"; + reg =3D <0x4f>; + }; + + carrier_eeprom: eeprom@57 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x57>; + pagesize =3D <16>; + }; +}; + +/* Verdin I2C_4_CSI */ +&lpi2c5 { + status =3D "okay"; +}; + +/* Verdin SPI_1 */ +&lpspi6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_lpspi6>, + <&pinctrl_spi1_cs>, + <&pinctrl_qspi1_cs2_gpio>; + cs-gpios =3D <&gpio4 29 GPIO_ACTIVE_LOW>, + <&som_gpio_expander 13 GPIO_ACTIVE_LOW>, + <&gpio5 11 GPIO_ACTIVE_LOW>; + + tpm@2 { + compatible =3D "infineon,slb9670", "tcg,tpm_tis-spi"; + reg =3D <2>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_qspi1_dqs_gpio>; + interrupt-parent =3D <&gpio5>; + interrupts =3D <8 IRQ_TYPE_EDGE_FALLING>; + spi-max-frequency =3D <18500000>; + }; +}; + +/* Verdin UART_3, used as the Linux console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Verdin UART_4 */ +&lpuart2 { + status =3D "okay"; +}; + +/* Verdin UART_1 */ +&lpuart7 { + status =3D "okay"; +}; + +/* Verdin UART_2 */ +&lpuart8 { + status =3D "okay"; +}; + +/* Verdin PCIE_1 */ +&pcie0 { + status =3D "okay"; +}; + +/* Verdin PWM_1 */ +&tpm4 { + status =3D "okay"; +}; + +/* Verdin PWM_2 */ +&tpm5 { + status =3D "okay"; +}; + +/* Verdin PWM_3_DSI */ +&tpm6 { + status =3D "okay"; +}; + +/* Verdin USB_1 */ +&usb2 { + status =3D "okay"; +}; + +/* Verdin USB_2 */ +&usb3 { + fsl,permanently-attached; + + status =3D "okay"; +}; + +&usb3_phy { + status =3D "okay"; +}; + +/* Verdin SD_1 */ +&usdhc2 { + status =3D "okay"; +}; + +/* Verdin CTRL_WAKE1_MICO# */ +&verdin_gpio_keys { + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-mallow.dts = b/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-mallow.dts new file mode 100644 index 000000000000..5a9c0e4a79c9 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-mallow.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/mallow-carrier-board + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-nonwifi.dtsi" +#include "imx95-verdin-mallow.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 on Mallow Board"; + compatible =3D "toradex,verdin-imx95-nonwifi-mallow", + "toradex,verdin-imx95-nonwifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-mallow.dts b/a= rch/arm64/boot/dts/freescale/imx95-verdin-wifi-mallow.dts new file mode 100644 index 000000000000..eaa67a39be1c --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-mallow.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/mallow-carrier-board + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-wifi.dtsi" +#include "imx95-verdin-mallow.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 WB on Mallow Board"; + compatible =3D "toradex,verdin-imx95-wifi-mallow", + "toradex,verdin-imx95-wifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; --=20 2.43.0 From nobody Fri Apr 3 01:26:31 2026 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (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 500B13E3DB5 for ; Wed, 25 Mar 2026 14:46:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450003; cv=none; b=MwEI6a03LFIGrM41GYySyTdOj4p15iCVjcGnK7wayD4Gs625z/QV+SUHYiRNJvfP6+UAxZVfOh06O8uQizyO2MLIdz42DlEortYXU6H8e7s+7LIRGId3fCKkSB6Pd77BWvqOluSezsPfUFrSa6PZ3zBDHFxclpRYwFLagImgFgQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774450003; c=relaxed/simple; bh=8qB+9iWMmtG/bUdEVnuNISlvjWZxC1V+Y5D8ZDAx+NQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fJaBk2cFf6AIQKesX1uvXFSpRktICDay6erowG6HF8dT/+VCiTF0dWeIL+n7G/5m7CNtnU1MWIfU3QrmeeT/dK9Deg3skkY2pYBt427zWgSzLHqfdnMd+joHuU+UZGgDiDto9xGErlXhcPD75YjOwBAAej/xERLx0L9zzxZ1uXo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=o9RdLn8r; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="o9RdLn8r" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-439b9b190easo1976192f8f.2 for ; Wed, 25 Mar 2026 07:46:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774449997; x=1775054797; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=IrlBOke3UCcCRXGtCiCjDm/vPc8qLCfIRNlITCApmXs=; b=o9RdLn8rwTP37Y+J/LikFRV44thRcXgxFpPdLLKnacbhTh83c5sgFvtY6pmz34rJpW G7bVyyulo/kIZovXh9Gl/Tjo0b2jFK0gukPfDsrefmwpYiyi4JfoTzuBqar4Bj2tUXaw OtNWc2Gh6pG+BpzLSBq7Fbmq8dRPdxLcvi06oxihiOQt6F9XpOnJp8tI0vLpVzVzVsPJ po0QPPIdHSrQQrgo3EpfBPFngad7BtD/sffvTE8ea6hNSCB1SkP7eeEFCLteY9p7jkwj NQeGWMpTv7EYzNObj8QGclXPXGI2S1eW7izQMA4Ca8lXbB0w2dDprjceDgF7FldcgoVd 4ZYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774449997; x=1775054797; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=IrlBOke3UCcCRXGtCiCjDm/vPc8qLCfIRNlITCApmXs=; b=hpBClXdfWdGnAdV2qBgkJTuAckChrsCfMr+0s1EXDjSCng3m+lialOAJNxMwqa5bgO cgGnf/f/8ShxyTsmfil0QpetYYZy+WGOj8bmGzF7v0Bc7Bw0NSgHfaFR6f0OhHGpclcL NBBMSw+TgxDwFj6+U0uWVE/atJWnY3plDH1S6Mt8516z8InLVWPolQje84bd34r1AzTF p3xh6vSpZYUOSKvb69FaV8wBmyIvWHtEf/rkOjk+p1gOcDsxEgD6gZwtU8GTLJBWj0Ml uESdFJ+ZCEN7C4M7u/0phBfK8WzRiVSRqXbTtWDs0UDXpHf61unbLVEX8hI3PHvk//MN m8Cw== X-Forwarded-Encrypted: i=1; AJvYcCX7aniU9IjBc4QvYYqwqmTWMwe3Ms7i/lGINmJY2+nz7Y0sq8qmJmh1O1lSyilhaK/2bJTIDL09RkM6xTQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4ORm3JpYte8y83u6HomCivE0jOEL4ICgrhkz5yWd6OZJMRIf1 8HtwjzA/QQzrDg1BYQLtU0umo/i5MIH15IfWoP6lppIhPtxArysphAV1 X-Gm-Gg: ATEYQzynHc0rKGXCFZiHKCXjTbZ1/SuYdBgMvE9mfFXFhGYTTyYKPVdjxNfKEGyGPYn kqQdBeKu7BfNy6Tcvmy9CgFDS6Hfjvh/p9t8/d+EZdKlC3LPvx/84kEzvlKtceakG9s3xbR9a5H a8RXAo4PAv89/bsLNrE3g8lb5/yzRoaLJ2CWXEfohjsQE8Fgr3ETYGJRRV8OAENEJYmRSRGUELu x/SP7mwR0gq2NnNxPMbQMs/uu4N3k79mrBaN/HBnjm3lRkpbtNY4XuHISt7MnntRtD/aA3nny0Q eoMCjaurPX55mb8njbxTSB+5mAOoFZaP/y5wQDat4mEGxrThGRi0HJbB9D1RADsmHCuJyuCToyS 4jYORCTbVmDX37PImaM0rWA7ic6Fu0xbQySYya4AYNVe5xbqdB0pXIVE/95hR0Y4pp988RTPOib s+T6fHFVXw2ojHKQlDNosYiuMl8gS5iaY0f84zVSWqy6gPHOHODUm9nzK+OaM+Nuvlg94Z3Wrfo 8eDywWNAkVg+ldE0VPapdSrMyU= X-Received: by 2002:a05:6000:288c:b0:43b:3be3:9a16 with SMTP id ffacd0b85a97d-43b88a29212mr6080023f8f.38.1774449997217; Wed, 25 Mar 2026 07:46:37 -0700 (PDT) Received: from ernest.hoecke-nb (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43b9192e305sm304592f8f.8.2026.03.25.07.46.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Mar 2026 07:46:36 -0700 (PDT) From: Ernest Van Hoecke Date: Wed, 25 Mar 2026 15:46:07 +0100 Subject: [PATCH v3 6/6] arm64: dts: freescale: imx95-verdin: Add Yavia carrier board Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260325-verdin-imx95-upstream-frank-li-base-v3-6-b2b5221a8077@toradex.com> References: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> In-Reply-To: <20260325-verdin-imx95-upstream-frank-li-base-v3-0-b2b5221a8077@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: Ernest Van Hoecke , Emanuele Ghidoli , Francesco Dolcini , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org X-Mailer: b4 0.13.0 From: Ernest Van Hoecke Add support for the Verdin i.MX95 SoM mated with the Yavia carrier board. Link: https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx= 95 Link: https://www.toradex.com/products/carrier-board/yavia Signed-off-by: Ernest Van Hoecke --- v3: no changes v2: no changes v1: https://lore.kernel.org/all/20260305-verdin-imx95-upstream-frank-li-bas= e-v1-6-823fad02def9@toradex.com/ --- arch/arm64/boot/dts/freescale/Makefile | 2 + .../dts/freescale/imx95-verdin-nonwifi-yavia.dts | 21 ++ .../boot/dts/freescale/imx95-verdin-wifi-yavia.dts | 21 ++ .../boot/dts/freescale/imx95-verdin-yavia.dtsi | 217 +++++++++++++++++= ++++ 4 files changed, 261 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 10417fc895de..5bee7c83a724 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -501,10 +501,12 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dahl= ia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-ivy.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-mallow.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-nonwifi-yavia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dahlia.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-ivy.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-mallow.dtb +dtb-$(CONFIG_ARCH_MXC) +=3D imx95-verdin-wifi-yavia.dtb =20 imx95-15x15-evk-pcie0-ep-dtbs =3D imx95-15x15-evk.dtb imx-pcie0-ep.dtbo dtb-$(CONFIG_ARCH_MXC) +=3D imx95-15x15-evk-pcie0-ep.dtb diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-yavia.dts b= /arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-yavia.dts new file mode 100644 index 000000000000..4f7b4e3a518b --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-nonwifi-yavia.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/yavia + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-nonwifi.dtsi" +#include "imx95-verdin-yavia.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 on Yavia Board"; + compatible =3D "toradex,verdin-imx95-nonwifi-yavia", + "toradex,verdin-imx95-nonwifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-yavia.dts b/ar= ch/arm64/boot/dts/freescale/imx95-verdin-wifi-yavia.dts new file mode 100644 index 000000000000..43d35b770db2 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-wifi-yavia.dts @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/yavia + */ + +/dts-v1/; + +#include "imx95-verdin.dtsi" +#include "imx95-verdin-wifi.dtsi" +#include "imx95-verdin-yavia.dtsi" + +/ { + model =3D "Toradex Verdin iMX95 WB on Yavia Board"; + compatible =3D "toradex,verdin-imx95-wifi-yavia", + "toradex,verdin-imx95-wifi", + "toradex,verdin-imx95", + "fsl,imx95"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-verdin-yavia.dtsi b/arch/a= rm64/boot/dts/freescale/imx95-verdin-yavia.dtsi new file mode 100644 index 000000000000..6403ae584e70 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-verdin-yavia.dtsi @@ -0,0 +1,217 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * Common dtsi for Verdin iMX95 SoM on Yavia carrier board + * + * https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/yavia + */ + +#include + +/ { + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + leds { + compatible =3D "gpio-leds"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_qspi1_clk_gpio>, + <&pinctrl_qspi1_cs_gpio>, + <&pinctrl_qspi1_io0_gpio>, + <&pinctrl_qspi1_io1_gpio>, + <&pinctrl_qspi1_io2_gpio>, + <&pinctrl_qspi1_io3_gpio>; + + /* SODIMM 52 - LD1_RED */ + led-0 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <1>; + gpios =3D <&gpio5 9 GPIO_ACTIVE_HIGH>; + }; + /* SODIMM 54 - LD1_GREEN */ + led-1 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <1>; + gpios =3D <&gpio5 10 GPIO_ACTIVE_HIGH>; + }; + /* SODIMM 56 - LD1_BLUE */ + led-2 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <1>; + gpios =3D <&gpio5 0 GPIO_ACTIVE_HIGH>; + }; + /* SODIMM 58 - LD2_RED */ + led-3 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <2>; + gpios =3D <&gpio5 1 GPIO_ACTIVE_HIGH>; + }; + /* SODIMM 60 - LD2_GREEN */ + led-4 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <2>; + gpios =3D <&gpio5 2 GPIO_ACTIVE_HIGH>; + }; + /* SODIMM 62 - LD2_BLUE */ + led-5 { + color =3D ; + function =3D LED_FUNCTION_DEBUG; + function-enumerator =3D <2>; + gpios =3D <&gpio5 3 GPIO_ACTIVE_HIGH>; + }; + }; +}; + +/* Verdin ADC_1, ADC_2, ADC_3 and ADC_4 */ +&adc1 { + status =3D "okay"; +}; + +/* Verdin ETH_1 (On-module PHY) */ +&enetc_port0 { + status =3D "okay"; +}; + +/* Verdin CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Verdin CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +&gpio1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ctrl_sleep_moci>; +}; + +&gpio2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio1>, + <&pinctrl_gpio2>, + <&pinctrl_gpio3>; +}; + +&gpio3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio6>; +}; + +&gpio4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio5>; +}; + +&gpio5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio4>, + <&pinctrl_qspi1_cs2_gpio>, + <&pinctrl_qspi1_dqs_gpio>; +}; + +/* Verdin I2C_3_HDMI */ +&i3c2 { + status =3D "okay"; +}; + +/* Verdin I2C_2_DSI */ +&lpi2c3 { + status =3D "okay"; +}; + +/* Verdin I2C_1 */ +&lpi2c4 { + status =3D "okay"; + + 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 I2C_4_CSI */ +&lpi2c5 { + status =3D "okay"; +}; + +/* Verdin UART_3, used as the Linux console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Verdin UART_4 */ +&lpuart2 { + status =3D "okay"; +}; + +/* Verdin UART_1 */ +&lpuart7 { + status =3D "okay"; +}; + +/* Verdin UART_2 */ +&lpuart8 { + status =3D "okay"; +}; + +/* Verdin PCIE_1 */ +&pcie0 { + status =3D "okay"; +}; + +/* Verdin PWM_1 */ +&tpm4 { + status =3D "okay"; +}; + +/* Verdin PWM_2 */ +&tpm5 { + status =3D "okay"; +}; + +/* Verdin PWM_3_DSI */ +&tpm6 { + status =3D "okay"; +}; + +/* Verdin USB_1 */ +&usb2 { + status =3D "okay"; +}; + +/* Verdin USB_2 */ +&usb3 { + fsl,permanently-attached; + + status =3D "okay"; +}; + +&usb3_phy { + status =3D "okay"; +}; + +/* Verdin SD_1 */ +&usdhc2 { + status =3D "okay"; +}; + +/* Verdin CTRL_WAKE1_MICO# */ +&verdin_gpio_keys { + status =3D "okay"; +}; --=20 2.43.0