From nobody Tue Apr 7 13:11:20 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 2823835F18B for ; Fri, 13 Mar 2026 08:58:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392291; cv=none; b=bC9OWgf3W7CTfmpuSn6g1hVUBw2qaWOoO1OBQDfWFD66JZFnlWOZev/DbrM8F2Wf5aV4Wd+WxE9EGBoPW2U3O/bPZ/8qkG7PXYaqVR6shZRz7n9zDMTejZnjQtXj3tgFPbgOUGNzWR+eXZwOeh3xartrwdUyiT6ccELFkxU/cH4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392291; c=relaxed/simple; bh=fIp545uC/6s05hgZyyH4DAcj/j/E7s0ZlK/E2cI6R/s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Q+ptwf6AMLIVV4I/wpN5+LNDSm7XbuCfLPVjOA3lkXEJXwoSb3wekAp0r9vaJJV63dnJSwXD6gzcYlmooFp8D77ebNB6nn4a6Og85rkVFFL0HI2Ip9vSO6n14meNgFlh6JNRG6VPJrq5pXIk9A8FGCTNyBtDlnCGyVJu/4e4G68= 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=jZwfzOor; arc=none smtp.client-ip=209.85.128.47 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="jZwfzOor" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-48532925a4bso10111325e9.1 for ; Fri, 13 Mar 2026 01:58:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773392284; x=1773997084; 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=NpK/7gAydfr91Prnv9s4l0pBpjIN4z4bMzbmgBzMg4M=; b=jZwfzOorieQArGg/iqH644vL5bRqEx6qPkv/i/pyX4d+mrjHlp+RKDrdUg9iAxRUwU B0ZS1oDCazbDGQR9YWFzGL8o05L06BFauZ0WRKkk7+oTHxvaMoouuztpN45Q1b6hpyWg DLbLg3rv4i14KgpdaD3mfQpm4tYxZzM3j7hHVspSBR1QkYBfKV5vq0FM7TPBQdJfpsix 6SAWIHaDwygyhVeoudF5kcxcjtsmya/VXpo7Y17X7bk0KsUeN36JLwLziE09zh7rDyPb TfC39iDcaN8NwIL0KG7iUPHeHT4OCSrIuRCcWNjHeOyWUdQrqKxMbr8ENRAuTOYOC9kR tZwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773392284; x=1773997084; 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=NpK/7gAydfr91Prnv9s4l0pBpjIN4z4bMzbmgBzMg4M=; b=Y4J59Aof2AUfdc9t0ZYZ3y9EA2HS5eeeqoduXShKg+JSeH4r4vCNybPx0qjRYH6RJ+ jVecrihQxnhayQMP7kU8/Oq/7p9of/qpH+UaUyh6EbpvfSv7qheWhKJOPhBbgtO8Y+lJ Ep3HMkzp7zezoG+iNloYkvZMH9TVrUJ3LqQT6MFGt565u3ruEys97mFF0AMtC4o2fNi3 miVtntvypNHriUgDsoyqPqWii0PA6xtdFCk08ctwOuXoSvHRlsqX4gWaG98eqgEG+i2I Z9Url/rE6uEQFTjAZRXaovQBYGDXR7s2Y4vrMGm5thdLPCDQbn5clTor7jl59v6xY17t 83vQ== X-Forwarded-Encrypted: i=1; AJvYcCVnbKV+lKAvZNjbr6Rh/YDL3nHQhft5F8vvRTRVhhVJithCDZtMIMJGa/uj+atm+rLqSztR5SUsseBCbxA=@vger.kernel.org X-Gm-Message-State: AOJu0YxIcmSQa8DC9P4MeByY3OrHdAPQudLAeVCJVXH8sPsWCGugtQKC /PXD9uNcdoxUL097yCEWEUr92Ac3ej/GkFhwOhskiOgWAZEJxi2xOaZH X-Gm-Gg: ATEYQzyM7OhQFmzEYk9bRQvyyiN8MwLnBKjmiufdKgRe54ve2fiJzM6pt7/o2qA8TnL ltVu31hOVp3oTjezluWpXxEr7ts4IBs8JUByWkuZwmfN8Hb5RO5ouOOIzhubpf7NnU52mqKHEUR Bro7wMhmeGKF19MhTo3EW/JqXfffFETYEHsCPTwgMcUOiGIcxO3/mrk4UFpKA7xuzg8Mh/qoIPw 5EB8UhTIg6d0sbMdmOmoNaqis/SxJAMjCrO2EqpBvfabu+4VdV6zpMMQwrZ5Zc+iwz+rbmZywwe nrhDcQQoNq1uzJEadM+eFGLxcBHRggWctyT3bgjHKSJZ5M1ZQbmoE2SsqkN2lzTP0+q7FN6603V 2JKiAdDii0chwQ7UAAyYclSTns2ewjRzlcqWIJO272YsBwVr72JSJbH00FKVmIuk9QWQgfJMknG XpzXzt7vEEXiUyBoS1TE++pQteeHCXx9XFMu/d8NvkdmnDxHudFwmv8+QObGdKtrMRvWaR3usxT MVaBmz8J6QeOSgvVXONdUSzLvs= X-Received: by 2002:a05:600c:628c:b0:485:3b34:2f51 with SMTP id 5b1f17b1804b1-485566c9440mr34176885e9.4.1773392284100; Fri, 13 Mar 2026 01:58:04 -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-43a03cfd18fsm7663718f8f.36.2026.03.13.01.58.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 01:58:03 -0700 (PDT) From: Ernest Van Hoecke Date: Fri, 13 Mar 2026 09:57:42 +0100 Subject: [PATCH v2 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: <20260313-verdin-imx95-upstream-frank-li-base-v2-1-bd488be7c699@toradex.com> References: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@toradex.com> In-Reply-To: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@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 --- 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 Tue Apr 7 13:11:20 2026 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (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 277F73845B5 for ; Fri, 13 Mar 2026 08:58:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392290; cv=none; b=qeInXDrEeKufNEbVms51IyokNcZxeqrJM5OZNY4qphQxAHYJoHOVam7vRCgRQJwwxUk6rP0icGNEc8RWcNLdKJoLhpVxhtsqQqoF92W+m2QCIB92+1yrXwkGXTd8H3MMiebU5RQ+Db+qW+C3t233VWHG/eaxqPV5Qs44b+kcX4k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392290; c=relaxed/simple; bh=aKBccV537T2gUo0WuTW+yDOUKy4qzDX1AzMyAF8hg0Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DR7Nf03qjjOIT3GaOq+sHnNFx1zyuE4cGFSZh608wDdKl+XY52YS5kyhXGceGjrN+0jXNUq9eC3HZrZoSQi3/atmSEHbeRTbNNdxCHEJf6+HrkAlVkEz7hqSkwhJVJhtBUT2ryOnL9uHhaB/vvjr4GUjNbD1lbuFubGUnwVYw9o= 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=X+EFULaO; arc=none smtp.client-ip=209.85.221.53 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="X+EFULaO" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-439b73f4ab4so2211245f8f.1 for ; Fri, 13 Mar 2026 01:58:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773392285; x=1773997085; 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=G7eBaCyxDwmoR6HcZf+f2g8izXIIe4W2eOjOKaP+Bsw=; b=X+EFULaOcmtI02SP3i98uJVO/+rmp367CnRunea1GufHeN+Jht6Fa+vD4WuNhCHyUJ 23uS6Duf95HDknZr/T5NCy087o3UXA71Qf1Vjfkz+ti58LD4DJu9+bAmq80v87ROjykG BR1rQqbfraDQAiGO7R0zMaZFcMVqlSNhyb6rcaFTJCtMKENx86BO+zhvFYrc0VA0aqhp 4TvpHHWJHa2SvxnWD1zasTVABLWOWiJqzw/Mw0Ihb3JoM0P6ymQROtdQHV8yHLsmkzm8 oS01AlTvOVEpb9O/z2oTcTugcx+ToESkWTiaOj/DXxSEol5Q95g91x2hoXwHWJlodQSj eWlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773392285; x=1773997085; 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=G7eBaCyxDwmoR6HcZf+f2g8izXIIe4W2eOjOKaP+Bsw=; b=fmyfvBs7eYk+wBucbVEneR0ECcvkfkwf0ilrf9FPPSA1x8bNMK2+GS2E7BToIclNG8 PT+q4w3JRfA3qmjamKdoRSSI0id/WhhjFpKWJTWgNs67CI400c9bk3/YglGddQNzoxUH gLpB1kUaEpBczlyKv9z8PyrFvvXxOyJ4BFyLa1WMBmcqLsrSZAf0bJ4qQZkIwD17/Z+t XzQwXoNArp8VeKfdlN7VD2on9kQQGXSwffJ4eDrzxkHgsmT4ovCgVTqy46VdN0OOE0kR FnX0untbQBGZwfXpWpSp8i7cyh6qCvAzg0eHZ2FvIMwcW4I3NH8xd6xOKVliLW9JBsi6 2mLw== X-Forwarded-Encrypted: i=1; AJvYcCU1SbCdxKrZfl1rZ8SBxt5f6YDggvVuovsWxSP7L9/s4dElfQDDDPWcD62yZye1PFt8Pu+mWNhKw7BxQcE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/6pdR22z/L2pHL71Uctw7s6MDREPzc+pypNaFRxszCSHy6Kow CNE7TSbaYTb75RWBVjfyZUONcry12TsFEJMTco7bTkrRiJHs/w9jBg43 X-Gm-Gg: ATEYQzx1SHRm23mP/Fksc5TjfBodml4WXC+qUSOcX7M1w8GU5+lfa7wNefNMkLs/S3X ZdkBrNqv5nQ2eid8euPzttiSTxdpSJlXA1lxXw6RPpGhJRDLg/3RxqgqOEUBk71xSYMnKb3XRvb N7nm3G3tWSj+xhvp8oftg1kul3nKarra4LbhpPrVWByxWxdbDZBXAJIsnFbv+UOmoJD5LCjMoFk pxLGVZOiaEPI4A6R6bAb7dcH7fYpGdrHdLxqhbPvWd0mqEpcMldgXgYAT7hQ+JQRUANsNi1VpEG 13K4QTzSOVQWcCklkV61wXd8UJylCmmn0VQ1nb5dqZwqoJ2wndDxUfpehvuS1nrB2Yyab1levfm KA+vtXUPOdScUiVO6+8k2MEBR+2S+P92wUy6sQoMocjfzeE0RwVzp5e9AV0eo5/gxMr/js6TGf8 ZaeHB4Jcy2Tls462Eb4uVXEsmQBUhyF2wOs0cCOVADV/Opto1H3yTPe+4rLvfT2FvMSQaRT+yMS DP2IGMOFVLwKLrO1KwfIv+WV2A= X-Received: by 2002:a05:6000:26ca:b0:439:d752:8bf9 with SMTP id ffacd0b85a97d-43a04dd51e5mr4852617f8f.58.1773392284971; Fri, 13 Mar 2026 01:58:04 -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-43a03cfd18fsm7663718f8f.36.2026.03.13.01.58.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 01:58:04 -0700 (PDT) From: Ernest Van Hoecke Date: Fri, 13 Mar 2026 09:57:43 +0100 Subject: [PATCH v2 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: <20260313-verdin-imx95-upstream-frank-li-base-v2-2-bd488be7c699@toradex.com> References: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@toradex.com> In-Reply-To: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@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 --- 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 e0738525d37e..12cbb60cb0cd 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -452,6 +452,8 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-19x19-evk.dtb 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-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 Tue Apr 7 13:11:20 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 91AEE387572 for ; Fri, 13 Mar 2026 08:58:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392294; cv=none; b=YcvGzjKOCiDEOdBiTlQFUrkOxlAa4XNgYytyyDrvGwNQieLJmwX/zja53MUefKL2HATfuAyZgN5kk9k0WBK/UwqlubsNkXM1mz8bt3vNMtTcihBbWvDnA28FwSX/qDl82jBYfzH5MoScb1Wz7DkDAzcM1L1izizlBEHqC0U7FiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392294; c=relaxed/simple; bh=w228hThsiVYRbscFhzc+2oD7eXBShJY24ORQ9uW9AFQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l2sFWMh0yE5GwctD/pQzZ6IUzsK0yUO44GY01Vy0ozgmJ4rwWUGQZYk71RklYqZblbZLgnP6cJMLFpMXoPIyByKX9pr10f+Fv3Eih6pYaXIsD5QZYMZpr6XAPkzCqHyMLB1noEftx0DkEu38Ojlm0cqdwL4Sq2H6AnRgz3nll+g= 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=HPElquvu; arc=none smtp.client-ip=209.85.221.52 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="HPElquvu" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-439cb5af25bso2057107f8f.1 for ; Fri, 13 Mar 2026 01:58:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773392286; x=1773997086; 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=wn/UD6BZCdexx1c4zCWwh2htyXc5RV8C9vfJwOLQF/M=; b=HPElquvuePcTDCgoaMqfoYRZNIpcibvQd9SdJxdreJ5uC39s+UjWC7Tx10oqyw6X9f PDQIDGc99vJL5JHlWMoWOTcCpsfznrt2qNlASlao54t3b8YqCRvCzmSmaIiZA9RphdP/ H9L4ccIdOVrzmM2B9Qm0Tk3vMQ4kSM4gTS5C7xwCtD4oCGKd71qSfqu7J/3elCKCjfj2 wi8lARcM7l5lxX5+N7JXCEMySvj/++Jo74xDpv2CL7sBkxtyR3fpOheNCfkAvgDl4rNI Y3JcmZn5U0wO2N8luDJWLJGxDuPQcttwMHK5L/McTKeKMRvJS4oiSByLholchfngzbPf oV8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773392286; x=1773997086; 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=wn/UD6BZCdexx1c4zCWwh2htyXc5RV8C9vfJwOLQF/M=; b=aAYnTYtmi5t0NNliSgFW37ndx+VP5PAoHxvoCTWIfGGySCDrnw4ntJ53wyloFxdfc5 eFGvZXhObTzWS8b4qxLI3gyE1I99KrkKZdb8nSl3vNIHaL+nqxlcjMswjP/ZyLynntZa 8hs8teB1z6SAyqeGqm1QTf1Kd0eI+5yLOlMVLOSzPAmhrU/jYJ03SOtlbPfBOte+nFQA DaEEIbhwf0ivcwAnWV9NJmaqkRXhKGJQkGX739sLfgjI3us2GccDN/M4QQnwEMJJ46Dv mwKrmLLtpj9nSKRjOO7vO/1mO6N10mxlRNfsY7mzKBzCzYRTS9F3XdpPjbqbFu3v0P/V RD9w== X-Forwarded-Encrypted: i=1; AJvYcCV2U85XhE4ycxqQEje17dhjjwEG4CuExeW4FXc7GJ0We7VUnZsCOR2oJ9CB0iEa3F4TiHQq4EVDyYMCiH4=@vger.kernel.org X-Gm-Message-State: AOJu0Yy40UPBpjK1X1dg2VcxsVtF6vxBECi4i3JrGvF/Sw6ZV0zO7m6W RB+EYE1n7OANtvhHOxsRwX8HoG2iMeA+VFnjur287RV0M40xWOR+dPZn X-Gm-Gg: ATEYQzwxiIaqDiW9HKcR1AcG7W/45dw1yJDRu0ypp9rfwMjlrYs7xJdk3DMneQ4pN8L L8XkBS5WmNXb8tm0oWN5uFIoG7Gm/rMQBHftQmRcoCZmpikJs2hl0/aMUXHYrxZcSosBCsM07f9 +CRcqmZYD3b6KZ4f0H5pL9ASIqs7kYE3bAMP5SlMXpQhI2sSW/FRPPsiWlJ8Dn3YwzPyYjl68vi /LaBAsqKN1hGsO3V+kvzm78pFmKPDtnx8zAZuhQB6grRrQJUSZHgnec3V3awOr2rRvXyBSldVD8 Btdp5uYURTgL4hDSHYjEP7zFXimCtncKGn+R3ijJnqXl0raQg69+KfAYcsn4ntSN1zMbFi9HDAz iEIugS8iza7nBHWvLWWIKZ65Oi7DMkGir2gmTMJfbKbLbEtxn+g8SSU5MM7cM5U4ZOhvR9OVRE+ zyrB+ZPcZcleMW6kS7ql/MNkHJnn1k56MKy/3rrTDHls03y7stAeGjc17HuR14leVwyxT7em4w5 aL6s9xXYakTOq33Pyd9XYbIXFc= X-Received: by 2002:a05:6000:1ac8:b0:435:94c1:3714 with SMTP id ffacd0b85a97d-43a04d130e8mr5113241f8f.0.1773392285759; Fri, 13 Mar 2026 01:58:05 -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-43a03cfd18fsm7663718f8f.36.2026.03.13.01.58.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 01:58:05 -0700 (PDT) From: Ernest Van Hoecke Date: Fri, 13 Mar 2026 09:57:44 +0100 Subject: [PATCH v2 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: <20260313-verdin-imx95-upstream-frank-li-base-v2-3-bd488be7c699@toradex.com> References: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@toradex.com> In-Reply-To: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@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 --- 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 12cbb60cb0cd..952268856cac 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -452,7 +452,9 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-19x19-evk.dtb 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-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 Tue Apr 7 13:11:20 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (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 E807A38836A for ; Fri, 13 Mar 2026 08:58:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392295; cv=none; b=JCK9Lz+4ap2dF4tpRwzasxHqlcX6eE/9/AgmCL58TUu97ww4Ydx0P8MV1g+EBZT6n206X2dzBIYBLo1UO2DzNGWfQBrvl/F33N+4iTDv3cPfH8Y1/LsuicJM0BYiftIE8E1wMFI6PkDCr+GG7DTcqWhuAu+MJgn74JotRGzHOQM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392295; c=relaxed/simple; bh=QH8eynlXy0gIgK+DynmlxfpO3Z4rjJECQZcK9S7Lhd4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M5tPp/FtLmGbL/o7FSw7MPEI/k200O6yGSkETbcnLmXZI0DoYbFiIr7lf6+qABjshVjXyaTjPnZoB1MFbJ65tJ7xT5ffGgU4Rl4/tUneDVT1l6vo81DnvdzZC5n+jpSbohUwHnoFG5QrSgwocUzKxQpQsqGG5+J52B9bemLebt4= 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=AtkcNwEI; arc=none smtp.client-ip=209.85.128.53 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="AtkcNwEI" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-48374014a77so20083115e9.3 for ; Fri, 13 Mar 2026 01:58:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773392287; x=1773997087; 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=S0Hl18632nmlHwEYEWXxe2Aq6+IeIf7Mul4XFwH113o=; b=AtkcNwEIaOIvETFV9W+X4/JlVscUlDKEr9+hrly5jd9rlj9zaKtmTS7QguY5Sp78zd OOzjEqdom9w6T9EDFSatgRL6p779X3eMw/xwQHZuS5tXdZ4pIJPiLpE5vGdQlHUM8lSP vUxZOxrrvLzOJJY2eTNHb61LM7qSqD8MW24QcyAlNJ+oscidmXbKCc3+mNP6SwBp/ecQ QINIA1HVXnq3nbBzRah+vCGZEt5CYW5xd8Ox4Tq9FpxJyf7K3sE7PFPiLOiUfvJTTv4l RUcNKnzGhF5YTW2JtM203yJ4dRDxu0Fk+yuYHZ+ezZpezoNzHBh/PGC29M7oqUGCVUCD QzIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773392287; x=1773997087; 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=S0Hl18632nmlHwEYEWXxe2Aq6+IeIf7Mul4XFwH113o=; b=flLpiVGSEmAk8vpF7wQgi15Jhh9PDo3BkUgS52J9CDPpboxAZT2A9M1ewgKDqhXP9H +K/cwE5dZZ6tR/e5ftHu+66OS2ZpBPyKKSCQjsGE4hF1nnTa8FTq/pStaXdd+pw/Dt7S ob/yoNyWnEAcA3kQ6NJ6ljO2vhMRjdExcewzfjmVU9qlLiTu9fpWFPFadHrmpUgTapMl D9v6XlqsNadzzG1vpeFvZNbmGbqqBuCWvCXJVPWeBxSysfxVOp2ys404Vk5h/sBskQ18 htkxeQpUn64TqqDbDYNZggYQcC55PY0Nvfp6fw44PZX+STDGZBtKP90OLPLeyLSF8deh lrLg== X-Forwarded-Encrypted: i=1; AJvYcCUaf/2h8ER5fsmdOEunmiVBJF17E27lwv0rE8GtVPYGfBAYPd1svgy5r9UnvXYasCxkpeMoPVpBC+SJi9U=@vger.kernel.org X-Gm-Message-State: AOJu0YzOTfOS8Y+bIj2WDO1AiL9H0vVtMF8iYB9hhPX7xUrYxPIySD/l +1iyPhSsy2neCuxbFIm21/TR0V3C1XMej8u4v/nAUAX3y4dGsiLuMbYh X-Gm-Gg: ATEYQzybu/uzCZUEOePdB4weLxHrP9MEPPvLht+EHNrV2eIMTq302srLUviZLeMSs6B /5y+I7NJlj+0ujB+SnqctPAh+U4aiSVOv1K+rutF7cT2RBv1/fAJdRzbdrA7KSCwhWuSnljepya i5tQhYfCqV5JYOc6bpoVKsAcacmqooaISY/YN1vLjL1t+Hc89usooLqxZ1lCNLxPPJ7bxEbbsJJ NTi813e4NSUDp6UGcPuTw2napc3WQPqzDRo5XvQNv3kB34aX4W/TRE2904m4YgFnBwP8tcDdt7p w/bpjI7hAboPti7niX1v9XHvOCkS7Azrk1jiV7IQAnTzv1L3RSRul2HPoIoBztK8nURoTpzDYj/ G1w0YoL1p5FJtin/tqBzzRXCc3e8vBegNSGnVWTSHnqRM8g1/d5PgREN4UaKkGm8U/SuXwvO75d 87EXeEYpZ9GBPWYX/aAh/NjpclQuThG71BX7KSThcsUAhpyZ8dJSE5+Yxhq6uPqlNbZdDulZ6de YUwzonV9ElGlbLnccCVcXWjm/k= X-Received: by 2002:a05:600c:a45:b0:485:4006:960c with SMTP id 5b1f17b1804b1-48556702a7dmr36036755e9.16.1773392286808; Fri, 13 Mar 2026 01:58:06 -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-43a03cfd18fsm7663718f8f.36.2026.03.13.01.58.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 01:58:06 -0700 (PDT) From: Ernest Van Hoecke Date: Fri, 13 Mar 2026 09:57:45 +0100 Subject: [PATCH v2 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: <20260313-verdin-imx95-upstream-frank-li-base-v2-4-bd488be7c699@toradex.com> References: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@toradex.com> In-Reply-To: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@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 --- 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 952268856cac..34af11b1ef6b 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -454,8 +454,10 @@ 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-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 Tue Apr 7 13:11:20 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 71DC3388385 for ; Fri, 13 Mar 2026 08:58:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392295; cv=none; b=qfqZeqj05va8xenidRGBNskFS75r8r+iLYM0qfShhdUyiVGPUvnGkrfY5bXJyker2CBy0dH8D3ILzZsYWgU3q5XwYmQW3XoZLEa1th953cKoX+6baxR6qmGtB3EmHHy/dEuUoDqKc+E4eFrMm1fRw/u4ohCtnb9RkEBHtob/GJQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392295; c=relaxed/simple; bh=EPZn1W5hZeQNHYB/Ftln3HHD72HbRZouba5nrusOMig=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aQ1fOLg/gsJngmzuO1GYPypvjRr6MuyR71wI37hfm1lZgE6LE1nz5alNXL8sdI0FjzM0cduwLDgqM/Upx1KlvZ3nLSw9rSBUZMI6n1pKIhlGzwxTMz1FGpz6rvWYHLgO2uHv0qFnaYqeJX87xrzPULWEhW94gDvXEAU+J7njM6k= 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=Zp2T/0ba; arc=none smtp.client-ip=209.85.128.50 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="Zp2T/0ba" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-48539d21b76so13383455e9.1 for ; Fri, 13 Mar 2026 01:58:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773392288; x=1773997088; 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=zMXiZZ3HH6dJoAhlgKlj3UsaxgGuuhGNtyMC3OWYCtw=; b=Zp2T/0baT1CSUTu7YvdpDIXNGBghE2Jo05rlCZffqtpt+EcxHOB8mcqllrXXS4dFba 1HAEweUyG+1i3vcLPgV+zdufX47UwY6rNAT1sKVtbEin0x6uvWIYTREsSmrgnxGt5ghI 6idWcG+ViQoJChubWh+1QJqMzLJvut/ElPwS0uHV9hL04omnzPHGhHV9NFO5vedvWm7l IxV1yq7Rg3WoCCVdUwtRi+TsxiaNc54Dl3pyhzLoNCgnAC/+f28V3PeUEGIslpVV90Ch ns6BlewmYh0VwFKpPHCzroLIIGekjWo/P7KvYb8h2omlAKQb3R9cYLJ2qMMFGhaDtlUn oQqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773392288; x=1773997088; 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=zMXiZZ3HH6dJoAhlgKlj3UsaxgGuuhGNtyMC3OWYCtw=; b=U5DNrNBjVmt0kUEgFcyidOAB+lStiFA/AydEyT04jdopky6doG8x1lf2Jfg5x6NLle G9pS4fIY6sE/KKdk/2EpIqKR5ma7ZC0B9WIOZUeSd3Z9ObjY1jBrAXpIe2DgMOAbp3iq BeznPd2W4UdbtRFkcTV6rdwXSU5ONT3slNz973yHpMOSwt95e0hGwGZ+AHtq7QfOCdwk Ckz3HhoWcQ9CRXAW/IZ+sK8nrH6kwCqr3QO0S8jHSdWMkOZJiFM53B8sp6KfFilGNzcu vZtnRubSFmGBvlDUmd7zLZgEXF8HoSzvBnPuo4Z/DEU01c45DfRatEAInsLmrItCcVTS d1vA== X-Forwarded-Encrypted: i=1; AJvYcCXelZhM/fiCA85jaT9GBvm1MhuOjByNe+uA+8dJjA8vba7FuVDgYQuAWqu7YmcyYaGTdJAV3pd6rTPo9eg=@vger.kernel.org X-Gm-Message-State: AOJu0Yx0zxDeUm7avZ/YGviLpjGCwiPWaJuOJRKx9ziNFDyE8FVM8gLh 9s03goZQMNFZcrTVtbYG4zBp5WLKDSjPnRk8aGB2wStLB8SA/w9fzBs7 X-Gm-Gg: ATEYQzzUNl/knyhwY17KpgvqZVaEidK+AA0VB1U3qOjob3uMPiCJenlPMkNViqVaOvd J+t2yU56nO3cMbYy53C1WVidcbuGCc81wjemzZ1IA/yFxfC7UxWOn3z/MTuqs/+JUkZoP0oEYM0 pHylcjw/kzvB5OtGx7XGrKlF9mQyvv+Or5GnWOB1aHgynAURTDEkc+KH6tn3qoBXsS0QZaHESTh YP3lxGeW1niE6phOFj/r+9Nx8ypNkjqxHQkWQOAFZNCP5frg2wOqW7XNh2n2gbomeNHLz+PVHNU gEs8PWA+TeUC1UI6YcUSYo4ji3fwApRiUgXETud6Zt/VM2qXB184dT41lN9HSQEhYK/J4TkwKJ7 Z6PQj/+RjHCqT+e/ozipYTRgSIQOeF4h8sft8yIMyov5AuMFrh0XU1e3l6aIaOdhmsTSLhycmv7 2+ebWL8JiZCTMeQwnkN9strcPay7VXklhLI+/YjzEBzN8zCEj7Tc5jjPuXDZTb8cwfCppXQlI7p rU6dsImRRRC5NOiIe13Fgw6218= X-Received: by 2002:a05:600c:c0d1:20b0:485:3abe:ab86 with SMTP id 5b1f17b1804b1-485570ce1cfmr23520155e9.4.1773392287655; Fri, 13 Mar 2026 01:58:07 -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-43a03cfd18fsm7663718f8f.36.2026.03.13.01.58.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 01:58:07 -0700 (PDT) From: Ernest Van Hoecke Date: Fri, 13 Mar 2026 09:57:46 +0100 Subject: [PATCH v2 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: <20260313-verdin-imx95-upstream-frank-li-base-v2-5-bd488be7c699@toradex.com> References: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@toradex.com> In-Reply-To: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@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 --- 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 34af11b1ef6b..e3c34f8f40cd 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -455,9 +455,11 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-tqma9596sa-mb-smarc-= 2.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 Tue Apr 7 13:11:20 2026 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.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 7B00236C9EE for ; Fri, 13 Mar 2026 08:58:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392296; cv=none; b=XVihU60v2DL4QcHMeQrYvptwZtxJBupjQTUGBwIwe0YzFO9695uwpeg9VEFdSXyQZc18vlgLaUjhglMjK6+UFvFesVH0tx092XZL5qiV3+vFSlmrj5LjnaSNn4nybKALmdIKuuXnnXE0cmMMBa64fxJJZvIp6dy6dLqgu9Z6O+A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773392296; c=relaxed/simple; bh=0wJsLp5kvifdTNDu+96M8xE0uJtd8X+tuuiZQJbe7PI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=vBOeJ1zju3Y0yWwRdzGfZUvztMawzswjkNloG7AmwQQLdS++xYHJSUAe7JMXzUlW7OkaUD9neVEQP+C2b+MJwA35EOCEt6OoHeo+WuI1g/2SgScfOdfXsJkLFDva4xUqnTwbFb7obPaeF4gyDdYkp4+qykNzP/zcGeJ38/nQKWI= 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=jq751Tkk; arc=none smtp.client-ip=209.85.221.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="jq751Tkk" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-439b611274bso1234699f8f.3 for ; Fri, 13 Mar 2026 01:58:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773392289; x=1773997089; 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=sSAf/a2Rb2/FOYvdPVGSqhiOt13IM1Gi9djyH0j/h5E=; b=jq751Tkk2KqmL67ytrA2nQX+w4RjHzDHPoYWcLbjJJHE2wiYmt5Z/Lozi0C7VOfD2T 2NPnVlNJcusepoS9kijyawuKWZCnjt72uTNrzKOPrDD7AHCllm1fy5KrAUKse/m6eV+G gPJhoQpNczayzoERvJAMgPIBQCFBa50skN+j2z81dfIjSUcO+JhkCYWDpTUENgI6DF/K ZDk3QBBkJm1EHMC8fwfJGKfhOBaAV+47pKo26CQkKoPMrnaG6uvjym8VW0AHE+sE/f1X qGQBeD/ZBFZZHKLUdmujkFiYr5jHGhNpTLholXtArHF0zTzXjQ5bij7JtN2reH/1G2sN 7OTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773392289; x=1773997089; 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=sSAf/a2Rb2/FOYvdPVGSqhiOt13IM1Gi9djyH0j/h5E=; b=JwEOtlGv0shM9PUOqY9Xq4/0vfNc0uoTZbawrgiZ0iEqwk1+bYfgDu9eQMsffWBn9I uuIfOhV9XXaAB5EQAPr/wjldPT37IqB51bEzLwE7EcebVBbRsnHcrisX51HB/sX0ZPdO Q7H5wg2b4RKYAguz4pcEI0BvcHl1Ivrw9qE0WhVlGeDVlyDtYEnCoJnTaQYDjKOyi7qG O++EFdFsMk12DC6j5P+DK4R505ZwbxmD3P0k9hHdokxO02XYGGMHhiI3XOjLpzeP1aqF n1mcZmMqs7DI7oqvw+R45iXlqF9n5h+/ZG1usJn+e0/96CK7OijPnvZ+kUyCyEodmpI0 ejkw== X-Forwarded-Encrypted: i=1; AJvYcCWe6/Hce5tHLl5HvrY2OpcO9XPI3cZkwlcwJ/f39LPg4QEaEojdVDzCMXuE/RCP32o2iRMR6XPBSM4Q6zY=@vger.kernel.org X-Gm-Message-State: AOJu0Yz3ZoRiRoXreDvwR+gThTRCkg1ow+j+L3jHmaBcT+lXip9UDTGb cFh1t8VmFPKWl+loaAgQX/yRiQ5VL7xbf4r5AvT1J2nM8WsIRcPyaoWK X-Gm-Gg: ATEYQzw5ft+tZ3/VxRV02KUPW9+wEWxfpXtY09pHOqeVknKOkJvncoXELOxVBirrZiC AfBbGVuxKmJ4Ncs/AD/09hkx7xjdX3jgyQ03NS81HOqmrGelJvExLNGWb76wY5mtB64TEV6nGeU tTJQxoFRfWKncfBCK2emxjqq8FG4ZcXMnO6fewNZioAER9dSjMLIC3Uoj6XnD7rdQqSD3KiucAv +xUvhWKwWneI4w5HE24Lo3jW+HACRrmUFppqgylMb06yMa/A2Lg5Zk4iLZiIbuatfWzIf4ny1Zf h1EHBSx4M2botxOIU8plke3dxuthRBgyXSvBjhewcITkwMsfLSzjrdi9H6CDefovpiTd8eBsfO9 0BIv2THU9rrL1CD5iIKncqPwy6xh/KRIimqPqncm7OpDmADIA3Z9B65acq1NVK/xcUQBprXhyBc WAkl36MTSL5+tYsoBYlnFSIRdArMWsTfJQ2XYQgvKzi+nKIumgwcPle4Mu6WmVvxZchukl4WSvx ElOOriiQfvWKAOeXkh2vUBxXvE= X-Received: by 2002:a05:6000:248a:b0:439:ae3f:9405 with SMTP id ffacd0b85a97d-43a04dda734mr4789391f8f.59.1773392288730; Fri, 13 Mar 2026 01:58:08 -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-43a03cfd18fsm7663718f8f.36.2026.03.13.01.58.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 01:58:08 -0700 (PDT) From: Ernest Van Hoecke Date: Fri, 13 Mar 2026 09:57:47 +0100 Subject: [PATCH v2 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: <20260313-verdin-imx95-upstream-frank-li-base-v2-6-bd488be7c699@toradex.com> References: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@toradex.com> In-Reply-To: <20260313-verdin-imx95-upstream-frank-li-base-v2-0-bd488be7c699@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 --- 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 e3c34f8f40cd..48e5711526d6 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -456,10 +456,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