// 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 { xceiver-supply = <®_3p3v>; status = "okay"; }; &can1 { xceiver-supply = <®_3p3v>; status = "okay"; }; &dspi0 { 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: port-expander@41 { compatible = "st,stmpe811"; reg = <0x41>; interrupt-parent = <&gpio0>; interrupts = <23 IRQ_TYPE_EDGE_FALLING>; vcc-supply = <®_3p3v>; vio-supply = <®_3p3v>; gpio { compatible = "st,stmpe-gpio"; gpio-controller; #gpio-cells = <2>; interrupt-controller; #interrupt-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"; }; 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"; led-0 { type = <PCA9532_TYPE_GPIO>; }; led-1 { type = <PCA9532_TYPE_GPIO>; }; }; }; &i2c1 { status = "okay"; }; &lpuart0 { linux,rs485-enabled-at-boot-time; status = "okay"; }; &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 { 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"; };