From nobody Sun May 24 19:35:55 2026 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B85333D45F3 for ; Thu, 21 May 2026 17:11:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779383475; cv=none; b=B4uHPLe6q9arZc8MHj0gJigl5ZOwusG0GV7xwOUllaZeVHAceVrHhXOCoPzBiVohlLQ30VaYBs3we93iG1ekQAbWSs212O+cUKGHwVeno49RzJV/lL6M1d7IJQS7wWFC/BHFLRVtX+u5cuCnhtvvND+K4yyyn1wsxjNXCKNDq9s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779383475; c=relaxed/simple; bh=nrTpwWDzLnTkunP9cIp4DZH4zeNYymR48XaZSitFxI4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JXaFYB9rLZ84qtlujIv8InCsfX2b/T0tHUSsg2mUouHjgc5jevRjfP62gH1w+GIS4aJMCnI/GWFef+VTpSooqhvhTfVMm7u57L2bsw/T/HJLuTAb0tAo/CJxx+WYlF0XaulzyW2CtJneYfLFINC3Jpg2Wg0pHjleish2IvJHf9Q= 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=mSTv/ofP; arc=none smtp.client-ip=209.85.221.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mSTv/ofP" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-43d76dd4ee8so3031069f8f.2 for ; Thu, 21 May 2026 10:11:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779383471; x=1779988271; 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=98JuQONnWQsI55kpTBrrRllxqm+qH6cTiMyVfzawqAw=; b=mSTv/ofP0jLfhvEFiFlXUXz2tW+wNs9OaJjnhZ8cAA8JANg8DMr9Wi0Kja6T7BLpdD LgdwCVVcqeSuYA46HAoKSLJgaHNtw8cbzm58O+icyGfiuvm8saQagCMhJ5P6syzbuXYl 2c8d7FOibhixj8obh+hZNS5Pq+X4Fvfp2iiaKAJeBGyv23DGz2h4DJ+KH0R/7vr0uZwC hLszgzqJzYd6nyR3VxqKummKzV6VkHq3IBNj/WIT/usbsrm8teERpA7SngKMYD+7A6J9 7EpJaASGj/LvYPjD/5nZSDb3xUH6leVKCZzEO35WTlgnpbkLMLqG2rQdb9XmSb+BY4bJ RUzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779383471; x=1779988271; 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=98JuQONnWQsI55kpTBrrRllxqm+qH6cTiMyVfzawqAw=; b=jkMdn4WGVI0acMQDRVNBGdfHv9AqpZl8vi8eVcZGDiUCr7HQLmvt0QwXaTeHjq9O6Q tlUqXPgA1CjOodj9rI+qtMBFUmQvZUuvMzXERwt5ymW+6W1H9ONoNQ3IEI7zrizXEoWQ vZmKksrFUEPWu4MvoXPoUPh7f4evgsctv5KiG2TS9JWm27iSxe8X4u6TsS5UHgMs5pFb KOje7i6nQ8pkBbelgBHh0aTzVreO5msWEryYG5lIN9hcuLs+SHer4Kiorl9xTAQVuaEJ UKLrC+jOJKxMaR3fDLtedQdy7zMKZl1C6/74dxAAG/nA+M2TxHtcKzfzEdjoH49kjhht mPMw== X-Forwarded-Encrypted: i=1; AFNElJ9lDbWKrgW0TlPxREZceG6WldmXh4388yx6S7AwxzuJd3OEpXkAndX6tWZE0mGW5H/gFezWV1O894ie8eM=@vger.kernel.org X-Gm-Message-State: AOJu0Yys7X74sOROoUlWt8oNVtTlOYdketjNa265z6TwtMJo5lvZT7l7 DL5ohKqZ6OFHLhHINBxRX8u59GMIvDcgJkUPMCAYNx+AuXXzf28DEi5I5WvCUyE2 X-Gm-Gg: Acq92OGBXZgvXtILq0hFPzIOmob89y40zZ9MqFB8yd3O0XGbqIx1MeGypfx215S48u9 GnPUeit5URJn1GBuWM6cpRsxn0+SOMwKjIj4OcI1UqW9APeAaEpa62dHtDcpxwpdUln5tFOaJkX EqhQqquWL3jJSYR6LRJwnrYFyX2/Jugy/99W86L+fNqkrBX0a5WrW+xwVOQMVNV9y1t6w0zHv23 xYSeu7Xk9seM19wZIkitGgvJ0c8vTUM9G582xa24IQTBejogDUorLDPgttrs2Of4PCNPW5pL7oN 9Auw6qGQQEG3FhfM2qv8A8KMXcZHj6+vKkrbbMmZulxX2LVej4Od2dFhpQe1LeSY9KS2U0ROHNB cqrjRwy0PN6JbveI9YpR7hI9fYplVN/sLjXDQGe0W1WOYh1tQhoUqeM8y5aSfI16atUOUcXw8zW PQ7yzVMFFMd6DuDaKId+yz06QYiW6lQZs+KPlEp/cuXlazqBmPVoVxb3/XOXlgCBK54JtXMft1a Rk1LTw/pOaJtElJeNhfm1wLomzXWkCe2LzBFLSziGQuuANBT6LXPWsTK1Suor2uE7CR/ohbEnme Jg== X-Received: by 2002:a05:6000:22c9:b0:439:c18f:5aaf with SMTP id ffacd0b85a97d-45ea3bf0b1amr6276246f8f.34.1779383471016; Thu, 21 May 2026 10:11:11 -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 ffacd0b85a97d-45eaa7cd815sm6046116f8f.6.2026.05.21.10.11.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 10:11:10 -0700 (PDT) From: Franz Schnyder Date: Thu, 21 May 2026 19:11:04 +0200 Subject: [PATCH v4 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: <20260521-add-aquila-imx95-v4-1-5a7f86c824f5@toradex.com> References: <20260521-add-aquila-imx95-v4-0-5a7f86c824f5@toradex.com> In-Reply-To: <20260521-add-aquila-imx95-v4-0-5a7f86c824f5@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 --- v4: No changes v3: No changes 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 19:35:55 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 219913D8125 for ; Thu, 21 May 2026 17:11:13 +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=1779383477; cv=none; b=e0SBo3qxHPbkjF5pnBwmqaT/BnrztKoncyWyReZhCW79o04b69w7d6nhAh/9sCpjRxF1+1GFFj3V8ucs/jTa/l6Kvt6OvOIL30PlRyB1Fb+4rSgdjFq4Y3CxEW5Tkcg0KxmyYdu0S5wvk2ILSoZJJXawoiVL14m4iFhzImu0IJA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779383477; c=relaxed/simple; bh=KQKlx7ekaKPQ4wtTOGLborCHDTlPU+A+OP5RNX9DNYg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S3WLU44+NP0lumEp+PuOtPI5u23I1wMmZYGCeyKX7uF7DzJFEdkJ5uFd0pU+r3alZ++v0FzWPklnBpOA4nwMGLybfLKOjLiq13FZQ1m2PEaIxA7cGzEZNIr/6sfYZP0Mi6+pVvhFOnbTJrF0n2oo8Geg8ozsGdxs8LD4EfyYyqU= 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=b5y0b8N0; 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="b5y0b8N0" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-45ea19f412aso864915f8f.3 for ; Thu, 21 May 2026 10:11:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779383472; x=1779988272; 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=FaE+VIx1EQ6AuetzSowQTniiKPh6o4A5kD2h/Ufer5Q=; b=b5y0b8N0BTk/bKz5AznxpIB2CyEVrVYzWAXC2dmmeoKCbNFSiIuXQRPZMHW6r7uJEG gqy1LwyOyTwDUCOElXrlVFbI78u7PmVWJR/0YnDDef36el1q5FuU/tCytyiEd4LQqD6S p4RS/acklWDGXqJCxVqthailB6v+UhV3CpuwISkQaOLmfe1nn05lUjJOQWfWyJLgop6O kP7PFAXWgEBekJ3W/a93mCrxFGe1yw2j1rdtFs4dQ9zn9lUo+t3lVTA1yLvZmEuzyOem CL0vpSqhG4yR8QEt9x5ZFqwyTtqpI97ddu2BcO5/v4vNLXDxzdwZ5FZUUWDyZ07SdU0T W1Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779383472; x=1779988272; 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=FaE+VIx1EQ6AuetzSowQTniiKPh6o4A5kD2h/Ufer5Q=; b=CQVIHsks79ch+4QjEDWPDnc0citNggrFaEUz4UB6t9Xg5q8Uwg9tpLL3XvU7HlvS0S x96FKqLWMf7fT1IiK0KrLpg0vGYrSOMCUyWKPMWZJLkcfSYycQoQVykvCJo8mjrtMA8u Yb49hVJFYDSJ0MoISwUl2ofVKp1wV8tALblP+XtAKmBY4eZNwwbkCSnD+BCrzvAnYVwj i9ABFEWsEA0Am6AUYibeuqhty9BGsaoQX+kisD7axxmg3TkyMrs3k9VYDJDz2D4geomj Vc2PSnV2ZfiUHwJg7XtAE9tPtV48bFpMlmy+bOjL2XfD/2M6lQYAp/pLLJYtODNTiI/2 Jdfg== X-Forwarded-Encrypted: i=1; AFNElJ8+RpS2ZimLal9E8//jwGZPuP1Tc20uE4/JwGbSFULSr+H5xq5Hs9jM+kTPi7K9SWFWgteuLf2EFMMT254=@vger.kernel.org X-Gm-Message-State: AOJu0Yxqj8o8fvW3KP3oLxSbU9rOpEsx3EMeV9IpeRg4iHVhd1XcUwgQ +A1Oe9M/Ld4RhQfHmVyjKKDpWNYUiPzBTjLN9nOSng1S3S3CJnJ45uGV X-Gm-Gg: Acq92OExJ+AzEaoGQoMlHG1oFzHKptIORncCIF4VNKO8ws445jtiiZe5pMCFLZa7sSA btQCfTfsLFEFgNKOpG+hftabd3L7yWFEMmi7FQe4jC9K3Xbx9N47inBauaPqNpTDfqxjHQCkXUs 76AzDCR9KoLGciS4KZEHl/V2id77P5DC9jqPJyBUK8ViPEfJPOB6znp+FvDYtf50bD47kB9w9zE 6KR7sHyyvIA0Y0PlxL5CfmhWswNttAYISHsyGQ0CDxSAohX1EHVBKlGFItEKqM/GkRrXS2qgj5G ALSiZDpl91PStLUH8gnEsoR8AFsKa9PnYuLbcgX5t6bTr+HoWrWAI0IW8ezkSLpAYN62er2kOPy 9Y6Y5tb+Lv8Ulr/qlfRxmodDHyouQQNdyeHlshnv65D1V4giMzGvLEiMwTFps5JaIG40wMHYmle KzA/z92E84kWns4litpLWrBl6iOpSwOHbbR4S5HhGMgpz/nGhme3LFrpqGrksb0myBrkcujkcvC sTptwd+zz8rdH2QQF8qKUhGbLnxF2+e2nzS2vT4iJeOsqq+6qgnYvyJeFIrn8Efw0qqL/d65J/f sA== X-Received: by 2002:a05:6000:41e5:b0:45e:a19f:22e4 with SMTP id ffacd0b85a97d-45ea3ef2dc8mr6393559f8f.17.1779383471973; Thu, 21 May 2026 10:11:11 -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 ffacd0b85a97d-45eaa7cd815sm6046116f8f.6.2026.05.21.10.11.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 10:11:11 -0700 (PDT) From: Franz Schnyder Date: Thu, 21 May 2026 19:11:05 +0200 Subject: [PATCH v4 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: <20260521-add-aquila-imx95-v4-2-5a7f86c824f5@toradex.com> References: <20260521-add-aquila-imx95-v4-0-5a7f86c824f5@toradex.com> In-Reply-To: <20260521-add-aquila-imx95-v4-0-5a7f86c824f5@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 --- v4: Removed som_dsi2dp_bridge node from the dev board since SoC's DSI controller is unsupported v3: -Changed QSPI_1 4bit iomux node name to 'flexspi14bitgrp' -Deleted the cdns,* properties from flexspi1 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 | 389 +++++++ arch/arm64/boot/dts/freescale/imx95-aquila.dtsi | 1160 ++++++++++++++++= ++++ 3 files changed, 1550 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..3df17700b632f --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-aquila-dev.dts @@ -0,0 +1,389 @@ +// 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>; + }; +}; + +&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"; +}; + +/* 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..69dc962a24a1d --- /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 (4 bit) */ + pinctrl_flexspi1_4bit: flexspi14bitgrp { + fsl,pins =3D , /* Aquila B6= 5 */ + , /* Aquila B68 */ + , /* Aquila B67 */ + , /* Aquila B61 */ + , /* Aquila B60 */ + ; /* Aquila B63 */ + }; + + /* 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 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 19:35:55 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B312C3CF95A for ; Thu, 21 May 2026 17:11:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779383476; cv=none; b=ccK3itkjfnKubNNSwTsTKov7Y3b1GRtFL1mc01A45QJCshSbU8X2OcLJpX4MnCUa0BGeirhR8aenD9oDyXNALU2ifruP8YCY1pMuidV0uPr4xPnDrF7jmxMqDHwpxpPdfwsPJPUDHOcGfn7cJ0tyukIS32Zevobq7O3Vn51bQeY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779383476; c=relaxed/simple; bh=l+Z/S9SLFL9uFx4apERbedhUF+sGfqVg2g5o8/0LSig=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kNCawRP1jZ0Ynn6z7Hu+kkYjjyt3VCSQHd1YHznO+oKwu+LRySjNiw8UwCYxeKddr/q5r4snlH/t6auR0OgrOGRrl3Jdlc4P5xY4V0q3G4O0/ii9K1i+WNC0DjPf+hpz8yZknMm7adfMrc3iDMAQGT+V+LVqnfq7RJJrmBE38Uc= 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=tJXUPFv8; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="tJXUPFv8" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4903997fcb5so9796455e9.2 for ; Thu, 21 May 2026 10:11:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779383473; x=1779988273; 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=Uzojvou9PreCyMqlKB0ITJHhjS8Bp2G8JTIzBhB3sKg=; b=tJXUPFv8lDlB2NPTgByBWUrDhP4htTWOPJ1+SEqPqWAVCgTGRAABMuq68Yt232VyUi 5UEIM1DvxfE32NEeWdPBsTG34upe/Nxx4BpCZTmzn7eH8sQcwFvZZckp7kBUb35+USVv QDxG0FC9mLVqA3Iw3LWU4QWzAieaaxlASmXKtE5xTrgXRe4Ss7pnVzQGj6y8jlebQ9B2 WN8aCudXiAWPQ6HN/tEZlQSml3/k3akV552vDdA/YEH9YzOd6GpNwBpwEuzvRm5ti2pv KKhPh67fAMODMXx7T+/erIW+WAVdUc/EGrvKXwAZmb0+OPmQOhP9i9u5iD7tHUX/R40o YjPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779383473; x=1779988273; 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=Uzojvou9PreCyMqlKB0ITJHhjS8Bp2G8JTIzBhB3sKg=; b=QuVsAVqXuiKStvaHQyg5yJ/Cpn+4YnHAc6FTKPXeTyqm9Fatih12DRtziizOfXSo+F sxSh4LIz8jJ2tAi4kTSDKg4nnP/DykEiBl9TV0AI0Sj8A5KVJKwA2vmmMHAlsqEN4WEz a8X2WtqbUN3FstVPuED01j006/J7Fr+OUDz8yTyP4w0UE5roZAsRe51rtQsJmn4issqP 6DNZpE/Ed7QHmpSIFLvU7pUCnQOuODX3OA/Q/Th1+zunMis/xtx0qp8K+tqsbKpKWey4 ZaoD8FvuuzKObRTHP0qnmSudwjZ4iAuRHKhARY8qBEYgTvwx9RHZlp3A6oI1DJwPdVD8 p4OA== X-Forwarded-Encrypted: i=1; AFNElJ883mKoEmrMWHG522qiMU8Fy7si77j8heiW0YdUEhU+rEpQCf8CO9ljSrBFepzmbJcnVnRjQD8G3lh4P+s=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+KHO/9yuvZEBHJfmmNDXAqD1A68ZPWYfkuRROYreKe9fctHmj zX6qPt8keyZopTdqMEPnYsAOgYX4ywSaFbGAK+owEm62ldWiSrnwzBSe5dKZQIoA X-Gm-Gg: Acq92OG81I3UniRcjWWDXB+yWVog+sOclPeX7bZ9dgfQfReD1G3R8tFzuAwGwghYngk GQ0HmpFI2NwPawzn0pJKLHPSXssAc6DiYBEcdH3hINpEQEXv3dnkBj0oPmedDcayxMno3KNEEYr bRxNt+DFLDw+H/6Rn1ZrMYWxdfXb853Wp1h1JbCLIidexDKH3BWW96d2lslGAUr8oi5WfAPfVjA 6w4MaGE8ZFWcgM3AIHU/Km4X0FHCABeDf51JMHlu4XIa/411n/gKo9/X5bONnWxt2Hs8VAj1INE ZVJuVNKdvxmxH8nqnZK9JRpzLLjqmbYJ/XstxcV7PVM2qXt/2K7/Hc7507223Oey2qkGfNIXqtI aJTl0aXFSGsS0NLbVZmbvbi/lr/XST5Gv+UJHKYawpGEHO/rbcHXyhMNM21lTuS0SmgpLiyJph9 aS1DxnonlJvZH2aFxyf4592eS2vezph36GDsWqn1S6oC3E5VpTbX9YVsRlPEcNUO3yIlYBkiaI2 LdSZi115hz9EGt734a36Fr11CF06X7yqDVt86B6XkQeJm022uh2QW0n/yh5UTgGfJUaaWmTkzr7 dA== X-Received: by 2002:a05:600c:4649:b0:48d:35e:84a0 with SMTP id 5b1f17b1804b1-490360b366cmr35136805e9.28.1779383472821; Thu, 21 May 2026 10:11:12 -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 ffacd0b85a97d-45eaa7cd815sm6046116f8f.6.2026.05.21.10.11.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 10:11:12 -0700 (PDT) From: Franz Schnyder Date: Thu, 21 May 2026 19:11:06 +0200 Subject: [PATCH v4 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: <20260521-add-aquila-imx95-v4-3-5a7f86c824f5@toradex.com> References: <20260521-add-aquila-imx95-v4-0-5a7f86c824f5@toradex.com> In-Reply-To: <20260521-add-aquila-imx95-v4-0-5a7f86c824f5@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 --- v4: Removed som_dsi2dp_bridge node since SoC's DSI controller is unsupported v3: Deleted the cdns,* properties from flexspi1 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 | 285 +++++++++++++++++= ++++ 2 files changed, 286 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..fd93043314466 --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-aquila-clover.dts @@ -0,0 +1,285 @@ +// 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>; + }; +}; + +&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"; +}; + +/* 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