From nobody Sun May 24 21:41:18 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C2FB367B89 for ; Thu, 21 May 2026 09:03:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779354234; cv=none; b=T+RJXHFzZ0wfR0qr7dkCNbOH+nASYKCmFudVfRx30L9U/YlkARUOd2KAaQW6W9KQO6XBGNP8bcuMCRPy7zsN1TXP0MrQ2srg3onIMFh7VXkFtvCev6ZgAUMoYydBaHYpVznIeugRiwa06ad5VmbnpcKwMCQDMnvXRGYe4t56Sfs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779354234; c=relaxed/simple; bh=utKvz2pSSj71JvdOn9TmwqnNZ0nsKBa0WY+09/l+KLo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=C7XbZAganZepwOeJmr7x0IH8NZObq1Wx8v/QD8Fc0rFSqA1KjCITHw3rV9NqQ8Ln3pUScZLyxzIIallMjlmDj8i/Rvk16i5VUzTpovBnCuS66uekV2zL1MquriFxKIxgJWyHOkG0j8z9nAIyUvlzPuZBhIxxJ+fww/cnYJQEw/w= 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=mKe7xTj7; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mKe7xTj7" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-49039a8851fso3309305e9.2 for ; Thu, 21 May 2026 02:03:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779354230; x=1779959030; 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=1Pc5FY+vpBD78oI22TjAWL4xC2GsHLjSnp78r+My6kA=; b=mKe7xTj7GYo19CAR/E7h7MX5bqRbISwTver0HEFPvIMzygDcJ03/ymF4ghaZ4Lid6p 6JtzmCaFVUP9Rq1GrfqWPjIh8n75UXvQbrmLBMF6QaUchNkdHMjJv5HSadE617TzZeSo ffebapmdhTgp31BseH2QyvHvXl1Qa+HECwtzGyytQZv4vsM57ueKOnmFKvajWYdXc+42 1dweUfBXKPXheSnWnMQplwq+TeVLZ8KbRVIr8yiBddW1DOHsJGqJN3NPgdzVaZgbt/0R JJUzN9EdQnWIyRleBwBZNEDHd3WIOzaVOa/+dh0/q40QHNMT5MxACXxDp0WzoTH+n4Lx /GGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779354230; x=1779959030; 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=1Pc5FY+vpBD78oI22TjAWL4xC2GsHLjSnp78r+My6kA=; b=iYKgIzrq3OGel9FjG9QL3B2zZG3OanVMPyOy05S400jIPbP9dYTcvv9prVtbtt+kJm gtu3HJVEOv8PpOdysh1O9zBw0fJsLsGZCenBRBq2CQ3JC5DHhhteK02DDVESkAADDG9t rGIUNCE5Sb51mXY73febnVtjQq43DBRTmnmOHh7xsRauyQCPM4Pjffb3BX3Qfkzc+d0C JghX5AcxKRR6/fL8L/5yYUeb69Dg3A7M0DBZUrzyVp4nP8/VpvN7IS9fINErQ9JpOShl K9A48M6EhdiJnflRLZIS47G1MNLvKR2bre0z5hLHfCqLRdej4ZO12vKO5GQ0h332Eq0V 1nsQ== X-Forwarded-Encrypted: i=1; AFNElJ/TkZeDE2p+VylPwSZJom7yhUWDdhmxno2aEM9fuPGaBnhEL5IJeTo5w13Ku0spWcdh+2GWTutZEit2ht8=@vger.kernel.org X-Gm-Message-State: AOJu0YyF1HvzKoHobHNGRzJ7//Befhq0yrlCXaQkgKxD0+Lnvlx08a4v rJorlmpMs/3VxmR5t5sNO3E4aunwjD+S3sNcZc0ozTefKr7f6hV2sRF4 X-Gm-Gg: Acq92OES8gIALHXCZs/N4Ij+Fh/LCzJxK0E/BRkEtbFVMw+N4MfAQEbm7CmPO0PVUY5 7tfDC3E9pUoYy8E6mITHGK3dYdcxWaJ6JqsKWHH90vft0QdGTEPMUHlyB7bBISYP3Kyv/IAOlNl c0uFWLx1ADk4AbfHt1QZTXtxhfU20LhXIKAjeVfJLfdKSVlXFxp3L3XtBuNNOMltha8clBhenSi EHAi3C9Zt1jvPbTghwUp++LrLM+OWYQv7R+7xeXsEWKxM8f5YFYrj/fzh6bv2DYvPGuuYor2QTf 23MEcxEk/e92AajdjtoLHnagO2EJm5Bn6RCO37EA3Thld+m3jECPPAVgjv5WFsYrUGS9d5f06qd 2oMdqlPkHzzCXHyqvpwAWS8VGK9Tjxlo4FZCTLa2EjpfIMPGJPJZDSN3QuFpDX8drbKntOoIktu MLPgRAZrNeSiMsvY07nqEo+vFql1TcIYlJBI/3vRbG2A0xPIXtpdFfdhZJKwsHtRd5ZmoCcMYGf btPskPnnE4kBv/GzA8++QVVJfJSBrItICapd7fDGYp5CM6dB2+s6d40rT6Fxg0xm9aOj8lmQi+i pg== X-Received: by 2002:a05:600c:a108:b0:48f:d346:e646 with SMTP id 5b1f17b1804b1-49036039969mr21695725e9.10.1779354230309; Thu, 21 May 2026 02:03:50 -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-49035c72c78sm16151525e9.3.2026.05.21.02.03.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 02:03:49 -0700 (PDT) From: Franz Schnyder Date: Thu, 21 May 2026 11:03:45 +0200 Subject: [PATCH v3 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-v3-1-621843807def@toradex.com> References: <20260521-add-aquila-imx95-v3-0-621843807def@toradex.com> In-Reply-To: <20260521-add-aquila-imx95-v3-0-621843807def@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 --- 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 21:41:18 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 32F1F3314B9 for ; Thu, 21 May 2026 09:03:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779354240; cv=none; b=nZ7JTFwW5WV4GmwIo3vaDHPqBHZ4zzcCDQ8506oYVFYw2Wp8zxtBmqJiE6TZZjM50ZA0PwiVrdI96oreMF+oixDuOtme5W/rBjCkZYtkpRuCN9zZbEruAmmHQ6YjzZWDD+4JcTAJJOCfHBAc/8QuF34BZcCUAECqBJhjMUW+5qE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779354240; c=relaxed/simple; bh=DMYCGwUpDNcPkvZ0E7m1PjdPmSruRhjKmsVlmeRuTjg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=AqsB1WYFsBsMVV7s/XbPxj+gJlr2nM0KDboNJAUAiN1GIbUVPPtlIYEfoXAwjMAQHJ84cngtSTH2r8+DdtslCp4oGdt9VIihtTfLsE43geAoJH8D4SunkNyzhju+RKTaJdBrF8w8HKOrGcB5liLVXvQGc0E8z79SCbxHTY7AOlE= 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=fB8ebYUP; arc=none smtp.client-ip=209.85.128.45 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="fB8ebYUP" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-4891d7164ddso32033235e9.3 for ; Thu, 21 May 2026 02:03:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779354232; x=1779959032; 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=1cvv1r4I+/wlWpbS6NcBaBIfFa4AYhpB+ypJiI1FKAU=; b=fB8ebYUP0wP5m/Agd6vnVTi3gEo5oEw5mSdRDyFzED7ueuBgC2bXjIhiPHZuIETr9v OCrhdwXtpbRA/0rRwdTBuDOhRrlWDirAH2uOm92dUEcwReuMPS00uPtmqpA3WJCFtrZY gIcfFmjgHAJJbauCMtTkRMexag1xM0/B1GazYNTQSxpzbN4Ha+OkpK74W5aNnTHxFabt V+QTsQtKEVGb/0VBQwY2++AyTkzWmbAndJErQ0bQmcfHbIbfNoWSrQaSO+y0Uu+11kgg 1q9ovgX4uIHIQzWzDeLfRJOmxpflwlshIl1KS2uc+ZQyAeylygh5o4j/vu2CB9RHJ62U zZdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779354232; x=1779959032; 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=1cvv1r4I+/wlWpbS6NcBaBIfFa4AYhpB+ypJiI1FKAU=; b=I5zOrif6O1QBWsT7A7BZV1+1NDx6i2QoGU+dubrTZL7hFLvdJYg83KzAP2llB+Kyh/ CGNPoMYk5KN2q1/HXjPyQxSkEBijez0LLqa2/xG8/L4kNQn6ZBSzxkmiOy5d4xrjnkMN TfQd8DSXO70DsAw4szqhnsm/vcOKWPHrFct5PtM4lacz/5JUHnylObx8mmTGceyVAb0Z zaczMdRkq26WrBwjA2nng+kL7+kkWPIy5SWXoBOr6QBvd14kc/56b/GWwJkSII2ct22G ndQZrONtY9ILnJh7K/vqdaFExT47euIMitfjiFgyfooSEvKBbHgV/w+8ACxMkqapCvsL N5HA== X-Forwarded-Encrypted: i=1; AFNElJ+xDX0d8P8J1cDy2WBIih6I5tNFzIxsKF7NIuHGbO/Hg4RRVYsHniqs9eve6jybUNGgzDWMGqTuxEOoZKU=@vger.kernel.org X-Gm-Message-State: AOJu0YyRVX3V4djUU4+8i6GyZdubKhQm9a0qr/hQ0BM3bfbKzu5Fly+A fQxIP4+nunkg//h5i/QJDObuS+d2sD7ZbUH/Xw9Y2LRQlMicQ/TZglc9 X-Gm-Gg: Acq92OFV+CwX9MD6pzurVefk+wshltVk8Hd+XplT7jFzUAYGLUb5LyA9T/iJzkJzT9O RLRXlIrW8bxcz3lOAyk/D+E+F9EaZ4CR1o3T9IawJttQ5ovlK4Y/2BDfmvI8wtoN2c+Wep8IoVm P8invbDOPMAcX+gk3ca1CyjKKcPgpmNtXhojgC/2Li5m04teUfMkY62mjPgrIlRGQskGhMzCwWN tcUekbQa17pqqoSADAjm+qNDkE3YaKhpaH/H3rJw71g4oHb8RlrWtdBHGnm/fGkv1WvLxjUP39f eEvA2gxcIz1383xswOT3CcYFXt0U7M45CPvrzRJpcq938N2LErYvnaCnD/XBb292aPKtUBMXsmC zo/2HOOd/sJ7BIpkrT8eqikzbOvw/61SpX7yg51f6gcct228NNQNJWqQw9MTB40jsAFgq3hi0li RpWsaY4hCXJdDT7GDynl7pcmjwye1NjhTiPkHQmfVXiqAGx98HP0zsNTEwIE5b0G9a/WRTu2tGW 58/AuGlfyPWXdaef7TJJJET5Z1SS2jyghCvIo44NCqqNkATF4MkRqnmyBMYQy6TE+2M2HLVKwM4 /w== X-Received: by 2002:a05:600c:8b77:b0:48e:82af:d9 with SMTP id 5b1f17b1804b1-490360bbdf9mr30738885e9.29.1779354231333; Thu, 21 May 2026 02:03:51 -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-49035c72c78sm16151525e9.3.2026.05.21.02.03.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 02:03:50 -0700 (PDT) From: Franz Schnyder Date: Thu, 21 May 2026 11:03:46 +0200 Subject: [PATCH v3 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-v3-2-621843807def@toradex.com> References: <20260521-add-aquila-imx95-v3-0-621843807def@toradex.com> In-Reply-To: <20260521-add-aquila-imx95-v3-0-621843807def@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 --- 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 | 393 +++++++ arch/arm64/boot/dts/freescale/imx95-aquila.dtsi | 1160 ++++++++++++++++= ++++ 3 files changed, 1554 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..bb4a3631af9ba --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-aquila-dev.dts @@ -0,0 +1,393 @@ +// 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"; +}; + +&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..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 21:41:18 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.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 0EA331C3BFC for ; Thu, 21 May 2026 09:03:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779354238; cv=none; b=JXFNRZ15I60gZaCwzbCO3n4Qrx6EFj7z4EITVKEdsyJh69TE6Idnl0hpDxoy1G06+NE+qZJb+ifOCL++MPpFUSTR++knKzGVs2NvVogwTXuD/zxkClp9FfmAbciJXQMP10uZqZZl2mQOtUQxnQReqk+JGlei/CQcHOZl4jwT8ac= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779354238; c=relaxed/simple; bh=xlgIbakHpJWlfb88GgrtOWV5MkVbOQWhi8kTZqbHiBo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gq+Bp+pbhAYKsn5e3DTsCe6xwKgaWgzAGBBFLZupj4o97BzQ4rWhJK49xiclwE69jjK9qnWPY0gctc4+OoyeBsR6R8UnJfi3YRxv3sJxxcgqWhKf4P7fupI1ad98vDSzm+N6EhBkdr9E5L1H0OAOhvO3b4fJV8orYKkTRWqL+7k= 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=IFikv1us; arc=none smtp.client-ip=209.85.128.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="IFikv1us" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-49039a8851fso3309705e9.2 for ; Thu, 21 May 2026 02:03:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779354233; x=1779959033; 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=0Y36SgBQ9cIMBn0I5RWu40X8SISnSEeAXBBuc0ToW2E=; b=IFikv1useLsa+hTkL1z3+S5cI94Sy36HL9FJskSNJFSv4pATMZ0zUbY2lEJEL1Q3AN C75OB343nCt91lPnBpcJv3YGiaJSHeet+X6N47S+SDA46kVmw4t35vmrvVOzo4MQBk4a t8NB3im/HF/sPI5IY+DLodcBOa0sr5B8ADL8WmToM3E+ETXei74qtZl8qUfqS3TCtX2G 29cSf6QsEY0KAIR2OQqj1VgueNCAuo/mgZEktZB10CcVCquysSl7WHj8uldGCPk0JXtz BwtgjiYtErPeDy9O7982qetMb2VglTw7JP8eC3/uomDqN2IKNm8PkxaQD0h4pbeMdPHb AEAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779354233; x=1779959033; 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=0Y36SgBQ9cIMBn0I5RWu40X8SISnSEeAXBBuc0ToW2E=; b=eaNHijQpTajgYyKtzWASS25FS4MbGTH9eiALLFxDadaDC/sepeEplyNK8DNUVfPoLR kH8Ulltz7ZanCGo7roj3fEHPb0EUF0p2QodnDCY6Zowa4ZhIg4G0K+y/txErcNXUHAgB ZVJqIxPag3AhhXuePEfV5UKNLjOGBN9YyFcg6O/+cd2JxAHS+Q95+Zx7PojfCkWd+Pgq q7lflNWvkCaMn03wRHXNJGiZLrQNgnSH++0sqi9G18FfSmeTLypJmgO6P+ZhhNlr8kNg ywGRutBftQ9stuYqYFHn55FKB+yrmH+j8RQxFlYShG0AdawzWQuBucPya3QGJtslgfEc VgrQ== X-Forwarded-Encrypted: i=1; AFNElJ+uZcGaRO8y0yzM3l9dfdg9UZITZxE20ekCfnKIrzjOIvPxYTm0vc6mR4BCGzAytxix9FYrAjjZ5X0MTj4=@vger.kernel.org X-Gm-Message-State: AOJu0YyQIdgWS6uQ8gxPd2xWmiLyUOfEOjysr1fRESfrHij5lT4wyqXZ Hy2JZ09Yej+uA09nNgSEbOBGyusebj2omaCPjZpoYRn/4eTMuTDDYDPm X-Gm-Gg: Acq92OGlnu59xY9xGhuOvglaIIYrwqFASc5MS0Mi0riq8TNDPyKU1rT/yCjSWg5sJoq i0cO2C3clOnY0tc64k/MxhJcJRMj0dTsxBONlLaetRO3s32LNKwSROIIG+LSgYpq2bbvLXCceVR tRtnKFD0IXDUlSWRwHrzoci4FLow+ja40Lr8X6dUdBjPTwQ3MKeP4N1CfIiP+lNl/V78M6AK/UW FEt7ElNkiewnXjkuFx5Cqfa2RrilLPV4fGsLGqtNiZ4OlfY2rDFKuNG2iLFDMURoOK/Bp44s/Z9 BKTRTZX0A76HkkW1BWMoZH7EIG4aoJUCMfvB7IwgxiFbmC6r1O2SEmbCWf+NHRXaWgvAifCIjbd FGG6WsbdQEYzDmaOQgy5RJCBbt5z5DjSWUou9M5SOgi5ZcAUwZaE9h9EyD4w5e5E9l0oPxl6vf8 uln3ZniSkbNQE+DfYMkVxh+XIEiN5G5KIBtAnUIEC0UlxxCfpYpwDM2bKVKNkhYxhmboJ+Gz/EK C8qTXXR3icxvDxWqxDJEsJKiD+B8wVfTVz5afSzEvF2bUQWK6U2mqCXUekjE1txgaCS0a0JroJH rQ== X-Received: by 2002:a05:600c:4d98:b0:489:2005:b36e with SMTP id 5b1f17b1804b1-4903607ced6mr16564025e9.19.1779354232294; Thu, 21 May 2026 02:03:52 -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-49035c72c78sm16151525e9.3.2026.05.21.02.03.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 May 2026 02:03:51 -0700 (PDT) From: Franz Schnyder Date: Thu, 21 May 2026 11:03:47 +0200 Subject: [PATCH v3 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-v3-3-621843807def@toradex.com> References: <20260521-add-aquila-imx95-v3-0-621843807def@toradex.com> In-Reply-To: <20260521-add-aquila-imx95-v3-0-621843807def@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 --- 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 | 289 +++++++++++++++++= ++++ 2 files changed, 290 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..751232e6fa8dd --- /dev/null +++ b/arch/arm64/boot/dts/freescale/imx95-aquila-clover.dts @@ -0,0 +1,289 @@ +// 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"; +}; + +&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