162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2019-2020 Marek Vasut <marex@denx.de>
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include <dt-bindings/input/input.h>
762306a36Sopenharmony_ci#include <dt-bindings/pwm/pwm.h>
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci/ {
1062306a36Sopenharmony_ci	aliases {
1162306a36Sopenharmony_ci		serial0 = &uart4;
1262306a36Sopenharmony_ci		serial1 = &usart3;
1362306a36Sopenharmony_ci		serial2 = &uart8;
1462306a36Sopenharmony_ci	};
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci	chosen {
1762306a36Sopenharmony_ci		stdout-path = "serial0:115200n8";
1862306a36Sopenharmony_ci	};
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	clk_ext_audio_codec: clock-codec {
2162306a36Sopenharmony_ci		compatible = "fixed-clock";
2262306a36Sopenharmony_ci		#clock-cells = <0>;
2362306a36Sopenharmony_ci		clock-frequency = <24000000>;
2462306a36Sopenharmony_ci	};
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	display_bl: display-bl {
2762306a36Sopenharmony_ci		compatible = "pwm-backlight";
2862306a36Sopenharmony_ci		pwms = <&pwm2 3 500000 PWM_POLARITY_INVERTED>;
2962306a36Sopenharmony_ci		brightness-levels = <0 16 22 30 40 55 75 102 138 188 255>;
3062306a36Sopenharmony_ci		default-brightness-level = <8>;
3162306a36Sopenharmony_ci		enable-gpios = <&gpioi 0 GPIO_ACTIVE_HIGH>;
3262306a36Sopenharmony_ci		power-supply = <&reg_panel_bl>;
3362306a36Sopenharmony_ci		status = "okay";
3462306a36Sopenharmony_ci	};
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	gpio-keys-polled {
3762306a36Sopenharmony_ci		compatible = "gpio-keys-polled";
3862306a36Sopenharmony_ci		poll-interval = <20>;
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci		/*
4162306a36Sopenharmony_ci		 * The EXTi IRQ line 3 is shared with ethernet,
4262306a36Sopenharmony_ci		 * so mark this as polled GPIO key.
4362306a36Sopenharmony_ci		 */
4462306a36Sopenharmony_ci		button-0 {
4562306a36Sopenharmony_ci			label = "TA1-GPIO-A";
4662306a36Sopenharmony_ci			linux,code = <KEY_A>;
4762306a36Sopenharmony_ci			gpios = <&gpiof 3 GPIO_ACTIVE_LOW>;
4862306a36Sopenharmony_ci		};
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci		/*
5162306a36Sopenharmony_ci		 * The EXTi IRQ line 6 is shared with touchscreen,
5262306a36Sopenharmony_ci		 * so mark this as polled GPIO key.
5362306a36Sopenharmony_ci		 */
5462306a36Sopenharmony_ci		button-1 {
5562306a36Sopenharmony_ci			label = "TA2-GPIO-B";
5662306a36Sopenharmony_ci			linux,code = <KEY_B>;
5762306a36Sopenharmony_ci			gpios = <&gpiod 6 GPIO_ACTIVE_LOW>;
5862306a36Sopenharmony_ci		};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci		/*
6162306a36Sopenharmony_ci		 * The EXTi IRQ line 0 is shared with PMIC,
6262306a36Sopenharmony_ci		 * so mark this as polled GPIO key.
6362306a36Sopenharmony_ci		 */
6462306a36Sopenharmony_ci		button-2 {
6562306a36Sopenharmony_ci			label = "TA3-GPIO-C";
6662306a36Sopenharmony_ci			linux,code = <KEY_C>;
6762306a36Sopenharmony_ci			gpios = <&gpiog 0 GPIO_ACTIVE_LOW>;
6862306a36Sopenharmony_ci		};
6962306a36Sopenharmony_ci	};
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci	gpio-keys {
7262306a36Sopenharmony_ci		compatible = "gpio-keys";
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci		button-3 {
7562306a36Sopenharmony_ci			label = "TA4-GPIO-D";
7662306a36Sopenharmony_ci			linux,code = <KEY_D>;
7762306a36Sopenharmony_ci			gpios = <&gpiod 12 GPIO_ACTIVE_LOW>;
7862306a36Sopenharmony_ci			wakeup-source;
7962306a36Sopenharmony_ci		};
8062306a36Sopenharmony_ci	};
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci	led {
8362306a36Sopenharmony_ci		compatible = "gpio-leds";
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci		led-0 {
8662306a36Sopenharmony_ci			label = "green:led5";
8762306a36Sopenharmony_ci			gpios = <&gpioc 6 GPIO_ACTIVE_HIGH>;
8862306a36Sopenharmony_ci			default-state = "off";
8962306a36Sopenharmony_ci			status = "disabled";
9062306a36Sopenharmony_ci		};
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci		led-1 {
9362306a36Sopenharmony_ci			label = "green:led6";
9462306a36Sopenharmony_ci			gpios = <&gpiod 11 GPIO_ACTIVE_HIGH>;
9562306a36Sopenharmony_ci			default-state = "off";
9662306a36Sopenharmony_ci		};
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci		led-2 {
9962306a36Sopenharmony_ci			label = "green:led7";
10062306a36Sopenharmony_ci			gpios = <&gpioi 2 GPIO_ACTIVE_HIGH>;
10162306a36Sopenharmony_ci			default-state = "off";
10262306a36Sopenharmony_ci		};
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci		led-3 {
10562306a36Sopenharmony_ci			label = "green:led8";
10662306a36Sopenharmony_ci			gpios = <&gpioi 3 GPIO_ACTIVE_HIGH>;
10762306a36Sopenharmony_ci			default-state = "off";
10862306a36Sopenharmony_ci		};
10962306a36Sopenharmony_ci	};
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci	panel {
11262306a36Sopenharmony_ci		compatible = "edt,etm0700g0edh6";
11362306a36Sopenharmony_ci		backlight = <&display_bl>;
11462306a36Sopenharmony_ci		power-supply = <&reg_panel_bl>;
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci		port {
11762306a36Sopenharmony_ci			lcd_panel_in: endpoint {
11862306a36Sopenharmony_ci				remote-endpoint = <&lcd_display_out>;
11962306a36Sopenharmony_ci			};
12062306a36Sopenharmony_ci		};
12162306a36Sopenharmony_ci	};
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci	reg_panel_bl: regulator-panel-bl {
12462306a36Sopenharmony_ci		compatible = "regulator-fixed";
12562306a36Sopenharmony_ci		regulator-name = "panel_backlight";
12662306a36Sopenharmony_ci		regulator-min-microvolt = <3300000>;
12762306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
12862306a36Sopenharmony_ci		vin-supply = <&reg_panel_supply>;
12962306a36Sopenharmony_ci	};
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	reg_panel_supply: regulator-panel-supply {
13262306a36Sopenharmony_ci		compatible = "regulator-fixed";
13362306a36Sopenharmony_ci		regulator-name = "panel_supply";
13462306a36Sopenharmony_ci		regulator-min-microvolt = <24000000>;
13562306a36Sopenharmony_ci		regulator-max-microvolt = <24000000>;
13662306a36Sopenharmony_ci	};
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci	sound {
13962306a36Sopenharmony_ci		compatible = "audio-graph-card";
14062306a36Sopenharmony_ci		widgets = "Headphone", "Headphone Jack",
14162306a36Sopenharmony_ci			  "Line", "Line In Jack",
14262306a36Sopenharmony_ci			  "Microphone", "Microphone Jack";
14362306a36Sopenharmony_ci		routing = "Headphone Jack", "HP_OUT",
14462306a36Sopenharmony_ci			  "LINE_IN", "Line In Jack",
14562306a36Sopenharmony_ci			  "MIC_IN", "Microphone Jack",
14662306a36Sopenharmony_ci			  "Microphone Jack", "Mic Bias";
14762306a36Sopenharmony_ci		dais = <&sai2a_port &sai2b_port>;
14862306a36Sopenharmony_ci		status = "okay";
14962306a36Sopenharmony_ci	};
15062306a36Sopenharmony_ci};
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci&cec {
15362306a36Sopenharmony_ci	pinctrl-names = "default";
15462306a36Sopenharmony_ci	pinctrl-0 = <&cec_pins_a>;
15562306a36Sopenharmony_ci	status = "okay";
15662306a36Sopenharmony_ci};
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci&i2c2 {	/* Header X22 */
15962306a36Sopenharmony_ci	pinctrl-names = "default";
16062306a36Sopenharmony_ci	pinctrl-0 = <&i2c2_pins_a>;
16162306a36Sopenharmony_ci	i2c-scl-rising-time-ns = <185>;
16262306a36Sopenharmony_ci	i2c-scl-falling-time-ns = <20>;
16362306a36Sopenharmony_ci	status = "okay";
16462306a36Sopenharmony_ci	/* spare dmas for other usage */
16562306a36Sopenharmony_ci	/delete-property/dmas;
16662306a36Sopenharmony_ci	/delete-property/dma-names;
16762306a36Sopenharmony_ci	status = "okay";
16862306a36Sopenharmony_ci};
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci&i2c5 {	/* Header X21 */
17162306a36Sopenharmony_ci	pinctrl-names = "default";
17262306a36Sopenharmony_ci	pinctrl-0 = <&i2c5_pins_a>;
17362306a36Sopenharmony_ci	i2c-scl-rising-time-ns = <185>;
17462306a36Sopenharmony_ci	i2c-scl-falling-time-ns = <20>;
17562306a36Sopenharmony_ci	status = "okay";
17662306a36Sopenharmony_ci	/* spare dmas for other usage */
17762306a36Sopenharmony_ci	/delete-property/dmas;
17862306a36Sopenharmony_ci	/delete-property/dma-names;
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci	sgtl5000: codec@a {
18162306a36Sopenharmony_ci		compatible = "fsl,sgtl5000";
18262306a36Sopenharmony_ci		reg = <0x0a>;
18362306a36Sopenharmony_ci		#sound-dai-cells = <0>;
18462306a36Sopenharmony_ci		clocks = <&clk_ext_audio_codec>;
18562306a36Sopenharmony_ci		VDDA-supply = <&v3v3>;
18662306a36Sopenharmony_ci		VDDIO-supply = <&vdd>;
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci		sgtl5000_port: port {
18962306a36Sopenharmony_ci			#address-cells = <1>;
19062306a36Sopenharmony_ci			#size-cells = <0>;
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci			sgtl5000_tx_endpoint: endpoint@0 {
19362306a36Sopenharmony_ci				reg = <0>;
19462306a36Sopenharmony_ci				remote-endpoint = <&sai2a_endpoint>;
19562306a36Sopenharmony_ci				frame-master = <&sgtl5000_tx_endpoint>;
19662306a36Sopenharmony_ci				bitclock-master = <&sgtl5000_tx_endpoint>;
19762306a36Sopenharmony_ci			};
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci			sgtl5000_rx_endpoint: endpoint@1 {
20062306a36Sopenharmony_ci				reg = <1>;
20162306a36Sopenharmony_ci				remote-endpoint = <&sai2b_endpoint>;
20262306a36Sopenharmony_ci				frame-master = <&sgtl5000_rx_endpoint>;
20362306a36Sopenharmony_ci				bitclock-master = <&sgtl5000_rx_endpoint>;
20462306a36Sopenharmony_ci			};
20562306a36Sopenharmony_ci		};
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci	};
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci	touchscreen@38 {
21062306a36Sopenharmony_ci		compatible = "edt,edt-ft5406";
21162306a36Sopenharmony_ci		reg = <0x38>;
21262306a36Sopenharmony_ci		interrupt-parent = <&gpioc>;
21362306a36Sopenharmony_ci		interrupts = <6 IRQ_TYPE_EDGE_FALLING>; /* GPIO E */
21462306a36Sopenharmony_ci	};
21562306a36Sopenharmony_ci};
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_ci&ltdc {
21862306a36Sopenharmony_ci	pinctrl-names = "default", "sleep";
21962306a36Sopenharmony_ci	pinctrl-0 = <&ltdc_pins_b>;
22062306a36Sopenharmony_ci	pinctrl-1 = <&ltdc_sleep_pins_b>;
22162306a36Sopenharmony_ci	status = "okay";
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci	port {
22462306a36Sopenharmony_ci		lcd_display_out: endpoint {
22562306a36Sopenharmony_ci			remote-endpoint = <&lcd_panel_in>;
22662306a36Sopenharmony_ci		};
22762306a36Sopenharmony_ci	};
22862306a36Sopenharmony_ci};
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ci&sai2 {
23162306a36Sopenharmony_ci	clocks = <&rcc SAI2>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
23262306a36Sopenharmony_ci	clock-names = "pclk", "x8k", "x11k";
23362306a36Sopenharmony_ci	pinctrl-names = "default", "sleep";
23462306a36Sopenharmony_ci	pinctrl-0 = <&sai2a_pins_b &sai2b_pins_b>;
23562306a36Sopenharmony_ci	pinctrl-1 = <&sai2a_sleep_pins_b &sai2b_sleep_pins_b>;
23662306a36Sopenharmony_ci	status = "okay";
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci	sai2a: audio-controller@4400b004 {
23962306a36Sopenharmony_ci		#clock-cells = <0>;
24062306a36Sopenharmony_ci		dma-names = "tx";
24162306a36Sopenharmony_ci		clocks = <&rcc SAI2_K>;
24262306a36Sopenharmony_ci		clock-names = "sai_ck";
24362306a36Sopenharmony_ci		status = "okay";
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci		sai2a_port: port {
24662306a36Sopenharmony_ci			sai2a_endpoint: endpoint {
24762306a36Sopenharmony_ci				remote-endpoint = <&sgtl5000_tx_endpoint>;
24862306a36Sopenharmony_ci				dai-format = "i2s";
24962306a36Sopenharmony_ci				mclk-fs = <512>;
25062306a36Sopenharmony_ci				dai-tdm-slot-num = <2>;
25162306a36Sopenharmony_ci				dai-tdm-slot-width = <16>;
25262306a36Sopenharmony_ci			};
25362306a36Sopenharmony_ci		};
25462306a36Sopenharmony_ci	};
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci	sai2b: audio-controller@4400b024 {
25762306a36Sopenharmony_ci		dma-names = "rx";
25862306a36Sopenharmony_ci		st,sync = <&sai2a 2>;
25962306a36Sopenharmony_ci		clocks = <&rcc SAI2_K>, <&sai2a>;
26062306a36Sopenharmony_ci		clock-names = "sai_ck", "MCLK";
26162306a36Sopenharmony_ci		status = "okay";
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci		sai2b_port: port {
26462306a36Sopenharmony_ci			sai2b_endpoint: endpoint {
26562306a36Sopenharmony_ci				remote-endpoint = <&sgtl5000_rx_endpoint>;
26662306a36Sopenharmony_ci				dai-format = "i2s";
26762306a36Sopenharmony_ci				mclk-fs = <512>;
26862306a36Sopenharmony_ci				dai-tdm-slot-num = <2>;
26962306a36Sopenharmony_ci				dai-tdm-slot-width = <16>;
27062306a36Sopenharmony_ci			};
27162306a36Sopenharmony_ci		};
27262306a36Sopenharmony_ci	};
27362306a36Sopenharmony_ci};
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci&timers2 {
27662306a36Sopenharmony_ci	/* spare dmas for other usage (un-delete to enable pwm capture) */
27762306a36Sopenharmony_ci	/delete-property/dmas;
27862306a36Sopenharmony_ci	/delete-property/dma-names;
27962306a36Sopenharmony_ci	status = "okay";
28062306a36Sopenharmony_ci	pwm2: pwm {
28162306a36Sopenharmony_ci		pinctrl-0 = <&pwm2_pins_a>;
28262306a36Sopenharmony_ci		pinctrl-names = "default";
28362306a36Sopenharmony_ci		status = "okay";
28462306a36Sopenharmony_ci	};
28562306a36Sopenharmony_ci	timer@1 {
28662306a36Sopenharmony_ci		status = "okay";
28762306a36Sopenharmony_ci	};
28862306a36Sopenharmony_ci};
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ci&usart3 {
29162306a36Sopenharmony_ci	pinctrl-names = "default";
29262306a36Sopenharmony_ci	pinctrl-0 = <&usart3_pins_a>;
29362306a36Sopenharmony_ci	/delete-property/dmas;
29462306a36Sopenharmony_ci	/delete-property/dma-names;
29562306a36Sopenharmony_ci	status = "okay";
29662306a36Sopenharmony_ci};
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_ci&uart8 {
29962306a36Sopenharmony_ci	pinctrl-names = "default";
30062306a36Sopenharmony_ci	pinctrl-0 = <&uart8_pins_a &uart8_rtscts_pins_a>;
30162306a36Sopenharmony_ci	uart-has-rtscts;
30262306a36Sopenharmony_ci	/delete-property/dmas;
30362306a36Sopenharmony_ci	/delete-property/dma-names;
30462306a36Sopenharmony_ci	status = "okay";
30562306a36Sopenharmony_ci};
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ci&usbh_ehci {
30862306a36Sopenharmony_ci	phys = <&usbphyc_port0>;
30962306a36Sopenharmony_ci	status = "okay";
31062306a36Sopenharmony_ci};
31162306a36Sopenharmony_ci
31262306a36Sopenharmony_ci&usbotg_hs {
31362306a36Sopenharmony_ci	dr_mode = "otg";
31462306a36Sopenharmony_ci	pinctrl-0 = <&usbotg_hs_pins_a>;
31562306a36Sopenharmony_ci	pinctrl-names = "default";
31662306a36Sopenharmony_ci	phy-names = "usb2-phy";
31762306a36Sopenharmony_ci	phys = <&usbphyc_port1 0>;
31862306a36Sopenharmony_ci	vbus-supply = <&vbus_otg>;
31962306a36Sopenharmony_ci	status = "okay";
32062306a36Sopenharmony_ci};
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ci&usbphyc {
32362306a36Sopenharmony_ci	status = "okay";
32462306a36Sopenharmony_ci};
32562306a36Sopenharmony_ci
32662306a36Sopenharmony_ci&usbphyc_port0 {
32762306a36Sopenharmony_ci	phy-supply = <&vdd_usb>;
32862306a36Sopenharmony_ci};
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_ci&usbphyc_port1 {
33162306a36Sopenharmony_ci	phy-supply = <&vdd_usb>;
33262306a36Sopenharmony_ci};
333