From nobody Sun May 24 23:32:09 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (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 5127F3DC856 for ; Wed, 20 May 2026 11:30:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779276649; cv=none; b=X1c2S2QmuM8mWHYfGb0RjlVbibk4bnr4IBkAir7l3rAoysxvID8bxwqF8WcMRvBPp4B+lRe/0wNJeDOPOstErIMdnS/ZjuJYgJJjCfbQYCit+twszVPao88aRF5+GOgRSrF5k8mzk1cmFF0yXuP+a7ahxBJEndS6qXpRdvTp4m0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779276649; c=relaxed/simple; bh=i7HpBJxWuy7OvuFde1Y45lZUPdSPRXHTDZiEPypnKuM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u3mdGgPOkUa8X3I1KVp1N88N0jenNdtIZA+XLDpbJM+bHRsmpaS+lRmBs37mQi8hM/Qw9PDgmNIK46FxCxcrbQxiEp+yDzJFOMXsLZGFKcKtqCwFKwRIBBqyxhvDBbL74RVGU3s9s/7nMy0ij7HidZF+y+A02fFOsKOpiPgtwnY= 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=n2cxeuCz; arc=none smtp.client-ip=209.85.128.48 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="n2cxeuCz" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-4891e86fabeso63029905e9.1 for ; Wed, 20 May 2026 04:30:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779276647; x=1779881447; 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=m/ucc97rappAXfofoT6AtjICBO6VsnKvFYY8oOP6sCw=; b=n2cxeuCzM4hc+pm5KBFDfelk+Mt+Dl/a8rb1uLQsxyR/CLJvDxHcES/C6SpwHhpTPc XdJoSyt61D6yuHqs9wu16zo9RdDqCoB2E8vT4KrDqnkgUae8EsIh3/ZVwWKaHCZBRE+f FpFlF6fIplA7crlfe9pzL2CrBIOLzewNNIvgkYDDXkvHQEvLYckkrgPLlk5yESMHXMUR L8W0+AUf/owCZrkgU2Sr201q0yOBb9UNeI3W+OWfg94IIPXW56abasmARRJqjXvfstqx /Pvwc6tZVRzE8lpDF3PZPqcUlasflB5YQ3fCZFPDKEwHOwO8jZN6ni656pfOQtcjdP9P aUvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276647; x=1779881447; 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=m/ucc97rappAXfofoT6AtjICBO6VsnKvFYY8oOP6sCw=; b=Tg1/Ib1zTa40i0nxATYVnQ2VLS+gAAand/Yn63mh65NcbMB1KRluJvMKNVHVmYvrHU 7peliM/6e1J3GKx6qhwFVsrTyX2hBBL237J+iJv7v5mVOoLEEVMJ3kp1/tNcwa2I6Hx5 El0gPqXWe8ZjgOSNQcBhCQFbnC9da5FcORvyAPpxzhTeXoTxJ6MidoyiCxbfFH7zXA8o 8ajXiv8455PHf91DxKRc99ZgbbeYvfxcExVRBffUzqoNP8DA5OyjzWw0mcS6QVuGZ4Uy UrpemKPPL8SpyHYm1YTKCbtggcKQrvY8RqNag32p1yVm21X4hcLzdc6batBhwq8bZ+Yw cmaw== X-Forwarded-Encrypted: i=1; AFNElJ9H9UEioPsRAe66EBt/Cq/4txwrgCYIz2twlvCj6dSLJL1VWfL0C19s6D51GY56oh/VcD7f0+rBAAISezM=@vger.kernel.org X-Gm-Message-State: AOJu0YzxX+7L3cN+1er8i+AlkONszCjksfdjrflcfh8SbauqRbotS43h 96Sh7z1HoXlUbi7duiDYO6KfS3TA6jIebRJI0JGo5Z3Whloolgn80eVdp0hp8oZt X-Gm-Gg: Acq92OHKnFVE8GOarkeRZj65MViifovW2u3QhSv1G5JmSkru6ZVlN729wE8RM4bBRFT c1BiMHcISV4Ho1lbMvvk9gWoda1iulocuPDgT6Kl5Kfx+pZSX9vGv9H7xJJ1xwCBGfjMV7yFH0T wEZyO67Tvi6RylR8HVDQDwtOL+5lZkEAupOXvOUJM0sL+p00DQM7cUKPI2l5CJ0syFmjhaIeIN8 vfD+wYF1FbqKhrXJUojj8M7USsyqfYDNfJsoiUswFVg0EOwhBURfWaDV+KRAh0uQHEPdjXUjtPG CQ33QwGXWgLjEkSqPSRoBnaJ3k5Z/w5VkELTqea+On5/jH6SaT+30u6vCpUDs3ThZFsQ2Mu4rQ5 l63Z9e31UZ0bOgpCJbZBmehGwE2uR6eT5v/k14ReptiNnyCxtuX5/6DQKH9FzjIrQUcIaU9+crN l9HIYcXn5UV43wj25VamgBnVfq3FgW9hUmER1oakjtZsTZ9mU/63sDB77fwBfU614FOQSElwuDJ +xnDicyCuc1RNAzpgcwdzdtX87ZljTyYIcXYkBUayRc32RWI+Dy2S0NZJ4h2gSNI7sUnFlFHFKq MA== X-Received: by 2002:a05:600c:a11c:b0:48f:81ea:ebbb with SMTP id 5b1f17b1804b1-48fe60e4ddfmr269535155e9.6.1779276646522; Wed, 20 May 2026 04:30:46 -0700 (PDT) Received: from [127.0.1.1] (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48fe5ab3977sm430363315e9.9.2026.05.20.04.30.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 04:30:46 -0700 (PDT) From: Franz Schnyder Date: Wed, 20 May 2026 13:30:32 +0200 Subject: [PATCH v2 1/3] dt-bindings: arm: fsl: add Aquila 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: <20260520-add-aquila-imx95-v2-1-06424a51e33a@toradex.com> References: <20260520-add-aquila-imx95-v2-0-06424a51e33a@toradex.com> In-Reply-To: <20260520-add-aquila-imx95-v2-0-06424a51e33a@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Francesco Dolcini , Franz Schnyder , Conor Dooley X-Mailer: b4 0.15.2 From: Franz Schnyder Add DT compatible strings for the Aquila i.MX95 SoM and its supported carrier boards: the Aquila Development Board and the Clover carrier board. Link: https://www.toradex.com/computer-on-modules/aquila-arm-family/nxp-imx= 95 Link: https://www.toradex.com/products/carrier-board/aquila-development-boa= rd-kit Link: https://www.toradex.com/products/carrier-board/clover Acked-by: Conor Dooley Signed-off-by: Franz Schnyder --- v2: Added Conor's acked-by v1: https://lore.kernel.org/all/20260506-add-aquila-imx95-v1-1-69c8ee1c5413= @toradex.com/ --- Documentation/devicetree/bindings/arm/fsl.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation= /devicetree/bindings/arm/fsl.yaml index 59f7f168bf7c4..ea4cc98dadebc 100644 --- a/Documentation/devicetree/bindings/arm/fsl.yaml +++ b/Documentation/devicetree/bindings/arm/fsl.yaml @@ -1507,6 +1507,14 @@ properties: - const: phytec,imx95-phycore-fpsc # phyCORE-i.MX 95 FPSC - const: fsl,imx95 =20 + - description: Toradex Boards with Aquila iMX95 Modules + items: + - enum: + - toradex,aquila-imx95-clover # Aquila iMX95 Module on Clove= r Board + - toradex,aquila-imx95-dev # Aquila iMX95 Module on Aquil= a Development Board + - const: toradex,aquila-imx95 # Aquila iMX95 Module + - const: fsl,imx95 + - description: Toradex Boards with SMARC iMX95 Modules items: - const: toradex,smarc-imx95-dev # Toradex SMARC iMX95 on Torade= x SMARC Development Board --=20 2.43.0 From nobody Sun May 24 23:32:09 2026 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (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 8751C3DC4A2 for ; Wed, 20 May 2026 11:30:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779276653; cv=none; b=MbXXyfXZYfePyR/eu1+pIQYX5i4pFWPlq3c67wmhwvxHf/7KuypUEYkVdTN0TEpPboavgW7LMYyYKdtYHZ5tOT/QK+NneIEeTWREM+5AYotV7LQocHt5ZCPKsn/0qC5qX7iBXbThb5tMaL/s+mRUzxyxC/seyWEtnxlq4GZGO2Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779276653; c=relaxed/simple; bh=C/lIptQ0d+TLDFlGcLld08jDoGZH1VJlpl0HDyYS9QA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bJSZ3jdaNOhXIOYZpCELPROe+mtCgHvmLxPScJ2T/35hZxJiUUCapAiUyxVug0RVqRTiDrx/ArcukBxedGsxxR74YOgq4w+CuO8QNWguaPUhK7JOWtsR72oMP0cGcYNity2Xdqe64n6G9riS1ZhdA2Rf7/fEi6XB/1guqHM9sOI= 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=oE3cKtMZ; arc=none smtp.client-ip=209.85.128.49 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="oE3cKtMZ" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-48e6db3ff7eso24204905e9.0 for ; Wed, 20 May 2026 04:30:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779276648; x=1779881448; 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=5xRnzs65pzDIVxrMMt2p0oRpEFqJHrUZhp02yBTmAX0=; b=oE3cKtMZEjlvQ9HQO0ZPklT4Z+cW/1y2vL1MCVLNM3Dx3mo69xvnzpqoRVkqpB/Pnc CLkM3CMuuz7CUDgzOLykE4Jmk93C4Ddhf7+n3CFEOvwgdDkzFIJXvD+aRq0C5BqESBHi RNFBPRU/heF7syReguWT6TJmC7kk8jj0BOJas9mVIYiO65qSclw/ozdS/PBeS9r3yksU wdn3xSDNcAgovuTDvrOn8zHtxBNvY022SC9TT+bvfgYKBJx2niIIv9+/cAvNguaqYLhg Rz7Qs7Ys2095WmUCLesNI6sHsanCE+/kdoFj/r209kCEcbnbdG1yXXij0JpNwVzkOpew niTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276648; x=1779881448; 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=5xRnzs65pzDIVxrMMt2p0oRpEFqJHrUZhp02yBTmAX0=; b=sZAQHoMeBozJOGmZRXdAc+aHNVjK6u/QbaPw953hTIm6VDzEgayIyxso1Nnv9uxR8T Wq+MhbXQx7VBwBYBN1RAU/6CY/1EaCkTMMElww+0J4m8tfumnCbc8CwaAMO6mqFU9LmX BdCS2vbMH/9vS2GaL5c7g77TY+arHi0c7StgYxz+X1x7eu9naz2nSp2kzL+6KjXSfhVc 4NJl3Y5ZpWHLja3X8jy657NiaZ1TxN9a+/jlR7pVSu93+1gJk5trKHJJb1AgPjh/8olg hCUcoe40/Q8WY6T5DEpk6aptVtmrYfkWt0y70eFEO/RKCYdnbQ1u1JWdB2EKv+SAKotK sLxg== X-Forwarded-Encrypted: i=1; AFNElJ99WFZVPpsn7ZvMv/eSRT9hkCY5KFO95CK+INCct+UFCuQmJpByjY04Q0O7HBro0vLpZE5px+cpiuofO58=@vger.kernel.org X-Gm-Message-State: AOJu0Yys2oEkKENKQTB3j/O98r8kiDZDARWzH+Oz/TVJLOiFxJ7436Pz 8VUS5ONgGE9tDf9EbBip7UFY2yTfV5UQewO+8bQ8sz/6sewPBxGrVnQu X-Gm-Gg: Acq92OE0MoFkO/AZD/AD5JHC7tey0vYJC9SVGpHA+IW/Ve1tZb5z1ONv+1c0XTbLvjS yRgsk+RslrpGks59Y8Hl6shHA9mWi6dYgRqQdsceZZTp5NgOxIfWC2NDD4WzMJ6KuuRlc0voEjm Jbi0LaPxdD8X104tYOGItOw38Z9V6p4Droi/+FaQt/JsobVUw85vXRrrLZDOfjQfyvx0ADnhEHB p1mbSNnYUv7s4mXBTe9Z0qLragFOC+thTQfvszpgM+CRbn3n5MAMVHga5le6RLc4nwEXX6fuwvT ZU3o+TC0vhulz+41PTO66p81uQHtZF1NHKnxoqa0293mZ13waUs5NZq61gs+SgWuQofB+REqjRG 5tOcgGVw0ZLssFfMJghwahn/nKyqiGjif8+KQhvINbe+olchL/B7X/s6p/A2E36/GW5oACCC7x9 r1vdie2MetZB0JJHzdVLBI/kPFniSseQRj1vs0grysAOohbQiK4b7/hCp/sgdwvTMhSKSTaS+4d Sx4vUpotp1B+cTsihs1KxadRjWQgNDuFOXKO7SnpyYXYfxph1kymo1nkHDFk0QsmOl8zxRqR/M3 Vg== X-Received: by 2002:a05:600c:8599:b0:490:778:4fe8 with SMTP id 5b1f17b1804b1-4900778509emr200787495e9.25.1779276647695; Wed, 20 May 2026 04:30:47 -0700 (PDT) Received: from [127.0.1.1] (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48fe5ab3977sm430363315e9.9.2026.05.20.04.30.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 04:30:47 -0700 (PDT) From: Franz Schnyder Date: Wed, 20 May 2026 13:30:33 +0200 Subject: [PATCH v2 2/3] arm64: dts: freescale: add Aquila 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: <20260520-add-aquila-imx95-v2-2-06424a51e33a@toradex.com> References: <20260520-add-aquila-imx95-v2-0-06424a51e33a@toradex.com> In-Reply-To: <20260520-add-aquila-imx95-v2-0-06424a51e33a@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Francesco Dolcini , Franz Schnyder , =?utf-8?q?Jo=C3=A3o_Paulo_Gon=C3=A7alves?= , Emanuele Ghidoli , Francesco Dolcini , Antoine Gouby , Ernest Van Hoecke X-Mailer: b4 0.15.2 From: Jo=C3=A3o Paulo Gon=C3=A7alves Add support for the Toradex Aquila iMX95 and its development carrier board. The module consists of an NXP i.MX95 family SoC, up to 16GB LPDDR5 RAM, up to 128GB of storage, a USB 3.2 OTG and USB 2.0 Host, a Gigabit Ethernet PHY, a 10 Gigabit Ethernet interface, an I2C EEPROM and Temperature Sensor, an RX8130 RTC, one Quad lane CSI interface, one Quad lane DSI or CSI interface, one LVDS interface (one or two channels), and some optional addons: DisplayPort (through a DSI-DP bridge), TPM 2.0, and a WiFi/BT module. Link: https://www.toradex.com/computer-on-modules/aquila-arm-family/nxp-imx= 95 Link: https://www.toradex.com/products/carrier-board/aquila-development-boa= rd-kit Signed-off-by: Jo=C3=A3o Paulo Gon=C3=A7alves Co-developed-by: Emanuele Ghidoli Signed-off-by: Emanuele Ghidoli Co-developed-by: Francesco Dolcini Signed-off-by: Francesco Dolcini Co-developed-by: Antoine Gouby Signed-off-by: Antoine Gouby Co-developed-by: Ernest Van Hoecke Signed-off-by: Ernest Van Hoecke Co-developed-by: Franz Schnyder Signed-off-by: Franz Schnyder --- v2: -Reordered iomux alphanumerically by node name -Changed Francesco's tags to have the Toradex mail address v1: https://lore.kernel.org/all/20260506-add-aquila-imx95-v1-2-69c8ee1c5413= @toradex.com/ --- arch/arm64/boot/dts/freescale/Makefile | 1 + arch/arm64/boot/dts/freescale/imx95-aquila-dev.dts | 398 +++++++ arch/arm64/boot/dts/freescale/imx95-aquila.dtsi | 1160 ++++++++++++++++= ++++ 3 files changed, 1559 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index 513f61eb27b85..c8697b6ae01c5 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -523,6 +523,7 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-15x15-evk.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-15x15-frdm.dtb 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-aquila-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-toradex-smarc-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-tqma9596sa-mb-smarc-2.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-var-dart-sonata.dtb diff --git a/arch/arm64/boot/dts/freescale/imx95-aquila-dev.dts b/arch/arm6= 4/boot/dts/freescale/imx95-aquila-dev.dts new file mode 100644 index 0000000000000..b2a53847d5079 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-aquila-dev.dts @@ -0,0 +1,398 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/aquila-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/aquila-development-board= -kit + */ + +/dts-v1/; + +#include +#include +#include "imx95-aquila.dtsi" + +/ { + model =3D "Aquila iMX95 on Aquila Development Board"; + compatible =3D "toradex,aquila-imx95-dev", + "toradex,aquila-imx95", + "fsl,imx95"; + + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + dp_1_connector: dp0-connector { + compatible =3D "dp-connector"; + dp-pwr-supply =3D <®_dp_3p3v>; + type =3D "full-size"; + + port { + dp_1_connector_in: endpoint { + remote-endpoint =3D <&dsi2dp_out>; + }; + }; + }; + + reg_carrier_1p8v: regulator-carrier-1p8v { + compatible =3D "regulator-fixed"; + regulator-max-microvolt =3D <1800000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "On-carrier 1V8"; + }; + + reg_dp_3p3v: regulator-dp-3p3v { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_21_dp>; + /* Aquila GPIO_21_DP */ + gpios =3D <&gpio3 21 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <3300000>; + regulator-name =3D "DP_3V3"; + startup-delay-us =3D <10000>; + }; + + 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 "aquila-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", + "IN1R", "Digital Mic"; + simple-audio-card,widgets =3D + "Microphone", "Microphone Jack", + "Microphone", "Digital Mic", + "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 <&sai2>; + }; + }; +}; + +/* Aquila ADC_[1-4] */ +&adc1 { + status =3D "okay"; +}; + +/* Aquila CTRL_WAKE1_MICO# */ +&aquila_key_wake { + status =3D "okay"; +}; + +&dsi2dp_out { + remote-endpoint =3D <&dp_1_connector_in>; +}; + +/* Aquila ETH_1 */ +&enetc_port0 { + status =3D "okay"; +}; + +/* Aquila CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Aquila CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +/* Aquila CAN_3 */ +&flexcan3 { + status =3D "okay"; +}; + +/* Aquila CAN_4 */ +&flexcan4 { + status =3D "okay"; +}; + +/* Aquila QSPI_1 */ +&flexspi1 { + pinctrl-0 =3D <&pinctrl_flexspi1_4bit>, + <&pinctrl_qspi_cs1>; + + status =3D "okay"; + + flash@0 { + compatible =3D "jedec,spi-nor"; + reg =3D <0x0>; + spi-max-frequency =3D <66000000>; + spi-rx-bus-width =3D <4>; + spi-tx-bus-width =3D <4>; + cdns,read-delay =3D <0>; + cdns,tchsh-ns =3D <3>; + cdns,tsd2d-ns =3D <10>; + cdns,tshsl-ns =3D <30>; + cdns,tslch-ns =3D <8>; + }; +}; + +&gpio1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_8>; +}; + +&gpio4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_1>, + <&pinctrl_gpio_2>, + <&pinctrl_gpio_3>, + <&pinctrl_gpio_4>, + <&pinctrl_gpio_5>, + <&pinctrl_gpio_6>, + <&pinctrl_gpio_7>; +}; + +/* Aquila I2C_1 */ +&lpi2c2 { + status =3D "okay"; + + fan_controller: fan@18 { + compatible =3D "ti,amc6821"; + reg =3D <0x18>; + #pwm-cells =3D <2>; + + fan { + cooling-levels =3D <255>; + pwms =3D <&fan_controller 40000 PWM_POLARITY_INVERTED>; + }; + }; + + wm8904_1a: audio-codec@1a { + compatible =3D "wlf,wm8904"; + reg =3D <0x1a>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sai2_mclk>; + clocks =3D <&scmi_clk IMX95_CLK_SAI2>; + clock-names =3D "mclk"; + #sound-dai-cells =3D <0>; + AVDD-supply =3D <®_carrier_1p8v>; + CPVDD-supply =3D <®_carrier_1p8v>; + DBVDD-supply =3D <®_carrier_1p8v>; + DCVDD-supply =3D <®_carrier_1p8v>; + MICVDD-supply =3D <®_carrier_1p8v>; + wlf,drc-cfg-names =3D "default", "peaklimiter"; + /* + * Config registers per name, respectively: + * KNEE_IP =3D 0, KNEE_OP =3D 0, HI_COMP =3D 1, LO_COMP =3D 1 + * KNEE_IP =3D -24, KNEE_OP =3D -6, HI_COMP =3D 1/4, LO_COMP =3D 1 + */ + wlf,drc-cfg-regs =3D /bits/ 16 <0x01af 0x3248 0x0000 0x0000>, + /bits/ 16 <0x04af 0x324b 0x0010 0x0408>; + /* GPIO1 =3D DMIC_CLK, don't touch others */ + wlf,gpio-cfg =3D <0x0018>, <0xffff>, <0xffff>, <0xffff>; + wlf,in1r-as-dmicdat2; + }; + + /* Current measurement into module VCC */ + hwmon@41 { + compatible =3D "ti,ina226"; + reg =3D <0x41>; + shunt-resistor =3D <5000>; + }; + + temperature-sensor@4f { + compatible =3D "ti,tmp1075"; + reg =3D <0x4f>; + }; + + /* USB-C OTG (TCPC USB PD PHY) */ + tcpc@52 { + compatible =3D "nxp,ptn5110", "tcpci"; + reg =3D <0x52>; + interrupt-parent =3D <&som_gpio_expander_1>; + interrupts =3D <5 IRQ_TYPE_EDGE_FALLING>; + + connector { + compatible =3D "usb-c-connector"; + data-role =3D "dual"; + op-sink-microwatt =3D <0>; + power-role =3D "dual"; + self-powered; + sink-pdos =3D ; + source-pdos =3D ; + try-power-role =3D "sink"; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + typec_con_hs: endpoint { + remote-endpoint =3D <&usb1_con_hs>; + }; + }; + + port@1 { + reg =3D <1>; + + typec_con_ss: endpoint { + remote-endpoint =3D <&usb1_con_ss>; + }; + }; + }; + }; + }; + + carrier_eeprom: eeprom@57 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x57>; + pagesize =3D <16>; + }; +}; + +/* Aquila I2C_2 */ +&i3c2 { + status =3D "okay"; +}; + +/* Aquila I2C_4_CSI1 */ +&lpi2c4 { + status =3D "okay"; +}; + +/* Aquila I2C_6 */ +&lpi2c5 { + status =3D "okay"; +}; + +/* Aquila I2C_3_DSI1/I2C_5_CSI2 */ +&lpi2c8 { + status =3D "okay"; + + i2c-mux@70 { + compatible =3D "nxp,pca9543"; + reg =3D <0x70>; + #address-cells =3D <1>; + #size-cells =3D <0>; + + /* I2C on DSI Connector Pin #4 and #6 */ + i2c_dsi_0: i2c@0 { + reg =3D <0>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + + /* I2C on DSI Connector Pin #52 and #54 */ + i2c_dsi_1: i2c@1 { + reg =3D <1>; + #address-cells =3D <1>; + #size-cells =3D <0>; + }; + }; +}; + +/* Aquila SPI_1 */ +&lpspi6 { + status =3D "okay"; +}; + +/* Aquila UART_3, used as the Linux Console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Aquila UART_4 */ +&lpuart2 { + status =3D "okay"; +}; + +/* Aquila UART_1 */ +&lpuart3 { + status =3D "okay"; +}; + +/* Aquila UART_2 as RS485 */ +&lpuart7 { + linux,rs485-enabled-at-boot-time; + rs485-rts-active-low; + rs485-rx-during-tx; + + status =3D "okay"; +}; + +/* Aquila PCIE_1 */ +&pcie0 { + status =3D "okay"; +}; + +/* Aquila I2S_1 */ +&sai2 { + status =3D "okay"; +}; + +&som_dsi2dp_bridge { + status =3D "okay"; +}; + +/* Aquila PWM_1 */ +&tpm3 { + status =3D "okay"; +}; + +/* Aquila PWM_2 */ +&tpm6 { + status =3D "okay"; +}; + +/* Aquila PWM_3_DSI and PWM_4_DP */ +&tpm5 { + status =3D "okay"; +}; + +/* Aquila USB_2, optional Bluetooth USB */ +&usb2 { + status =3D "okay"; +}; + +/* Aquila USB_1 */ +&usb3 { + status =3D "okay"; +}; + +&usb3_dwc3 { + status =3D "okay"; + + port { + usb1_con_hs: endpoint { + remote-endpoint =3D <&typec_con_hs>; + }; + }; +}; + +&usb3_phy { + orientation-switch; + + status =3D "okay"; + + port { + usb1_con_ss: endpoint { + remote-endpoint =3D <&typec_con_ss>; + }; + }; +}; + +/* Aquila SD_1 */ +&usdhc2 { + status =3D "okay"; +}; diff --git a/arch/arm64/boot/dts/freescale/imx95-aquila.dtsi b/arch/arm64/b= oot/dts/freescale/imx95-aquila.dtsi new file mode 100644 index 0000000000000..c6dc48852ac6c --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-aquila.dtsi @@ -0,0 +1,1160 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/aquila-arm-family/nxp-imx95 + */ + +#include +#include "imx95.dtsi" + +/ { + aliases { + can0 =3D &flexcan1; + can1 =3D &flexcan2; + can2 =3D &flexcan3; + can3 =3D &flexcan4; + eeprom0 =3D &som_eeprom; + ethernet0 =3D &enetc_port0; + i2c0 =3D &lpi2c3; + i2c1 =3D &lpi2c2; + i2c2 =3D &i3c2; + i2c3 =3D &lpi2c8; + i2c4 =3D &lpi2c4; + i2c6 =3D &lpi2c5; + mmc0 =3D &usdhc1; + mmc1 =3D &usdhc2; + rtc0 =3D &rtc_i2c; + rtc1 =3D &scmi_bbm; + serial0 =3D &lpuart3; + serial1 =3D &lpuart7; + serial2 =3D &lpuart1; + serial3 =3D &lpuart2; + usb0 =3D &usb3; + usb1 =3D &usb2; + }; + + chosen { + stdout-path =3D "serial2:115200n8"; + }; + + aquila_key_wake: gpio-key-wakeup { + compatible =3D "gpio-keys"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ctrl_wake1_mico>; + + status =3D "disabled"; + + key-wakeup { + /* Aquila CTRL_WAKE1_MICO# */ + gpios =3D <&gpio5 11 GPIO_ACTIVE_LOW>; + label =3D "Wake Up"; + wakeup-source; + linux,code =3D ; + }; + }; + + clk_dsi2dp_refclk: clock-dsi2dp-refclk { + compatible =3D "fixed-clock"; + #clock-cells =3D <0>; + clock-frequency =3D <27000000>; + }; + + clk_dsi2dp_refclk_en: clock-dsi2dp-refclk-en { + compatible =3D "gpio-gate-clock"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_ctrl_dp_clk_en>; + clocks =3D <&clk_dsi2dp_refclk>; + #clock-cells =3D <0>; + /* CTRL_DP_CLK_EN */ + enable-gpios =3D <&gpio1 11 GPIO_ACTIVE_HIGH>; + }; + + clk_serdes_eth_ref: clock-serdes-eth-ref { + compatible =3D "gpio-gate-clock"; + #clock-cells =3D <0>; + /* CTRL_ETH_REF_CLK_STBY */ + enable-gpios =3D <&som_gpio_expander_0 6 GPIO_ACTIVE_LOW>; + }; + + 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"; + }; + + reg_dp_1p2v: regulator-dp-1p2v { + compatible =3D "regulator-fixed"; + /* CTRL_DP_BRIDGE_EN */ + gpios =3D <&som_gpio_expander_0 7 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + regulator-max-microvolt =3D <1200000>; + regulator-min-microvolt =3D <1200000>; + regulator-name =3D "On-module +V1.2_DP"; + vin-supply =3D <®_1p8v>; + }; + + reg_usb1_vbus: regulator-usb1-vbus { + compatible =3D "regulator-fixed"; + /* Aquila USB_1_EN */ + gpios =3D <&som_gpio_expander_0 2 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-name =3D "USB_1_EN"; + }; + + reg_usb2_vbus: regulator-usb2-vbus { + compatible =3D "regulator-fixed"; + /* Aquila USB_2_EN */ + gpios =3D <&som_gpio_expander_0 3 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-name =3D "USB_2_H_EN"; + }; + + reg_usdhc2_vmmc: regulator-usdhc2-vmmc { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sd1_pwr_en>; + /* Aquila SD_1_PWR_EN */ + 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>; + }; + + reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc { + compatible =3D "regulator-gpio"; + /* PMIC_SD_1_VSEL */ + gpios =3D <&som_gpio_expander_1 9 GPIO_ACTIVE_HIGH>; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <1800000>; + regulator-name =3D "PMIC_SD_1_VSEL"; + states =3D <1800000 0x1>, + <3300000 0x0>; + }; + + remoteproc-cm7 { + compatible =3D "fsl,imx95-cm7"; + mboxes =3D <&mu7 0 1 &mu7 1 1 &mu7 3 1>; + mbox-names =3D "tx", "rx", "rxdb"; + 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; + }; + + rsc_table: rsc-table@88220000 { + reg =3D <0 0x88220000 0 0x1000>; + 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; + }; + }; +}; + +/* Aquila ADC_[1-4] */ +&adc1 { + vref-supply =3D <®_1p8v>; +}; + +/* Aquila ETH_1 */ +&enetc_port0 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_enetc0>; + phy-handle =3D <ðphy1>; + phy-mode =3D "rgmii-id"; +}; + +/* Aquila CAN_1 */ +&flexcan1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_flexcan1>; +}; + +/* Aquila CAN_2 */ +&flexcan2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_flexcan2>; +}; + +/* Aquila CAN_3 */ +&flexcan3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_flexcan3>; +}; + +/* Aquila CAN_4 */ +&flexcan4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_flexcan4>; +}; + +/* Aquila QSPI_1 */ +&flexspi1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_flexspi1_8bit>, + <&pinctrl_qspi_cs1>; +}; + +&gpio1 { + gpio-line-names =3D "", /* 0 */ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AQUILA_C24", /* 10 */ + "", + "AQUILA_B17", + "CTRL_GPIO_EXP_INT#", + "AQUILA_B18"; + + status =3D "okay"; +}; + +&gpio2 { + gpio-line-names =3D "", /* 0 */ + "", + "", + "", + "", + "", + "", + "AQUILA_B42", + "", + "AQUILA_B43"; +}; + +&gpio3 { + gpio-line-names =3D "", /* 0 */ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "", + "", + "", + "", + "", + "", + "", + "AQUILA_A11", + "", /* 20 */ + "AQUILA_B57", + "AQUILA_B19"; +}; + +&gpio4 { + gpio-line-names =3D "", /* 0 */ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "", + "", + "", + "", + "", + "AQUILA_C22", + "AQUILA_C21", + "AQUILA_C20", + "", /* 20 */ + "", + "", + "AQUILA_C23", + "AQUILA_D23", + "AQUILA_D24", + "", + "AQUILA_D25"; +}; + +&gpio5 { + gpio-line-names =3D "", /* 0 */ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", /* 10 */ + "", + "", + "AQUILA_B44", + "AQUILA_B45"; +}; + +/* Aquila I2C_2 */ +&i3c2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_i3c2>; + i2c-scl-hz =3D <100000>; +}; + +/* Aquila I2C_1 */ +&lpi2c2 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_lpi2c2>; + pinctrl-1 =3D <&pinctrl_lpi2c2_gpio>; + #address-cells =3D <1>; + #size-cells =3D <0>; + clock-frequency =3D <100000>; + scl-gpios =3D <&gpio1 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; +}; + +/* On-module I2C - I2C_SOM */ +&lpi2c3 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_lpi2c3>, <&pinctrl_ctrl_gpio_exp_int>; + pinctrl-1 =3D <&pinctrl_lpi2c3_gpio>, <&pinctrl_ctrl_gpio_exp_int>; + #address-cells =3D <1>; + #size-cells =3D <0>; + clock-frequency =3D <400000>; + scl-gpios =3D <&gpio2 29 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio2 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + + status =3D "okay"; + + som_gpio_expander_0: gpio@20 { + compatible =3D "nxp,pcal6408"; + reg =3D <0x20>; + #gpio-cells =3D <2>; + gpio-controller; + gpio-line-names =3D + "AQUILA_C38", /* 0 */ + "PCIE_2_RESET#", + "AQUILA_B77", + "USB_2_H_EN", + "BT_DISABLE#", + "WIFI_DISABLE#", + "CTRL_ETH_REF_CLK_STBY", + "CTRL_DP_BRIDGE_EN"; + }; + + som_gpio_expander_1: gpio@21 { + compatible =3D "nxp,pcal6416"; + reg =3D <0x21>; + #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 + "AQUILA_C1", /* 0 */ + "AQUILA_C2", + "AQUILA_C3", + "AQUILA_C4", + "AQUILA_C36", + "AQUILA_B74", + "AQUILA_B75", + "USB_2_H_OC#", + "AQUILA_B81", + "PMIC_SD_1_VSEL", + "ETH_1_INT#", /* 10 */ + "CTRL_TPM_INT#", + "SPI_2_CS2_TPM", + "PCIE_WAKE_WIFI#", + "WIFI_WAKE_BT", + "WIFI_WAKEUP_HOST"; + }; + + som_dsi2dp_bridge: bridge@2c { + compatible =3D "ti,sn65dsi86"; + reg =3D <0x2c>; + clocks =3D <&clk_dsi2dp_refclk_en>; + clock-names =3D "refclk"; + vcc-supply =3D <®_dp_1p2v>; + vcca-supply =3D <®_dp_1p2v>; + vccio-supply =3D <®_1p8v>; + vpll-supply =3D <®_1p8v>; + + status =3D "disabled"; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + dsi2dp_in: endpoint { + }; + }; + + port@1 { + reg =3D <1>; + + dsi2dp_out: endpoint { + data-lanes =3D <3 2 1 0>; + }; + }; + }; + }; + + 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>; + }; +}; + +/* Aquila I2C_4_CSI1 */ +&lpi2c4 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_lpi2c4>; + pinctrl-1 =3D <&pinctrl_lpi2c4_gpio>; + #address-cells =3D <1>; + #size-cells =3D <0>; + 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)>; +}; + +/* Aquila I2C_6 */ +&lpi2c5 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_lpi2c5>; + pinctrl-1 =3D <&pinctrl_lpi2c5_gpio>; + #address-cells =3D <1>; + #size-cells =3D <0>; + 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)>; +}; + +/* Aquila I2C_3_DSI1/I2C_5_CSI2 */ +&lpi2c8 { + pinctrl-names =3D "default", "gpio"; + pinctrl-0 =3D <&pinctrl_lpi2c8>; + pinctrl-1 =3D <&pinctrl_lpi2c8_gpio>; + #address-cells =3D <1>; + #size-cells =3D <0>; + clock-frequency =3D <100000>; + scl-gpios =3D <&gpio2 13 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; + sda-gpios =3D <&gpio2 12 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; +}; + +/* Aquila SPI_2 */ +&lpspi4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_lpspi4>; + cs-gpios =3D <&gpio2 18 GPIO_ACTIVE_LOW>, + <&som_gpio_expander_1 12 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_1>; + interrupts =3D <11 IRQ_TYPE_EDGE_FALLING>; + /* + * Maximum TPM-supported speed is 18.5 MHz, limited to 12 MHz + * here as lpspi4's per-clock (2x the max speed) is 24 MHz. + */ + spi-max-frequency =3D <12000000>; + }; +}; + +/* Aquila SPI_1 */ +&lpspi6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_lpspi6>; + cs-gpios =3D <&gpio2 0 GPIO_ACTIVE_LOW>; +}; + +/* Aquila UART_3, used as the Linux Console */ +&lpuart1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart1>; +}; + +/* Aquila UART_4 */ +&lpuart2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart2>; +}; + +/* Aquila UART_1 */ +&lpuart3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart3>; + uart-has-rtscts; +}; + +/* Aquila UART_2 */ +&lpuart7 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_uart7>; + uart-has-rtscts; +}; + +&mu7 { + status =3D "okay"; +}; + +/* Aquila ETH_2_XGMII_MDIO, shared between all ethernet ports */ +&netc_emdio { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_emdio>; + + status =3D "okay"; + + ethphy1: ethernet-phy@1 { + reg =3D <1>; + interrupt-parent =3D <&som_gpio_expander_1>; + interrupts =3D <10 IRQ_TYPE_EDGE_FALLING>; + ti,rx-internal-delay =3D ; + ti,tx-internal-delay =3D ; + }; +}; + +&netcmix_blk_ctrl { + status =3D "okay"; +}; + +&netc_blk_ctrl { + status =3D "okay"; +}; + +&netc_timer { + status =3D "okay"; +}; + +/* Aquila PCIE_1 */ +&pcie0 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pcie0>; + reset-gpios =3D <&som_gpio_expander_0 0 GPIO_ACTIVE_LOW>; +}; + +/* On-module Wi-Fi or Aquila PCIE_2 */ +&pcie1 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pcie1>; + reset-gpios =3D <&som_gpio_expander_0 1 GPIO_ACTIVE_LOW>; + + status =3D "okay"; +}; + +/* Aquila I2S_1 */ +&sai2 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_sai2>; + 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_SAI2>; + 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"; + }; + }; + }; +}; + +/* Aquila PWM_1 */ +&tpm3 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pwm1>; +}; + +/* Aquila PWM_2 */ +&tpm6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pwm2>; +}; + +/* Aquila PWM_3_DSI and PWM_4_DP */ +&tpm5 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_pwm3_dsi>, <&pinctrl_pwm4_dp>; +}; + +/* Aquila USB_2, optional Bluetooth USB */ +&usb2 { + dr_mode =3D "host"; + vbus-supply =3D <®_usb2_vbus>; +}; + +/* Aquila USB_1 */ +&usb3 { + fsl,disable-port-power-control; +}; + +&usb3_dwc3 { + dr_mode =3D "otg"; + adp-disable; + hnp-disable; + srp-disable; + usb-role-switch; +}; + +&usb3_phy { + vbus-supply =3D <®_usb1_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"; +}; + +/* Aquila SD_1 */ +&usdhc2 { + pinctrl-names =3D "default", "state_100mhz", "state_200mhz", "sleep"; + pinctrl-0 =3D <&pinctrl_usdhc2>, <&pinctrl_sd1_cd_gpio>; + pinctrl-1 =3D <&pinctrl_usdhc2>, <&pinctrl_sd1_cd_gpio>; + pinctrl-2 =3D <&pinctrl_usdhc2_200mhz>,<&pinctrl_sd1_cd_gpio>; + pinctrl-3 =3D <&pinctrl_usdhc2_sleep>, <&pinctrl_sd1_cd_gpio>; + 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 { + /* Aquila CTRL_WAKE1_MICO# */ + pinctrl_ctrl_wake1_mico: ctrlwake1micogrp { + fsl,pins =3D ; /* Aquila D6= */ + }; + + pinctrl_ctrl_dp_clk_en: dpclkengrp { + fsl,pins =3D ; /* = CTRL_DP_CLK_EN */ + }; + + /* Aquila ETH_2_XGMII_MDIO */ + pinctrl_emdio: emdiogrp { + fsl,pins =3D , /* Aquil= a B90 */ + ; /* Aquila B89 */ + }; + + /* Aquila ETH_1 */ + 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 */ + }; + + /* Aquila CAN_1 */ + pinctrl_flexcan1: flexcan1grp { + fsl,pins =3D , /* Aquila B= 48 */ + ; /* Aquila B49= */ + }; + + /* Aquila CAN_2 */ + pinctrl_flexcan2: flexcan2grp { + fsl,pins =3D , /* Aquila B50 */ + ; /* Aquila B51 */ + }; + + /* Aquila CAN_3 */ + pinctrl_flexcan3: flexcan3grp { + fsl,pins =3D , /* Aquila B53 */ + ; /* Aquila B54 */ + }; + + /* Aquila CAN_4 */ + pinctrl_flexcan4: flexcan4grp { + fsl,pins =3D , /* Aquila B55 */ + ; /* Aquila B56 */ + }; + + /* Aquila QSPI_1 (8 bit) */ + pinctrl_flexspi1_8bit: flexspi18bitgrp { + fsl,pins =3D , /* Aquila B6= 5 */ + , /* Aquila B68 */ + , /* Aquila B67 */ + , /* Aquila B61 */ + , /* Aquila B60 */ + , /* Aquila B70 */ + , /* Aquila B71 */ + , /* Aquila B72 */ + , /* Aquila B73 */ + ; /* Aquila B63 */ + }; + + /* Aquila QSPI_1 (4 bit) */ + pinctrl_flexspi1_4bit: flexspi18bitgrp { + fsl,pins =3D , /* Aquila B6= 5 */ + , /* Aquila B68 */ + , /* Aquila B67 */ + , /* Aquila B61 */ + , /* Aquila B60 */ + ; /* Aquila B63 */ + }; + + /* Aquila GPIO_01 */ + pinctrl_gpio_1: gpio1grp { + fsl,pins =3D ; /* Aquila D23 = */ + }; + + /* Aquila GPIO_02 */ + pinctrl_gpio_2: gpio2grp { + fsl,pins =3D ; /* Aquila D24 = */ + }; + + /* Aquila GPIO_03 */ + pinctrl_gpio_3: gpio3grp { + fsl,pins =3D ; /* Aquila D25 = */ + }; + + /* Aquila GPIO_04 */ + pinctrl_gpio_4: gpio4grp { + fsl,pins =3D ; /* Aquila C20 = */ + }; + + /* Aquila GPIO_05 */ + pinctrl_gpio_5: gpio5grp { + fsl,pins =3D ; /* Aquila C21 = */ + }; + + /* Aquila GPIO_06 */ + pinctrl_gpio_6: gpio6grp { + fsl,pins =3D ; /* Aquila C22 = */ + }; + + /* Aquila GPIO_07 */ + pinctrl_gpio_7: gpio7grp { + fsl,pins =3D ; /* Aquila C23 = */ + }; + + /* Aquila GPIO_08 */ + pinctrl_gpio_8: gpio8grp { + fsl,pins =3D ; /* Aquila C24 */ + }; + + /* Aquila GPIO_09_CSI_1 */ + pinctrl_gpio_9_csi_1: gpio9csi1grp { + fsl,pins =3D ; /* A= quila B17 */ + }; + + /* Aquila GPIO_10_CSI_1 */ + pinctrl_gpio_10_csi_1: gpio10csi1grp { + fsl,pins =3D ; /* = Aquila B18 */ + }; + + /* Aquila GPIO_11_CSI_1 */ + pinctrl_gpio_11_csi_1: gpio11csi1grp { + fsl,pins =3D ; /* Aquila A1= 1*/ + }; + + /* Aquila GPIO_12_CSI_1 */ + pinctrl_gpio_12_csi_1: gpio12csi1grp { + fsl,pins =3D ; /* Aquila B19 = */ + }; + + /* Aquila GPIO_17_DSI_1 */ + pinctrl_gpio_17_dsi_1: gpio17dsi1grp { + fsl,pins =3D ; /* Aquila B42 */ + }; + + /* Aquila GPIO_18_DSI_1 */ + pinctrl_gpio_18_dsi_1: gpio18dsi1grp { + fsl,pins =3D ; /* Aquila B43 */ + }; + + /* Aquila GPIO_19_DSI_1 */ + pinctrl_gpio_19_dsi_1: gpio19dsi1grp { + fsl,pins =3D ; /* Aquila B44 = */ + }; + + /* Aquila GPIO_20_DSI_1 */ + pinctrl_gpio_20_dsi_1: gpio20dsi1grp { + fsl,pins =3D ; /* Aquila B45 = */ + }; + + /* Aquila GPIO_21_DP */ + pinctrl_gpio_21_dp: gpio21dpgrp { + fsl,pins =3D ; /* Aquila B57 */ + }; + + pinctrl_ctrl_gpio_exp_int: gpioexpintgrp { + fsl,pins =3D ; /* = CTRL_GPIO_EXP_INT# */ + }; + + /* Aquila I2C_2 */ + pinctrl_i3c2: i3c2cgrp { + fsl,pins =3D , /* Aquila C17 */ + ; /* Aquila C16 */ + }; + + /* Aquila I2C_1 as GPIOs */ + pinctrl_lpi2c2_gpio: lpi2c2gpiogrp { + fsl,pins =3D , = /* Aquila D8 */ + ; /* Aquila= D7 */ + }; + + /* Aquila I2C_1 */ + pinctrl_lpi2c2: lpi2c2grp { + fsl,pins =3D , /* = Aquila D8 */ + ; /* Aquila D7= */ + }; + + /* On-module I2C as GPIOs */ + pinctrl_lpi2c3_gpio: lpi2c3gpiogrp { + fsl,pins =3D , /* I2C_SO= M_SDA */ + ; /* I2C_SOM_SCL */ + }; + + /* On-module I2C */ + pinctrl_lpi2c3: lpi2c3grp { + fsl,pins =3D , /* I2C_SOM_SD= A */ + ; /* I2C_SOM_SCL */ + }; + + /* Aquila I2C_4_CSI1 as GPIO */ + pinctrl_lpi2c4_gpio: lpi2c4gpiogrp { + fsl,pins =3D , /* Aquila= A12 */ + ; /* Aquila A13 */ + }; + + /* Aquila I2C_4_CSI1 */ + pinctrl_lpi2c4: lpi2c4grp { + fsl,pins =3D , /* Aquila A12= */ + ; /* Aquila A13 */ + }; + + /* Aquila I2C_6 as GPIO */ + pinctrl_lpi2c5_gpio: lpi2c5gpiogrp { + fsl,pins =3D , /* Aquila= C18 */ + ; /* Aquila C19 */ + }; + + /* Aquila I2C_6 */ + pinctrl_lpi2c5: lpi2c5grp { + fsl,pins =3D , /* Aquila C18= */ + ; /* Aquila C19 */ + }; + + /* Aquila I2C_3_DSI1/I2C_5_CSI2 as GPIO */ + pinctrl_lpi2c8_gpio: lpi2c8gpiogrp { + fsl,pins =3D , /* Aquila= C5/B40 */ + ; /* Aquila C6/B41 */ + }; + + /* Aquila I2C_3_DSI1/I2C_5_CSI2 */ + pinctrl_lpi2c8: lpi2c8grp { + fsl,pins =3D , /* Aquila C5/= B40 */ + ; /* Aquila C6/B41 */ + }; + + /* Aquila SPI_2 */ + pinctrl_lpspi4: lpspi4grp { + fsl,pins =3D , /* Aquila D16 = */ + , /* Aquila D15 */ + , /* Aquila D17 */ + ; /* Aquila D14 */ + }; + + /* Aquila SPI_1 */ + pinctrl_lpspi6: lpspi6grp { + fsl,pins =3D , /* Aquila D9 */ + , /* Aquila D10 */ + , /* Aquila D11 */ + ; /* Aquila D12 */ + }; + + /* Aquila PCIE_1 */ + pinctrl_pcie0: pcie0grp { + fsl,pins =3D ; /* Aquila C37 */ + }; + + /* Aquila PCIE_2 */ + pinctrl_pcie1: pcie1grp { + fsl,pins =3D ; /* Aquila C34 */ + }; + + /* Aquila QSPI_1_CS1# */ + pinctrl_qspi_cs1: qspics1grp { + fsl,pins =3D ; /* Aquila = B66 */ + }; + + /* Aquila QSPI_1_CS2# as GPIO */ + pinctrl_qspi_cs2_gpio: qspics2gpiogrp { + fsl,pins =3D ; /* Aquila B62 = */ + }; + + /* Aquila I2S_1 */ + pinctrl_sai2: sai2grp { + fsl,pins =3D , = /* Aquila B21 */ + , /* Aquila B2= 0 */ + , /* Aqui= la B23 */ + ; /* Aq= uila B22 */ + }; + + pinctrl_sai2_mclk: sai2mclkgrp { + fsl,pins =3D ; /* Aqui= la B24 */ + }; + + /* Aquila SD_1_CD# as GPIO */ + pinctrl_sd1_cd_gpio: sd1cdgpiogrp { + fsl,pins =3D ; /* Aquila A1 */ + }; + + /* Aquila SD_1_PWR_EN */ + pinctrl_sd1_pwr_en: sd1pwrengpiogrp { + fsl,pins =3D ; /* Aquila A6 = */ + }; + + /* Aquila PWM_1 */ + pinctrl_pwm1: tpm3ch3grp { + fsl,pins =3D ; /* Aquila C25 */ + }; + + /* Aquila PWM_3_DSI as GPIO */ + pinctrl_pwm3_dsi_gpio: tpm5ch0gpiogrp { + fsl,pins =3D ; /* Aquila B46 */ + }; + + /* Aquila PWM_3_DSI */ + pinctrl_pwm3_dsi: tpm5ch0grp { + fsl,pins =3D ; /* Aquila B46 */ + }; + + /* Aquila PWM_4_DP */ + pinctrl_pwm4_dp: tpm5ch3grp { + fsl,pins =3D ; /* Aquila B58 */ + }; + + /* Aquila PWM_2 */ + pinctrl_pwm2: tpm6ch0grp { + fsl,pins =3D ; /* Aquila C26 */ + }; + + /* Aquila UART_3 */ + pinctrl_uart1: uart1grp { + fsl,pins =3D , /* Aqui= la D20 */ + ; /* Aquila D19 */ + }; + + /* Aquila UART_4 */ + pinctrl_uart2: uart2grp { + fsl,pins =3D , /* Aqui= la D22 */ + ; /* Aquila D21 */ + }; + + /* Aquila UART_1 */ + pinctrl_uart3: uart3grp { + fsl,pins =3D , /* Aquila B37 */ + , /* Aquila B35 */ + , /* Aquila B36 */ + ; /* Aquila B38 */ + }; + + /* Aquila UART_2 */ + pinctrl_uart7: uart7grp { + fsl,pins =3D , /* Aquila B33 */ + , /* Aquila B31 */ + , /* Aquila B32 */ + ; /* Aquila B34 */ + }; + + /* On-module eMMC */ + pinctrl_usdhc1: usdhc1grp { + fsl,pins =3D , /* eMMC_CLK */ + , /* eMMC_CMD */ + , /* eMMC_DATA0 */ + , /* eMMC_DATA1 */ + , /* eMMC_DATA2 */ + , /* eMMC_DATA3 */ + , /* eMMC_DATA4 */ + , /* eMMC_DATA5 */ + , /* eMMC_DATA6 */ + , /* eMMC_DATA7 */ + ; /* eMMC_STROBE */ + }; + + pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp { + fsl,pins =3D , /* eMMC_CLK */ + , /* eMMC_CMD */ + , /* eMMC_DATA0 */ + , /* eMMC_DATA1 */ + , /* eMMC_DATA2 */ + , /* eMMC_DATA3 */ + , /* eMMC_DATA4 */ + , /* eMMC_DATA5 */ + , /* eMMC_DATA6 */ + , /* eMMC_DATA7 */ + ; /* eMMC_STROBE */ + }; + + /* Aquila SD_1 */ + pinctrl_usdhc2: usdhc2grp { + fsl,pins =3D , /* Aquila A5 */ + , /* Aquila A7 */ + , /* Aquila A3 */ + , /* Aquila A2 */ + , /* Aquila A10 */ + ; /* Aquila A8 */ + }; + + pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp { + fsl,pins =3D , /* Aquila A5 */ + , /* Aquila A7 */ + , /* Aquila A3 */ + , /* Aquila A2 */ + , /* Aquila A10 */ + ; /* Aquila A8 */ + }; + + pinctrl_usdhc2_sleep: usdhc2-sleepgrp { + fsl,pins =3D , /* Aquila A5 */ + , /* Aquila A7 */ + , /* Aquila A3 */ + , /* Aquila A2 */ + , /* Aquila A10 */ + ; /* Aquila A8 */ + }; +}; --=20 2.43.0 From nobody Sun May 24 23:32:09 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5978C3DD50E for ; Wed, 20 May 2026 11:30:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779276652; cv=none; b=F1EOIA848xkr48ohPhupbL/V4n2GoDuwk4mwKAl6KbUuMqB6R/g2Dw1mI/0eoWU2CmwDwUpCpPRkBeWdC+hWBnwVdpMIUHk0sbKGBCNe0PuGizSwfIBOwyM9zFj1DHEr1Lwt9/0JfVSQ+M3yCY07oZ//9JXYqqtvWJTaiChfB80= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779276652; c=relaxed/simple; bh=2e8b0M4uNeWedv6NB/3GyL8xLLu1YJtlv19qlyMXonw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cWZpA03A734f6GzBhZEylPm3g5Rwt2P1nxNA+4tZX+rwKdjmYzzKU+MVIRHMyupKnMdFMIkoKZDIzAwrEBTEFW64Kko9DqGnXqlNVFJSrfuVd3n+KVhn5KH6nDmAi12pFPxvv2T/v7vaIVTvi+vVKisVXbm9ZbQpSa57tV8fyGw= 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=GEjBGMtE; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GEjBGMtE" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-488b0e1b870so69384025e9.2 for ; Wed, 20 May 2026 04:30:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779276649; x=1779881449; 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=75AeIr75fobPYjOr1b7dv2ioRyiyydGt2gFhT2IfAuY=; b=GEjBGMtEwQG0BNZ6dDvyokCBkkIJwmQoJ2QYFVQBK2X09TtpCrrFnjQKRSFtnDZtpk S9D+TviiuxNylNP+4tOc3k0ioS+J0+c/dMbdnoEfaJDNDIjsVW4gEtD+1DW8+ybePphc 7x2kr6vfjeZ8dVFyznLZ8PUBXXvqxxAbLtpN51n1e5jFPwlibYTiiZ1h+ZiC0wSpZyBa SQI1+eZmteWFcKt0PYHkKBIadB18goKQTXBuCwePPu5SNx2wj2cLXzVy6Yhb8N6XncS5 40vMqxmMqUyRRGHxe3rjdaNKs9O5ehHe0kAr/r1lzeRGGECJ3ST2fk48TGYD9kppJvfr kHYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779276649; x=1779881449; 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=75AeIr75fobPYjOr1b7dv2ioRyiyydGt2gFhT2IfAuY=; b=cUAuwKvxn/H757J1vz1b2/soBlksRltaLs7RTLg6VJL6dvwzSjedCq1WsaMXV8ZUAT TsQW2uDQXFlQzl34zaX07873hAS6/5JIGCTDiOWQRgSTivJdBUgxeLFEbnDx2CCIPZ+P zB3hxXY8TlT3/IymmQWa6CXIEVi15s15aFR0sLioCXZwedEP91jxEwygWFdkAWrp+gTG eGe7wELBy6R64oX+lsjTO6+PztDF47D0j32Q/hfZmdkHt1WceJXd3Z+rO6nR7lGNAB4X p6IepMW7tHhC6dxAiRMSvxoQTnKr0ujccGBhlf+GwLRTX1bMxNlj8xFC/vs9psvjeB5b 0DcQ== X-Forwarded-Encrypted: i=1; AFNElJ9oGWGgOjt30s35SrQrXxQeidfB4IoSE75TNKURZwUHjqNxJTMEySLQS2Tffyp5VK2v7+gbzrVND5IJsro=@vger.kernel.org X-Gm-Message-State: AOJu0YwGUQMnzJ6RrwRfiOlbYdcwhzD+e4jHlOQGKNUHnXCZxmFqwMGu N+V/K3A1SNTGRFZvf11Zs46koxMUekjgzCkj0mkiTqkZOlzhcQZns29NvDlqi5cS X-Gm-Gg: Acq92OF1Ew+4TrighcpNYKcDZFQGRTF+iUKEBrnFB7pFoQWYeXY0N5z7ZH0ymClLwdD /dfkaHP8c1STotC4lsbzs85bfVyqned7aolENauXZnPXUol2bsGnOal737kxpTk+EPt+fiRgbPx HJBv+0zR7u5fbNgdhrywqUfORRa+tD/h8XWb/QiPDwxT8XGoKA9d5+p9uTFnTaO8DJP/j/gIuy4 Mv6ZcXAtuiGm5NAuwO1AiIQRME6LBGKngWpCvAS5ujmxPeGKeSYiBZEylu/7w8CT5eVrLE3vSq5 kArURE8Vpib2MVcwQiKRsEW9U+FIuGeOI4xUZ0U7GBl9hqkOvuHV4pL4748NpROU3BMra1cQLBA xBmmtdiA1of7r6hYVjLZZ+3lGarU3jHLg55PfIllRSNvLDtoGnvvbSnN9s8i2n8jIg/n/zJmBjr VOJ8x3/w3w9khjGUFWj7YHU2+amiSJx0l7tAEni1kz9q09Y/FauLe5Q0EeBAQsZYprvwgoCwuL+ IdSrL98WNftNLoa+8453VXV6j9YPViwm4fuoFtOJgJtR3VsaeuignY3NSHjjpxt0bF6maEKquxY cuBBvCW4GDeI X-Received: by 2002:a05:600c:4fc9:b0:489:1c1f:35df with SMTP id 5b1f17b1804b1-48fe60e58ecmr337661595e9.10.1779276648507; Wed, 20 May 2026 04:30:48 -0700 (PDT) Received: from [127.0.1.1] (248.201.173.83.static.wline.lns.sme.cust.swisscom.ch. [83.173.201.248]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-48fe5ab3977sm430363315e9.9.2026.05.20.04.30.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 04:30:48 -0700 (PDT) From: Franz Schnyder Date: Wed, 20 May 2026 13:30:34 +0200 Subject: [PATCH v2 3/3] arm64: dts: freescale: imx95-aquila: Add Clover 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: <20260520-add-aquila-imx95-v2-3-06424a51e33a@toradex.com> References: <20260520-add-aquila-imx95-v2-0-06424a51e33a@toradex.com> In-Reply-To: <20260520-add-aquila-imx95-v2-0-06424a51e33a@toradex.com> To: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo , Frank Li , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Francesco Dolcini , Franz Schnyder , Antoine Gouby X-Mailer: b4 0.15.2 From: Antoine Gouby Add support for the Aquila i.MX95 SoM mated with the Clover carrier board. Clover is a low-cost carrier board for the Aquila family featuring a small form factor (Nano-ITX 120mm x 120mm) and built for volume production. Link: https://www.toradex.com/computer-on-modules/aquila-arm-family/nxp-imx= 95 Link: https://www.toradex.com/products/carrier-board/clover Signed-off-by: Antoine Gouby Signed-off-by: Franz Schnyder --- v2: no changes v1: https://lore.kernel.org/all/20260506-add-aquila-imx95-v1-3-69c8ee1c5413= @toradex.com/ --- arch/arm64/boot/dts/freescale/Makefile | 1 + .../boot/dts/freescale/imx95-aquila-clover.dts | 294 +++++++++++++++++= ++++ 2 files changed, 295 insertions(+) diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/f= reescale/Makefile index c8697b6ae01c5..3ce082c121036 100644 --- a/arch/arm64/boot/dts/freescale/Makefile +++ b/arch/arm64/boot/dts/freescale/Makefile @@ -523,6 +523,7 @@ dtb-$(CONFIG_ARCH_MXC) +=3D imx95-15x15-evk.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-15x15-frdm.dtb 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-aquila-clover.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-aquila-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-toradex-smarc-dev.dtb dtb-$(CONFIG_ARCH_MXC) +=3D imx95-tqma9596sa-mb-smarc-2.dtb diff --git a/arch/arm64/boot/dts/freescale/imx95-aquila-clover.dts b/arch/a= rm64/boot/dts/freescale/imx95-aquila-clover.dts new file mode 100644 index 0000000000000..021d437763412 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-aquila-clover.dts @@ -0,0 +1,294 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/* + * Copyright (c) Toradex + * + * https://www.toradex.com/computer-on-modules/aquila-arm-family/nxp-imx95 + * https://www.toradex.com/products/carrier-board/clover + */ + +/dts-v1/; + +#include +#include +#include "imx95-aquila.dtsi" + +/ { + model =3D "Aquila iMX95 on Aquila Clover Board"; + compatible =3D "toradex,aquila-imx95-clover", + "toradex,aquila-imx95", + "fsl,imx95"; + + aliases { + eeprom1 =3D &carrier_eeprom; + }; + + dp_1_connector: dp0-connector { + compatible =3D "dp-connector"; + dp-pwr-supply =3D <®_dp_3p3v>; + type =3D "full-size"; + + port { + dp_1_connector_in: endpoint { + remote-endpoint =3D <&dsi2dp_out>; + }; + }; + }; + + reg_dp_3p3v: regulator-dp-3p3v { + compatible =3D "regulator-fixed"; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_21_dp>; + /* Aquila GPIO_21_DP */ + gpios =3D <&gpio3 21 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-max-microvolt =3D <3300000>; + regulator-min-microvolt =3D <3300000>; + regulator-name =3D "DP_3V3"; + startup-delay-us =3D <10000>; + }; +}; + +/* Aquila ADC_[1-4] */ +&adc1 { + status =3D "okay"; +}; + +/* Aquila CTRL_WAKE1_MICO# */ +&aquila_key_wake { + status =3D "okay"; +}; + +&dsi2dp_out { + remote-endpoint =3D <&dp_1_connector_in>; +}; + +/* Aquila ETH_1 */ +&enetc_port0 { + status =3D "okay"; +}; + +/* Aquila CAN_1 */ +&flexcan1 { + status =3D "okay"; +}; + +/* Aquila CAN_2 */ +&flexcan2 { + status =3D "okay"; +}; + +/* Aquila CAN_3 */ +&flexcan3 { + status =3D "okay"; +}; + +/* Aquila CAN_4 */ +&flexcan4 { + status =3D "okay"; +}; + +/* Aquila QSPI_1 */ +&flexspi1 { + pinctrl-0 =3D <&pinctrl_flexspi1_4bit>, + <&pinctrl_qspi_cs1>; + + status =3D "okay"; + + flash@0 { + compatible =3D "jedec,spi-nor"; + reg =3D <0x0>; + spi-max-frequency =3D <66000000>; + spi-rx-bus-width =3D <4>; + spi-tx-bus-width =3D <4>; + cdns,read-delay =3D <0>; + cdns,tchsh-ns =3D <3>; + cdns,tsd2d-ns =3D <10>; + cdns,tshsl-ns =3D <30>; + cdns,tslch-ns =3D <8>; + }; +}; + +&gpio4 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_1>, + <&pinctrl_gpio_2>, + <&pinctrl_gpio_3>, + <&pinctrl_gpio_4>; +}; + +/* Aquila I2C_2 */ +&i3c2 { + status =3D "okay"; +}; + +/* Aquila I2C_1 */ +&lpi2c2 { + status =3D "okay"; + + fan_controller: fan@18 { + compatible =3D "ti,amc6821"; + reg =3D <0x18>; + #pwm-cells =3D <2>; + + fan { + cooling-levels =3D <255>; + pwms =3D <&fan_controller 40000 PWM_POLARITY_INVERTED>; + }; + }; + + temperature-sensor@4f { + compatible =3D "ti,tmp1075"; + reg =3D <0x4f>; + }; + + /* USB-C OTG (TCPC USB PD PHY) */ + tcpc@52 { + compatible =3D "nxp,ptn5110", "tcpci"; + reg =3D <0x52>; + interrupt-parent =3D <&som_gpio_expander_1>; + interrupts =3D <5 IRQ_TYPE_EDGE_FALLING>; + + connector { + compatible =3D "usb-c-connector"; + data-role =3D "dual"; + op-sink-microwatt =3D <0>; + power-role =3D "dual"; + self-powered; + sink-pdos =3D ; + source-pdos =3D ; + try-power-role =3D "sink"; + + ports { + #address-cells =3D <1>; + #size-cells =3D <0>; + + port@0 { + reg =3D <0>; + + typec_con_hs: endpoint { + remote-endpoint =3D <&usb1_con_hs>; + }; + }; + + port@1 { + reg =3D <1>; + + typec_con_ss: endpoint { + remote-endpoint =3D <&usb1_con_ss>; + }; + }; + }; + }; + }; + + carrier_eeprom: eeprom@57 { + compatible =3D "st,24c02", "atmel,24c02"; + reg =3D <0x57>; + pagesize =3D <16>; + }; +}; + +/* Aquila I2C_6 */ +&lpi2c5 { + status =3D "okay"; +}; + +/* Aquila SPI_1 */ +&lpspi6 { + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_lpspi6 &pinctrl_gpio_5>; + cs-gpios =3D <&gpio2 0 GPIO_ACTIVE_LOW>, <&gpio4 18 GPIO_ACTIVE_LOW>; + + status =3D "okay"; + + tpm@1 { + compatible =3D "infineon,slb9670", "tcg,tpm_tis-spi"; + reg =3D <1>; + pinctrl-names =3D "default"; + pinctrl-0 =3D <&pinctrl_gpio_6>; + interrupt-parent =3D <&gpio4>; + interrupts =3D <17 IRQ_TYPE_LEVEL_LOW>; + spi-max-frequency =3D <12000000>; + }; +}; + +/* Aquila UART_3, used as the Linux Console */ +&lpuart1 { + status =3D "okay"; +}; + +/* Aquila UART_4 */ +&lpuart2 { + status =3D "okay"; +}; + +/* Aquila UART_1 */ +&lpuart3 { + status =3D "okay"; +}; + +/* Aquila UART_2 */ +&lpuart7 { + status =3D "okay"; +}; + +/* Aquila PCIE_1 */ +&pcie0 { + status =3D "okay"; +}; + +&som_dsi2dp_bridge { + status =3D "okay"; +}; + +/* Aquila PWM_1 */ +&tpm3 { + status =3D "okay"; +}; + +/* Aquila PWM_3_DSI and PWM_4_DP */ +&tpm5 { + status =3D "okay"; +}; + +/* Aquila PWM_2 */ +&tpm6 { + status =3D "okay"; +}; + +/* Aquila USB_2, optional Bluetooth USB */ +&usb2 { + status =3D "okay"; +}; + +/* Aquila USB_1 */ +&usb3 { + status =3D "okay"; +}; + +&usb3_dwc3 { + status =3D "okay"; + + port { + usb1_con_hs: endpoint { + remote-endpoint =3D <&typec_con_hs>; + }; + }; +}; + +&usb3_phy { + orientation-switch; + + status =3D "okay"; + + port { + usb1_con_ss: endpoint { + remote-endpoint =3D <&typec_con_ss>; + }; + }; +}; + +/* Aquila SD_1 */ +&usdhc2 { + status =3D "okay"; +}; --=20 2.43.0