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