1// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT) 2/* 3 * Copyright 2013-2014 Freescale Semiconductor, Inc. 4 * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>, 5 * D-82229 Seefeld, Germany. 6 * Author: Alexander Stein 7 */ 8 9/dts-v1/; 10 11#include <dt-bindings/gpio/gpio.h> 12#include <dt-bindings/input/linux-event-codes.h> 13#include <dt-bindings/leds/common.h> 14#include <dt-bindings/leds/leds-pca9532.h> 15#include <dt-bindings/net/ti-dp83867.h> 16 17#include "ls1021a-tqmls1021a.dtsi" 18 19/ { 20 model = "TQMLS102xA SOM on MBLS102xA"; 21 compatible = "tq,ls1021a-tqmls1021a-mbls102xa", "tq,ls1021a-tqmls1021a", "fsl,ls1021a"; 22 23 audio_mclk: audio-clock { 24 compatible = "fixed-clock"; 25 #clock-cells = <0>; 26 clock-frequency = <25000000>; 27 }; 28 29 backlight_dcu: backlight { 30 compatible = "gpio-backlight"; 31 gpios = <&pca9530 0 GPIO_ACTIVE_LOW>; 32 status = "disabled"; 33 }; 34 35 gpio-keys { 36 compatible = "gpio-keys"; 37 autorepeat; 38 39 switch-1 { 40 label = "S6"; 41 linux,code = <BTN_0>; 42 gpios = <&pca9554_0 0 GPIO_ACTIVE_LOW>; 43 }; 44 45 btn2: switch-2 { 46 label = "S7"; 47 linux,code = <BTN_1>; 48 gpios = <&pca9554_0 1 GPIO_ACTIVE_LOW>; 49 }; 50 51 switch-3 { 52 label = "S8"; 53 linux,code = <BTN_2>; 54 gpios = <&pca9554_0 2 GPIO_ACTIVE_LOW>; 55 }; 56 }; 57 58 gpio_leds: gpio-leds { 59 compatible = "gpio-leds"; 60 61 led-0 { 62 color = <LED_COLOR_ID_GREEN>; 63 function = LED_FUNCTION_STATUS; 64 function-enumerator = <0>; 65 gpios = <&pca9554_2 4 GPIO_ACTIVE_LOW>; 66 linux,default-trigger = "default-on"; 67 }; 68 69 led-1 { 70 color = <LED_COLOR_ID_GREEN>; 71 function = LED_FUNCTION_STATUS; 72 function-enumerator = <1>; 73 gpios = <&pca9554_2 5 GPIO_ACTIVE_LOW>; 74 linux,default-trigger = "default-on"; 75 }; 76 77 led-2 { 78 color = <LED_COLOR_ID_GREEN>; 79 function = LED_FUNCTION_STATUS; 80 function-enumerator = <2>; 81 gpios = <&pca9554_2 6 GPIO_ACTIVE_LOW>; 82 linux,default-trigger = "default-on"; 83 }; 84 85 led-3 { 86 color = <LED_COLOR_ID_GREEN>; 87 function = LED_FUNCTION_HEARTBEAT; 88 function-enumerator = <0>; 89 gpios = <&pca9554_2 7 GPIO_ACTIVE_LOW>; 90 linux,default-trigger = "heartbeat"; 91 }; 92 }; 93 94 lvds_encoder: lvds-encoder { 95 compatible = "ti,sn75lvds83", "lvds-encoder"; 96 power-supply = <®_3p3v>; 97 status = "disabled"; 98 99 ports { 100 #address-cells = <1>; 101 #size-cells = <0>; 102 103 port@0 { 104 reg = <0>; 105 106 lvds_encoder_in: endpoint {}; 107 }; 108 109 port@1 { 110 reg = <1>; 111 112 lvds_encoder_out: endpoint {}; 113 }; 114 }; 115 }; 116 117 reg_1p2v: regulator-1p2v { 118 compatible = "regulator-fixed"; 119 regulator-name = "1P2V"; 120 regulator-min-microvolt = <1200000>; 121 regulator-max-microvolt = <1200000>; 122 regulator-always-on; 123 vin-supply = <®_3p3v>; 124 }; 125 126 reg_3p3v: regulator-3p3v { 127 compatible = "regulator-fixed"; 128 regulator-name = "3P3V"; 129 regulator-min-microvolt = <3300000>; 130 regulator-max-microvolt = <3300000>; 131 regulator-always-on; 132 }; 133 134 hdmi_out: hdmi { 135 compatible = "hdmi-connector"; 136 type = "a"; 137 ddc-i2c-bus = <&i2c0>; 138 status = "disabled"; 139 140 port { 141 hdmi_in: endpoint { 142 remote-endpoint = <&sii9022a_out>; 143 }; 144 }; 145 }; 146 147 display: panel { 148 backlight = <&backlight_dcu>; 149 enable-gpios = <&pca9554_1 3 GPIO_ACTIVE_HIGH>; 150 power-supply = <®_3p3v>; 151 status = "disabled"; 152 153 port { 154 panel_in: endpoint {}; 155 }; 156 }; 157 158 sound { 159 compatible = "fsl,imx-audio-tlv320aic32x4"; 160 model = "tqm-tlv320aic32"; 161 ssi-controller = <&sai1>; 162 audio-codec = <&tlv320aic32x4>; 163 }; 164 165}; 166 167&can0 { 168 xceiver-supply = <®_3p3v>; 169 status = "okay"; 170}; 171 172&can1 { 173 xceiver-supply = <®_3p3v>; 174 status = "okay"; 175}; 176 177&dspi0 { 178 status = "okay"; 179}; 180 181&enet0 { 182 phy-handle = <&rgmii_phy0c>; 183 phy-mode = "rgmii-id"; 184 mac-address = [ 00 00 00 00 00 00 ]; 185 status = "okay"; 186}; 187 188&enet1 { 189 tbi-handle = <&tbi1>; 190 phy-handle = <&sgmii_phy03>; 191 phy-mode = "sgmii"; 192 mac-address = [ 00 00 00 00 00 00 ]; 193 status = "okay"; 194}; 195 196&enet2 { 197 phy-handle = <&rgmii_phy04>; 198 phy-mode = "rgmii-id"; 199 mac-address = [ 00 00 00 00 00 00 ]; 200 status = "okay"; 201}; 202 203&i2c0 { 204 status = "okay"; 205 206 tlv320aic32x4: audio-codec@18 { 207 compatible = "ti,tlv320aic32x4"; 208 reg = <0x18>; 209 clocks = <&audio_mclk>; 210 clock-names = "mclk"; 211 ldoin-supply = <®_3p3v>; 212 iov-supply = <®_3p3v>; 213 }; 214 215 pca9554_0: gpio-expander@20 { 216 compatible = "nxp,pca9554"; 217 reg = <0x20>; 218 gpio-controller; 219 #gpio-cells = <2>; 220 interrupt-parent = <&gpio0>; 221 interrupts = <24 IRQ_TYPE_EDGE_FALLING>; 222 interrupt-controller; 223 #interrupt-cells = <2>; 224 vcc-supply = <®_3p3v>; 225 gpio-line-names = "BUTTON0", "BUTTON1", 226 "BUTTON2", "EMMC_SEL", 227 "DIP2", "DIP3", 228 "EXT_TOUCH_INT", "GPIO_1"; 229 }; 230 231 pca9554_1: gpio-expander@21 { 232 compatible = "nxp,pca9554"; 233 reg = <0x21>; 234 gpio-controller; 235 #gpio-cells = <2>; 236 interrupt-parent = <&gpio0>; 237 interrupts = <25 IRQ_TYPE_EDGE_FALLING>; 238 interrupt-controller; 239 #interrupt-cells = <2>; 240 vcc-supply = <®_3p3v>; 241 gpio-line-names = "PCIE_PWR_EN", "MPCIE_DISABLE#", 242 "MPCIE_WAKE#", "LCD_BLT_EN", 243 "LCD_PWR_EN", "EC1_PHY_PWDN", 244 "EC3_PHY_PWDN", "SGMII_PHY_PWDN"; 245 }; 246 247 pca9554_2: gpio-expander@22 { 248 compatible = "nxp,pca9554"; 249 reg = <0x22>; 250 gpio-controller; 251 #gpio-cells = <2>; 252 interrupt-parent = <&extirq>; 253 interrupts = <2 IRQ_TYPE_EDGE_FALLING>; 254 interrupt-controller; 255 #interrupt-cells = <2>; 256 vcc-supply = <®_3p3v>; 257 gpio-line-names = "MUX_SEL0", "MUX_SEL1", 258 "MUX_SEL2", "MUX_SEL3", 259 "V95", "V96", "V97", "V98"; 260 }; 261 262 sii9022a: hdmi-transmitter@3b { 263 compatible = "sil,sii9022"; 264 reg = <0x3b>; 265 iovcc-supply = <®_3p3v>; 266 cvcc12-supply = <®_1p2v>; 267 interrupts = <GIC_SPI 167 IRQ_TYPE_EDGE_RISING>; 268 #sound-dai-cells = <0>; 269 sil,i2s-data-lanes = <0>; 270 status = "disabled"; 271 272 ports { 273 #address-cells = <1>; 274 #size-cells = <0>; 275 276 port@0 { 277 reg = <0>; 278 279 sii9022a_in: endpoint {}; 280 }; 281 282 port@1 { 283 reg = <1>; 284 285 sii9022a_out: endpoint { 286 remote-endpoint = <&hdmi_in>; 287 }; 288 }; 289 }; 290 }; 291 292 stmpe811: port-expander@41 { 293 compatible = "st,stmpe811"; 294 reg = <0x41>; 295 interrupt-parent = <&gpio0>; 296 interrupts = <23 IRQ_TYPE_EDGE_FALLING>; 297 vcc-supply = <®_3p3v>; 298 vio-supply = <®_3p3v>; 299 300 gpio { 301 compatible = "st,stmpe-gpio"; 302 gpio-controller; 303 #gpio-cells = <2>; 304 interrupt-controller; 305 #interrupt-cells = <2>; 306 /* GPIO 5-7 used for touch */ 307 st,norequest-mask = <0xf0>; 308 gpio-line-names = "GPIO_ADC_I2C1_1", 309 "GPIO_ADC_I2C1_2", 310 "GPIO_ADC_I2C1_3", 311 "GPIO_ADC_I2C1_4"; 312 }; 313 314 touchscreen { 315 compatible = "st,stmpe-ts"; 316 status = "disabled"; 317 }; 318 }; 319 320 pca9530: leds@60 { 321 compatible = "nxp,pca9530"; 322 reg = <0x60>; 323 gpio-controller; 324 #gpio-cells = <2>; 325 gpio-line-names = "PWM_0", "PWM_1"; 326 327 led-0 { 328 type = <PCA9532_TYPE_GPIO>; 329 }; 330 331 led-1 { 332 type = <PCA9532_TYPE_GPIO>; 333 }; 334 }; 335 336}; 337 338&i2c1 { 339 status = "okay"; 340}; 341 342&lpuart0 { 343 linux,rs485-enabled-at-boot-time; 344 status = "okay"; 345}; 346 347&mdio0 { 348 sgmii_phy03: ethernet-phy@3 { 349 compatible = "ethernet-phy-ieee802.3-c22"; 350 reg = <0x03>; 351 ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; 352 ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; 353 ti,dp83867-rxctrl-strap-quirk; 354 }; 355 356 rgmii_phy04: ethernet-phy@4 { 357 compatible = "ethernet-phy-ieee802.3-c22"; 358 reg = <0x04>; 359 ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>; 360 ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; 361 ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; 362 ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; 363 }; 364 365 rgmii_phy0c: ethernet-phy@c { 366 compatible = "ethernet-phy-ieee802.3-c22"; 367 reg = <0x0c>; 368 ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>; 369 ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>; 370 ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>; 371 ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>; 372 }; 373}; 374 375&pwm6 { 376 status = "okay"; 377}; 378 379&pwm7 { 380 status = "okay"; 381}; 382 383&sai1 { 384 status = "okay"; 385}; 386 387&sata { 388 status = "okay"; 389}; 390 391&uart0 { 392 status = "okay"; 393}; 394 395&uart1 { 396 status = "okay"; 397}; 398 399&usb3 { 400 /* 401 * Although DR connector, VBUS is always driven, so 402 * restrict to host mode. 403 */ 404 dr_mode = "host"; 405 status = "okay"; 406}; 407