18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/dts-v1/; 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci#include "jz4770.dtsi" 58c2ecf20Sopenharmony_ci#include <dt-bindings/clock/ingenic,tcu.h> 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#include <dt-bindings/gpio/gpio.h> 88c2ecf20Sopenharmony_ci#include <dt-bindings/iio/adc/ingenic,adc.h> 98c2ecf20Sopenharmony_ci#include <dt-bindings/input/input.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci/ { 128c2ecf20Sopenharmony_ci compatible = "gcw,zero", "ingenic,jz4770"; 138c2ecf20Sopenharmony_ci model = "GCW Zero"; 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci aliases { 168c2ecf20Sopenharmony_ci serial0 = &uart0; 178c2ecf20Sopenharmony_ci serial1 = &uart1; 188c2ecf20Sopenharmony_ci serial2 = &uart2; 198c2ecf20Sopenharmony_ci serial3 = &uart3; 208c2ecf20Sopenharmony_ci }; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci memory: memory { 238c2ecf20Sopenharmony_ci device_type = "memory"; 248c2ecf20Sopenharmony_ci reg = <0x0 0x10000000>, 258c2ecf20Sopenharmony_ci <0x30000000 0x10000000>; 268c2ecf20Sopenharmony_ci }; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci chosen { 298c2ecf20Sopenharmony_ci stdout-path = "serial2:57600n8"; 308c2ecf20Sopenharmony_ci }; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci vcc: regulator@0 { 338c2ecf20Sopenharmony_ci compatible = "regulator-fixed"; 348c2ecf20Sopenharmony_ci regulator-name = "vcc"; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 378c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 388c2ecf20Sopenharmony_ci regulator-always-on; 398c2ecf20Sopenharmony_ci }; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci mmc1_power: regulator@1 { 428c2ecf20Sopenharmony_ci compatible = "regulator-fixed"; 438c2ecf20Sopenharmony_ci regulator-name = "mmc1_vcc"; 448c2ecf20Sopenharmony_ci gpio = <&gpe 9 0>; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 478c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 488c2ecf20Sopenharmony_ci vin-supply = <&vcc>; 498c2ecf20Sopenharmony_ci }; 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci headphones_amp: analog-amplifier@0 { 528c2ecf20Sopenharmony_ci compatible = "simple-audio-amplifier"; 538c2ecf20Sopenharmony_ci enable-gpios = <&gpf 3 GPIO_ACTIVE_LOW>; 548c2ecf20Sopenharmony_ci enable-delay-ms = <50>; 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci VCC-supply = <&ldo5>; 578c2ecf20Sopenharmony_ci sound-name-prefix = "Headphones Amp"; 588c2ecf20Sopenharmony_ci }; 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci speaker_amp: analog-amplifier@1 { 618c2ecf20Sopenharmony_ci compatible = "simple-audio-amplifier"; 628c2ecf20Sopenharmony_ci enable-gpios = <&gpf 20 GPIO_ACTIVE_HIGH>; 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ci VCC-supply = <&ldo5>; 658c2ecf20Sopenharmony_ci sound-name-prefix = "Speaker Amp"; 668c2ecf20Sopenharmony_ci }; 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci sound { 698c2ecf20Sopenharmony_ci compatible = "simple-audio-card"; 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci simple-audio-card,name = "gcw0-audio"; 728c2ecf20Sopenharmony_ci simple-audio-card,format = "i2s"; 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci simple-audio-card,widgets = 758c2ecf20Sopenharmony_ci "Speaker", "Speaker", 768c2ecf20Sopenharmony_ci "Headphone", "Headphones", 778c2ecf20Sopenharmony_ci "Line", "FM Radio", 788c2ecf20Sopenharmony_ci "Microphone", "Built-in Mic"; 798c2ecf20Sopenharmony_ci simple-audio-card,routing = 808c2ecf20Sopenharmony_ci "Headphones Amp INL", "LHPOUT", 818c2ecf20Sopenharmony_ci "Headphones Amp INR", "RHPOUT", 828c2ecf20Sopenharmony_ci "Headphones", "Headphones Amp OUTL", 838c2ecf20Sopenharmony_ci "Headphones", "Headphones Amp OUTR", 848c2ecf20Sopenharmony_ci "Speaker Amp INL", "LOUT", 858c2ecf20Sopenharmony_ci "Speaker Amp INR", "ROUT", 868c2ecf20Sopenharmony_ci "Speaker", "Speaker Amp OUTL", 878c2ecf20Sopenharmony_ci "Speaker", "Speaker Amp OUTR", 888c2ecf20Sopenharmony_ci "LLINEIN", "FM Radio", 898c2ecf20Sopenharmony_ci "RLINEIN", "FM Radio", 908c2ecf20Sopenharmony_ci "Built-in Mic", "MICBIAS", 918c2ecf20Sopenharmony_ci "MIC1P", "Built-in Mic", 928c2ecf20Sopenharmony_ci "MIC1N", "Built-in Mic"; 938c2ecf20Sopenharmony_ci simple-audio-card,pin-switches = "Speaker", "Headphones"; 948c2ecf20Sopenharmony_ci 958c2ecf20Sopenharmony_ci simple-audio-card,hp-det-gpio = <&gpf 21 GPIO_ACTIVE_LOW>; 968c2ecf20Sopenharmony_ci simple-audio-card,aux-devs = <&speaker_amp>, <&headphones_amp>; 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ci simple-audio-card,bitclock-master = <&dai_codec>; 998c2ecf20Sopenharmony_ci simple-audio-card,frame-master = <&dai_codec>; 1008c2ecf20Sopenharmony_ci 1018c2ecf20Sopenharmony_ci dai_cpu: simple-audio-card,cpu { 1028c2ecf20Sopenharmony_ci sound-dai = <&aic>; 1038c2ecf20Sopenharmony_ci }; 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ci dai_codec: simple-audio-card,codec { 1068c2ecf20Sopenharmony_ci sound-dai = <&codec>; 1078c2ecf20Sopenharmony_ci }; 1088c2ecf20Sopenharmony_ci }; 1098c2ecf20Sopenharmony_ci 1108c2ecf20Sopenharmony_ci rumble { 1118c2ecf20Sopenharmony_ci compatible = "pwm-vibrator"; 1128c2ecf20Sopenharmony_ci pwms = <&pwm 4 2000000 0>; 1138c2ecf20Sopenharmony_ci pwm-names = "enable"; 1148c2ecf20Sopenharmony_ci 1158c2ecf20Sopenharmony_ci pinctrl-names = "default"; 1168c2ecf20Sopenharmony_ci pinctrl-0 = <&pins_pwm4>; 1178c2ecf20Sopenharmony_ci }; 1188c2ecf20Sopenharmony_ci 1198c2ecf20Sopenharmony_ci backlight: backlight { 1208c2ecf20Sopenharmony_ci compatible = "pwm-backlight"; 1218c2ecf20Sopenharmony_ci pwms = <&pwm 1 40000 0>; 1228c2ecf20Sopenharmony_ci power-supply = <&vcc>; 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ci brightness-levels = <0 16 32 48 64 80 96 112 128 1258c2ecf20Sopenharmony_ci 144 160 176 192 208 224 240 255>; 1268c2ecf20Sopenharmony_ci default-brightness-level = <12>; 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci pinctrl-names = "default"; 1298c2ecf20Sopenharmony_ci pinctrl-0 = <&pins_pwm1>; 1308c2ecf20Sopenharmony_ci }; 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ci gpio-keys { 1338c2ecf20Sopenharmony_ci compatible = "gpio-keys"; 1348c2ecf20Sopenharmony_ci #address-cells = <1>; 1358c2ecf20Sopenharmony_ci #size-cells = <0>; 1368c2ecf20Sopenharmony_ci 1378c2ecf20Sopenharmony_ci autorepeat; 1388c2ecf20Sopenharmony_ci 1398c2ecf20Sopenharmony_ci button@0 { 1408c2ecf20Sopenharmony_ci label = "D-pad up"; 1418c2ecf20Sopenharmony_ci linux,code = <KEY_UP>; 1428c2ecf20Sopenharmony_ci linux,can-disable; 1438c2ecf20Sopenharmony_ci gpios = <&gpe 21 GPIO_ACTIVE_LOW>; 1448c2ecf20Sopenharmony_ci }; 1458c2ecf20Sopenharmony_ci 1468c2ecf20Sopenharmony_ci button@1 { 1478c2ecf20Sopenharmony_ci label = "D-pad down"; 1488c2ecf20Sopenharmony_ci linux,code = <KEY_DOWN>; 1498c2ecf20Sopenharmony_ci linux,can-disable; 1508c2ecf20Sopenharmony_ci gpios = <&gpe 25 GPIO_ACTIVE_LOW>; 1518c2ecf20Sopenharmony_ci }; 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_ci button@2 { 1548c2ecf20Sopenharmony_ci label = "D-pad left"; 1558c2ecf20Sopenharmony_ci linux,code = <KEY_LEFT>; 1568c2ecf20Sopenharmony_ci linux,can-disable; 1578c2ecf20Sopenharmony_ci gpios = <&gpe 23 GPIO_ACTIVE_LOW>; 1588c2ecf20Sopenharmony_ci }; 1598c2ecf20Sopenharmony_ci 1608c2ecf20Sopenharmony_ci button@3 { 1618c2ecf20Sopenharmony_ci label = "D-pad right"; 1628c2ecf20Sopenharmony_ci linux,code = <KEY_RIGHT>; 1638c2ecf20Sopenharmony_ci linux,can-disable; 1648c2ecf20Sopenharmony_ci gpios = <&gpe 24 GPIO_ACTIVE_LOW>; 1658c2ecf20Sopenharmony_ci }; 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ci button@4 { 1688c2ecf20Sopenharmony_ci label = "Button A"; 1698c2ecf20Sopenharmony_ci linux,code = <KEY_LEFTCTRL>; 1708c2ecf20Sopenharmony_ci linux,can-disable; 1718c2ecf20Sopenharmony_ci gpios = <&gpe 29 GPIO_ACTIVE_LOW>; 1728c2ecf20Sopenharmony_ci }; 1738c2ecf20Sopenharmony_ci 1748c2ecf20Sopenharmony_ci button@5 { 1758c2ecf20Sopenharmony_ci label = "Button B"; 1768c2ecf20Sopenharmony_ci linux,code = <KEY_LEFTALT>; 1778c2ecf20Sopenharmony_ci linux,can-disable; 1788c2ecf20Sopenharmony_ci gpios = <&gpe 20 GPIO_ACTIVE_LOW>; 1798c2ecf20Sopenharmony_ci }; 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ci button@6 { 1828c2ecf20Sopenharmony_ci label = "Button Y"; 1838c2ecf20Sopenharmony_ci linux,code = <KEY_SPACE>; 1848c2ecf20Sopenharmony_ci linux,can-disable; 1858c2ecf20Sopenharmony_ci gpios = <&gpe 27 GPIO_ACTIVE_LOW>; 1868c2ecf20Sopenharmony_ci }; 1878c2ecf20Sopenharmony_ci 1888c2ecf20Sopenharmony_ci button@7 { 1898c2ecf20Sopenharmony_ci label = "Button X"; 1908c2ecf20Sopenharmony_ci linux,code = <KEY_LEFTSHIFT>; 1918c2ecf20Sopenharmony_ci linux,can-disable; 1928c2ecf20Sopenharmony_ci gpios = <&gpe 28 GPIO_ACTIVE_LOW>; 1938c2ecf20Sopenharmony_ci }; 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci button@8 { 1968c2ecf20Sopenharmony_ci label = "Left shoulder button"; 1978c2ecf20Sopenharmony_ci linux,code = <KEY_TAB>; 1988c2ecf20Sopenharmony_ci linux,can-disable; 1998c2ecf20Sopenharmony_ci gpios = <&gpb 20 GPIO_ACTIVE_LOW>; 2008c2ecf20Sopenharmony_ci }; 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ci button@9 { 2038c2ecf20Sopenharmony_ci label = "Right shoulder button"; 2048c2ecf20Sopenharmony_ci linux,code = <KEY_BACKSPACE>; 2058c2ecf20Sopenharmony_ci linux,can-disable; 2068c2ecf20Sopenharmony_ci gpios = <&gpe 26 GPIO_ACTIVE_LOW>; 2078c2ecf20Sopenharmony_ci }; 2088c2ecf20Sopenharmony_ci 2098c2ecf20Sopenharmony_ci button@10 { 2108c2ecf20Sopenharmony_ci label = "Start button"; 2118c2ecf20Sopenharmony_ci linux,code = <KEY_ENTER>; 2128c2ecf20Sopenharmony_ci linux,can-disable; 2138c2ecf20Sopenharmony_ci gpios = <&gpb 21 GPIO_ACTIVE_LOW>; 2148c2ecf20Sopenharmony_ci }; 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_ci button@11 { 2178c2ecf20Sopenharmony_ci label = "Select button"; 2188c2ecf20Sopenharmony_ci linux,code = <KEY_ESC>; 2198c2ecf20Sopenharmony_ci linux,can-disable; 2208c2ecf20Sopenharmony_ci /* 2218c2ecf20Sopenharmony_ci * This is the only button that is active high, 2228c2ecf20Sopenharmony_ci * since it doubles as BOOT_SEL1. 2238c2ecf20Sopenharmony_ci */ 2248c2ecf20Sopenharmony_ci gpios = <&gpd 18 GPIO_ACTIVE_HIGH>; 2258c2ecf20Sopenharmony_ci }; 2268c2ecf20Sopenharmony_ci 2278c2ecf20Sopenharmony_ci button@12 { 2288c2ecf20Sopenharmony_ci label = "Power slider"; 2298c2ecf20Sopenharmony_ci linux,code = <KEY_POWER>; 2308c2ecf20Sopenharmony_ci linux,can-disable; 2318c2ecf20Sopenharmony_ci gpios = <&gpa 30 GPIO_ACTIVE_LOW>; 2328c2ecf20Sopenharmony_ci wakeup-source; 2338c2ecf20Sopenharmony_ci }; 2348c2ecf20Sopenharmony_ci 2358c2ecf20Sopenharmony_ci button@13 { 2368c2ecf20Sopenharmony_ci label = "Power hold"; 2378c2ecf20Sopenharmony_ci linux,code = <KEY_PAUSE>; 2388c2ecf20Sopenharmony_ci linux,can-disable; 2398c2ecf20Sopenharmony_ci gpios = <&gpf 11 GPIO_ACTIVE_LOW>; 2408c2ecf20Sopenharmony_ci }; 2418c2ecf20Sopenharmony_ci }; 2428c2ecf20Sopenharmony_ci 2438c2ecf20Sopenharmony_ci i2c3: i2c-controller@3 { 2448c2ecf20Sopenharmony_ci compatible = "i2c-gpio"; 2458c2ecf20Sopenharmony_ci #address-cells = <1>; 2468c2ecf20Sopenharmony_ci #size-cells = <0>; 2478c2ecf20Sopenharmony_ci 2488c2ecf20Sopenharmony_ci sda-gpios = <&gpd 5 GPIO_ACTIVE_HIGH>; 2498c2ecf20Sopenharmony_ci scl-gpios = <&gpd 4 GPIO_ACTIVE_HIGH>; 2508c2ecf20Sopenharmony_ci i2c-gpio,delay-us = <2>; /* 250 kHz */ 2518c2ecf20Sopenharmony_ci 2528c2ecf20Sopenharmony_ci act8600: pmic@5a { 2538c2ecf20Sopenharmony_ci compatible = "active-semi,act8600"; 2548c2ecf20Sopenharmony_ci reg = <0x5a>; 2558c2ecf20Sopenharmony_ci 2568c2ecf20Sopenharmony_ci regulators { 2578c2ecf20Sopenharmony_ci /* USB OTG */ 2588c2ecf20Sopenharmony_ci otg_vbus: SUDCDC_REG4 { 2598c2ecf20Sopenharmony_ci /* 2608c2ecf20Sopenharmony_ci * 5.3V instead of 5.0V to compensate 2618c2ecf20Sopenharmony_ci * for the voltage drop of a diode 2628c2ecf20Sopenharmony_ci * between the regulator and the 2638c2ecf20Sopenharmony_ci * connector. 2648c2ecf20Sopenharmony_ci */ 2658c2ecf20Sopenharmony_ci regulator-min-microvolt = <5300000>; 2668c2ecf20Sopenharmony_ci regulator-max-microvolt = <5300000>; 2678c2ecf20Sopenharmony_ci inl-supply = <&vcc>; 2688c2ecf20Sopenharmony_ci }; 2698c2ecf20Sopenharmony_ci 2708c2ecf20Sopenharmony_ci /* 2718c2ecf20Sopenharmony_ci * When this is off, there is no sound, but also 2728c2ecf20Sopenharmony_ci * no USB networking. 2738c2ecf20Sopenharmony_ci */ 2748c2ecf20Sopenharmony_ci ldo5: LDO5 { 2758c2ecf20Sopenharmony_ci regulator-min-microvolt = <2500000>; 2768c2ecf20Sopenharmony_ci regulator-max-microvolt = <2500000>; 2778c2ecf20Sopenharmony_ci inl-supply = <&vcc>; 2788c2ecf20Sopenharmony_ci }; 2798c2ecf20Sopenharmony_ci 2808c2ecf20Sopenharmony_ci /* LCD panel and FM radio */ 2818c2ecf20Sopenharmony_ci ldo6: LDO6 { 2828c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 2838c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 2848c2ecf20Sopenharmony_ci inl-supply = <&vcc>; 2858c2ecf20Sopenharmony_ci }; 2868c2ecf20Sopenharmony_ci 2878c2ecf20Sopenharmony_ci /* ??? */ 2888c2ecf20Sopenharmony_ci LDO7 { 2898c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 2908c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 2918c2ecf20Sopenharmony_ci /*regulator-always-on;*/ 2928c2ecf20Sopenharmony_ci inl-supply = <&vcc>; 2938c2ecf20Sopenharmony_ci }; 2948c2ecf20Sopenharmony_ci 2958c2ecf20Sopenharmony_ci /* 2968c2ecf20Sopenharmony_ci * The colors on the LCD are wrong when this is 2978c2ecf20Sopenharmony_ci * off. Which is strange, since the LCD panel 2988c2ecf20Sopenharmony_ci * data sheet only mentions a 3.3V input. 2998c2ecf20Sopenharmony_ci */ 3008c2ecf20Sopenharmony_ci LDO8 { 3018c2ecf20Sopenharmony_ci regulator-min-microvolt = <1800000>; 3028c2ecf20Sopenharmony_ci regulator-max-microvolt = <1800000>; 3038c2ecf20Sopenharmony_ci regulator-always-on; 3048c2ecf20Sopenharmony_ci inl-supply = <&vcc>; 3058c2ecf20Sopenharmony_ci }; 3068c2ecf20Sopenharmony_ci 3078c2ecf20Sopenharmony_ci /* RTC fixed 3.3V */ 3088c2ecf20Sopenharmony_ci LDO_REG9 { 3098c2ecf20Sopenharmony_ci regulator-min-microvolt = <3300000>; 3108c2ecf20Sopenharmony_ci regulator-max-microvolt = <3300000>; 3118c2ecf20Sopenharmony_ci regulator-always-on; 3128c2ecf20Sopenharmony_ci inl-supply = <&vcc>; 3138c2ecf20Sopenharmony_ci }; 3148c2ecf20Sopenharmony_ci 3158c2ecf20Sopenharmony_ci /* Unused fixed 1.2V */ 3168c2ecf20Sopenharmony_ci LDO_REG10 { 3178c2ecf20Sopenharmony_ci inl-supply = <&vcc>; 3188c2ecf20Sopenharmony_ci }; 3198c2ecf20Sopenharmony_ci }; 3208c2ecf20Sopenharmony_ci }; 3218c2ecf20Sopenharmony_ci }; 3228c2ecf20Sopenharmony_ci 3238c2ecf20Sopenharmony_ci leds { 3248c2ecf20Sopenharmony_ci compatible = "gpio-leds"; 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_ci led { 3278c2ecf20Sopenharmony_ci gpios = <&gpb 30 GPIO_ACTIVE_LOW>; 3288c2ecf20Sopenharmony_ci default-state = "on"; 3298c2ecf20Sopenharmony_ci }; 3308c2ecf20Sopenharmony_ci }; 3318c2ecf20Sopenharmony_ci 3328c2ecf20Sopenharmony_ci spi { 3338c2ecf20Sopenharmony_ci compatible = "spi-gpio"; 3348c2ecf20Sopenharmony_ci #address-cells = <1>; 3358c2ecf20Sopenharmony_ci #size-cells = <0>; 3368c2ecf20Sopenharmony_ci 3378c2ecf20Sopenharmony_ci sck-gpios = <&gpe 15 GPIO_ACTIVE_HIGH>; 3388c2ecf20Sopenharmony_ci mosi-gpios = <&gpe 17 GPIO_ACTIVE_HIGH>; 3398c2ecf20Sopenharmony_ci cs-gpios = <&gpe 16 GPIO_ACTIVE_HIGH>; 3408c2ecf20Sopenharmony_ci num-chipselects = <1>; 3418c2ecf20Sopenharmony_ci 3428c2ecf20Sopenharmony_ci nt39016@0 { 3438c2ecf20Sopenharmony_ci compatible = "kingdisplay,kd035g6-54nt"; 3448c2ecf20Sopenharmony_ci reg = <0>; 3458c2ecf20Sopenharmony_ci 3468c2ecf20Sopenharmony_ci spi-max-frequency = <3125000>; 3478c2ecf20Sopenharmony_ci spi-3wire; 3488c2ecf20Sopenharmony_ci spi-cs-high; 3498c2ecf20Sopenharmony_ci 3508c2ecf20Sopenharmony_ci reset-gpios = <&gpe 2 GPIO_ACTIVE_LOW>; 3518c2ecf20Sopenharmony_ci 3528c2ecf20Sopenharmony_ci backlight = <&backlight>; 3538c2ecf20Sopenharmony_ci power-supply = <&ldo6>; 3548c2ecf20Sopenharmony_ci 3558c2ecf20Sopenharmony_ci port { 3568c2ecf20Sopenharmony_ci panel_input: endpoint { 3578c2ecf20Sopenharmony_ci remote-endpoint = <&panel_output>; 3588c2ecf20Sopenharmony_ci }; 3598c2ecf20Sopenharmony_ci }; 3608c2ecf20Sopenharmony_ci }; 3618c2ecf20Sopenharmony_ci }; 3628c2ecf20Sopenharmony_ci 3638c2ecf20Sopenharmony_ci connector { 3648c2ecf20Sopenharmony_ci compatible = "gpio-usb-b-connector", "usb-b-connector"; 3658c2ecf20Sopenharmony_ci label = "mini-USB"; 3668c2ecf20Sopenharmony_ci type = "mini"; 3678c2ecf20Sopenharmony_ci 3688c2ecf20Sopenharmony_ci /* 3698c2ecf20Sopenharmony_ci * USB OTG is not yet working reliably, the ID detection 3708c2ecf20Sopenharmony_ci * mechanism tends to fry easily for unknown reasons. 3718c2ecf20Sopenharmony_ci * Until this is fixed, disable OTG by not providing the 3728c2ecf20Sopenharmony_ci * ID GPIO to the driver. 3738c2ecf20Sopenharmony_ci */ 3748c2ecf20Sopenharmony_ci //id-gpios = <&gpf 18 GPIO_ACTIVE_LOW>; 3758c2ecf20Sopenharmony_ci 3768c2ecf20Sopenharmony_ci vbus-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>; 3778c2ecf20Sopenharmony_ci vbus-supply = <&otg_vbus>; 3788c2ecf20Sopenharmony_ci 3798c2ecf20Sopenharmony_ci pinctrl-names = "default"; 3808c2ecf20Sopenharmony_ci pinctrl-0 = <&pins_otg>; 3818c2ecf20Sopenharmony_ci 3828c2ecf20Sopenharmony_ci port { 3838c2ecf20Sopenharmony_ci usb_ep: endpoint { 3848c2ecf20Sopenharmony_ci remote-endpoint = <&usb_otg_ep>; 3858c2ecf20Sopenharmony_ci }; 3868c2ecf20Sopenharmony_ci }; 3878c2ecf20Sopenharmony_ci }; 3888c2ecf20Sopenharmony_ci}; 3898c2ecf20Sopenharmony_ci 3908c2ecf20Sopenharmony_ci&ext { 3918c2ecf20Sopenharmony_ci clock-frequency = <12000000>; 3928c2ecf20Sopenharmony_ci}; 3938c2ecf20Sopenharmony_ci 3948c2ecf20Sopenharmony_ci&pinctrl { 3958c2ecf20Sopenharmony_ci pins_lcd: lcd { 3968c2ecf20Sopenharmony_ci function = "lcd"; 3978c2ecf20Sopenharmony_ci groups = "lcd-24bit"; 3988c2ecf20Sopenharmony_ci }; 3998c2ecf20Sopenharmony_ci 4008c2ecf20Sopenharmony_ci pins_uart2: uart2 { 4018c2ecf20Sopenharmony_ci function = "uart2"; 4028c2ecf20Sopenharmony_ci groups = "uart2-data"; 4038c2ecf20Sopenharmony_ci }; 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_ci pins_mmc0: mmc0 { 4068c2ecf20Sopenharmony_ci function = "mmc0"; 4078c2ecf20Sopenharmony_ci groups = "mmc0-1bit-a", "mmc0-4bit-a"; 4088c2ecf20Sopenharmony_ci }; 4098c2ecf20Sopenharmony_ci 4108c2ecf20Sopenharmony_ci pins_mmc1: mmc1 { 4118c2ecf20Sopenharmony_ci function = "mmc1"; 4128c2ecf20Sopenharmony_ci groups = "mmc1-1bit-d", "mmc1-4bit-d"; 4138c2ecf20Sopenharmony_ci }; 4148c2ecf20Sopenharmony_ci 4158c2ecf20Sopenharmony_ci pins_otg: otg { 4168c2ecf20Sopenharmony_ci otg-vbus-pin { 4178c2ecf20Sopenharmony_ci function = "otg"; 4188c2ecf20Sopenharmony_ci groups = "otg-vbus"; 4198c2ecf20Sopenharmony_ci }; 4208c2ecf20Sopenharmony_ci 4218c2ecf20Sopenharmony_ci vbus-pin { 4228c2ecf20Sopenharmony_ci pins = "PB5"; 4238c2ecf20Sopenharmony_ci bias-disable; 4248c2ecf20Sopenharmony_ci }; 4258c2ecf20Sopenharmony_ci }; 4268c2ecf20Sopenharmony_ci 4278c2ecf20Sopenharmony_ci pins_pwm1: pwm1 { 4288c2ecf20Sopenharmony_ci function = "pwm1"; 4298c2ecf20Sopenharmony_ci groups = "pwm1"; 4308c2ecf20Sopenharmony_ci }; 4318c2ecf20Sopenharmony_ci 4328c2ecf20Sopenharmony_ci pins_pwm4: pwm4 { 4338c2ecf20Sopenharmony_ci function = "pwm4"; 4348c2ecf20Sopenharmony_ci groups = "pwm4"; 4358c2ecf20Sopenharmony_ci }; 4368c2ecf20Sopenharmony_ci}; 4378c2ecf20Sopenharmony_ci 4388c2ecf20Sopenharmony_ci&uart2 { 4398c2ecf20Sopenharmony_ci pinctrl-names = "default"; 4408c2ecf20Sopenharmony_ci pinctrl-0 = <&pins_uart2>; 4418c2ecf20Sopenharmony_ci 4428c2ecf20Sopenharmony_ci status = "okay"; 4438c2ecf20Sopenharmony_ci}; 4448c2ecf20Sopenharmony_ci 4458c2ecf20Sopenharmony_ci&cgu { 4468c2ecf20Sopenharmony_ci /* 4478c2ecf20Sopenharmony_ci * Put high-speed peripherals under PLL1, such that we can change the 4488c2ecf20Sopenharmony_ci * PLL0 frequency on demand without having to suspend peripherals. 4498c2ecf20Sopenharmony_ci * We use a rate of 432 MHz, which is the least common multiple of 4508c2ecf20Sopenharmony_ci * 27 MHz (required by TV encoder) and 48 MHz (required by USB host). 4518c2ecf20Sopenharmony_ci * Put the GPU under PLL0 since we want a higher frequency. 4528c2ecf20Sopenharmony_ci * Use the 32 kHz oscillator as the parent of the RTC for a higher 4538c2ecf20Sopenharmony_ci * precision. 4548c2ecf20Sopenharmony_ci */ 4558c2ecf20Sopenharmony_ci assigned-clocks = 4568c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>, 4578c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_GPU>, 4588c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_RTC>, 4598c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_UHC>, 4608c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_LPCLK_MUX>, 4618c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_MMC0_MUX>, 4628c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_MMC1_MUX>; 4638c2ecf20Sopenharmony_ci assigned-clock-parents = 4648c2ecf20Sopenharmony_ci <0>, 4658c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_PLL0>, 4668c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_OSC32K>, 4678c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>, 4688c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>, 4698c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>, 4708c2ecf20Sopenharmony_ci <&cgu JZ4770_CLK_PLL1>; 4718c2ecf20Sopenharmony_ci assigned-clock-rates = 4728c2ecf20Sopenharmony_ci <432000000>, 4738c2ecf20Sopenharmony_ci <600000000>; 4748c2ecf20Sopenharmony_ci}; 4758c2ecf20Sopenharmony_ci 4768c2ecf20Sopenharmony_ci&uhc { 4778c2ecf20Sopenharmony_ci /* The WiFi module is connected to the UHC. */ 4788c2ecf20Sopenharmony_ci status = "okay"; 4798c2ecf20Sopenharmony_ci}; 4808c2ecf20Sopenharmony_ci 4818c2ecf20Sopenharmony_ci&tcu { 4828c2ecf20Sopenharmony_ci /* 4838c2ecf20Sopenharmony_ci * 750 kHz for the system timer and clocksource, 12 MHz for the OST, 4848c2ecf20Sopenharmony_ci * and use RTC as the parent for the watchdog clock 4858c2ecf20Sopenharmony_ci */ 4868c2ecf20Sopenharmony_ci assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER2>, 4878c2ecf20Sopenharmony_ci <&tcu TCU_CLK_OST>, <&tcu TCU_CLK_WDT>; 4888c2ecf20Sopenharmony_ci assigned-clock-parents = <0>, <0>, <0>, <&cgu JZ4770_CLK_RTC>; 4898c2ecf20Sopenharmony_ci assigned-clock-rates = <750000>, <750000>, <12000000>; 4908c2ecf20Sopenharmony_ci 4918c2ecf20Sopenharmony_ci /* PWM1 is in use, so use channel #2 for the clocksource */ 4928c2ecf20Sopenharmony_ci ingenic,pwm-channels-mask = <0xfa>; 4938c2ecf20Sopenharmony_ci}; 4948c2ecf20Sopenharmony_ci 4958c2ecf20Sopenharmony_ci&usb_otg { 4968c2ecf20Sopenharmony_ci port { 4978c2ecf20Sopenharmony_ci usb_otg_ep: endpoint { 4988c2ecf20Sopenharmony_ci remote-endpoint = <&usb_ep>; 4998c2ecf20Sopenharmony_ci }; 5008c2ecf20Sopenharmony_ci }; 5018c2ecf20Sopenharmony_ci}; 5028c2ecf20Sopenharmony_ci 5038c2ecf20Sopenharmony_ci&otg_phy { 5048c2ecf20Sopenharmony_ci vcc-supply = <&ldo5>; 5058c2ecf20Sopenharmony_ci}; 5068c2ecf20Sopenharmony_ci 5078c2ecf20Sopenharmony_ci&rtc { 5088c2ecf20Sopenharmony_ci clocks = <&cgu JZ4770_CLK_RTC>; 5098c2ecf20Sopenharmony_ci clock-names = "rtc"; 5108c2ecf20Sopenharmony_ci 5118c2ecf20Sopenharmony_ci system-power-controller; 5128c2ecf20Sopenharmony_ci}; 5138c2ecf20Sopenharmony_ci 5148c2ecf20Sopenharmony_ci&mmc0 { 5158c2ecf20Sopenharmony_ci status = "okay"; 5168c2ecf20Sopenharmony_ci 5178c2ecf20Sopenharmony_ci bus-width = <4>; 5188c2ecf20Sopenharmony_ci max-frequency = <48000000>; 5198c2ecf20Sopenharmony_ci vmmc-supply = <&vcc>; 5208c2ecf20Sopenharmony_ci non-removable; 5218c2ecf20Sopenharmony_ci 5228c2ecf20Sopenharmony_ci pinctrl-names = "default"; 5238c2ecf20Sopenharmony_ci pinctrl-0 = <&pins_mmc0>; 5248c2ecf20Sopenharmony_ci}; 5258c2ecf20Sopenharmony_ci 5268c2ecf20Sopenharmony_ci&mmc1 { 5278c2ecf20Sopenharmony_ci status = "okay"; 5288c2ecf20Sopenharmony_ci 5298c2ecf20Sopenharmony_ci bus-width = <4>; 5308c2ecf20Sopenharmony_ci max-frequency = <48000000>; 5318c2ecf20Sopenharmony_ci cd-gpios = <&gpb 2 GPIO_ACTIVE_LOW>; 5328c2ecf20Sopenharmony_ci vmmc-supply = <&mmc1_power>; 5338c2ecf20Sopenharmony_ci 5348c2ecf20Sopenharmony_ci pinctrl-names = "default"; 5358c2ecf20Sopenharmony_ci pinctrl-0 = <&pins_mmc1>; 5368c2ecf20Sopenharmony_ci}; 5378c2ecf20Sopenharmony_ci 5388c2ecf20Sopenharmony_ci&lcd { 5398c2ecf20Sopenharmony_ci pinctrl-names = "default"; 5408c2ecf20Sopenharmony_ci pinctrl-0 = <&pins_lcd>; 5418c2ecf20Sopenharmony_ci 5428c2ecf20Sopenharmony_ci port { 5438c2ecf20Sopenharmony_ci panel_output: endpoint { 5448c2ecf20Sopenharmony_ci remote-endpoint = <&panel_input>; 5458c2ecf20Sopenharmony_ci }; 5468c2ecf20Sopenharmony_ci }; 5478c2ecf20Sopenharmony_ci}; 548