mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00

Add initial support for TQMa95xxSA module compatible to SMARC-2. There is a common device tree for all variants with e.g. reduced CPU count. It supports LPUART7 for console, CAN, PCIe I2C, SPI, USB3.0, USB2.0, Audio, SDHC1/2 and QSPI as storage. [1] https://www.tq-group.com/en/products/tq-embedded/arm-architecture/tqma95xxsa/ Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
324 lines
6.7 KiB
Text
324 lines
6.7 KiB
Text
// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
|
|
/*
|
|
* Copyright (c) 2024 TQ-Systems GmbH <linux@ew.tq-group.com>,
|
|
* D-82229 Seefeld, Germany.
|
|
* Author: Alexander Stein
|
|
*/
|
|
|
|
/dts-v1/;
|
|
|
|
#include <dt-bindings/phy/phy-imx8-pcie.h>
|
|
#include "imx95-tqma9596sa.dtsi"
|
|
|
|
/ {
|
|
model = "TQ-Systems i.MX95 TQMa95xxSA on MB-SMARC-2";
|
|
compatible = "tq,imx95-tqma9596sa-mb-smarc-2", "tq,imx95-tqma9596sa", "fsl,imx95";
|
|
|
|
aliases {
|
|
gpio0 = &gpio1;
|
|
gpio1 = &gpio2;
|
|
gpio2 = &gpio3;
|
|
gpio3 = &gpio4;
|
|
i2c0 = &lpi2c1;
|
|
i2c1 = &lpi2c2;
|
|
i2c2 = &lpi2c3;
|
|
i2c3 = &lpi2c4;
|
|
i2c4 = &lpi2c5;
|
|
i2c5 = &lpi2c6;
|
|
i2c6 = &lpi2c7;
|
|
i2c7 = &lpi2c8;
|
|
mmc0 = &usdhc1;
|
|
mmc1 = &usdhc2;
|
|
rtc0 = &pcf85063;
|
|
rtc1 = &scmi_bbm;
|
|
serial0 = &lpuart1;
|
|
serial1 = &lpuart2;
|
|
serial2 = &lpuart3;
|
|
serial3 = &lpuart4;
|
|
serial4 = &lpuart5;
|
|
serial5 = &lpuart6;
|
|
serial6 = &lpuart7;
|
|
serial7 = &lpuart8;
|
|
};
|
|
|
|
chosen {
|
|
stdout-path = &lpuart7;
|
|
};
|
|
|
|
backlight_lvds0: backlight-lvds0 {
|
|
compatible = "pwm-backlight";
|
|
pwms = <&tpm3 0 100000 0>;
|
|
brightness-levels = <0 4 8 16 32 64 128 255>;
|
|
default-brightness-level = <7>;
|
|
enable-gpios = <&expander2 1 GPIO_ACTIVE_HIGH>;
|
|
power-supply = <®_12v0>;
|
|
status = "disabled";
|
|
};
|
|
|
|
backlight_lvds1: backlight-lvds1 {
|
|
compatible = "pwm-backlight";
|
|
pwms = <&tpm4 0 100000 0>;
|
|
brightness-levels = <0 4 8 16 32 64 128 255>;
|
|
default-brightness-level = <7>;
|
|
enable-gpios = <&expander2 3 GPIO_ACTIVE_HIGH>;
|
|
power-supply = <®_12v0>;
|
|
status = "disabled";
|
|
};
|
|
|
|
panel_lvds0: panel-lvds0 {
|
|
/*
|
|
* Display is not fixed, so compatible has to be added from
|
|
* DT overlay
|
|
*/
|
|
backlight = <&backlight_lvds0>;
|
|
power-supply = <®_lvds0>;
|
|
status = "disabled";
|
|
|
|
port {
|
|
panel_in_lvds0: endpoint {
|
|
/* TODO: LVDS0 out */
|
|
};
|
|
};
|
|
};
|
|
|
|
panel_lvds1: panel-lvds1 {
|
|
/*
|
|
* Display is not fixed, so compatible has to be added from
|
|
* DT overlay
|
|
*/
|
|
backlight = <&backlight_lvds1>;
|
|
power-supply = <®_lvds1>;
|
|
status = "disabled";
|
|
|
|
port {
|
|
panel_in_lvds1: endpoint {
|
|
/* TODO: LVDS1 out */
|
|
};
|
|
};
|
|
};
|
|
|
|
reg_1v8: regulator-1v8 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "1V8";
|
|
regulator-min-microvolt = <1800000>;
|
|
regulator-max-microvolt = <1800000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
reg_3v3: regulator-3v3 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "3V3";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
reg_12v0: regulator-12v0 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "12V0";
|
|
regulator-min-microvolt = <12000000>;
|
|
regulator-max-microvolt = <12000000>;
|
|
regulator-always-on;
|
|
};
|
|
|
|
reg_lvds0: regulator-lvds0 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "LCD0_VDD_EN";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
gpio = <&expander2 2 GPIO_ACTIVE_HIGH>;
|
|
enable-active-high;
|
|
};
|
|
|
|
reg_lvds1: regulator-lvds1 {
|
|
compatible = "regulator-fixed";
|
|
regulator-name = "LCD1_VDD_EN";
|
|
regulator-min-microvolt = <3300000>;
|
|
regulator-max-microvolt = <3300000>;
|
|
gpio = <&expander2 4 GPIO_ACTIVE_HIGH>;
|
|
enable-active-high;
|
|
};
|
|
|
|
sound {
|
|
compatible = "fsl,imx-audio-tlv320aic32x4";
|
|
model = "tqm-tlv320aic32";
|
|
audio-codec = <&tlv320aic3x04>;
|
|
audio-cpu = <&sai3>;
|
|
};
|
|
};
|
|
|
|
&enetc_port0 {
|
|
status = "okay";
|
|
};
|
|
|
|
&enetc_port1 {
|
|
status = "okay";
|
|
};
|
|
|
|
&expander2 {
|
|
pcie1-clk-en-hog {
|
|
gpio-hog;
|
|
gpios = <14 GPIO_ACTIVE_HIGH>;
|
|
output-high;
|
|
line-name = "PCIE1_CLK_EN";
|
|
};
|
|
|
|
pcie2-clk-en-hog {
|
|
gpio-hog;
|
|
gpios = <15 GPIO_ACTIVE_HIGH>;
|
|
output-high;
|
|
line-name = "PCIE2_CLK_EN";
|
|
};
|
|
};
|
|
|
|
&flexcan1 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_flexcan1>;
|
|
xceiver-supply = <®_3v3>;
|
|
status = "okay";
|
|
};
|
|
|
|
&flexcan3 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_flexcan3>;
|
|
xceiver-supply = <®_3v3>;
|
|
status = "okay";
|
|
};
|
|
|
|
&lpi2c1 {
|
|
tlv320aic3x04: audio-codec@18 {
|
|
compatible = "ti,tlv320aic32x4";
|
|
reg = <0x18>;
|
|
clocks = <&scmi_clk IMX95_CLK_SAI3>;
|
|
clock-names = "mclk";
|
|
iov-supply = <®_1v8>;
|
|
ldoin-supply = <®_3v3>;
|
|
};
|
|
|
|
eeprom2: eeprom@57 {
|
|
compatible = "atmel,24c32";
|
|
reg = <0x57>;
|
|
pagesize = <32>;
|
|
vcc-supply = <®_3v3>;
|
|
};
|
|
};
|
|
|
|
&lpspi3 {
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_lpspi3>;
|
|
cs-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>, <&gpio2 7 GPIO_ACTIVE_LOW>;
|
|
status = "okay";
|
|
};
|
|
|
|
/* SER0 */
|
|
&lpuart1 {
|
|
status = "disabled";
|
|
};
|
|
|
|
/* SER3 */
|
|
&lpuart5 {
|
|
status = "okay";
|
|
};
|
|
|
|
/* SER1 */
|
|
&lpuart7 {
|
|
status = "okay";
|
|
};
|
|
|
|
/* SER2 */
|
|
&lpuart8 {
|
|
status = "okay";
|
|
};
|
|
|
|
/* X44 mPCIe */
|
|
&pcie0 {
|
|
pinctrl-0 = <&pinctrl_pcie0>;
|
|
pinctrl-names = "default";
|
|
clocks = <&scmi_clk IMX95_CLK_HSIO>,
|
|
<&pcieclk 1>,
|
|
<&scmi_clk IMX95_CLK_HSIOPLL_VCO>,
|
|
<&scmi_clk IMX95_CLK_HSIOPCIEAUX>;
|
|
clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
|
|
reset-gpio = <&expander2 9 GPIO_ACTIVE_LOW>;
|
|
status = "okay";
|
|
};
|
|
|
|
/* X22 PCIe x1 socket */
|
|
&pcie1 {
|
|
pinctrl-0 = <&pinctrl_pcie1>;
|
|
pinctrl-names = "default";
|
|
clocks = <&scmi_clk IMX95_CLK_HSIO>,
|
|
<&pcieclk 0>,
|
|
<&scmi_clk IMX95_CLK_HSIOPLL_VCO>,
|
|
<&scmi_clk IMX95_CLK_HSIOPCIEAUX>;
|
|
clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
|
|
reset-gpio = <&expander2 10 GPIO_ACTIVE_LOW>;
|
|
status = "okay";
|
|
};
|
|
|
|
®_sdvmmc {
|
|
status = "okay";
|
|
};
|
|
|
|
&sai3 {
|
|
#sound-dai-cells = <0>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_sai3>;
|
|
assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
|
|
<&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
|
|
<&scmi_clk IMX95_CLK_AUDIOPLL1>,
|
|
<&scmi_clk IMX95_CLK_AUDIOPLL2>,
|
|
<&scmi_clk IMX95_CLK_SAI3>;
|
|
assigned-clock-parents = <0>, <0>, <0>, <0>,
|
|
<&scmi_clk IMX95_CLK_AUDIOPLL1>;
|
|
assigned-clock-rates = <3932160000>,
|
|
<3612672000>, <393216000>,
|
|
<361267200>, <12288000>;
|
|
fsl,sai-mclk-direction-output;
|
|
status = "okay";
|
|
};
|
|
|
|
&sai5 {
|
|
#sound-dai-cells = <0>;
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&pinctrl_sai5>;
|
|
assigned-clocks = <&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_SAI5>;
|
|
assigned-clock-parents = <0>, <0>, <0>, <0>,
|
|
<&scmi_clk IMX95_CLK_AUDIOPLL1>;
|
|
assigned-clock-rates = <3932160000>,
|
|
<3612672000>, <393216000>,
|
|
<361267200>, <12288000>;
|
|
};
|
|
|
|
/* X4 */
|
|
&usb2 {
|
|
srp-disable;
|
|
hnp-disable;
|
|
adp-disable;
|
|
/* DR not yet supported */
|
|
dr_mode = "peripheral";
|
|
disable-over-current;
|
|
status = "okay";
|
|
};
|
|
|
|
|
|
/* X16 */
|
|
&usdhc2 {
|
|
pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
|
|
pinctrl-0 = <&pinctrl_usdhc2>;
|
|
pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
|
|
pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
|
|
pinctrl-3 = <&pinctrl_usdhc2>;
|
|
vmmc-supply = <®_sdvmmc>;
|
|
cd-gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
|
|
no-1-8-v;
|
|
no-mmc;
|
|
no-sdio;
|
|
disable-wp;
|
|
bus-width = <4>;
|
|
status = "okay";
|
|
};
|