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