xref: /freebsd/sys/contrib/device-tree/src/arm64/rockchip/rk3588-tiger-haikou.dts (revision 7d0873ebb83b19ba1e8a89e679470d885efe12e3)
101950c46SEmmanuel Vadot// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
201950c46SEmmanuel Vadot/*
301950c46SEmmanuel Vadot * Copyright (c) 2023 Theobroma Systems Design und Consulting GmbH
401950c46SEmmanuel Vadot */
501950c46SEmmanuel Vadot
601950c46SEmmanuel Vadot/dts-v1/;
701950c46SEmmanuel Vadot#include <dt-bindings/input/input.h>
801950c46SEmmanuel Vadot#include "rk3588-tiger.dtsi"
901950c46SEmmanuel Vadot
1001950c46SEmmanuel Vadot/ {
1101950c46SEmmanuel Vadot	model = "Theobroma Systems RK3588-Q7 SoM on Haikou devkit";
1201950c46SEmmanuel Vadot	compatible = "tsd,rk3588-tiger-haikou", "tsd,rk3588-tiger", "rockchip,rk3588";
1301950c46SEmmanuel Vadot
1401950c46SEmmanuel Vadot	aliases {
1501950c46SEmmanuel Vadot		ethernet0 = &gmac0;
1601950c46SEmmanuel Vadot		mmc1 = &sdmmc;
1701950c46SEmmanuel Vadot	};
1801950c46SEmmanuel Vadot
1901950c46SEmmanuel Vadot	chosen {
2001950c46SEmmanuel Vadot		stdout-path = "serial2:115200n8";
2101950c46SEmmanuel Vadot	};
2201950c46SEmmanuel Vadot
2301950c46SEmmanuel Vadot	dc_12v: dc-12v-regulator {
2401950c46SEmmanuel Vadot		compatible = "regulator-fixed";
2501950c46SEmmanuel Vadot		regulator-name = "dc_12v";
2601950c46SEmmanuel Vadot		regulator-always-on;
2701950c46SEmmanuel Vadot		regulator-boot-on;
2801950c46SEmmanuel Vadot		regulator-min-microvolt = <12000000>;
2901950c46SEmmanuel Vadot		regulator-max-microvolt = <12000000>;
3001950c46SEmmanuel Vadot	};
3101950c46SEmmanuel Vadot
3201950c46SEmmanuel Vadot	gpio-keys {
3301950c46SEmmanuel Vadot		compatible = "gpio-keys";
3401950c46SEmmanuel Vadot		pinctrl-names = "default";
3501950c46SEmmanuel Vadot		pinctrl-0 = <&haikou_keys_pin>;
3601950c46SEmmanuel Vadot
3701950c46SEmmanuel Vadot		button-batlow-n {
3801950c46SEmmanuel Vadot			label = "BATLOW#";
3901950c46SEmmanuel Vadot			linux,code = <KEY_BATTERY>;
4001950c46SEmmanuel Vadot			gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>;
4101950c46SEmmanuel Vadot		};
4201950c46SEmmanuel Vadot
4301950c46SEmmanuel Vadot		button-slp-btn-n {
4401950c46SEmmanuel Vadot			label = "SLP_BTN#";
4501950c46SEmmanuel Vadot			linux,code = <KEY_SLEEP>;
4601950c46SEmmanuel Vadot			gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
4701950c46SEmmanuel Vadot		};
4801950c46SEmmanuel Vadot
4901950c46SEmmanuel Vadot		button-wake-n {
5001950c46SEmmanuel Vadot			label = "WAKE#";
5101950c46SEmmanuel Vadot			linux,code = <KEY_WAKEUP>;
5201950c46SEmmanuel Vadot			gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>;
5301950c46SEmmanuel Vadot			wakeup-source;
5401950c46SEmmanuel Vadot		};
5501950c46SEmmanuel Vadot
5601950c46SEmmanuel Vadot		switch-lid-btn-n {
5701950c46SEmmanuel Vadot			label = "LID_BTN#";
5801950c46SEmmanuel Vadot			linux,code = <SW_LID>;
5901950c46SEmmanuel Vadot			linux,input-type = <EV_SW>;
6001950c46SEmmanuel Vadot			gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
6101950c46SEmmanuel Vadot		};
6201950c46SEmmanuel Vadot	};
6301950c46SEmmanuel Vadot
6401950c46SEmmanuel Vadot	i2s3-sound {
6501950c46SEmmanuel Vadot		compatible = "simple-audio-card";
6601950c46SEmmanuel Vadot		simple-audio-card,format = "i2s";
6701950c46SEmmanuel Vadot		simple-audio-card,name = "Haikou,I2S-codec";
6801950c46SEmmanuel Vadot		simple-audio-card,mclk-fs = <512>;
6901950c46SEmmanuel Vadot		simple-audio-card,frame-master = <&sgtl5000_codec>;
7001950c46SEmmanuel Vadot		simple-audio-card,bitclock-master = <&sgtl5000_codec>;
7101950c46SEmmanuel Vadot
7201950c46SEmmanuel Vadot		sgtl5000_codec: simple-audio-card,codec {
7301950c46SEmmanuel Vadot			sound-dai = <&sgtl5000>;
7401950c46SEmmanuel Vadot		};
7501950c46SEmmanuel Vadot
7601950c46SEmmanuel Vadot		simple-audio-card,cpu {
7701950c46SEmmanuel Vadot			sound-dai = <&i2s3_2ch>;
7801950c46SEmmanuel Vadot		};
7901950c46SEmmanuel Vadot	};
8001950c46SEmmanuel Vadot
8101950c46SEmmanuel Vadot	sgtl5000_clk: sgtl5000-oscillator  {
8201950c46SEmmanuel Vadot		compatible = "fixed-clock";
8301950c46SEmmanuel Vadot		#clock-cells = <0>;
8401950c46SEmmanuel Vadot		clock-frequency = <24576000>;
8501950c46SEmmanuel Vadot	};
8601950c46SEmmanuel Vadot
8701950c46SEmmanuel Vadot	vcc3v3_baseboard: vcc3v3-baseboard-regulator {
8801950c46SEmmanuel Vadot		compatible = "regulator-fixed";
8901950c46SEmmanuel Vadot		regulator-name = "vcc3v3_baseboard";
9001950c46SEmmanuel Vadot		regulator-always-on;
9101950c46SEmmanuel Vadot		regulator-boot-on;
9201950c46SEmmanuel Vadot		regulator-min-microvolt = <3300000>;
9301950c46SEmmanuel Vadot		regulator-max-microvolt = <3300000>;
9401950c46SEmmanuel Vadot		vin-supply = <&dc_12v>;
9501950c46SEmmanuel Vadot	};
9601950c46SEmmanuel Vadot
9701950c46SEmmanuel Vadot	vcc3v3_low_noise: vcc3v3-low-noise-regulator {
9801950c46SEmmanuel Vadot		compatible = "regulator-fixed";
9901950c46SEmmanuel Vadot		regulator-name = "vcc3v3_low_noise";
10001950c46SEmmanuel Vadot		regulator-boot-on;
10101950c46SEmmanuel Vadot		regulator-min-microvolt = <3300000>;
10201950c46SEmmanuel Vadot		regulator-max-microvolt = <3300000>;
10301950c46SEmmanuel Vadot		vin-supply = <&vcc5v0_usb>;
10401950c46SEmmanuel Vadot	};
10501950c46SEmmanuel Vadot
10601950c46SEmmanuel Vadot	vcc5v0_baseboard: vcc5v0-baseboard-regulator {
10701950c46SEmmanuel Vadot		compatible = "regulator-fixed";
10801950c46SEmmanuel Vadot		regulator-name = "vcc5v0_baseboard";
10901950c46SEmmanuel Vadot		regulator-always-on;
11001950c46SEmmanuel Vadot		regulator-boot-on;
11101950c46SEmmanuel Vadot		regulator-min-microvolt = <5000000>;
11201950c46SEmmanuel Vadot		regulator-max-microvolt = <5000000>;
11301950c46SEmmanuel Vadot		vin-supply = <&dc_12v>;
11401950c46SEmmanuel Vadot	};
11501950c46SEmmanuel Vadot
116*7d0873ebSEmmanuel Vadot	vcc5v0_otg: vcc5v0-otg-regulator {
117*7d0873ebSEmmanuel Vadot		compatible = "regulator-fixed";
118*7d0873ebSEmmanuel Vadot		enable-active-high;
119*7d0873ebSEmmanuel Vadot		gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>;
120*7d0873ebSEmmanuel Vadot		pinctrl-names = "default";
121*7d0873ebSEmmanuel Vadot		pinctrl-0 = <&otg_vbus_drv>;
122*7d0873ebSEmmanuel Vadot		regulator-name = "vcc5v0_otg";
123*7d0873ebSEmmanuel Vadot		regulator-always-on;
124*7d0873ebSEmmanuel Vadot	};
125*7d0873ebSEmmanuel Vadot
12601950c46SEmmanuel Vadot	vcc5v0_usb: vcc5v0-usb-regulator {
12701950c46SEmmanuel Vadot		compatible = "regulator-fixed";
12801950c46SEmmanuel Vadot		regulator-name = "vcc5v0_usb";
12901950c46SEmmanuel Vadot		regulator-always-on;
13001950c46SEmmanuel Vadot		regulator-boot-on;
13101950c46SEmmanuel Vadot		regulator-min-microvolt = <5000000>;
13201950c46SEmmanuel Vadot		regulator-max-microvolt = <5000000>;
13301950c46SEmmanuel Vadot		vin-supply = <&dc_12v>;
13401950c46SEmmanuel Vadot	};
13501950c46SEmmanuel Vadot
13601950c46SEmmanuel Vadot	vddd_audio_1v6: vddd-audio-1v6-regulator {
13701950c46SEmmanuel Vadot		compatible = "regulator-fixed";
13801950c46SEmmanuel Vadot		regulator-name = "vddd_audio_1v6";
13901950c46SEmmanuel Vadot		regulator-boot-on;
14001950c46SEmmanuel Vadot		regulator-min-microvolt = <1600000>;
14101950c46SEmmanuel Vadot		regulator-max-microvolt = <1600000>;
14201950c46SEmmanuel Vadot		vin-supply = <&vcc5v0_usb>;
14301950c46SEmmanuel Vadot	};
14401950c46SEmmanuel Vadot};
14501950c46SEmmanuel Vadot
14601950c46SEmmanuel Vadot&combphy2_psu {
14701950c46SEmmanuel Vadot	status = "okay";
14801950c46SEmmanuel Vadot};
14901950c46SEmmanuel Vadot
150*7d0873ebSEmmanuel Vadot&extcon_usb3 {
151*7d0873ebSEmmanuel Vadot	status = "okay";
152*7d0873ebSEmmanuel Vadot};
153*7d0873ebSEmmanuel Vadot
15401950c46SEmmanuel Vadot&gmac0 {
15501950c46SEmmanuel Vadot	status = "okay";
15601950c46SEmmanuel Vadot};
15701950c46SEmmanuel Vadot
15801950c46SEmmanuel Vadot&i2c1 {
15901950c46SEmmanuel Vadot	status = "okay";
16001950c46SEmmanuel Vadot
16101950c46SEmmanuel Vadot	eeprom@50 {
16201950c46SEmmanuel Vadot		reg = <0x50>;
16301950c46SEmmanuel Vadot		compatible = "atmel,24c01";
16401950c46SEmmanuel Vadot		pagesize = <8>;
16501950c46SEmmanuel Vadot		size = <128>;
16601950c46SEmmanuel Vadot		vcc-supply = <&vcc3v3_baseboard>;
16701950c46SEmmanuel Vadot	};
16801950c46SEmmanuel Vadot};
16901950c46SEmmanuel Vadot
17001950c46SEmmanuel Vadot&i2c5 {
17101950c46SEmmanuel Vadot	clock-frequency = <400000>;
17201950c46SEmmanuel Vadot	status = "okay";
17301950c46SEmmanuel Vadot
17401950c46SEmmanuel Vadot	sgtl5000: codec@a {
17501950c46SEmmanuel Vadot		compatible = "fsl,sgtl5000";
17601950c46SEmmanuel Vadot		reg = <0x0a>;
17701950c46SEmmanuel Vadot		clocks = <&sgtl5000_clk>;
17801950c46SEmmanuel Vadot		#sound-dai-cells = <0>;
17901950c46SEmmanuel Vadot		VDDA-supply = <&vcc3v3_low_noise>;
18001950c46SEmmanuel Vadot		VDDIO-supply = <&vcc3v3_baseboard>;
18101950c46SEmmanuel Vadot		VDDD-supply = <&vddd_audio_1v6>;
18201950c46SEmmanuel Vadot	};
18301950c46SEmmanuel Vadot};
18401950c46SEmmanuel Vadot
18501950c46SEmmanuel Vadot&i2c8 {
18601950c46SEmmanuel Vadot	status = "okay";
18701950c46SEmmanuel Vadot};
18801950c46SEmmanuel Vadot
18901950c46SEmmanuel Vadot&i2s3_2ch {
19001950c46SEmmanuel Vadot	status = "okay";
19101950c46SEmmanuel Vadot};
19201950c46SEmmanuel Vadot
19301950c46SEmmanuel Vadot&pcie30phy {
19401950c46SEmmanuel Vadot	status = "okay";
19501950c46SEmmanuel Vadot};
19601950c46SEmmanuel Vadot
19701950c46SEmmanuel Vadot&pcie3x4 {
19801950c46SEmmanuel Vadot	vpcie3v3-supply = <&vcc3v3_baseboard>;
19901950c46SEmmanuel Vadot	status = "okay";
20001950c46SEmmanuel Vadot};
20101950c46SEmmanuel Vadot
20201950c46SEmmanuel Vadot&pinctrl {
20301950c46SEmmanuel Vadot	haikou {
20401950c46SEmmanuel Vadot		haikou_keys_pin: haikou-keys-pin {
20501950c46SEmmanuel Vadot			rockchip,pins =
20601950c46SEmmanuel Vadot				/* BATLOW# */
20701950c46SEmmanuel Vadot				<3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>,
20801950c46SEmmanuel Vadot				/* SLP_BTN# */
20901950c46SEmmanuel Vadot				<4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>,
21001950c46SEmmanuel Vadot				/* WAKE# */
21101950c46SEmmanuel Vadot				<3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>,
21201950c46SEmmanuel Vadot				/* LID_BTN */
21301950c46SEmmanuel Vadot				<3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
21401950c46SEmmanuel Vadot		};
21501950c46SEmmanuel Vadot	};
216*7d0873ebSEmmanuel Vadot
217*7d0873ebSEmmanuel Vadot	usb2 {
218*7d0873ebSEmmanuel Vadot		otg_vbus_drv: otg-vbus-drv {
219*7d0873ebSEmmanuel Vadot			rockchip,pins =
220*7d0873ebSEmmanuel Vadot			  <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
221*7d0873ebSEmmanuel Vadot		};
222*7d0873ebSEmmanuel Vadot	};
22301950c46SEmmanuel Vadot};
22401950c46SEmmanuel Vadot
22501950c46SEmmanuel Vadot&sdmmc {
22601950c46SEmmanuel Vadot	/* while the same pin, sdmmc_det does not detect card changes */
22701950c46SEmmanuel Vadot	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
22801950c46SEmmanuel Vadot	disable-wp;
22901950c46SEmmanuel Vadot	pinctrl-0 = <&sdmmc_bus4 &sdmmc_cmd &sdmmc_clk>;
23001950c46SEmmanuel Vadot	sd-uhs-sdr12;
23101950c46SEmmanuel Vadot	sd-uhs-sdr25;
23201950c46SEmmanuel Vadot	sd-uhs-sdr50;
23301950c46SEmmanuel Vadot	sd-uhs-sdr104;
23401950c46SEmmanuel Vadot	vmmc-supply = <&vcc3v3_baseboard>;
23501950c46SEmmanuel Vadot	status = "okay";
23601950c46SEmmanuel Vadot};
23701950c46SEmmanuel Vadot
238*7d0873ebSEmmanuel Vadot&u2phy0 {
239*7d0873ebSEmmanuel Vadot	status = "okay";
240*7d0873ebSEmmanuel Vadot};
241*7d0873ebSEmmanuel Vadot
242*7d0873ebSEmmanuel Vadot&u2phy0_otg {
243*7d0873ebSEmmanuel Vadot	phy-supply = <&vcc5v0_otg>;
244*7d0873ebSEmmanuel Vadot	status = "okay";
245*7d0873ebSEmmanuel Vadot};
246*7d0873ebSEmmanuel Vadot
247*7d0873ebSEmmanuel Vadot&u2phy1 {
248*7d0873ebSEmmanuel Vadot	status = "okay";
249*7d0873ebSEmmanuel Vadot};
250*7d0873ebSEmmanuel Vadot
251*7d0873ebSEmmanuel Vadot&u2phy1_otg {
252*7d0873ebSEmmanuel Vadot	status = "okay";
253*7d0873ebSEmmanuel Vadot};
254*7d0873ebSEmmanuel Vadot
25501950c46SEmmanuel Vadot&u2phy2 {
25601950c46SEmmanuel Vadot	status = "okay";
25701950c46SEmmanuel Vadot};
25801950c46SEmmanuel Vadot
25901950c46SEmmanuel Vadot&u2phy2_host {
26001950c46SEmmanuel Vadot	status = "okay";
26101950c46SEmmanuel Vadot};
26201950c46SEmmanuel Vadot
26301950c46SEmmanuel Vadot&u2phy3 {
26401950c46SEmmanuel Vadot	status = "okay";
26501950c46SEmmanuel Vadot};
26601950c46SEmmanuel Vadot
26701950c46SEmmanuel Vadot&u2phy3_host {
26801950c46SEmmanuel Vadot	status = "okay";
26901950c46SEmmanuel Vadot};
27001950c46SEmmanuel Vadot
27101950c46SEmmanuel Vadot&uart2 {
27201950c46SEmmanuel Vadot	status = "okay";
27301950c46SEmmanuel Vadot};
27401950c46SEmmanuel Vadot
27501950c46SEmmanuel Vadot&uart5 {
27601950c46SEmmanuel Vadot	rts-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>;
277*7d0873ebSEmmanuel Vadot};
278*7d0873ebSEmmanuel Vadot
279*7d0873ebSEmmanuel Vadot&usbdp_phy0 {
28001950c46SEmmanuel Vadot	status = "okay";
28101950c46SEmmanuel Vadot};
28201950c46SEmmanuel Vadot
283*7d0873ebSEmmanuel Vadot&usbdp_phy1 {
284*7d0873ebSEmmanuel Vadot	status = "okay";
285*7d0873ebSEmmanuel Vadot};
286*7d0873ebSEmmanuel Vadot
287*7d0873ebSEmmanuel Vadot/* host0 on Q7_USB_P2, upper usb3 port */
28801950c46SEmmanuel Vadot&usb_host0_ehci {
28901950c46SEmmanuel Vadot	status = "okay";
29001950c46SEmmanuel Vadot};
29101950c46SEmmanuel Vadot
292*7d0873ebSEmmanuel Vadot/* host0 on Q7_USB_P2, upper usb3 port */
29301950c46SEmmanuel Vadot&usb_host0_ohci {
29401950c46SEmmanuel Vadot	status = "okay";
29501950c46SEmmanuel Vadot};
29601950c46SEmmanuel Vadot
297*7d0873ebSEmmanuel Vadot/* host0_xhci on Q7_USB_P1, usb3-otg port */
298*7d0873ebSEmmanuel Vadot&usb_host0_xhci {
299*7d0873ebSEmmanuel Vadot	dr_mode = "otg";
300*7d0873ebSEmmanuel Vadot	extcon = <&extcon_usb3>;
301*7d0873ebSEmmanuel Vadot	status = "okay";
302*7d0873ebSEmmanuel Vadot};
303*7d0873ebSEmmanuel Vadot
30401950c46SEmmanuel Vadot/* host1 on Q7_USB_P3, usb2 port */
30501950c46SEmmanuel Vadot&usb_host1_ehci {
30601950c46SEmmanuel Vadot	status = "okay";
30701950c46SEmmanuel Vadot};
30801950c46SEmmanuel Vadot
30901950c46SEmmanuel Vadot/* host1 on Q7_USB_P3, usb2 port */
31001950c46SEmmanuel Vadot&usb_host1_ohci {
31101950c46SEmmanuel Vadot	status = "okay";
31201950c46SEmmanuel Vadot};
31301950c46SEmmanuel Vadot
314*7d0873ebSEmmanuel Vadot/* host1_xhci on Q7_USB_P0, lower usb3 port */
315*7d0873ebSEmmanuel Vadot&usb_host1_xhci {
316*7d0873ebSEmmanuel Vadot	dr_mode = "host";
317*7d0873ebSEmmanuel Vadot	status = "okay";
318*7d0873ebSEmmanuel Vadot};
319*7d0873ebSEmmanuel Vadot
320*7d0873ebSEmmanuel Vadot/* host2 on Q7_USB_P2, upper usb3 port */
32101950c46SEmmanuel Vadot&usb_host2_xhci {
32201950c46SEmmanuel Vadot	status = "okay";
32301950c46SEmmanuel Vadot};
324