public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: Shawn Guo <shawnguo2@yeah.net>
To: Alexander Stein <alexander.stein@ew.tq-group.com>
Cc: Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	Matthias Schiffer <matthias.schiffer@tq-group.com>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
	linux@ew.tq-group.com, Max Merchel <Max.Merchel@tq-group.com>
Subject: Re: [PATCH v2 2/2] arm64: dts: ls1012a: add DTS for TQMLS1012al module with MBLS1012AL board
Date: Wed, 11 Jun 2025 17:05:30 +0800	[thread overview]
Message-ID: <aElG2j8OlA/X6CrV@dragon> (raw)
In-Reply-To: <20250430120605.2068102-2-alexander.stein@ew.tq-group.com>

On Wed, Apr 30, 2025 at 02:06:01PM +0200, Alexander Stein wrote:
> From: Matthias Schiffer <matthias.schiffer@tq-group.com>
> 
> Add initial support for TQMLS1012AL module mounted on MBLS1012AL.
> It supports UART1 for console, PCIe, I2C, USB, µSD card (default), SATA
> and QSPI.
> There is an alternative ordering option which provides an eMMC instead of
> an SD card. This uses a different DT instead.
> Due missing Packet Forwarding Engine (PFE) driver support, there is no
> support for Ethernet so far.
> 
> Signed-off-by: Max Merchel <Max.Merchel@tq-group.com>
> Signed-off-by: Matthias Schiffer <matthias.schiffer@tq-group.com>
> Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
> ---
> Changes in v2:
> * Be a bit more specific with lm75 compatible
> * Remove m25p,fast-read from spi-nor flash
> 
>  arch/arm64/boot/dts/freescale/Makefile        |   2 +
>  ...sl-ls1012a-tqmls1012al-mbls1012al-emmc.dts |  21 ++
>  .../fsl-ls1012a-tqmls1012al-mbls1012al.dts    | 346 ++++++++++++++++++
>  .../freescale/fsl-ls1012a-tqmls1012al.dtsi    |  73 ++++
>  4 files changed, 442 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al-mbls1012al-emmc.dts
>  create mode 100644 arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al-mbls1012al.dts
>  create mode 100644 arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al.dtsi
> 
> diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
> index bf575395d7d5b..f6b8686ed3cfe 100644
> --- a/arch/arm64/boot/dts/freescale/Makefile
> +++ b/arch/arm64/boot/dts/freescale/Makefile
> @@ -5,6 +5,8 @@ dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-frwy.dtb
>  dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-oxalis.dtb
>  dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-qds.dtb
>  dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-rdb.dtb
> +dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-tqmls1012al-mbls1012al.dtb
> +dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1012a-tqmls1012al-mbls1012al-emmc.dtb
>  dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1028a-kontron-kbox-a-230-ls.dtb
>  dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1028a-kontron-sl28.dtb
>  dtb-$(CONFIG_ARCH_LAYERSCAPE) += fsl-ls1028a-kontron-sl28-var1.dtb
> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al-mbls1012al-emmc.dts b/arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al-mbls1012al-emmc.dts
> new file mode 100644
> index 0000000000000..82dc0a7c7d535
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al-mbls1012al-emmc.dts
> @@ -0,0 +1,21 @@
> +// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
> +/*
> + * Copyright (c) 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
> + * D-82229 Seefeld, Germany.
> + * Author: Matthias Schiffer
> + * Author: Max Merchel
> + */
> +
> +#include "fsl-ls1012a-tqmls1012al-mbls1012al.dts"
> +
> +&esdhc0 {
> +	vqmmc-supply = <&reg_1p8v>;
> +	/delete-property/ no-mmc;
> +	disable-wp;

disable-wp is already present in esdhc0 of mbls1012al.dts?

> +	mmc-ddr-1_8v;
> +	mmc-hs200-1_8v;
> +	no-sdio;

no-sdio too?

> +	no-sd;
> +	voltage-ranges = <1800 1800>;
> +	non-removable;
> +};

What about the following sd properties?  We don't need them for eMMC
device, do we?

	sd-uhs-sdr104;
	sd-uhs-sdr50;
	sd-uhs-sdr25;
	sd-uhs-sdr12;

> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al-mbls1012al.dts b/arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al-mbls1012al.dts
> new file mode 100644
> index 0000000000000..147c7ca130c44
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al-mbls1012al.dts
> @@ -0,0 +1,346 @@
> +// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
> +/*
> + * Copyright (c) 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
> + * D-82229 Seefeld, Germany.
> + * Author: Matthias Schiffer
> + * Author: Max Merchel
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/leds/common.h>
> +#include <dt-bindings/net/ti-dp83867.h>
> +#include "fsl-ls1012a-tqmls1012al.dtsi"
> +
> +/ {
> +	model = "TQ-Systems TQMLS1012AL on MBLS1012AL";
> +	compatible = "tq,ls1012a-tqmls1012al-mbls1012al", "tq,ls1012a-tqmls1012al", "fsl,ls1012a";
> +	chassis-type = "embedded";
> +
> +	aliases {
> +		serial0 = &duart0;

Can we sort it alphabetically?

> +		/* use MAC from U-Boot environment */
> +		/* TODO: PFE */
> +		ethernet2 = &swport0;
> +		ethernet3 = &swport1;
> +		ethernet4 = &swport2;
> +		ethernet5 = &swport3;
> +		spi0 = &qspi;
> +	};
> +
> +	chosen {
> +		stdout-path = &duart0;
> +	};
> +
> +	gpio-keys {
> +		compatible = "gpio-keys";
> +		autorepeat;
> +
> +		switch-1 {
> +			label = "S2";
> +			linux,code = <BTN_0>;
> +			gpios = <&gpio_exp_3p3v 13 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		switch-2 {
> +			label = "X15";
> +			linux,code = <BTN_1>;
> +			gpios = <&gpio_exp_1p8v 5 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		switch-3 {
> +			label = "X16";
> +			linux,code = <BTN_2>;
> +			gpios = <&gpio_exp_1p8v 4 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +
> +	gpio-leds {
> +		compatible = "gpio-leds";
> +
> +		led-0 {
> +			color = <LED_COLOR_ID_GREEN>;
> +			function = LED_FUNCTION_HEARTBEAT;
> +			gpios = <&gpio_exp_3p3v 14 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "heartbeat";
> +		};
> +
> +		led-1 {
> +			color = <LED_COLOR_ID_GREEN>;
> +			function = LED_FUNCTION_STATUS;
> +			gpios = <&gpio_exp_3p3v 15 GPIO_ACTIVE_LOW>;
> +			linux,default-trigger = "default-on";
> +		};
> +	};
> +
> +	reserved-memory {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		/* global autoconfigured region for contiguous allocations */
> +		linux,cma {
> +			compatible = "shared-dma-pool";
> +			reusable;
> +			/* 64 MiB */
> +			size = <0 0x04000000>;
> +			/*  512 - 128 MiB, our minimum RAM config will be 512 MiB */
> +			alloc-ranges = <0 0x80000000 0 0x98000000>;
> +			linux,cma-default;
> +		};
> +	};
> +
> +	reg_1p5v: regulator-1p5v {

It doesn't seem to be used.

> +		compatible = "regulator-fixed";
> +		regulator-name = "1P5V";
> +		regulator-min-microvolt = <1500000>;
> +		regulator-max-microvolt = <1500000>;
> +		regulator-always-on;
> +	};
> +
> +	reg_1p8v: regulator-1p8v {
> +		compatible = "regulator-fixed";
> +		regulator-name = "1P8V";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <1800000>;
> +		regulator-always-on;
> +	};
> +
> +	reg_3p3v: regulator-3p3v {
> +		compatible = "regulator-fixed";
> +		regulator-name = "3P3V";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		regulator-always-on;
> +	};
> +};
> +
> +&duart0 {
> +	status = "okay";
> +};
> +
> +&esdhc0 {
> +	vmmc-supply = <&reg_3p3v>;
> +	no-mmc;
> +	no-sdio;
> +	disable-wp;
> +	sd-uhs-sdr104;
> +	sd-uhs-sdr50;
> +	sd-uhs-sdr25;
> +	sd-uhs-sdr12;
> +	status = "okay";
> +};
> +
> +&i2c0 {
> +	lm75_48: temperature-sensor@48 {
> +		compatible = "national,lm75a";
> +		reg = <0x48>;
> +		vs-supply = <&reg_3p3v>;
> +	};
> +
> +	gpio_exp_3p3v: gpio-expander@20 {

Please sort I2C devices in order of slave address.

Shawn

> +		compatible = "nxp,pca9555";
> +		reg = <0x20>;
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +		vcc-supply = <&reg_3p3v>;
> +		interrupt-parent = <&gpio0>;
> +		interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +		gpio-line-names = "", "", "GPIO_3V3_3", "",
> +				  "", "", "", "",
> +				  "", "GPIO_3V3_1", "GPIO_3V3_2", "",
> +				  "", "", "", "";
> +
> +		wlan-disable-hog {
> +			gpio-hog;
> +			gpios = <0 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "WLAN_DISABLE#";
> +		};
> +
> +		vcc-pcie-en-3v3-hog {
> +			gpio-hog;
> +			gpios = <1 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "VCC_PCIE_EN_3V3";
> +		};
> +
> +		vcc-wlan-en-3v3-hog {
> +			gpio-hog;
> +			gpios = <3 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "VCC_WLAN_EN_3V3";
> +		};
> +
> +		pcie-rst-hog {
> +			gpio-hog;
> +			gpios = <4 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "PCIE_RST#";
> +		};
> +
> +		wlan-rst-hog {
> +			gpio-hog;
> +			gpios = <5 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "WLAN_RST#";
> +		};
> +
> +		pcie-dis-hog {
> +			gpio-hog;
> +			gpios = <11 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "PCIE_DIS#";
> +		};
> +
> +		pcie-wake-hog {
> +			gpio-hog;
> +			gpios = <12 GPIO_ACTIVE_HIGH>;
> +			input;
> +			line-name = "PCIE_WAKE#";
> +		};
> +	};
> +
> +	gpio_exp_1p8v: gpio-expander@70 {
> +		compatible = "nxp,pca9538";
> +		reg = <0x70>;
> +		gpio-controller;
> +		#gpio-cells = <2>;
> +		vcc-supply = <&reg_1p8v>;
> +		interrupt-parent = <&gpio0>;
> +		interrupts = <27 IRQ_TYPE_EDGE_FALLING>;
> +		interrupt-controller;
> +		#interrupt-cells = <2>;
> +		gpio-line-names = "PCIE_CLK_PD#", "PMIC_INT#", "ETH_SW_INT#", "",
> +				  "", "", "", "",
> +				  "", "GPIO_3V3_1", "GPIO_3V3_2", "",
> +				  "", "", "", "";
> +
> +		/* do not change PCIE_CLK_PD */
> +		pcie-clk-pd-hog {
> +			gpio-hog;
> +			gpios = <0 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "PCIE_CLK_PD#";
> +		};
> +
> +		pmic-int-hog {
> +			gpio-hog;
> +			gpios = <1 GPIO_ACTIVE_HIGH>;
> +			input;
> +			line-name = "PMIC_INT#";
> +		};
> +
> +		eth-sw-int-hog {
> +			gpio-hog;
> +			gpios = <2 GPIO_ACTIVE_HIGH>;
> +			input;
> +			line-name = "ETH_SW_INT#";
> +		};
> +
> +		eth-link-pwrdwn-hog {
> +			gpio-hog;
> +			gpios = <3 GPIO_ACTIVE_HIGH>;
> +			input;
> +			line-name = "ETH_LINK_PWRDWN#";
> +		};
> +
> +		vcc-wlan-en-1v5-hog {
> +			gpio-hog;
> +			gpios = <6 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "VCC_WLAN_EN_1V5";
> +		};
> +
> +		vcc-pcie-en-1v5-hog {
> +			gpio-hog;
> +			gpios = <7 GPIO_ACTIVE_HIGH>;
> +			output-high;
> +			line-name = "VCC_PCIE_EN_1V5";
> +		};
> +	};
> +
> +	switch@5f {
> +		compatible = "microchip,ksz9897";
> +		reg = <0x5f>;
> +		reset-gpios = <&gpio_exp_3p3v 7 GPIO_ACTIVE_LOW>;
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			swport0: port@0 {
> +				reg = <0>;
> +				label = "swp0";
> +				phy-mode = "internal";
> +			};
> +
> +			swport1: port@1 {
> +				reg = <1>;
> +				label = "swp1";
> +				phy-mode = "internal";
> +			};
> +
> +			swport2: port@2 {
> +				reg = <2>;
> +				label = "swp2";
> +				phy-mode = "internal";
> +			};
> +
> +			swport3: port@3 {
> +				reg = <3>;
> +				label = "swp3";
> +				phy-mode = "internal";
> +			};
> +
> +			port@6 {
> +				reg = <6>;
> +				label = "cpu";
> +				/* TODO: PFE */
> +				phy-mode = "rgmii-id";
> +				rx-internal-delay-ps = <1500>;
> +				tx-internal-delay-ps = <1500>;
> +
> +				fixed-link {
> +					speed = <1000>;
> +					full-duplex;
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&pcie1 {
> +	status = "okay";
> +};
> +
> +/* TODO: PFE */
> +
> +&sata {
> +	status = "okay";
> +};
> +
> +&usb0 {
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +
> +	hub_2_0: hub@1 {
> +		compatible = "usb451,8142";
> +		reg = <1>;
> +		peer-hub = <&hub_3_0>;
> +		reset-gpios = <&gpio_exp_3p3v 6 GPIO_ACTIVE_LOW>;
> +		vdd-supply = <&reg_vcc_3v3>;
> +	};
> +
> +	hub_3_0: hub@2 {
> +		compatible = "usb451,8140";
> +		reg = <2>;
> +		peer-hub = <&hub_2_0>;
> +		reset-gpios = <&gpio_exp_3p3v 6 GPIO_ACTIVE_LOW>;
> +		vdd-supply = <&reg_vcc_3v3>;
> +	};
> +};
> diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al.dtsi
> new file mode 100644
> index 0000000000000..5f6ee8fd4094b
> --- /dev/null
> +++ b/arch/arm64/boot/dts/freescale/fsl-ls1012a-tqmls1012al.dtsi
> @@ -0,0 +1,73 @@
> +// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
> +/*
> + * Copyright (c) 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
> + * D-82229 Seefeld, Germany.
> + * Author: Matthias Schiffer
> + * Author: Max Merchel
> + */
> +
> +#include "fsl-ls1012a.dtsi"
> +
> +/ {
> +	compatible = "tq,ls1012a-tqmls1012al", "fsl,ls1012a";
> +
> +	memory@80000000 {
> +		device_type = "memory";
> +		/*  our minimum RAM config will be 512 MiB */
> +		reg = <0x00000000 0x80000000 0 0x20000000>;
> +	};
> +
> +	reg_vcc_3v3: regulator-3v3 {
> +		compatible = "regulator-fixed";
> +		regulator-name = "VCC_3V3";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +	};
> +};
> +
> +&i2c0 {
> +	status = "okay";
> +
> +	jc42_19: temperature-sensor@19 {
> +		compatible = "nxp,se97b", "jedec,jc-42.4-temp";
> +		reg = <0x19>;
> +	};
> +
> +	m24c64_50: eeprom@50 {
> +		compatible = "atmel,24c64";
> +		reg = <0x50>;
> +		pagesize = <32>;
> +		vcc-supply = <&reg_vcc_3v3>;
> +	};
> +
> +	m24c02_51: eeprom@51 {
> +		compatible = "nxp,se97b", "atmel,24c02";
> +		reg = <0x51>;
> +		pagesize = <16>;
> +		read-only;
> +		vcc-supply = <&reg_vcc_3v3>;
> +	};
> +
> +	rtc1: rtc@68 {
> +		compatible = "dallas,ds1339";
> +		reg = <0x68>;
> +	};
> +};
> +
> +&qspi {
> +	status = "okay";
> +
> +	flash@0 {
> +		compatible = "jedec,spi-nor";
> +		reg = <0>;
> +		spi-max-frequency = <39000000>;
> +		spi-rx-bus-width = <4>;
> +		spi-tx-bus-width = <1>;
> +
> +		partitions {
> +			compatible = "fixed-partitions";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +		};
> +	};
> +};
> -- 
> 2.43.0
> 



      reply	other threads:[~2025-06-11  9:12 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-30 12:06 [PATCH v2 1/2] dt: bindings: arm: add bindings for TQMLS1012AL Alexander Stein
2025-04-30 12:06 ` [PATCH v2 2/2] arm64: dts: ls1012a: add DTS for TQMLS1012al module with MBLS1012AL board Alexander Stein
2025-06-11  9:05   ` Shawn Guo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aElG2j8OlA/X6CrV@dragon \
    --to=shawnguo2@yeah.net \
    --cc=Max.Merchel@tq-group.com \
    --cc=alexander.stein@ew.tq-group.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=festevam@gmail.com \
    --cc=imx@lists.linux.dev \
    --cc=kernel@pengutronix.de \
    --cc=krzk+dt@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@ew.tq-group.com \
    --cc=matthias.schiffer@tq-group.com \
    --cc=robh@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox