// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2023 Theobroma Systems Design und Consulting GmbH
 */

/dts-v1/;
#include <dt-bindings/input/input.h>
#include "rk3588-tiger.dtsi"

/ {
	model = "Theobroma Systems RK3588-Q7 SoM on Haikou devkit";
	compatible = "tsd,rk3588-tiger-haikou", "tsd,rk3588-tiger", "rockchip,rk3588";

	aliases {
		ethernet0 = &gmac0;
		mmc1 = &sdmmc;
	};

	chosen {
		stdout-path = "serial2:115200n8";
	};

	dc_12v: dc-12v-regulator {
		compatible = "regulator-fixed";
		regulator-name = "dc_12v";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&haikou_keys_pin>;

		button-batlow-n {
			label = "BATLOW#";
			linux,code = <KEY_BATTERY>;
			gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>;
		};

		button-slp-btn-n {
			label = "SLP_BTN#";
			linux,code = <KEY_SLEEP>;
			gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_LOW>;
		};

		button-wake-n {
			label = "WAKE#";
			linux,code = <KEY_WAKEUP>;
			gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_LOW>;
			wakeup-source;
		};

		switch-lid-btn-n {
			label = "LID_BTN#";
			linux,code = <SW_LID>;
			linux,input-type = <EV_SW>;
			gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
		};
	};

	i2s3-sound {
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,name = "Haikou,I2S-codec";
		simple-audio-card,mclk-fs = <512>;
		simple-audio-card,frame-master = <&sgtl5000_codec>;
		simple-audio-card,bitclock-master = <&sgtl5000_codec>;

		sgtl5000_codec: simple-audio-card,codec {
			sound-dai = <&sgtl5000>;
		};

		simple-audio-card,cpu {
			sound-dai = <&i2s3_2ch>;
		};
	};

	sgtl5000_clk: sgtl5000-oscillator  {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <24576000>;
	};

	vcc3v3_baseboard: vcc3v3-baseboard-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3_baseboard";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&dc_12v>;
	};

	vcc3v3_low_noise: vcc3v3-low-noise-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3_low_noise";
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		vin-supply = <&vcc5v0_usb>;
	};

	vcc5v0_baseboard: vcc5v0-baseboard-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_baseboard";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		vin-supply = <&dc_12v>;
	};

	vcc5v0_otg: vcc5v0-otg-regulator {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio1 RK_PB5 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&otg_vbus_drv>;
		regulator-name = "vcc5v0_otg";
		regulator-always-on;
	};

	vcc5v0_usb: vcc5v0-usb-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_usb";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		vin-supply = <&dc_12v>;
	};

	vddd_audio_1v6: vddd-audio-1v6-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vddd_audio_1v6";
		regulator-boot-on;
		regulator-min-microvolt = <1600000>;
		regulator-max-microvolt = <1600000>;
		vin-supply = <&vcc5v0_usb>;
	};
};

&combphy2_psu {
	status = "okay";
};

&extcon_usb3 {
	status = "okay";
};

&gmac0 {
	status = "okay";
};

&i2c1 {
	status = "okay";

	eeprom@50 {
		reg = <0x50>;
		compatible = "atmel,24c01";
		pagesize = <8>;
		size = <128>;
		vcc-supply = <&vcc3v3_baseboard>;
	};
};

&i2c5 {
	clock-frequency = <400000>;
	status = "okay";

	sgtl5000: codec@a {
		compatible = "fsl,sgtl5000";
		reg = <0x0a>;
		clocks = <&sgtl5000_clk>;
		#sound-dai-cells = <0>;
		VDDA-supply = <&vcc3v3_low_noise>;
		VDDIO-supply = <&vcc3v3_baseboard>;
		VDDD-supply = <&vddd_audio_1v6>;
	};
};

&i2c8 {
	status = "okay";
};

&i2s3_2ch {
	status = "okay";
};

&pcie30phy {
	status = "okay";
};

&pcie3x4 {
	vpcie3v3-supply = <&vcc3v3_baseboard>;
	status = "okay";
};

&pinctrl {
	haikou {
		haikou_keys_pin: haikou-keys-pin {
			rockchip,pins =
				/* BATLOW# */
				<3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>,
				/* SLP_BTN# */
				<4 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>,
				/* WAKE# */
				<3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>,
				/* LID_BTN */
				<3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	usb2 {
		otg_vbus_drv: otg-vbus-drv {
			rockchip,pins =
			  <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

&sdmmc {
	/* while the same pin, sdmmc_det does not detect card changes */
	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
	disable-wp;
	pinctrl-0 = <&sdmmc_bus4 &sdmmc_cmd &sdmmc_clk>;
	sd-uhs-sdr12;
	sd-uhs-sdr25;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	vmmc-supply = <&vcc3v3_baseboard>;
	status = "okay";
};

&u2phy0 {
	status = "okay";
};

&u2phy0_otg {
	phy-supply = <&vcc5v0_otg>;
	status = "okay";
};

&u2phy1 {
	status = "okay";
};

&u2phy1_otg {
	status = "okay";
};

&u2phy2 {
	status = "okay";
};

&u2phy2_host {
	status = "okay";
};

&u2phy3 {
	status = "okay";
};

&u2phy3_host {
	status = "okay";
};

&uart2 {
	status = "okay";
};

&uart5 {
	rts-gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>;
};

&usbdp_phy0 {
	status = "okay";
};

&usbdp_phy1 {
	status = "okay";
};

/* host0 on Q7_USB_P2, upper usb3 port */
&usb_host0_ehci {
	status = "okay";
};

/* host0 on Q7_USB_P2, upper usb3 port */
&usb_host0_ohci {
	status = "okay";
};

/* host0_xhci on Q7_USB_P1, usb3-otg port */
&usb_host0_xhci {
	dr_mode = "otg";
	extcon = <&extcon_usb3>;
	status = "okay";
};

/* host1 on Q7_USB_P3, usb2 port */
&usb_host1_ehci {
	status = "okay";
};

/* host1 on Q7_USB_P3, usb2 port */
&usb_host1_ohci {
	status = "okay";
};

/* host1_xhci on Q7_USB_P0, lower usb3 port */
&usb_host1_xhci {
	dr_mode = "host";
	status = "okay";
};

/* host2 on Q7_USB_P2, upper usb3 port */
&usb_host2_xhci {
	status = "okay";
};
