162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/dts-v1/;
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#include "jz4770.dtsi"
562306a36Sopenharmony_ci#include <dt-bindings/clock/ingenic,tcu.h>
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h>
862306a36Sopenharmony_ci#include <dt-bindings/iio/adc/ingenic,adc.h>
962306a36Sopenharmony_ci#include <dt-bindings/input/input.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/ {
1262306a36Sopenharmony_ci	compatible = "gcw,zero", "ingenic,jz4770";
1362306a36Sopenharmony_ci	model = "GCW Zero";
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	aliases {
1662306a36Sopenharmony_ci		serial0 = &uart0;
1762306a36Sopenharmony_ci		serial1 = &uart1;
1862306a36Sopenharmony_ci		serial2 = &uart2;
1962306a36Sopenharmony_ci		serial3 = &uart3;
2062306a36Sopenharmony_ci	};
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	memory: memory {
2362306a36Sopenharmony_ci		device_type = "memory";
2462306a36Sopenharmony_ci		reg = <0x0 0x10000000>,
2562306a36Sopenharmony_ci		      <0x30000000 0x10000000>;
2662306a36Sopenharmony_ci	};
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	chosen {
2962306a36Sopenharmony_ci		stdout-path = "serial2:57600n8";
3062306a36Sopenharmony_ci	};
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	vcc: regulator@0 {
3362306a36Sopenharmony_ci		compatible = "regulator-fixed";
3462306a36Sopenharmony_ci		regulator-name = "vcc";
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci		regulator-min-microvolt = <3300000>;
3762306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
3862306a36Sopenharmony_ci		regulator-always-on;
3962306a36Sopenharmony_ci	};
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci	mmc1_power: regulator@1 {
4262306a36Sopenharmony_ci		compatible = "regulator-fixed";
4362306a36Sopenharmony_ci		regulator-name = "mmc1_vcc";
4462306a36Sopenharmony_ci		gpio = <&gpe 9 0>;
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci		regulator-min-microvolt = <3300000>;
4762306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
4862306a36Sopenharmony_ci		vin-supply = <&vcc>;
4962306a36Sopenharmony_ci	};
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci	headphones_amp: analog-amplifier@0 {
5262306a36Sopenharmony_ci		compatible = "simple-audio-amplifier";
5362306a36Sopenharmony_ci		enable-gpios = <&gpf 3 GPIO_ACTIVE_LOW>;
5462306a36Sopenharmony_ci		enable-delay-ms = <50>;
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci		VCC-supply = <&ldo5>;
5762306a36Sopenharmony_ci		sound-name-prefix = "Headphones Amp";
5862306a36Sopenharmony_ci	};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci	speaker_amp: analog-amplifier@1 {
6162306a36Sopenharmony_ci		compatible = "simple-audio-amplifier";
6262306a36Sopenharmony_ci		enable-gpios = <&gpf 20 GPIO_ACTIVE_HIGH>;
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci		VCC-supply = <&ldo5>;
6562306a36Sopenharmony_ci		sound-name-prefix = "Speaker Amp";
6662306a36Sopenharmony_ci	};
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci	sound {
6962306a36Sopenharmony_ci		compatible = "simple-audio-card";
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci		simple-audio-card,name = "gcw0-audio";
7262306a36Sopenharmony_ci		simple-audio-card,format = "i2s";
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci		simple-audio-card,widgets =
7562306a36Sopenharmony_ci			"Speaker", "Speaker",
7662306a36Sopenharmony_ci			"Headphone", "Headphones",
7762306a36Sopenharmony_ci			"Microphone", "Built-in Mic";
7862306a36Sopenharmony_ci		simple-audio-card,routing =
7962306a36Sopenharmony_ci			"Headphones Amp INL", "LHPOUT",
8062306a36Sopenharmony_ci			"Headphones Amp INR", "RHPOUT",
8162306a36Sopenharmony_ci			"Headphones", "Headphones Amp OUTL",
8262306a36Sopenharmony_ci			"Headphones", "Headphones Amp OUTR",
8362306a36Sopenharmony_ci			"Speaker Amp INL", "LOUT",
8462306a36Sopenharmony_ci			"Speaker Amp INR", "ROUT",
8562306a36Sopenharmony_ci			"Speaker", "Speaker Amp OUTL",
8662306a36Sopenharmony_ci			"Speaker", "Speaker Amp OUTR",
8762306a36Sopenharmony_ci			"LLINEIN", "Cap-less",
8862306a36Sopenharmony_ci			"RLINEIN", "Cap-less",
8962306a36Sopenharmony_ci			"Built-in Mic", "MICBIAS",
9062306a36Sopenharmony_ci			"MIC1P", "Built-in Mic",
9162306a36Sopenharmony_ci			"MIC1N", "Built-in Mic";
9262306a36Sopenharmony_ci		simple-audio-card,pin-switches = "Speaker", "Headphones";
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci		simple-audio-card,hp-det-gpio = <&gpf 21 GPIO_ACTIVE_LOW>;
9562306a36Sopenharmony_ci		simple-audio-card,aux-devs = <&speaker_amp>, <&headphones_amp>;
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci		simple-audio-card,bitclock-master = <&dai_codec>;
9862306a36Sopenharmony_ci		simple-audio-card,frame-master = <&dai_codec>;
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci		dai_cpu: simple-audio-card,cpu {
10162306a36Sopenharmony_ci			sound-dai = <&aic>;
10262306a36Sopenharmony_ci		};
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci		dai_codec: simple-audio-card,codec {
10562306a36Sopenharmony_ci			sound-dai = <&codec>;
10662306a36Sopenharmony_ci		};
10762306a36Sopenharmony_ci	};
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci	rumble {
11062306a36Sopenharmony_ci		compatible = "pwm-vibrator";
11162306a36Sopenharmony_ci		pwms = <&pwm 4 2000000 0>;
11262306a36Sopenharmony_ci		pwm-names = "enable";
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci		pinctrl-names = "default";
11562306a36Sopenharmony_ci		pinctrl-0 = <&pins_pwm4>;
11662306a36Sopenharmony_ci	};
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci	backlight: backlight {
11962306a36Sopenharmony_ci		compatible = "pwm-backlight";
12062306a36Sopenharmony_ci		pwms = <&pwm 1 40000 0>;
12162306a36Sopenharmony_ci		power-supply = <&vcc>;
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci		brightness-levels = <0 16 32 48 64 80 96 112 128
12462306a36Sopenharmony_ci				     144 160 176 192 208 224 240 255>;
12562306a36Sopenharmony_ci		default-brightness-level = <12>;
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci		pinctrl-names = "default";
12862306a36Sopenharmony_ci		pinctrl-0 = <&pins_pwm1>;
12962306a36Sopenharmony_ci	};
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	gpio-keys {
13262306a36Sopenharmony_ci		compatible = "gpio-keys";
13362306a36Sopenharmony_ci		autorepeat;
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci		button-0 {
13662306a36Sopenharmony_ci			label = "D-pad up";
13762306a36Sopenharmony_ci			linux,code = <KEY_UP>;
13862306a36Sopenharmony_ci			linux,can-disable;
13962306a36Sopenharmony_ci			gpios = <&gpe 21 GPIO_ACTIVE_LOW>;
14062306a36Sopenharmony_ci		};
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci		button-1 {
14362306a36Sopenharmony_ci			label = "D-pad down";
14462306a36Sopenharmony_ci			linux,code = <KEY_DOWN>;
14562306a36Sopenharmony_ci			linux,can-disable;
14662306a36Sopenharmony_ci			gpios = <&gpe 25 GPIO_ACTIVE_LOW>;
14762306a36Sopenharmony_ci		};
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci		button-2 {
15062306a36Sopenharmony_ci			label = "D-pad left";
15162306a36Sopenharmony_ci			linux,code = <KEY_LEFT>;
15262306a36Sopenharmony_ci			linux,can-disable;
15362306a36Sopenharmony_ci			gpios = <&gpe 23 GPIO_ACTIVE_LOW>;
15462306a36Sopenharmony_ci		};
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci		button-3 {
15762306a36Sopenharmony_ci			label = "D-pad right";
15862306a36Sopenharmony_ci			linux,code = <KEY_RIGHT>;
15962306a36Sopenharmony_ci			linux,can-disable;
16062306a36Sopenharmony_ci			gpios = <&gpe 24 GPIO_ACTIVE_LOW>;
16162306a36Sopenharmony_ci		};
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci		button-4 {
16462306a36Sopenharmony_ci			label = "Button A";
16562306a36Sopenharmony_ci			linux,code = <KEY_LEFTCTRL>;
16662306a36Sopenharmony_ci			linux,can-disable;
16762306a36Sopenharmony_ci			gpios = <&gpe 29 GPIO_ACTIVE_LOW>;
16862306a36Sopenharmony_ci		};
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci		button-5 {
17162306a36Sopenharmony_ci			label = "Button B";
17262306a36Sopenharmony_ci			linux,code = <KEY_LEFTALT>;
17362306a36Sopenharmony_ci			linux,can-disable;
17462306a36Sopenharmony_ci			gpios = <&gpe 20 GPIO_ACTIVE_LOW>;
17562306a36Sopenharmony_ci		};
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci		button-6 {
17862306a36Sopenharmony_ci			label = "Button Y";
17962306a36Sopenharmony_ci			linux,code = <KEY_SPACE>;
18062306a36Sopenharmony_ci			linux,can-disable;
18162306a36Sopenharmony_ci			gpios = <&gpe 27 GPIO_ACTIVE_LOW>;
18262306a36Sopenharmony_ci		};
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci		button-7 {
18562306a36Sopenharmony_ci			label = "Button X";
18662306a36Sopenharmony_ci			linux,code = <KEY_LEFTSHIFT>;
18762306a36Sopenharmony_ci			linux,can-disable;
18862306a36Sopenharmony_ci			gpios = <&gpe 28 GPIO_ACTIVE_LOW>;
18962306a36Sopenharmony_ci		};
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci		button-8 {
19262306a36Sopenharmony_ci			label = "Left shoulder button";
19362306a36Sopenharmony_ci			linux,code = <KEY_TAB>;
19462306a36Sopenharmony_ci			linux,can-disable;
19562306a36Sopenharmony_ci			gpios = <&gpb 20 GPIO_ACTIVE_LOW>;
19662306a36Sopenharmony_ci		};
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ci		button-9 {
19962306a36Sopenharmony_ci			label = "Right shoulder button";
20062306a36Sopenharmony_ci			linux,code = <KEY_BACKSPACE>;
20162306a36Sopenharmony_ci			linux,can-disable;
20262306a36Sopenharmony_ci			gpios = <&gpe 26 GPIO_ACTIVE_LOW>;
20362306a36Sopenharmony_ci		};
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci		button-10 {
20662306a36Sopenharmony_ci			label = "Start button";
20762306a36Sopenharmony_ci			linux,code = <KEY_ENTER>;
20862306a36Sopenharmony_ci			linux,can-disable;
20962306a36Sopenharmony_ci			gpios = <&gpb 21 GPIO_ACTIVE_LOW>;
21062306a36Sopenharmony_ci		};
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci		button-11 {
21362306a36Sopenharmony_ci			label = "Select button";
21462306a36Sopenharmony_ci			linux,code = <KEY_ESC>;
21562306a36Sopenharmony_ci			linux,can-disable;
21662306a36Sopenharmony_ci			/*
21762306a36Sopenharmony_ci			 * This is the only button that is active high,
21862306a36Sopenharmony_ci			 * since it doubles as BOOT_SEL1.
21962306a36Sopenharmony_ci			 */
22062306a36Sopenharmony_ci			gpios = <&gpd 18 GPIO_ACTIVE_HIGH>;
22162306a36Sopenharmony_ci		};
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci		button-12 {
22462306a36Sopenharmony_ci			label = "Power slider";
22562306a36Sopenharmony_ci			linux,code = <KEY_POWER>;
22662306a36Sopenharmony_ci			linux,can-disable;
22762306a36Sopenharmony_ci			gpios = <&gpa 30 GPIO_ACTIVE_LOW>;
22862306a36Sopenharmony_ci			wakeup-source;
22962306a36Sopenharmony_ci		};
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci		button-13 {
23262306a36Sopenharmony_ci			label = "Power hold";
23362306a36Sopenharmony_ci			linux,code = <KEY_PAUSE>;
23462306a36Sopenharmony_ci			linux,can-disable;
23562306a36Sopenharmony_ci			gpios = <&gpf 11 GPIO_ACTIVE_LOW>;
23662306a36Sopenharmony_ci		};
23762306a36Sopenharmony_ci	};
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci	i2c3: i2c-controller@3 {
24062306a36Sopenharmony_ci		compatible = "i2c-gpio";
24162306a36Sopenharmony_ci		#address-cells = <1>;
24262306a36Sopenharmony_ci		#size-cells = <0>;
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ci		sda-gpios = <&gpd 5 GPIO_ACTIVE_HIGH>;
24562306a36Sopenharmony_ci		scl-gpios = <&gpd 4 GPIO_ACTIVE_HIGH>;
24662306a36Sopenharmony_ci		i2c-gpio,delay-us = <2>; /* 250 kHz */
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci		act8600: pmic@5a {
24962306a36Sopenharmony_ci			compatible = "active-semi,act8600";
25062306a36Sopenharmony_ci			reg = <0x5a>;
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ci			regulators {
25362306a36Sopenharmony_ci				/* USB OTG */
25462306a36Sopenharmony_ci				otg_vbus: SUDCDC_REG4 {
25562306a36Sopenharmony_ci					/*
25662306a36Sopenharmony_ci					 * 5.3V instead of 5.0V to compensate
25762306a36Sopenharmony_ci					 * for the voltage drop of a diode
25862306a36Sopenharmony_ci					 * between the regulator and the
25962306a36Sopenharmony_ci					 * connector.
26062306a36Sopenharmony_ci					 */
26162306a36Sopenharmony_ci					regulator-min-microvolt = <5300000>;
26262306a36Sopenharmony_ci					regulator-max-microvolt = <5300000>;
26362306a36Sopenharmony_ci					inl-supply = <&vcc>;
26462306a36Sopenharmony_ci				};
26562306a36Sopenharmony_ci
26662306a36Sopenharmony_ci				/*
26762306a36Sopenharmony_ci				 * When this is off, there is no sound, but also
26862306a36Sopenharmony_ci				 * no USB networking.
26962306a36Sopenharmony_ci				 */
27062306a36Sopenharmony_ci				ldo5: LDO5 {
27162306a36Sopenharmony_ci					regulator-min-microvolt = <2500000>;
27262306a36Sopenharmony_ci					regulator-max-microvolt = <2500000>;
27362306a36Sopenharmony_ci					inl-supply = <&vcc>;
27462306a36Sopenharmony_ci				};
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci				/* LCD panel and FM radio */
27762306a36Sopenharmony_ci				ldo6: LDO6 {
27862306a36Sopenharmony_ci					regulator-min-microvolt = <3300000>;
27962306a36Sopenharmony_ci					regulator-max-microvolt = <3300000>;
28062306a36Sopenharmony_ci					inl-supply = <&vcc>;
28162306a36Sopenharmony_ci				};
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ci				/* ??? */
28462306a36Sopenharmony_ci				LDO7 {
28562306a36Sopenharmony_ci					regulator-min-microvolt = <3300000>;
28662306a36Sopenharmony_ci					regulator-max-microvolt = <3300000>;
28762306a36Sopenharmony_ci					/*regulator-always-on;*/
28862306a36Sopenharmony_ci					inl-supply = <&vcc>;
28962306a36Sopenharmony_ci				};
29062306a36Sopenharmony_ci
29162306a36Sopenharmony_ci				/*
29262306a36Sopenharmony_ci				 * The colors on the LCD are wrong when this is
29362306a36Sopenharmony_ci				 * off. Which is strange, since the LCD panel
29462306a36Sopenharmony_ci				 * data sheet only mentions a 3.3V input.
29562306a36Sopenharmony_ci				 */
29662306a36Sopenharmony_ci				LDO8 {
29762306a36Sopenharmony_ci					regulator-min-microvolt = <1800000>;
29862306a36Sopenharmony_ci					regulator-max-microvolt = <1800000>;
29962306a36Sopenharmony_ci					regulator-always-on;
30062306a36Sopenharmony_ci					inl-supply = <&vcc>;
30162306a36Sopenharmony_ci				};
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci				/* RTC fixed 3.3V */
30462306a36Sopenharmony_ci				LDO_REG9 {
30562306a36Sopenharmony_ci					regulator-min-microvolt = <3300000>;
30662306a36Sopenharmony_ci					regulator-max-microvolt = <3300000>;
30762306a36Sopenharmony_ci					regulator-always-on;
30862306a36Sopenharmony_ci					inl-supply = <&vcc>;
30962306a36Sopenharmony_ci				};
31062306a36Sopenharmony_ci
31162306a36Sopenharmony_ci				/* Unused fixed 1.2V */
31262306a36Sopenharmony_ci				LDO_REG10 {
31362306a36Sopenharmony_ci					inl-supply = <&vcc>;
31462306a36Sopenharmony_ci				};
31562306a36Sopenharmony_ci			};
31662306a36Sopenharmony_ci		};
31762306a36Sopenharmony_ci	};
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ci	leds {
32062306a36Sopenharmony_ci		compatible = "gpio-leds";
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ci		led {
32362306a36Sopenharmony_ci			gpios = <&gpb 30 GPIO_ACTIVE_LOW>;
32462306a36Sopenharmony_ci			default-state = "on";
32562306a36Sopenharmony_ci		};
32662306a36Sopenharmony_ci	};
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ci	spi {
32962306a36Sopenharmony_ci		compatible = "spi-gpio";
33062306a36Sopenharmony_ci		#address-cells = <1>;
33162306a36Sopenharmony_ci		#size-cells = <0>;
33262306a36Sopenharmony_ci
33362306a36Sopenharmony_ci		sck-gpios = <&gpe 15 GPIO_ACTIVE_HIGH>;
33462306a36Sopenharmony_ci		mosi-gpios = <&gpe 17 GPIO_ACTIVE_HIGH>;
33562306a36Sopenharmony_ci		cs-gpios = <&gpe 16 GPIO_ACTIVE_HIGH>;
33662306a36Sopenharmony_ci		num-chipselects = <1>;
33762306a36Sopenharmony_ci
33862306a36Sopenharmony_ci		nt39016@0 {
33962306a36Sopenharmony_ci			compatible = "kingdisplay,kd035g6-54nt";
34062306a36Sopenharmony_ci			reg = <0>;
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_ci			spi-max-frequency = <3125000>;
34362306a36Sopenharmony_ci			spi-3wire;
34462306a36Sopenharmony_ci
34562306a36Sopenharmony_ci			reset-gpios = <&gpe 2 GPIO_ACTIVE_LOW>;
34662306a36Sopenharmony_ci
34762306a36Sopenharmony_ci			backlight = <&backlight>;
34862306a36Sopenharmony_ci			power-supply = <&ldo6>;
34962306a36Sopenharmony_ci
35062306a36Sopenharmony_ci			port {
35162306a36Sopenharmony_ci				panel_input: endpoint {
35262306a36Sopenharmony_ci					remote-endpoint = <&panel_output>;
35362306a36Sopenharmony_ci				};
35462306a36Sopenharmony_ci			};
35562306a36Sopenharmony_ci		};
35662306a36Sopenharmony_ci	};
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ci	connector {
35962306a36Sopenharmony_ci		compatible = "gpio-usb-b-connector", "usb-b-connector";
36062306a36Sopenharmony_ci		label = "mini-USB";
36162306a36Sopenharmony_ci		type = "mini";
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci		/*
36462306a36Sopenharmony_ci		 * USB OTG is not yet working reliably, the ID detection
36562306a36Sopenharmony_ci		 * mechanism tends to fry easily for unknown reasons.
36662306a36Sopenharmony_ci		 * Until this is fixed, disable OTG by not providing the
36762306a36Sopenharmony_ci		 * ID GPIO to the driver.
36862306a36Sopenharmony_ci		 */
36962306a36Sopenharmony_ci		//id-gpios = <&gpf 18 GPIO_ACTIVE_LOW>;
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_ci		vbus-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>;
37262306a36Sopenharmony_ci		vbus-supply = <&otg_vbus>;
37362306a36Sopenharmony_ci
37462306a36Sopenharmony_ci		pinctrl-names = "default";
37562306a36Sopenharmony_ci		pinctrl-0 = <&pins_otg>;
37662306a36Sopenharmony_ci
37762306a36Sopenharmony_ci		port {
37862306a36Sopenharmony_ci			usb_ep: endpoint {
37962306a36Sopenharmony_ci				remote-endpoint = <&usb_otg_ep>;
38062306a36Sopenharmony_ci			};
38162306a36Sopenharmony_ci		};
38262306a36Sopenharmony_ci	};
38362306a36Sopenharmony_ci};
38462306a36Sopenharmony_ci
38562306a36Sopenharmony_ci&ext {
38662306a36Sopenharmony_ci	clock-frequency = <12000000>;
38762306a36Sopenharmony_ci};
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci&pinctrl {
39062306a36Sopenharmony_ci	pins_lcd: lcd {
39162306a36Sopenharmony_ci		function = "lcd";
39262306a36Sopenharmony_ci		groups = "lcd-24bit";
39362306a36Sopenharmony_ci	};
39462306a36Sopenharmony_ci
39562306a36Sopenharmony_ci	pins_uart2: uart2 {
39662306a36Sopenharmony_ci		function = "uart2";
39762306a36Sopenharmony_ci		groups = "uart2-data";
39862306a36Sopenharmony_ci	};
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ci	pins_mmc0: mmc0 {
40162306a36Sopenharmony_ci		function = "mmc0";
40262306a36Sopenharmony_ci		groups = "mmc0-1bit-a", "mmc0-4bit-a";
40362306a36Sopenharmony_ci	};
40462306a36Sopenharmony_ci
40562306a36Sopenharmony_ci	pins_mmc1: mmc1 {
40662306a36Sopenharmony_ci		function = "mmc1";
40762306a36Sopenharmony_ci		groups = "mmc1-1bit-d", "mmc1-4bit-d";
40862306a36Sopenharmony_ci	};
40962306a36Sopenharmony_ci
41062306a36Sopenharmony_ci	pins_otg: otg {
41162306a36Sopenharmony_ci		otg-vbus-pin {
41262306a36Sopenharmony_ci			function = "otg";
41362306a36Sopenharmony_ci			groups = "otg-vbus";
41462306a36Sopenharmony_ci		};
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ci		vbus-pin {
41762306a36Sopenharmony_ci			pins = "PB5";
41862306a36Sopenharmony_ci			bias-disable;
41962306a36Sopenharmony_ci		};
42062306a36Sopenharmony_ci	};
42162306a36Sopenharmony_ci
42262306a36Sopenharmony_ci	pins_pwm1: pwm1 {
42362306a36Sopenharmony_ci		function = "pwm1";
42462306a36Sopenharmony_ci		groups = "pwm1";
42562306a36Sopenharmony_ci	};
42662306a36Sopenharmony_ci
42762306a36Sopenharmony_ci	pins_pwm4: pwm4 {
42862306a36Sopenharmony_ci		function = "pwm4";
42962306a36Sopenharmony_ci		groups = "pwm4";
43062306a36Sopenharmony_ci	};
43162306a36Sopenharmony_ci};
43262306a36Sopenharmony_ci
43362306a36Sopenharmony_ci&uart2 {
43462306a36Sopenharmony_ci	pinctrl-names = "default";
43562306a36Sopenharmony_ci	pinctrl-0 = <&pins_uart2>;
43662306a36Sopenharmony_ci
43762306a36Sopenharmony_ci	status = "okay";
43862306a36Sopenharmony_ci};
43962306a36Sopenharmony_ci
44062306a36Sopenharmony_ci&cgu {
44162306a36Sopenharmony_ci	/*
44262306a36Sopenharmony_ci	 * Put high-speed peripherals under PLL1, such that we can change the
44362306a36Sopenharmony_ci	 * PLL0 frequency on demand without having to suspend peripherals.
44462306a36Sopenharmony_ci	 * We use a rate of 432 MHz, which is the least common multiple of
44562306a36Sopenharmony_ci	 * 27 MHz (required by TV encoder) and 48 MHz (required by USB host).
44662306a36Sopenharmony_ci	 * Put the GPU under PLL0 since we want a higher frequency.
44762306a36Sopenharmony_ci	 * Use the 32 kHz oscillator as the parent of the RTC for a higher
44862306a36Sopenharmony_ci	 * precision.
44962306a36Sopenharmony_ci	 */
45062306a36Sopenharmony_ci	assigned-clocks =
45162306a36Sopenharmony_ci		<&cgu JZ4770_CLK_PLL1>,
45262306a36Sopenharmony_ci		<&cgu JZ4770_CLK_GPU>,
45362306a36Sopenharmony_ci		<&cgu JZ4770_CLK_RTC>,
45462306a36Sopenharmony_ci		<&cgu JZ4770_CLK_UHC>,
45562306a36Sopenharmony_ci		<&cgu JZ4770_CLK_LPCLK_MUX>,
45662306a36Sopenharmony_ci		<&cgu JZ4770_CLK_MMC0_MUX>,
45762306a36Sopenharmony_ci		<&cgu JZ4770_CLK_MMC1_MUX>;
45862306a36Sopenharmony_ci	assigned-clock-parents =
45962306a36Sopenharmony_ci		<0>,
46062306a36Sopenharmony_ci		<&cgu JZ4770_CLK_PLL0>,
46162306a36Sopenharmony_ci		<&cgu JZ4770_CLK_OSC32K>,
46262306a36Sopenharmony_ci		<&cgu JZ4770_CLK_PLL1>,
46362306a36Sopenharmony_ci		<&cgu JZ4770_CLK_PLL1>,
46462306a36Sopenharmony_ci		<&cgu JZ4770_CLK_PLL1>,
46562306a36Sopenharmony_ci		<&cgu JZ4770_CLK_PLL1>;
46662306a36Sopenharmony_ci	assigned-clock-rates =
46762306a36Sopenharmony_ci		<432000000>,
46862306a36Sopenharmony_ci		<600000000>;
46962306a36Sopenharmony_ci};
47062306a36Sopenharmony_ci
47162306a36Sopenharmony_ci&uhc {
47262306a36Sopenharmony_ci	/* The WiFi module is connected to the UHC. */
47362306a36Sopenharmony_ci	status = "okay";
47462306a36Sopenharmony_ci};
47562306a36Sopenharmony_ci
47662306a36Sopenharmony_ci&tcu {
47762306a36Sopenharmony_ci	/*
47862306a36Sopenharmony_ci	 * 750 kHz for the system timer and clocksource, 12 MHz for the OST,
47962306a36Sopenharmony_ci	 * and use RTC as the parent for the watchdog clock
48062306a36Sopenharmony_ci	 */
48162306a36Sopenharmony_ci	assigned-clocks = <&tcu TCU_CLK_TIMER0>, <&tcu TCU_CLK_TIMER2>,
48262306a36Sopenharmony_ci			  <&tcu TCU_CLK_OST>, <&tcu TCU_CLK_WDT>;
48362306a36Sopenharmony_ci	assigned-clock-parents = <0>, <0>, <0>, <&cgu JZ4770_CLK_RTC>;
48462306a36Sopenharmony_ci	assigned-clock-rates = <750000>, <750000>, <12000000>;
48562306a36Sopenharmony_ci
48662306a36Sopenharmony_ci	/* PWM1 is in use, so use channel #2 for the clocksource */
48762306a36Sopenharmony_ci	ingenic,pwm-channels-mask = <0xfa>;
48862306a36Sopenharmony_ci};
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_ci&usb_otg {
49162306a36Sopenharmony_ci	port {
49262306a36Sopenharmony_ci		usb_otg_ep: endpoint {
49362306a36Sopenharmony_ci			remote-endpoint = <&usb_ep>;
49462306a36Sopenharmony_ci		};
49562306a36Sopenharmony_ci	};
49662306a36Sopenharmony_ci};
49762306a36Sopenharmony_ci
49862306a36Sopenharmony_ci&otg_phy {
49962306a36Sopenharmony_ci	vcc-supply = <&ldo5>;
50062306a36Sopenharmony_ci};
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_ci&rtc {
50362306a36Sopenharmony_ci	clocks = <&cgu JZ4770_CLK_RTC>;
50462306a36Sopenharmony_ci	clock-names = "rtc";
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ci	system-power-controller;
50762306a36Sopenharmony_ci};
50862306a36Sopenharmony_ci
50962306a36Sopenharmony_ci&mmc0 {
51062306a36Sopenharmony_ci	status = "okay";
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_ci	bus-width = <4>;
51362306a36Sopenharmony_ci	max-frequency = <48000000>;
51462306a36Sopenharmony_ci	vmmc-supply = <&vcc>;
51562306a36Sopenharmony_ci	non-removable;
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ci	pinctrl-names = "default";
51862306a36Sopenharmony_ci	pinctrl-0 = <&pins_mmc0>;
51962306a36Sopenharmony_ci};
52062306a36Sopenharmony_ci
52162306a36Sopenharmony_ci&mmc1 {
52262306a36Sopenharmony_ci	status = "okay";
52362306a36Sopenharmony_ci
52462306a36Sopenharmony_ci	bus-width = <4>;
52562306a36Sopenharmony_ci	max-frequency = <48000000>;
52662306a36Sopenharmony_ci	cd-gpios = <&gpb 2 GPIO_ACTIVE_LOW>;
52762306a36Sopenharmony_ci	vmmc-supply = <&mmc1_power>;
52862306a36Sopenharmony_ci
52962306a36Sopenharmony_ci	pinctrl-names = "default";
53062306a36Sopenharmony_ci	pinctrl-0 = <&pins_mmc1>;
53162306a36Sopenharmony_ci};
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ci&lcd {
53462306a36Sopenharmony_ci	pinctrl-names = "default";
53562306a36Sopenharmony_ci	pinctrl-0 = <&pins_lcd>;
53662306a36Sopenharmony_ci
53762306a36Sopenharmony_ci	port {
53862306a36Sopenharmony_ci		panel_output: endpoint {
53962306a36Sopenharmony_ci			remote-endpoint = <&panel_input>;
54062306a36Sopenharmony_ci		};
54162306a36Sopenharmony_ci	};
54262306a36Sopenharmony_ci};
543