1*6e9896c0SJohann Neuhauser// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause 2*6e9896c0SJohann Neuhauser/* 3*6e9896c0SJohann Neuhauser * Copyright (C) 2019-2020 Marek Vasut <marex@denx.de> 4*6e9896c0SJohann Neuhauser * Copyright (C) 2022 DH electronics GmbH 5*6e9896c0SJohann Neuhauser */ 6*6e9896c0SJohann Neuhauser 7*6e9896c0SJohann Neuhauser/ { 8*6e9896c0SJohann Neuhauser aliases { 9*6e9896c0SJohann Neuhauser serial0 = &uart4; 10*6e9896c0SJohann Neuhauser serial1 = &usart3; 11*6e9896c0SJohann Neuhauser serial2 = &uart8; 12*6e9896c0SJohann Neuhauser }; 13*6e9896c0SJohann Neuhauser 14*6e9896c0SJohann Neuhauser chosen { 15*6e9896c0SJohann Neuhauser stdout-path = "serial0:115200n8"; 16*6e9896c0SJohann Neuhauser }; 17*6e9896c0SJohann Neuhauser 18*6e9896c0SJohann Neuhauser clk_ext_audio_codec: clock-codec { 19*6e9896c0SJohann Neuhauser compatible = "fixed-clock"; 20*6e9896c0SJohann Neuhauser #clock-cells = <0>; 21*6e9896c0SJohann Neuhauser clock-frequency = <24000000>; 22*6e9896c0SJohann Neuhauser }; 23*6e9896c0SJohann Neuhauser 24*6e9896c0SJohann Neuhauser display_bl: display-bl { 25*6e9896c0SJohann Neuhauser compatible = "pwm-backlight"; 26*6e9896c0SJohann Neuhauser pwms = <&pwm2 3 500000 1>; 27*6e9896c0SJohann Neuhauser brightness-levels = <0 16 22 30 40 55 75 102 138 188 255>; 28*6e9896c0SJohann Neuhauser default-brightness-level = <8>; 29*6e9896c0SJohann Neuhauser enable-gpios = <&gpioi 0 GPIO_ACTIVE_HIGH>; 30*6e9896c0SJohann Neuhauser power-supply = <®_panel_bl>; 31*6e9896c0SJohann Neuhauser status = "okay"; 32*6e9896c0SJohann Neuhauser }; 33*6e9896c0SJohann Neuhauser 34*6e9896c0SJohann Neuhauser gpio-keys-polled { 35*6e9896c0SJohann Neuhauser compatible = "gpio-keys-polled"; 36*6e9896c0SJohann Neuhauser poll-interval = <20>; 37*6e9896c0SJohann Neuhauser 38*6e9896c0SJohann Neuhauser /* 39*6e9896c0SJohann Neuhauser * The EXTi IRQ line 3 is shared with ethernet, 40*6e9896c0SJohann Neuhauser * so mark this as polled GPIO key. 41*6e9896c0SJohann Neuhauser */ 42*6e9896c0SJohann Neuhauser button-0 { 43*6e9896c0SJohann Neuhauser label = "TA1-GPIO-A"; 44*6e9896c0SJohann Neuhauser gpios = <&gpiof 3 GPIO_ACTIVE_LOW>; 45*6e9896c0SJohann Neuhauser }; 46*6e9896c0SJohann Neuhauser 47*6e9896c0SJohann Neuhauser /* 48*6e9896c0SJohann Neuhauser * The EXTi IRQ line 6 is shared with touchscreen, 49*6e9896c0SJohann Neuhauser * so mark this as polled GPIO key. 50*6e9896c0SJohann Neuhauser */ 51*6e9896c0SJohann Neuhauser button-1 { 52*6e9896c0SJohann Neuhauser label = "TA2-GPIO-B"; 53*6e9896c0SJohann Neuhauser gpios = <&gpiod 6 GPIO_ACTIVE_LOW>; 54*6e9896c0SJohann Neuhauser }; 55*6e9896c0SJohann Neuhauser 56*6e9896c0SJohann Neuhauser /* 57*6e9896c0SJohann Neuhauser * The EXTi IRQ line 0 is shared with PMIC, 58*6e9896c0SJohann Neuhauser * so mark this as polled GPIO key. 59*6e9896c0SJohann Neuhauser */ 60*6e9896c0SJohann Neuhauser button-2 { 61*6e9896c0SJohann Neuhauser label = "TA3-GPIO-C"; 62*6e9896c0SJohann Neuhauser gpios = <&gpiog 0 GPIO_ACTIVE_LOW>; 63*6e9896c0SJohann Neuhauser }; 64*6e9896c0SJohann Neuhauser }; 65*6e9896c0SJohann Neuhauser 66*6e9896c0SJohann Neuhauser gpio-keys { 67*6e9896c0SJohann Neuhauser compatible = "gpio-keys"; 68*6e9896c0SJohann Neuhauser 69*6e9896c0SJohann Neuhauser button-3 { 70*6e9896c0SJohann Neuhauser label = "TA4-GPIO-D"; 71*6e9896c0SJohann Neuhauser gpios = <&gpiod 12 GPIO_ACTIVE_LOW>; 72*6e9896c0SJohann Neuhauser wakeup-source; 73*6e9896c0SJohann Neuhauser }; 74*6e9896c0SJohann Neuhauser }; 75*6e9896c0SJohann Neuhauser 76*6e9896c0SJohann Neuhauser led { 77*6e9896c0SJohann Neuhauser compatible = "gpio-leds"; 78*6e9896c0SJohann Neuhauser 79*6e9896c0SJohann Neuhauser led-0 { 80*6e9896c0SJohann Neuhauser label = "green:led5"; 81*6e9896c0SJohann Neuhauser gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>; 82*6e9896c0SJohann Neuhauser default-state = "off"; 83*6e9896c0SJohann Neuhauser status = "disabled"; 84*6e9896c0SJohann Neuhauser }; 85*6e9896c0SJohann Neuhauser 86*6e9896c0SJohann Neuhauser led-1 { 87*6e9896c0SJohann Neuhauser label = "green:led6"; 88*6e9896c0SJohann Neuhauser gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>; 89*6e9896c0SJohann Neuhauser default-state = "off"; 90*6e9896c0SJohann Neuhauser }; 91*6e9896c0SJohann Neuhauser 92*6e9896c0SJohann Neuhauser led-2 { 93*6e9896c0SJohann Neuhauser label = "green:led7"; 94*6e9896c0SJohann Neuhauser gpios = <&gpioi 2 GPIO_ACTIVE_HIGH>; 95*6e9896c0SJohann Neuhauser default-state = "off"; 96*6e9896c0SJohann Neuhauser }; 97*6e9896c0SJohann Neuhauser 98*6e9896c0SJohann Neuhauser led-3 { 99*6e9896c0SJohann Neuhauser label = "green:led8"; 100*6e9896c0SJohann Neuhauser gpios = <&gpioi 3 GPIO_ACTIVE_HIGH>; 101*6e9896c0SJohann Neuhauser default-state = "off"; 102*6e9896c0SJohann Neuhauser }; 103*6e9896c0SJohann Neuhauser }; 104*6e9896c0SJohann Neuhauser 105*6e9896c0SJohann Neuhauser panel { 106*6e9896c0SJohann Neuhauser compatible = "edt,etm0700g0edh6"; 107*6e9896c0SJohann Neuhauser backlight = <&display_bl>; 108*6e9896c0SJohann Neuhauser power-supply = <®_panel_bl>; 109*6e9896c0SJohann Neuhauser 110*6e9896c0SJohann Neuhauser port { 111*6e9896c0SJohann Neuhauser lcd_panel_in: endpoint { 112*6e9896c0SJohann Neuhauser remote-endpoint = <&lcd_display_out>; 113*6e9896c0SJohann Neuhauser }; 114*6e9896c0SJohann Neuhauser }; 115*6e9896c0SJohann Neuhauser }; 116*6e9896c0SJohann Neuhauser 117*6e9896c0SJohann Neuhauser reg_panel_bl: regulator-panel-bl { 118*6e9896c0SJohann Neuhauser compatible = "regulator-fixed"; 119*6e9896c0SJohann Neuhauser regulator-name = "panel_backlight"; 120*6e9896c0SJohann Neuhauser regulator-min-microvolt = <3300000>; 121*6e9896c0SJohann Neuhauser regulator-max-microvolt = <3300000>; 122*6e9896c0SJohann Neuhauser vin-supply = <®_panel_supply>; 123*6e9896c0SJohann Neuhauser }; 124*6e9896c0SJohann Neuhauser 125*6e9896c0SJohann Neuhauser reg_panel_supply: regulator-panel-supply { 126*6e9896c0SJohann Neuhauser compatible = "regulator-fixed"; 127*6e9896c0SJohann Neuhauser regulator-name = "panel_supply"; 128*6e9896c0SJohann Neuhauser regulator-min-microvolt = <24000000>; 129*6e9896c0SJohann Neuhauser regulator-max-microvolt = <24000000>; 130*6e9896c0SJohann Neuhauser }; 131*6e9896c0SJohann Neuhauser 132*6e9896c0SJohann Neuhauser sound { 133*6e9896c0SJohann Neuhauser compatible = "audio-graph-card"; 134*6e9896c0SJohann Neuhauser routing = 135*6e9896c0SJohann Neuhauser "MIC_IN", "Capture", 136*6e9896c0SJohann Neuhauser "Capture", "Mic Bias", 137*6e9896c0SJohann Neuhauser "Playback", "HP_OUT"; 138*6e9896c0SJohann Neuhauser dais = <&sai2a_port &sai2b_port>; 139*6e9896c0SJohann Neuhauser status = "okay"; 140*6e9896c0SJohann Neuhauser }; 141*6e9896c0SJohann Neuhauser}; 142*6e9896c0SJohann Neuhauser 143*6e9896c0SJohann Neuhauser&cec { 144*6e9896c0SJohann Neuhauser pinctrl-names = "default"; 145*6e9896c0SJohann Neuhauser pinctrl-0 = <&cec_pins_a>; 146*6e9896c0SJohann Neuhauser status = "okay"; 147*6e9896c0SJohann Neuhauser}; 148*6e9896c0SJohann Neuhauser 149*6e9896c0SJohann Neuhauser&i2c2 { /* Header X22 */ 150*6e9896c0SJohann Neuhauser pinctrl-names = "default"; 151*6e9896c0SJohann Neuhauser pinctrl-0 = <&i2c2_pins_a>; 152*6e9896c0SJohann Neuhauser i2c-scl-rising-time-ns = <185>; 153*6e9896c0SJohann Neuhauser i2c-scl-falling-time-ns = <20>; 154*6e9896c0SJohann Neuhauser status = "okay"; 155*6e9896c0SJohann Neuhauser /* spare dmas for other usage */ 156*6e9896c0SJohann Neuhauser /delete-property/dmas; 157*6e9896c0SJohann Neuhauser /delete-property/dma-names; 158*6e9896c0SJohann Neuhauser}; 159*6e9896c0SJohann Neuhauser 160*6e9896c0SJohann Neuhauser&i2c5 { /* Header X21 */ 161*6e9896c0SJohann Neuhauser pinctrl-names = "default"; 162*6e9896c0SJohann Neuhauser pinctrl-0 = <&i2c5_pins_a>; 163*6e9896c0SJohann Neuhauser i2c-scl-rising-time-ns = <185>; 164*6e9896c0SJohann Neuhauser i2c-scl-falling-time-ns = <20>; 165*6e9896c0SJohann Neuhauser status = "okay"; 166*6e9896c0SJohann Neuhauser /* spare dmas for other usage */ 167*6e9896c0SJohann Neuhauser /delete-property/dmas; 168*6e9896c0SJohann Neuhauser /delete-property/dma-names; 169*6e9896c0SJohann Neuhauser 170*6e9896c0SJohann Neuhauser sgtl5000: codec@a { 171*6e9896c0SJohann Neuhauser compatible = "fsl,sgtl5000"; 172*6e9896c0SJohann Neuhauser reg = <0x0a>; 173*6e9896c0SJohann Neuhauser #sound-dai-cells = <0>; 174*6e9896c0SJohann Neuhauser clocks = <&clk_ext_audio_codec>; 175*6e9896c0SJohann Neuhauser VDDA-supply = <&v3v3>; 176*6e9896c0SJohann Neuhauser VDDIO-supply = <&vdd>; 177*6e9896c0SJohann Neuhauser 178*6e9896c0SJohann Neuhauser sgtl5000_port: port { 179*6e9896c0SJohann Neuhauser #address-cells = <1>; 180*6e9896c0SJohann Neuhauser #size-cells = <0>; 181*6e9896c0SJohann Neuhauser 182*6e9896c0SJohann Neuhauser sgtl5000_tx_endpoint: endpoint@0 { 183*6e9896c0SJohann Neuhauser reg = <0>; 184*6e9896c0SJohann Neuhauser remote-endpoint = <&sai2a_endpoint>; 185*6e9896c0SJohann Neuhauser frame-master = <&sgtl5000_tx_endpoint>; 186*6e9896c0SJohann Neuhauser bitclock-master = <&sgtl5000_tx_endpoint>; 187*6e9896c0SJohann Neuhauser }; 188*6e9896c0SJohann Neuhauser 189*6e9896c0SJohann Neuhauser sgtl5000_rx_endpoint: endpoint@1 { 190*6e9896c0SJohann Neuhauser reg = <1>; 191*6e9896c0SJohann Neuhauser remote-endpoint = <&sai2b_endpoint>; 192*6e9896c0SJohann Neuhauser frame-master = <&sgtl5000_rx_endpoint>; 193*6e9896c0SJohann Neuhauser bitclock-master = <&sgtl5000_rx_endpoint>; 194*6e9896c0SJohann Neuhauser }; 195*6e9896c0SJohann Neuhauser }; 196*6e9896c0SJohann Neuhauser 197*6e9896c0SJohann Neuhauser }; 198*6e9896c0SJohann Neuhauser 199*6e9896c0SJohann Neuhauser touchscreen@38 { 200*6e9896c0SJohann Neuhauser compatible = "edt,edt-ft5406"; 201*6e9896c0SJohann Neuhauser reg = <0x38>; 202*6e9896c0SJohann Neuhauser interrupt-parent = <&gpioc>; 203*6e9896c0SJohann Neuhauser interrupts = <6 IRQ_TYPE_EDGE_FALLING>; /* GPIO E */ 204*6e9896c0SJohann Neuhauser }; 205*6e9896c0SJohann Neuhauser}; 206*6e9896c0SJohann Neuhauser 207*6e9896c0SJohann Neuhauser<dc { 208*6e9896c0SJohann Neuhauser pinctrl-names = "default", "sleep"; 209*6e9896c0SJohann Neuhauser pinctrl-0 = <<dc_pins_b>; 210*6e9896c0SJohann Neuhauser pinctrl-1 = <<dc_sleep_pins_b>; 211*6e9896c0SJohann Neuhauser status = "okay"; 212*6e9896c0SJohann Neuhauser 213*6e9896c0SJohann Neuhauser port { 214*6e9896c0SJohann Neuhauser lcd_display_out: endpoint { 215*6e9896c0SJohann Neuhauser remote-endpoint = <&lcd_panel_in>; 216*6e9896c0SJohann Neuhauser }; 217*6e9896c0SJohann Neuhauser }; 218*6e9896c0SJohann Neuhauser}; 219*6e9896c0SJohann Neuhauser 220*6e9896c0SJohann Neuhauser&sai2 { 221*6e9896c0SJohann Neuhauser clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>; 222*6e9896c0SJohann Neuhauser clock-names = "pclk", "x8k", "x11k"; 223*6e9896c0SJohann Neuhauser pinctrl-names = "default", "sleep"; 224*6e9896c0SJohann Neuhauser pinctrl-0 = <&sai2a_pins_b &sai2b_pins_b>; 225*6e9896c0SJohann Neuhauser pinctrl-1 = <&sai2a_sleep_pins_b &sai2b_sleep_pins_b>; 226*6e9896c0SJohann Neuhauser status = "okay"; 227*6e9896c0SJohann Neuhauser 228*6e9896c0SJohann Neuhauser sai2a: audio-controller@4400b004 { 229*6e9896c0SJohann Neuhauser #clock-cells = <0>; 230*6e9896c0SJohann Neuhauser dma-names = "tx"; 231*6e9896c0SJohann Neuhauser clocks = <&rcc SAI2_K>; 232*6e9896c0SJohann Neuhauser clock-names = "sai_ck"; 233*6e9896c0SJohann Neuhauser status = "okay"; 234*6e9896c0SJohann Neuhauser 235*6e9896c0SJohann Neuhauser sai2a_port: port { 236*6e9896c0SJohann Neuhauser sai2a_endpoint: endpoint { 237*6e9896c0SJohann Neuhauser remote-endpoint = <&sgtl5000_tx_endpoint>; 238*6e9896c0SJohann Neuhauser format = "i2s"; 239*6e9896c0SJohann Neuhauser mclk-fs = <512>; 240*6e9896c0SJohann Neuhauser dai-tdm-slot-num = <2>; 241*6e9896c0SJohann Neuhauser dai-tdm-slot-width = <16>; 242*6e9896c0SJohann Neuhauser }; 243*6e9896c0SJohann Neuhauser }; 244*6e9896c0SJohann Neuhauser }; 245*6e9896c0SJohann Neuhauser 246*6e9896c0SJohann Neuhauser sai2b: audio-controller@4400b024 { 247*6e9896c0SJohann Neuhauser dma-names = "rx"; 248*6e9896c0SJohann Neuhauser st,sync = <&sai2a 2>; 249*6e9896c0SJohann Neuhauser clocks = <&rcc SAI2_K>, <&sai2a>; 250*6e9896c0SJohann Neuhauser clock-names = "sai_ck", "MCLK"; 251*6e9896c0SJohann Neuhauser status = "okay"; 252*6e9896c0SJohann Neuhauser 253*6e9896c0SJohann Neuhauser sai2b_port: port { 254*6e9896c0SJohann Neuhauser sai2b_endpoint: endpoint { 255*6e9896c0SJohann Neuhauser remote-endpoint = <&sgtl5000_rx_endpoint>; 256*6e9896c0SJohann Neuhauser format = "i2s"; 257*6e9896c0SJohann Neuhauser mclk-fs = <512>; 258*6e9896c0SJohann Neuhauser dai-tdm-slot-num = <2>; 259*6e9896c0SJohann Neuhauser dai-tdm-slot-width = <16>; 260*6e9896c0SJohann Neuhauser }; 261*6e9896c0SJohann Neuhauser }; 262*6e9896c0SJohann Neuhauser }; 263*6e9896c0SJohann Neuhauser}; 264*6e9896c0SJohann Neuhauser 265*6e9896c0SJohann Neuhauser&timers2 { 266*6e9896c0SJohann Neuhauser /* spare dmas for other usage (un-delete to enable pwm capture) */ 267*6e9896c0SJohann Neuhauser /delete-property/dmas; 268*6e9896c0SJohann Neuhauser /delete-property/dma-names; 269*6e9896c0SJohann Neuhauser status = "okay"; 270*6e9896c0SJohann Neuhauser pwm2: pwm { 271*6e9896c0SJohann Neuhauser pinctrl-0 = <&pwm2_pins_a>; 272*6e9896c0SJohann Neuhauser pinctrl-names = "default"; 273*6e9896c0SJohann Neuhauser status = "okay"; 274*6e9896c0SJohann Neuhauser }; 275*6e9896c0SJohann Neuhauser timer@1 { 276*6e9896c0SJohann Neuhauser status = "okay"; 277*6e9896c0SJohann Neuhauser }; 278*6e9896c0SJohann Neuhauser}; 279*6e9896c0SJohann Neuhauser 280*6e9896c0SJohann Neuhauser&usart3 { 281*6e9896c0SJohann Neuhauser pinctrl-names = "default"; 282*6e9896c0SJohann Neuhauser pinctrl-0 = <&usart3_pins_a>; 283*6e9896c0SJohann Neuhauser /delete-property/dmas; 284*6e9896c0SJohann Neuhauser /delete-property/dma-names; 285*6e9896c0SJohann Neuhauser status = "okay"; 286*6e9896c0SJohann Neuhauser}; 287*6e9896c0SJohann Neuhauser 288*6e9896c0SJohann Neuhauser&uart8 { 289*6e9896c0SJohann Neuhauser pinctrl-names = "default"; 290*6e9896c0SJohann Neuhauser pinctrl-0 = <&uart8_pins_a &uart8_rtscts_pins_a>; 291*6e9896c0SJohann Neuhauser uart-has-rtscts; 292*6e9896c0SJohann Neuhauser /delete-property/dmas; 293*6e9896c0SJohann Neuhauser /delete-property/dma-names; 294*6e9896c0SJohann Neuhauser status = "okay"; 295*6e9896c0SJohann Neuhauser}; 296*6e9896c0SJohann Neuhauser 297*6e9896c0SJohann Neuhauser&usbh_ehci { 298*6e9896c0SJohann Neuhauser phys = <&usbphyc_port0>; 299*6e9896c0SJohann Neuhauser status = "okay"; 300*6e9896c0SJohann Neuhauser}; 301*6e9896c0SJohann Neuhauser 302*6e9896c0SJohann Neuhauser&usbotg_hs { 303*6e9896c0SJohann Neuhauser dr_mode = "otg"; 304*6e9896c0SJohann Neuhauser pinctrl-0 = <&usbotg_hs_pins_a>; 305*6e9896c0SJohann Neuhauser pinctrl-names = "default"; 306*6e9896c0SJohann Neuhauser phy-names = "usb2-phy"; 307*6e9896c0SJohann Neuhauser phys = <&usbphyc_port1 0>; 308*6e9896c0SJohann Neuhauser vbus-supply = <&vbus_otg>; 309*6e9896c0SJohann Neuhauser status = "okay"; 310*6e9896c0SJohann Neuhauser}; 311*6e9896c0SJohann Neuhauser 312*6e9896c0SJohann Neuhauser&usbphyc { 313*6e9896c0SJohann Neuhauser status = "okay"; 314*6e9896c0SJohann Neuhauser}; 315*6e9896c0SJohann Neuhauser 316*6e9896c0SJohann Neuhauser&usbphyc_port0 { 317*6e9896c0SJohann Neuhauser phy-supply = <&vdd_usb>; 318*6e9896c0SJohann Neuhauser}; 319*6e9896c0SJohann Neuhauser 320*6e9896c0SJohann Neuhauser&usbphyc_port1 { 321*6e9896c0SJohann Neuhauser phy-supply = <&vdd_usb>; 322*6e9896c0SJohann Neuhauser}; 323