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