Message ID | 20230119144236.3541751-3-alexander.stein@ew.tq-group.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | TQMLS1021A support | expand |
On 19/01/2023 15:42, Alexander Stein wrote: > Add device tree for the MBLS102xA mainboard with TQMLS1021A SoM. > > Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> > --- > arch/arm/boot/dts/Makefile | 1 + > .../boot/dts/ls1021a-tqmls1021a-mbls1021a.dts | 409 ++++++++++++++++++ > arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi | 93 ++++ > 3 files changed, 503 insertions(+) > create mode 100644 arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts > create mode 100644 arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > index d0c07867aeabe..44b5ed44b13d6 100644 > --- a/arch/arm/boot/dts/Makefile > +++ b/arch/arm/boot/dts/Makefile > @@ -802,6 +802,7 @@ dtb-$(CONFIG_SOC_LS1021A) += \ > ls1021a-iot.dtb \ > ls1021a-moxa-uc-8410a.dtb \ > ls1021a-qds.dtb \ > + ls1021a-tqmls1021a-mbls1021a.dtb \ > ls1021a-tsn.dtb \ > ls1021a-twr.dtb > dtb-$(CONFIG_SOC_VF610) += \ > diff --git a/arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts b/arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts > new file mode 100644 > index 0000000000000..21da171b9f38e > --- /dev/null > +++ b/arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts > @@ -0,0 +1,409 @@ > +// SPDX-License-Identifier: (GPL-2.0-or-later OR X11) > +/* > + * Copyright 2013-2014 Freescale Semiconductor, Inc. > + * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>, > + * D-82229 Seefeld, Germany. > + * Author: Alexander Stein > + */ > + > +/dts-v1/; > + > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/input/linux-event-codes.h> > +#include <dt-bindings/leds/common.h> > +#include <dt-bindings/leds/leds-pca9532.h> > +#include <dt-bindings/net/ti-dp83867.h> > +#include "ls1021a-tqmls1021a.dtsi" > + > +/ { > + model = "TQMLS102xA SOM on MBLS102xA"; > + compatible = "tq,ls1021a-tqmls1021a-mbls102xa", "tq,ls1021a-tqmls1021a", "fsl,ls1021a"; > + > + audio_mclk: audio-clock { > + compatible = "fixed-clock"; > + #clock-cells = <0>; > + clock-frequency = <25000000>; > + }; > + > + backlight_dcu: backlight { > + compatible = "gpio-backlight"; > + gpios = <&pca9530 0 GPIO_ACTIVE_LOW>; > + status = "disabled"; > + }; > + > + gpio-keys { > + compatible = "gpio-keys"; > + autorepeat; > + > + switch-1 { > + label = "S6"; > + linux,code = <BTN_0>; > + gpios = <&pca9554_0 0 GPIO_ACTIVE_LOW>; > + }; > + > + btn2: switch-2 { > + label = "S7"; > + linux,code = <BTN_1>; > + gpios = <&pca9554_0 1 GPIO_ACTIVE_LOW>; > + }; > + > + switch-3 { > + label = "S8"; > + linux,code = <BTN_2>; > + gpios = <&pca9554_0 2 GPIO_ACTIVE_LOW>; > + }; > + }; > + > + gpio_leds: gpio-leds { > + compatible = "gpio-leds"; > + > + led-0 { > + color = <LED_COLOR_ID_GREEN>; > + function = LED_FUNCTION_STATUS; > + function-enumerator = <0>; > + gpios = <&pca9554_2 4 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "default-on"; > + }; > + > + led-1 { > + color = <LED_COLOR_ID_GREEN>; > + function = LED_FUNCTION_STATUS; > + function-enumerator = <1>; > + gpios = <&pca9554_2 5 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "default-on"; > + }; > + > + led-2 { > + color = <LED_COLOR_ID_GREEN>; > + function = LED_FUNCTION_STATUS; > + function-enumerator = <2>; > + gpios = <&pca9554_2 6 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "default-on"; > + }; > + > + led-3 { > + color = <LED_COLOR_ID_GREEN>; > + function = LED_FUNCTION_HEARTBEAT; > + function-enumerator = <0>; > + gpios = <&pca9554_2 7 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "heartbeat"; > + }; > + }; > + > + lvds_encoder: lvds-encoder { > + compatible = "ti,sn75lvds83", "lvds-encoder"; > + power-supply = <®_3p3v>; > + status = "disabled"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + lvds_encoder_in: endpoint {}; > + }; > + > + port@1 { > + reg = <1>; > + > + lvds_encoder_out: endpoint {}; > + }; > + }; > + }; > + > + reg_1p2v: regulator-1p2v { > + compatible = "regulator-fixed"; > + regulator-name = "1P2V"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-always-on; > + vin-supply = <®_3p3v>; > + }; > + > + reg_3p3v: regulator-3p3v { > + compatible = "regulator-fixed"; > + regulator-name = "3P3V"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + hdmi_out: hdmi { > + compatible = "hdmi-connector"; > + type = "a"; > + ddc-i2c-bus = <&i2c0>; > + status = "disabled"; > + > + port { > + hdmi_in: endpoint { > + remote-endpoint = <&sii9022a_out>; > + }; > + }; > + }; > + > + display: panel { > + backlight = <&backlight_dcu>; > + enable-gpios = <&pca9554_1 3 GPIO_ACTIVE_HIGH>; > + status = "disabled"; > + > + port { > + panel_in: endpoint {}; > + }; > + }; > + > + sound { > + compatible = "fsl,imx-audio-tlv320aic32x4"; > + model = "ls1021a-mbls1021a-tlv320aic32"; > + ssi-controller = <&sai1>; > + audio-codec = <&tlv320aic32x4>; > + }; > + > +}; > + > +&can0 { > + status = "okay"; > + xceiver-supply = <®_3p3v>; > +}; > + > +&can1 { > + status = "okay"; > + xceiver-supply = <®_3p3v>; > +}; > + > +&dspi0 { > + bus-num = <0>; > + status = "okay"; > +}; > + > +&enet0 { > + phy-handle = <&rgmii_phy0c>; > + phy-mode = "rgmii-id"; > + mac-address = [ 00 00 00 00 00 00 ]; > + status = "okay"; > +}; > + > +&enet1 { > + tbi-handle = <&tbi1>; > + phy-handle = <&sgmii_phy03>; > + phy-mode = "sgmii"; > + mac-address = [ 00 00 00 00 00 00 ]; > + status = "okay"; > +}; > + > +&enet2 { > + phy-handle = <&rgmii_phy04>; > + phy-mode = "rgmii-id"; > + mac-address = [ 00 00 00 00 00 00 ]; > + status = "okay"; > +}; > + > +&i2c0 { > + status = "okay"; > + > + tlv320aic32x4: audio-codec@18 { > + compatible = "ti,tlv320aic32x4"; > + reg = <0x18>; > + clocks = <&audio_mclk>; > + clock-names = "mclk"; > + ldoin-supply = <®_3p3v>; > + iov-supply = <®_3p3v>; > + }; > + > + pca9554_0: gpio-expander@20 { > + compatible = "nxp,pca9554"; > + reg = <0x20>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&gpio0>; > + interrupts = <24 IRQ_TYPE_EDGE_FALLING>; > + interrupt-controller; > + #interrupt-cells = <2>; > + vcc-supply = <®_3p3v>; > + gpio-line-names = "BUTTON0", "BUTTON1", > + "BUTTON2", "EMMC_SEL", > + "DIP2", "DIP3", > + "EXT_TOUCH_INT", "GPIO_1"; > + }; > + > + pca9554_1: gpio-expander@21 { > + compatible = "nxp,pca9554"; > + reg = <0x21>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&gpio0>; > + interrupts = <25 IRQ_TYPE_EDGE_FALLING>; > + interrupt-controller; > + #interrupt-cells = <2>; > + vcc-supply = <®_3p3v>; > + gpio-line-names = "PCIE_PWR_EN", "MPCIE_DISABLE#", > + "MPCIE_WAKE#", "LCD_BLT_EN", > + "LCD_PWR_EN", "EC1_PHY_PWDN", > + "EC3_PHY_PWDN", "SGMII_PHY_PWDN"; > + }; > + > + pca9554_2: gpio-expander@22 { > + compatible = "nxp,pca9554"; > + reg = <0x22>; > + gpio-controller; > + #gpio-cells = <2>; > + interrupt-parent = <&extirq>; > + interrupts = <2 IRQ_TYPE_EDGE_FALLING>; > + interrupt-controller; > + #interrupt-cells = <2>; > + vcc-supply = <®_3p3v>; > + gpio-line-names = "MUX_SEL0", "MUX_SEL1", > + "MUX_SEL2", "MUX_SEL3", > + "V95", "V96", "V97", "V98"; > + }; > + > + sii9022a: hdmi-transmitter@3b { > + compatible = "sil,sii9022"; > + reg = <0x3b>; > + iovcc-supply = <®_3p3v>; > + cvcc12-supply = <®_1p2v>; > + interrupts = <GIC_SPI 167 IRQ_TYPE_EDGE_RISING>; > + #sound-dai-cells = <0>; > + sil,i2s-data-lanes = <0>; > + status = "disabled"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + sii9022a_in: endpoint {}; > + }; > + > + port@1 { > + reg = <1>; > + > + sii9022a_out: endpoint { > + remote-endpoint = <&hdmi_in>; > + }; > + }; > + }; > + }; > + > + stmpe811: touchscreen@41 { > + compatible = "st,stmpe811"; > + reg = <0x41>; > + #address-cells = <1>; > + #size-cells = <0>; > + interrupt-parent = <&gpio0>; > + interrupts = <23 IRQ_TYPE_EDGE_FALLING>; > + vcc-supply = <®_3p3v>; > + vio-supply = <®_3p3v>; > + status = "okay"; Drop, why do you need it? > + > + stmpe_gpio { No underscores in node names, generic node names, so "gpio". Does anything depend on odd naming? > + compatible = "st,stmpe-gpio"; > + gpio-controller; > + #gpio-cells = <2>; > + /* GPIO 5-7 used for touch */ > + st,norequest-mask = <0xf0>; > + gpio-line-names = "GPIO_ADC_I2C1_1", > + "GPIO_ADC_I2C1_2", > + "GPIO_ADC_I2C1_3", > + "GPIO_ADC_I2C1_4"; > + }; > + > + stmpe_touchscreen { Same problems. > + compatible = "st,stmpe-ts"; > + status = "disabled"; > + }; > + }; > + > + pca9530: leds@60 { > + compatible = "nxp,pca9530"; > + reg = <0x60>; > + gpio-controller; > + #gpio-cells = <2>; > + gpio-line-names = "PWM_0", "PWM_1"; > + > + gpio_pwm_0 { No underscores in node names, generic node names. This is neither GPIO nor PWM. > + label = "pca9530:pwm0"; > + type = <PCA9532_TYPE_GPIO>; > + }; > + > + gpio_pwm_1 { > + label = "pca9530:pwm1"; > + type = <PCA9532_TYPE_GPIO>; > + }; > + }; > + > +}; > + > +&i2c1 { > + status = "okay"; > +}; > + > +&lpuart0 { > + status = "okay"; > + linux,rs485-enabled-at-boot-time; > +}; > + > +&mdio0 { > + sgmii_phy03: ethernet-phy@3 { > + compatible = "ethernet-phy-ieee802.3-c22"; > + reg = <0x03>; > + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; > + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; > + ti,dp83867-rxctrl-strap-quirk; > + }; > + > + rgmii_phy04: ethernet-phy@4 { > + compatible = "ethernet-phy-ieee802.3-c22"; > + reg = <0x04>; > + ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>; > + ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; > + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; > + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; > + }; > + > + rgmii_phy0c: ethernet-phy@c { > + compatible = "ethernet-phy-ieee802.3-c22"; > + reg = <0x0c>; > + ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>; > + ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; > + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; > + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; > + }; > +}; > + > +&pwm6 { > + status = "okay"; > +}; > + > +&pwm7 { > + status = "okay"; > +}; > + > +&sai1 { > + status = "okay"; > +}; > + > +&sata { > + /delete-property/ dma-coherent; > + status = "okay"; > +}; > + > +&uart0 { > + status = "okay"; > +}; > + > +&uart1 { > + status = "okay"; > +}; > + > +&usb3 { > + /* > + * Although DR connector, VBUS is always driven, so > + * restrict to host mode. > + */ > + dr_mode = "host"; > + status = "okay"; > +}; > diff --git a/arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi b/arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi > new file mode 100644 > index 0000000000000..1ab518c489252 > --- /dev/null > +++ b/arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi > @@ -0,0 +1,93 @@ > +// SPDX-License-Identifier: (GPL-2.0-or-later OR X11) > +/* > + * Copyright 2013-2014 Freescale Semiconductor, Inc. > + * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>, > + * D-82229 Seefeld, Germany. > + * Author: Alexander Stein > + */ > + > +#include "ls1021a.dtsi" > + > +/ { > + model = "TQMLS102xA SOM"; > + compatible = "tq,ls1021a-tqmls1021a", "fsl,ls1021a"; > + > + reg_3p3v_som: regulator-3p3v-som { > + compatible = "regulator-fixed"; > + regulator-name = "3P3V_SOM"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > +}; > + > +&esdhc { > + compatible = "fsl,esdhc", "fsl,ls1021a-esdhc"; > + /* e-MMC over 8 data lines */ > + bus-width = <8>; > + status = "okay"; > +}; > + > +&i2c0 { > + status = "okay"; > + > + mc34vr500: pmic@8 { > + reg = <0x08>; No compatible? What's this? > + status = "disabled"; > + }; > + > + pmc0: pmc@11 { No compatible? What's this? > + reg = <0x11>; > + status = "disabled"; > + }; > + > + sa56004: temperature-sensor@4c { > + compatible = "nxp,sa56004"; > + reg = <0x4c>; > + vcc-supply = <®_3p3v_som>; > + }; > + > + adm1069: supervisor@4f { No compatible? What's this? > + reg = <0x4f>; > + status = "disabled"; > + }; > + > + rtc0: rtc@51 { > + compatible = "nxp,pcf85063a"; > + quartz-load-femtofarads = <12500>; > + reg = <0x51>; Reg is second property > + }; > + > + m24c64_54: eeprom@54 { > + compatible = "atmel,24c64"; > + reg = <0x54>; > + pagesize = <32>; > + read-only; > + vcc-supply = <®_3p3v_som>; > + }; > +}; Best regards, Krzysztof
Hi Krzysztof, thanks for the feedback. Am Donnerstag, 19. Januar 2023, 18:03:14 CET schrieb Krzysztof Kozlowski: > On 19/01/2023 15:42, Alexander Stein wrote: > > Add device tree for the MBLS102xA mainboard with TQMLS1021A SoM. > > > > Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> > > --- > > > > arch/arm/boot/dts/Makefile | 1 + > > .../boot/dts/ls1021a-tqmls1021a-mbls1021a.dts | 409 ++++++++++++++++++ > > arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi | 93 ++++ > > 3 files changed, 503 insertions(+) > > create mode 100644 arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts > > create mode 100644 arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi > > > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > > index d0c07867aeabe..44b5ed44b13d6 100644 > > --- a/arch/arm/boot/dts/Makefile > > +++ b/arch/arm/boot/dts/Makefile > > @@ -802,6 +802,7 @@ dtb-$(CONFIG_SOC_LS1021A) += \ > > > > ls1021a-iot.dtb \ > > ls1021a-moxa-uc-8410a.dtb \ > > ls1021a-qds.dtb \ > > > > + ls1021a-tqmls1021a-mbls1021a.dtb \ > > > > ls1021a-tsn.dtb \ > > ls1021a-twr.dtb > > > > dtb-$(CONFIG_SOC_VF610) += \ > > > > diff --git a/arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts > > b/arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts new file mode 100644 > > index 0000000000000..21da171b9f38e > > --- /dev/null > > +++ b/arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts > > @@ -0,0 +1,409 @@ > > +// SPDX-License-Identifier: (GPL-2.0-or-later OR X11) > > +/* > > + * Copyright 2013-2014 Freescale Semiconductor, Inc. > > + * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>, > > + * D-82229 Seefeld, Germany. > > + * Author: Alexander Stein > > + */ > > + > > +/dts-v1/; > > + > > +#include <dt-bindings/gpio/gpio.h> > > +#include <dt-bindings/input/linux-event-codes.h> > > +#include <dt-bindings/leds/common.h> > > +#include <dt-bindings/leds/leds-pca9532.h> > > +#include <dt-bindings/net/ti-dp83867.h> > > +#include "ls1021a-tqmls1021a.dtsi" > > + > > +/ { > > + model = "TQMLS102xA SOM on MBLS102xA"; > > + compatible = "tq,ls1021a-tqmls1021a-mbls102xa", "tq,ls1021a- tqmls1021a", > > "fsl,ls1021a"; + > > + audio_mclk: audio-clock { > > + compatible = "fixed-clock"; > > + #clock-cells = <0>; > > + clock-frequency = <25000000>; > > + }; > > + > > + backlight_dcu: backlight { > > + compatible = "gpio-backlight"; > > + gpios = <&pca9530 0 GPIO_ACTIVE_LOW>; > > + status = "disabled"; > > + }; > > + > > + gpio-keys { > > + compatible = "gpio-keys"; > > + autorepeat; > > + > > + switch-1 { > > + label = "S6"; > > + linux,code = <BTN_0>; > > + gpios = <&pca9554_0 0 GPIO_ACTIVE_LOW>; > > + }; > > + > > + btn2: switch-2 { > > + label = "S7"; > > + linux,code = <BTN_1>; > > + gpios = <&pca9554_0 1 GPIO_ACTIVE_LOW>; > > + }; > > + > > + switch-3 { > > + label = "S8"; > > + linux,code = <BTN_2>; > > + gpios = <&pca9554_0 2 GPIO_ACTIVE_LOW>; > > + }; > > + }; > > + > > + gpio_leds: gpio-leds { > > + compatible = "gpio-leds"; > > + > > + led-0 { > > + color = <LED_COLOR_ID_GREEN>; > > + function = LED_FUNCTION_STATUS; > > + function-enumerator = <0>; > > + gpios = <&pca9554_2 4 GPIO_ACTIVE_LOW>; > > + linux,default-trigger = "default-on"; > > + }; > > + > > + led-1 { > > + color = <LED_COLOR_ID_GREEN>; > > + function = LED_FUNCTION_STATUS; > > + function-enumerator = <1>; > > + gpios = <&pca9554_2 5 GPIO_ACTIVE_LOW>; > > + linux,default-trigger = "default-on"; > > + }; > > + > > + led-2 { > > + color = <LED_COLOR_ID_GREEN>; > > + function = LED_FUNCTION_STATUS; > > + function-enumerator = <2>; > > + gpios = <&pca9554_2 6 GPIO_ACTIVE_LOW>; > > + linux,default-trigger = "default-on"; > > + }; > > + > > + led-3 { > > + color = <LED_COLOR_ID_GREEN>; > > + function = LED_FUNCTION_HEARTBEAT; > > + function-enumerator = <0>; > > + gpios = <&pca9554_2 7 GPIO_ACTIVE_LOW>; > > + linux,default-trigger = "heartbeat"; > > + }; > > + }; > > + > > + lvds_encoder: lvds-encoder { > > + compatible = "ti,sn75lvds83", "lvds-encoder"; > > + power-supply = <®_3p3v>; > > + status = "disabled"; > > + > > + ports { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + port@0 { > > + reg = <0>; > > + > > + lvds_encoder_in: endpoint {}; > > + }; > > + > > + port@1 { > > + reg = <1>; > > + > > + lvds_encoder_out: endpoint {}; > > + }; > > + }; > > + }; > > + > > + reg_1p2v: regulator-1p2v { > > + compatible = "regulator-fixed"; > > + regulator-name = "1P2V"; > > + regulator-min-microvolt = <1200000>; > > + regulator-max-microvolt = <1200000>; > > + regulator-always-on; > > + vin-supply = <®_3p3v>; > > + }; > > + > > + reg_3p3v: regulator-3p3v { > > + compatible = "regulator-fixed"; > > + regulator-name = "3P3V"; > > + regulator-min-microvolt = <3300000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-always-on; > > + }; > > + > > + hdmi_out: hdmi { > > + compatible = "hdmi-connector"; > > + type = "a"; > > + ddc-i2c-bus = <&i2c0>; > > + status = "disabled"; > > + > > + port { > > + hdmi_in: endpoint { > > + remote-endpoint = <&sii9022a_out>; > > + }; > > + }; > > + }; > > + > > + display: panel { > > + backlight = <&backlight_dcu>; > > + enable-gpios = <&pca9554_1 3 GPIO_ACTIVE_HIGH>; > > + status = "disabled"; > > + > > + port { > > + panel_in: endpoint {}; > > + }; > > + }; > > + > > + sound { > > + compatible = "fsl,imx-audio-tlv320aic32x4"; > > + model = "ls1021a-mbls1021a-tlv320aic32"; > > + ssi-controller = <&sai1>; > > + audio-codec = <&tlv320aic32x4>; > > + }; > > + > > +}; > > + > > +&can0 { > > + status = "okay"; > > + xceiver-supply = <®_3p3v>; > > +}; > > + > > +&can1 { > > + status = "okay"; > > + xceiver-supply = <®_3p3v>; > > +}; > > + > > +&dspi0 { > > + bus-num = <0>; > > + status = "okay"; > > +}; > > + > > +&enet0 { > > + phy-handle = <&rgmii_phy0c>; > > + phy-mode = "rgmii-id"; > > + mac-address = [ 00 00 00 00 00 00 ]; > > + status = "okay"; > > +}; > > + > > +&enet1 { > > + tbi-handle = <&tbi1>; > > + phy-handle = <&sgmii_phy03>; > > + phy-mode = "sgmii"; > > + mac-address = [ 00 00 00 00 00 00 ]; > > + status = "okay"; > > +}; > > + > > +&enet2 { > > + phy-handle = <&rgmii_phy04>; > > + phy-mode = "rgmii-id"; > > + mac-address = [ 00 00 00 00 00 00 ]; > > + status = "okay"; > > +}; > > + > > +&i2c0 { > > + status = "okay"; > > + > > + tlv320aic32x4: audio-codec@18 { > > + compatible = "ti,tlv320aic32x4"; > > + reg = <0x18>; > > + clocks = <&audio_mclk>; > > + clock-names = "mclk"; > > + ldoin-supply = <®_3p3v>; > > + iov-supply = <®_3p3v>; > > + }; > > + > > + pca9554_0: gpio-expander@20 { > > + compatible = "nxp,pca9554"; > > + reg = <0x20>; > > + gpio-controller; > > + #gpio-cells = <2>; > > + interrupt-parent = <&gpio0>; > > + interrupts = <24 IRQ_TYPE_EDGE_FALLING>; > > + interrupt-controller; > > + #interrupt-cells = <2>; > > + vcc-supply = <®_3p3v>; > > + gpio-line-names = "BUTTON0", "BUTTON1", > > + "BUTTON2", "EMMC_SEL", > > + "DIP2", "DIP3", > > + "EXT_TOUCH_INT", "GPIO_1"; > > + }; > > + > > + pca9554_1: gpio-expander@21 { > > + compatible = "nxp,pca9554"; > > + reg = <0x21>; > > + gpio-controller; > > + #gpio-cells = <2>; > > + interrupt-parent = <&gpio0>; > > + interrupts = <25 IRQ_TYPE_EDGE_FALLING>; > > + interrupt-controller; > > + #interrupt-cells = <2>; > > + vcc-supply = <®_3p3v>; > > + gpio-line-names = "PCIE_PWR_EN", "MPCIE_DISABLE#", > > + "MPCIE_WAKE#", "LCD_BLT_EN", > > + "LCD_PWR_EN", "EC1_PHY_PWDN", > > + "EC3_PHY_PWDN", "SGMII_PHY_PWDN"; > > + }; > > + > > + pca9554_2: gpio-expander@22 { > > + compatible = "nxp,pca9554"; > > + reg = <0x22>; > > + gpio-controller; > > + #gpio-cells = <2>; > > + interrupt-parent = <&extirq>; > > + interrupts = <2 IRQ_TYPE_EDGE_FALLING>; > > + interrupt-controller; > > + #interrupt-cells = <2>; > > + vcc-supply = <®_3p3v>; > > + gpio-line-names = "MUX_SEL0", "MUX_SEL1", > > + "MUX_SEL2", "MUX_SEL3", > > + "V95", "V96", "V97", "V98"; > > + }; > > + > > + sii9022a: hdmi-transmitter@3b { > > + compatible = "sil,sii9022"; > > + reg = <0x3b>; > > + iovcc-supply = <®_3p3v>; > > + cvcc12-supply = <®_1p2v>; > > + interrupts = <GIC_SPI 167 IRQ_TYPE_EDGE_RISING>; > > + #sound-dai-cells = <0>; > > + sil,i2s-data-lanes = <0>; > > + status = "disabled"; > > + > > + ports { > > + #address-cells = <1>; > > + #size-cells = <0>; > > + > > + port@0 { > > + reg = <0>; > > + > > + sii9022a_in: endpoint {}; > > + }; > > + > > + port@1 { > > + reg = <1>; > > + > > + sii9022a_out: endpoint { > > + remote-endpoint = <&hdmi_in>; > > + }; > > + }; > > + }; > > + }; > > + > > + stmpe811: touchscreen@41 { > > + compatible = "st,stmpe811"; > > + reg = <0x41>; > > + #address-cells = <1>; > > + #size-cells = <0>; > > + interrupt-parent = <&gpio0>; > > + interrupts = <23 IRQ_TYPE_EDGE_FALLING>; > > + vcc-supply = <®_3p3v>; > > + vio-supply = <®_3p3v>; > > + status = "okay"; > > Drop, why do you need it? Thanks, will drop it. > > + > > + stmpe_gpio { > > No underscores in node names, generic node names, so "gpio". Does > anything depend on odd naming? You are right, node names should have underscores, but in the end I was following the bindings (Documentation/devicetree/bindings/input/touchscreen/ stmpe.txt) naming 'stmpe_touchscreen' and 'stmpe_adc' in the example. Each subdevice has it's own compatible, so there should be no issue. Using just 'gpio' and 'touchscreen' below I didn't notice any difference. > > + compatible = "st,stmpe-gpio"; > > + gpio-controller; > > + #gpio-cells = <2>; > > + /* GPIO 5-7 used for touch */ > > + st,norequest-mask = <0xf0>; > > + gpio-line-names = "GPIO_ADC_I2C1_1", > > + "GPIO_ADC_I2C1_2", > > + "GPIO_ADC_I2C1_3", > > + "GPIO_ADC_I2C1_4"; > > + }; > > + > > + stmpe_touchscreen { > > Same problems. See above. When enabled driver loads fine. > > + compatible = "st,stmpe-ts"; > > + status = "disabled"; > > + }; > > + }; > > + > > + pca9530: leds@60 { > > + compatible = "nxp,pca9530"; > > + reg = <0x60>; > > + gpio-controller; > > + #gpio-cells = <2>; > > + gpio-line-names = "PWM_0", "PWM_1"; > > + > > + gpio_pwm_0 { > > No underscores in node names, generic node names. This is neither GPIO > nor PWM. You are right, no underscores. Well, actually it's used as a GPIO for backlight brightness, on a signal called 'PWM_0'. But I'll go for 'led-0' and 'led-1' for node names and remove the labels, as they are type GPIO. > > + label = "pca9530:pwm0"; > > + type = <PCA9532_TYPE_GPIO>; > > + }; > > + > > + gpio_pwm_1 { > > + label = "pca9530:pwm1"; > > + type = <PCA9532_TYPE_GPIO>; > > + }; > > + }; > > + > > +}; > > + > > +&i2c1 { > > + status = "okay"; > > +}; > > + > > +&lpuart0 { > > + status = "okay"; > > + linux,rs485-enabled-at-boot-time; > > +}; > > + > > +&mdio0 { > > + sgmii_phy03: ethernet-phy@3 { > > + compatible = "ethernet-phy-ieee802.3-c22"; > > + reg = <0x03>; > > + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; > > + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; > > + ti,dp83867-rxctrl-strap-quirk; > > + }; > > + > > + rgmii_phy04: ethernet-phy@4 { > > + compatible = "ethernet-phy-ieee802.3-c22"; > > + reg = <0x04>; > > + ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>; > > + ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; > > + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; > > + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; > > + }; > > + > > + rgmii_phy0c: ethernet-phy@c { > > + compatible = "ethernet-phy-ieee802.3-c22"; > > + reg = <0x0c>; > > + ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>; > > + ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; > > + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; > > + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; > > + }; > > +}; > > + > > +&pwm6 { > > + status = "okay"; > > +}; > > + > > +&pwm7 { > > + status = "okay"; > > +}; > > + > > +&sai1 { > > + status = "okay"; > > +}; > > + > > +&sata { > > + /delete-property/ dma-coherent; > > + status = "okay"; > > +}; > > + > > +&uart0 { > > + status = "okay"; > > +}; > > + > > +&uart1 { > > + status = "okay"; > > +}; > > + > > +&usb3 { > > + /* > > + * Although DR connector, VBUS is always driven, so > > + * restrict to host mode. > > + */ > > + dr_mode = "host"; > > + status = "okay"; > > +}; > > diff --git a/arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi > > b/arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi new file mode 100644 > > index 0000000000000..1ab518c489252 > > --- /dev/null > > +++ b/arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi > > @@ -0,0 +1,93 @@ > > +// SPDX-License-Identifier: (GPL-2.0-or-later OR X11) > > +/* > > + * Copyright 2013-2014 Freescale Semiconductor, Inc. > > + * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>, > > + * D-82229 Seefeld, Germany. > > + * Author: Alexander Stein > > + */ > > + > > +#include "ls1021a.dtsi" > > + > > +/ { > > + model = "TQMLS102xA SOM"; > > + compatible = "tq,ls1021a-tqmls1021a", "fsl,ls1021a"; > > + > > + reg_3p3v_som: regulator-3p3v-som { > > + compatible = "regulator-fixed"; > > + regulator-name = "3P3V_SOM"; > > + regulator-min-microvolt = <3300000>; > > + regulator-max-microvolt = <3300000>; > > + regulator-always-on; > > + }; > > +}; > > + > > +&esdhc { > > + compatible = "fsl,esdhc", "fsl,ls1021a-esdhc"; > > + /* e-MMC over 8 data lines */ > > + bus-width = <8>; > > + status = "okay"; > > +}; > > + > > +&i2c0 { > > + status = "okay"; > > + > > + mc34vr500: pmic@8 { > > + reg = <0x08>; > > No compatible? What's this? That's a DC/DC regulator on the module, currently without any driver support. It's controlled by the PMC, see below. We had an internal discussion as well whether to state clients without a driver (and thus no compatible) on the i2c bus. What is the guidelines for DT? The benefit stating, even without compatible, is to show there is some device on the bus. > > + status = "disabled"; > > + }; > > + > > + pmc0: pmc@11 { > > No compatible? What's this? That's a PMC monitoring voltages using the DC/DC regulator from above. It's connected to i2c bus, but apparently there is no interface using this device. > > + reg = <0x11>; > > + status = "disabled"; > > + }; > > + > > + sa56004: temperature-sensor@4c { > > + compatible = "nxp,sa56004"; > > + reg = <0x4c>; > > + vcc-supply = <®_3p3v_som>; > > + }; > > + > > + adm1069: supervisor@4f { > > No compatible? What's this? Another monitor, similar to above connected to i2c bus but no actual interface to ARM cpu. > > + reg = <0x4f>; > > + status = "disabled"; > > + }; > > + > > + rtc0: rtc@51 { > > + compatible = "nxp,pcf85063a"; > > + quartz-load-femtofarads = <12500>; > > + reg = <0x51>; > > Reg is second property Sounds reasonable, thanks. > > + }; > > + > > + m24c64_54: eeprom@54 { > > + compatible = "atmel,24c64"; > > + reg = <0x54>; > > + pagesize = <32>; > > + read-only; > > + vcc-supply = <®_3p3v_som>; > > + }; > > +}; > > Best regards, > Krzysztof Best regards, Alexander
On 20/01/2023 11:08, Alexander Stein wrote: > Thanks, will drop it. > >>> + >>> + stmpe_gpio { >> >> No underscores in node names, generic node names, so "gpio". Does >> anything depend on odd naming? > > You are right, node names should have underscores, but in the end I was > following the bindings (Documentation/devicetree/bindings/input/touchscreen/ > stmpe.txt) naming 'stmpe_touchscreen' and 'stmpe_adc' in the example. Example is not bindings. > Each subdevice has it's own compatible, so there should be no issue. > Using just 'gpio' and 'touchscreen' below I didn't notice any difference. (...) >>> + >>> +&i2c0 { >>> + status = "okay"; >>> + >>> + mc34vr500: pmic@8 { >>> + reg = <0x08>; >> >> No compatible? What's this? > > That's a DC/DC regulator on the module, currently without any driver support. > It's controlled by the PMC, see below. > > We had an internal discussion as well whether to state clients without a > driver (and thus no compatible) on the i2c bus. What is the guidelines for DT? > The benefit stating, even without compatible, is to show there is some device > on the bus. Leave a comment, but not empty nodes. Best regards, Krzysztof
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index d0c07867aeabe..44b5ed44b13d6 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -802,6 +802,7 @@ dtb-$(CONFIG_SOC_LS1021A) += \ ls1021a-iot.dtb \ ls1021a-moxa-uc-8410a.dtb \ ls1021a-qds.dtb \ + ls1021a-tqmls1021a-mbls1021a.dtb \ ls1021a-tsn.dtb \ ls1021a-twr.dtb dtb-$(CONFIG_SOC_VF610) += \ diff --git a/arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts b/arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts new file mode 100644 index 0000000000000..21da171b9f38e --- /dev/null +++ b/arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts @@ -0,0 +1,409 @@ +// SPDX-License-Identifier: (GPL-2.0-or-later OR X11) +/* + * Copyright 2013-2014 Freescale Semiconductor, Inc. + * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>, + * D-82229 Seefeld, Germany. + * Author: Alexander Stein + */ + +/dts-v1/; + +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/linux-event-codes.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/leds/leds-pca9532.h> +#include <dt-bindings/net/ti-dp83867.h> +#include "ls1021a-tqmls1021a.dtsi" + +/ { + model = "TQMLS102xA SOM on MBLS102xA"; + compatible = "tq,ls1021a-tqmls1021a-mbls102xa", "tq,ls1021a-tqmls1021a", "fsl,ls1021a"; + + audio_mclk: audio-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <25000000>; + }; + + backlight_dcu: backlight { + compatible = "gpio-backlight"; + gpios = <&pca9530 0 GPIO_ACTIVE_LOW>; + status = "disabled"; + }; + + gpio-keys { + compatible = "gpio-keys"; + autorepeat; + + switch-1 { + label = "S6"; + linux,code = <BTN_0>; + gpios = <&pca9554_0 0 GPIO_ACTIVE_LOW>; + }; + + btn2: switch-2 { + label = "S7"; + linux,code = <BTN_1>; + gpios = <&pca9554_0 1 GPIO_ACTIVE_LOW>; + }; + + switch-3 { + label = "S8"; + linux,code = <BTN_2>; + gpios = <&pca9554_0 2 GPIO_ACTIVE_LOW>; + }; + }; + + gpio_leds: gpio-leds { + compatible = "gpio-leds"; + + led-0 { + color = <LED_COLOR_ID_GREEN>; + function = LED_FUNCTION_STATUS; + function-enumerator = <0>; + gpios = <&pca9554_2 4 GPIO_ACTIVE_LOW>; + linux,default-trigger = "default-on"; + }; + + led-1 { + color = <LED_COLOR_ID_GREEN>; + function = LED_FUNCTION_STATUS; + function-enumerator = <1>; + gpios = <&pca9554_2 5 GPIO_ACTIVE_LOW>; + linux,default-trigger = "default-on"; + }; + + led-2 { + color = <LED_COLOR_ID_GREEN>; + function = LED_FUNCTION_STATUS; + function-enumerator = <2>; + gpios = <&pca9554_2 6 GPIO_ACTIVE_LOW>; + linux,default-trigger = "default-on"; + }; + + led-3 { + color = <LED_COLOR_ID_GREEN>; + function = LED_FUNCTION_HEARTBEAT; + function-enumerator = <0>; + gpios = <&pca9554_2 7 GPIO_ACTIVE_LOW>; + linux,default-trigger = "heartbeat"; + }; + }; + + lvds_encoder: lvds-encoder { + compatible = "ti,sn75lvds83", "lvds-encoder"; + power-supply = <®_3p3v>; + status = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + lvds_encoder_in: endpoint {}; + }; + + port@1 { + reg = <1>; + + lvds_encoder_out: endpoint {}; + }; + }; + }; + + reg_1p2v: regulator-1p2v { + compatible = "regulator-fixed"; + regulator-name = "1P2V"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + vin-supply = <®_3p3v>; + }; + + reg_3p3v: regulator-3p3v { + compatible = "regulator-fixed"; + regulator-name = "3P3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + hdmi_out: hdmi { + compatible = "hdmi-connector"; + type = "a"; + ddc-i2c-bus = <&i2c0>; + status = "disabled"; + + port { + hdmi_in: endpoint { + remote-endpoint = <&sii9022a_out>; + }; + }; + }; + + display: panel { + backlight = <&backlight_dcu>; + enable-gpios = <&pca9554_1 3 GPIO_ACTIVE_HIGH>; + status = "disabled"; + + port { + panel_in: endpoint {}; + }; + }; + + sound { + compatible = "fsl,imx-audio-tlv320aic32x4"; + model = "ls1021a-mbls1021a-tlv320aic32"; + ssi-controller = <&sai1>; + audio-codec = <&tlv320aic32x4>; + }; + +}; + +&can0 { + status = "okay"; + xceiver-supply = <®_3p3v>; +}; + +&can1 { + status = "okay"; + xceiver-supply = <®_3p3v>; +}; + +&dspi0 { + bus-num = <0>; + status = "okay"; +}; + +&enet0 { + phy-handle = <&rgmii_phy0c>; + phy-mode = "rgmii-id"; + mac-address = [ 00 00 00 00 00 00 ]; + status = "okay"; +}; + +&enet1 { + tbi-handle = <&tbi1>; + phy-handle = <&sgmii_phy03>; + phy-mode = "sgmii"; + mac-address = [ 00 00 00 00 00 00 ]; + status = "okay"; +}; + +&enet2 { + phy-handle = <&rgmii_phy04>; + phy-mode = "rgmii-id"; + mac-address = [ 00 00 00 00 00 00 ]; + status = "okay"; +}; + +&i2c0 { + status = "okay"; + + tlv320aic32x4: audio-codec@18 { + compatible = "ti,tlv320aic32x4"; + reg = <0x18>; + clocks = <&audio_mclk>; + clock-names = "mclk"; + ldoin-supply = <®_3p3v>; + iov-supply = <®_3p3v>; + }; + + pca9554_0: gpio-expander@20 { + compatible = "nxp,pca9554"; + reg = <0x20>; + gpio-controller; + #gpio-cells = <2>; + interrupt-parent = <&gpio0>; + interrupts = <24 IRQ_TYPE_EDGE_FALLING>; + interrupt-controller; + #interrupt-cells = <2>; + vcc-supply = <®_3p3v>; + gpio-line-names = "BUTTON0", "BUTTON1", + "BUTTON2", "EMMC_SEL", + "DIP2", "DIP3", + "EXT_TOUCH_INT", "GPIO_1"; + }; + + pca9554_1: gpio-expander@21 { + compatible = "nxp,pca9554"; + reg = <0x21>; + gpio-controller; + #gpio-cells = <2>; + interrupt-parent = <&gpio0>; + interrupts = <25 IRQ_TYPE_EDGE_FALLING>; + interrupt-controller; + #interrupt-cells = <2>; + vcc-supply = <®_3p3v>; + gpio-line-names = "PCIE_PWR_EN", "MPCIE_DISABLE#", + "MPCIE_WAKE#", "LCD_BLT_EN", + "LCD_PWR_EN", "EC1_PHY_PWDN", + "EC3_PHY_PWDN", "SGMII_PHY_PWDN"; + }; + + pca9554_2: gpio-expander@22 { + compatible = "nxp,pca9554"; + reg = <0x22>; + gpio-controller; + #gpio-cells = <2>; + interrupt-parent = <&extirq>; + interrupts = <2 IRQ_TYPE_EDGE_FALLING>; + interrupt-controller; + #interrupt-cells = <2>; + vcc-supply = <®_3p3v>; + gpio-line-names = "MUX_SEL0", "MUX_SEL1", + "MUX_SEL2", "MUX_SEL3", + "V95", "V96", "V97", "V98"; + }; + + sii9022a: hdmi-transmitter@3b { + compatible = "sil,sii9022"; + reg = <0x3b>; + iovcc-supply = <®_3p3v>; + cvcc12-supply = <®_1p2v>; + interrupts = <GIC_SPI 167 IRQ_TYPE_EDGE_RISING>; + #sound-dai-cells = <0>; + sil,i2s-data-lanes = <0>; + status = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + sii9022a_in: endpoint {}; + }; + + port@1 { + reg = <1>; + + sii9022a_out: endpoint { + remote-endpoint = <&hdmi_in>; + }; + }; + }; + }; + + stmpe811: touchscreen@41 { + compatible = "st,stmpe811"; + reg = <0x41>; + #address-cells = <1>; + #size-cells = <0>; + interrupt-parent = <&gpio0>; + interrupts = <23 IRQ_TYPE_EDGE_FALLING>; + vcc-supply = <®_3p3v>; + vio-supply = <®_3p3v>; + status = "okay"; + + stmpe_gpio { + compatible = "st,stmpe-gpio"; + gpio-controller; + #gpio-cells = <2>; + /* GPIO 5-7 used for touch */ + st,norequest-mask = <0xf0>; + gpio-line-names = "GPIO_ADC_I2C1_1", + "GPIO_ADC_I2C1_2", + "GPIO_ADC_I2C1_3", + "GPIO_ADC_I2C1_4"; + }; + + stmpe_touchscreen { + compatible = "st,stmpe-ts"; + status = "disabled"; + }; + }; + + pca9530: leds@60 { + compatible = "nxp,pca9530"; + reg = <0x60>; + gpio-controller; + #gpio-cells = <2>; + gpio-line-names = "PWM_0", "PWM_1"; + + gpio_pwm_0 { + label = "pca9530:pwm0"; + type = <PCA9532_TYPE_GPIO>; + }; + + gpio_pwm_1 { + label = "pca9530:pwm1"; + type = <PCA9532_TYPE_GPIO>; + }; + }; + +}; + +&i2c1 { + status = "okay"; +}; + +&lpuart0 { + status = "okay"; + linux,rs485-enabled-at-boot-time; +}; + +&mdio0 { + sgmii_phy03: ethernet-phy@3 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x03>; + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; + ti,dp83867-rxctrl-strap-quirk; + }; + + rgmii_phy04: ethernet-phy@4 { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x04>; + ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>; + ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; + }; + + rgmii_phy0c: ethernet-phy@c { + compatible = "ethernet-phy-ieee802.3-c22"; + reg = <0x0c>; + ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>; + ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; + ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; + ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; + }; +}; + +&pwm6 { + status = "okay"; +}; + +&pwm7 { + status = "okay"; +}; + +&sai1 { + status = "okay"; +}; + +&sata { + /delete-property/ dma-coherent; + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; + +&uart1 { + status = "okay"; +}; + +&usb3 { + /* + * Although DR connector, VBUS is always driven, so + * restrict to host mode. + */ + dr_mode = "host"; + status = "okay"; +}; diff --git a/arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi b/arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi new file mode 100644 index 0000000000000..1ab518c489252 --- /dev/null +++ b/arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: (GPL-2.0-or-later OR X11) +/* + * Copyright 2013-2014 Freescale Semiconductor, Inc. + * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>, + * D-82229 Seefeld, Germany. + * Author: Alexander Stein + */ + +#include "ls1021a.dtsi" + +/ { + model = "TQMLS102xA SOM"; + compatible = "tq,ls1021a-tqmls1021a", "fsl,ls1021a"; + + reg_3p3v_som: regulator-3p3v-som { + compatible = "regulator-fixed"; + regulator-name = "3P3V_SOM"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; +}; + +&esdhc { + compatible = "fsl,esdhc", "fsl,ls1021a-esdhc"; + /* e-MMC over 8 data lines */ + bus-width = <8>; + status = "okay"; +}; + +&i2c0 { + status = "okay"; + + mc34vr500: pmic@8 { + reg = <0x08>; + status = "disabled"; + }; + + pmc0: pmc@11 { + reg = <0x11>; + status = "disabled"; + }; + + sa56004: temperature-sensor@4c { + compatible = "nxp,sa56004"; + reg = <0x4c>; + vcc-supply = <®_3p3v_som>; + }; + + adm1069: supervisor@4f { + reg = <0x4f>; + status = "disabled"; + }; + + rtc0: rtc@51 { + compatible = "nxp,pcf85063a"; + quartz-load-femtofarads = <12500>; + reg = <0x51>; + }; + + m24c64_54: eeprom@54 { + compatible = "atmel,24c64"; + reg = <0x54>; + pagesize = <32>; + read-only; + vcc-supply = <®_3p3v_som>; + }; +}; + +&mdio0 { + tbi1: tbi-phy@8 { + reg = <0x8>; + device_type = "tbi-phy"; + }; +}; + +&scfg { + reg = <0x0 0x1570000 0x0 0x0e00>; +}; + +&qspi { + status = "okay"; + + qflash0: flash@0 { + compatible = "jedec,spi-nor"; + #address-cells = <1>; + #size-cells = <1>; + spi-max-frequency = <20000000>; + spi-rx-bus-width = <4>; + spi-tx-bus-width = <4>; + reg = <0>; + }; +};
Add device tree for the MBLS102xA mainboard with TQMLS1021A SoM. Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> --- arch/arm/boot/dts/Makefile | 1 + .../boot/dts/ls1021a-tqmls1021a-mbls1021a.dts | 409 ++++++++++++++++++ arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi | 93 ++++ 3 files changed, 503 insertions(+) create mode 100644 arch/arm/boot/dts/ls1021a-tqmls1021a-mbls1021a.dts create mode 100644 arch/arm/boot/dts/ls1021a-tqmls1021a.dtsi