// SPDX-License-Identifier: GPL-2.0+ OR X11
/*
 * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH
 */

#include <dt-bindings/pwm/pwm.h>
#include "rk3399.dtsi"

/ {
	model = "Theobroma Systems RK3399-Q7 SoM";
	compatible = "tsd,rk3399-q7", "tsd,puma", "rockchip,rk3399";

	config {
		u-boot,spl-payload-offset = <0x40000>; /* @ 256KB */
		u-boot,mmc-env-offset = <0x4000>;      /* @  16KB */
		u-boot,efi-partition-entries-offset = <0x200000>; /* 2MB */
		u-boot,boot-led = "module_led";
		sysreset-gpio = <&gpio1 RK_PA6 GPIO_ACTIVE_HIGH>;
	};

	chosen {
		stdout-path = "serial0:115200n8";
		u-boot,spl-boot-order = \
			"same-as-spl", &spiflash, &sdhci, &sdmmc;
	};

	aliases {
		spi0 = &spi1;
		spi1 = &spi5;
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&leds_pins_puma>;

		module_led {
			label = "module_led";
			gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};

		sd_card_led {
			label = "sd_card_led";
			gpios = <&gpio1 RK_PA2 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "mmc0";
		};
	};

	clkin_gmac: external-gmac-clock {
		compatible = "fixed-clock";
		clock-frequency = <125000000>;
		clock-output-names = "clkin_gmac";
		#clock-cells = <0>;
	};

	dw_hdmi_audio: dw-hdmi-audio {
		status = "enabled";
		compatible = "rockchip,dw-hdmi-audio";
		#sound-dai-cells = <0>;
	};

	hdmi_codec: hdmi-codec {
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,mclk-fs = <256>;
		simple-audio-card,name = "HDMI-CODEC";

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

		simple-audio-card,codec {
			sound-dai = <&hdmi>;
		};
	};

	hdmi_sound: hdmi-sound {
		status = "disabled";
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,mclk-fs = <256>;
		simple-audio-card,name = "rockchip,hdmi";

		simple-audio-card,cpu {
			sound-dai = <&i2s2>;
		};
		simple-audio-card,codec {
			sound-dai = <&hdmi>;
		};
	};

	usbhub_enable: usbhub_enable {
		compatible = "regulator-fixed";
		regulator-name = "usbhub_enable";
		enable-active-low;
		gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	/*
	 * The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module
	 * eMMC and SPI flash powered-down initially (in fact it keeps the
	 * reset signal asserted).  Even though it is an enable signal, we
	 * model this as a regulator.
	 */
	bios_enable: bios_enable {
		compatible = "regulator-fixed";
		u-boot,dm-pre-reloc;
		regulator-name = "bios_enable";
		enable-active-high;
		gpio = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	vccadc_ref: vccadc-ref {
		compatible = "regulator-fixed";
		regulator-name = "vcc1v8_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
	};

	vcc3v3_sys: vcc3v3-sys {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v3_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

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

	vcc5v0_host: vcc5v0-host-regulator {
		compatible = "regulator-fixed";
		enable-active-low;
		gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&host_vbus_drv>;
		regulator-name = "vcc5v0_host";
		regulator-always-on;
	};

	vcc5v0_sys: vcc5v0-sys {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
	};

	vcc_phy: vcc-phy-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc_phy";
		regulator-always-on;
		regulator-boot-on;
	};

	vdd_log: vdd-log {
		compatible = "pwm-regulator";
		pwms = <&pwm2 0 25000 1>;
		regulator-name = "vdd_log";
		regulator-min-microvolt = <800000>;
		regulator-max-microvolt = <1400000>;
		regulator-always-on;
		regulator-boot-on;

		/* for rockchip boot on */
		rockchip,pwm_id= <2>;
		rockchip,pwm_voltage = <1000000>;
	};
};

&emmc_phy {
	status = "okay";
};

&gmac {
	phy-supply = <&vcc_phy>;
	phy-mode = "rgmii";
	clock_in_out = "input";
	snps,reset-gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>;
	snps,reset-active-low;
	snps,reset-delays-us = <2 10000 50000>;
	assigned-clocks = <&cru SCLK_RMII_SRC>;
	assigned-clock-parents = <&clkin_gmac>;
	pinctrl-names = "default";
	pinctrl-0 = <&rgmii_pins>;
	tx_delay = <0x10>;
	rx_delay = <0x10>;
	status = "okay";
};

&hdmi {
	#sound-dai-cells = <0>;
	status = "okay";
};

&i2c0 {
	status = "okay";
	i2c-scl-rising-time-ns = <168>;
	i2c-scl-falling-time-ns = <4>;
	clock-frequency = <400000>;

	vdd_gpu: fan535555@60 {
		compatible = "fcs,fan53555";
		reg = <0x60>;
		vsel-gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_HIGH>;
		vin-supply = <&vcc5v0_sys>;
		regulator-compatible = "fan53555-reg";
		regulator-name = "vdd_gpu";
		regulator-min-microvolt = <600000>;
		regulator-max-microvolt = <1230000>;
		regulator-ramp-delay = <1000>;
		fcs,suspend-voltage-selector = <1>;
		regulator-always-on;
		regulator-boot-on;
		regulator-initial-state = <3>;
			regulator-state-mem {
			regulator-off-in-suspend;
		};
	};

	rk808: pmic@1b {
		compatible = "rockchip,rk808";
		reg = <0x1b>;
		interrupt-parent = <&gpio1>;
		interrupts = <22 IRQ_TYPE_LEVEL_LOW>;  // TODO check interrupt?
		pinctrl-names = "default";
		pinctrl-0 = <&pmic_int_l>;
		rockchip,system-power-controller;
		wakeup-source;
		#clock-cells = <1>;
		clock-output-names = "xin32k", "rk808-clkout2";

		vcc1-supply = <&vcc5v0_sys>;
		vcc2-supply = <&vcc5v0_sys>;
		vcc3-supply = <&vcc5v0_sys>;
		vcc4-supply = <&vcc5v0_sys>;
		vcc6-supply = <&vcc5v0_sys>;
		vcc7-supply = <&vcc5v0_sys>;
		vcc8-supply = <&vcc3v3_sys>;
		vcc9-supply = <&vcc5v0_sys>;
		vcc10-supply = <&vcc5v0_sys>;
		vcc11-supply = <&vcc5v0_sys>;
		vcc12-supply = <&vcc3v3_sys>;
		vddio-supply = <&vcc1v8_pmu>;

		regulators {
			vdd_center: DCDC_REG1 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <6001>;
				regulator-name = "vdd_center";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vdd_cpu_l: DCDC_REG2 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <750000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <6001>;
				regulator-name = "vdd_cpu_l";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc_ddr: DCDC_REG3 {
				regulator-always-on;
				regulator-boot-on;
				regulator-name = "vcc_ddr";
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			vcc_1v8: DCDC_REG4 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc_1v8";
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vcc_ldo1: LDO_REG1 {
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc_ldo1";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc1v8_hdmi: LDO_REG2 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc1v8_hdmi";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc1v8_pmu: LDO_REG3 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc1v8_pmu";
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vcc_sd: LDO_REG4 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3000000>;
				regulator-name = "vcc_sd";
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3000000>;
				};
			};

			vcc_ldo5: LDO_REG5 {
				regulator-boot-on;
				regulator-min-microvolt = <3000000>;
				regulator-max-microvolt = <3000000>;
				regulator-name = "vcc_ldo5";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc_ldo6: LDO_REG6 {
				regulator-boot-on;
				regulator-min-microvolt = <1500000>;
				regulator-max-microvolt = <1500000>;
				regulator-name = "vcc_ldo6";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc0v9_hdmi: LDO_REG7 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <900000>;
				regulator-max-microvolt = <900000>;
				regulator-name = "vcc0v9_hdmi";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc_efuse: LDO_REG8 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "vcc_efuse";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc3v3_s3: SWITCH_REG1 {
				regulator-always-on;
				regulator-boot-on;
				regulator-name = "vcc3v3_s3";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			vcc3v3_s0: SWITCH_REG2 {
				regulator-always-on;
				regulator-boot-on;
				regulator-name = "vcc3v3_s0";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};
		};
	};
};

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

	vdd_cpu_b: fan53555@60 {
		compatible = "fcs,fan53555";
		reg = <0x60>;
		vsel-gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
		vin-supply = <&vcc5v0_sys>;
		regulator-compatible = "fan53555-reg";
		regulator-name = "vdd_cpu_b";
		regulator-min-microvolt = <600000>;
		regulator-max-microvolt = <1230000>;
		regulator-ramp-delay = <1000>;
		fcs,suspend-voltage-selector = <1>;
		regulator-always-on;
		regulator-boot-on;
		regulator-initial-state = <3>;
			regulator-state-mem {
			regulator-off-in-suspend;
		};
	};
};

&i2s0 {
	status = "okay";
	rockchip,i2s-broken-burst-len;
	rockchip,playback-channels = <8>;
	rockchip,capture-channels = <8>;
	#sound-dai-cells = <0>;
};

&i2s2 {
	#sound-dai-cells = <0>;
	status = "okay";
};

&io_domains {
	status = "okay";

	bt656-supply = <&vcc_1v8>;	/* bt656_gpio2ab_ms */
	audio-supply = <&vcc_1v8>;	/* audio_gpio3d4a_ms */
	sdmmc-supply = <&vcc_sd>;	/* sdmmc_gpio4b_ms */
	gpio1830-supply = <&vcc_1v8>;	/* gpio1833_gpio4cd_ms */
};

&pcie0 {
	assigned-clocks = <&cru SCLK_PCIEPHY_REF>;
	assigned-clock-parents = <&cru SCLK_PCIEPHY_REF100M>;
	assigned-clock-rates = <100000000>;
	ep-gpios = <&gpio4 RK_PC6 GPIO_ACTIVE_HIGH>;
	num-lanes = <4>;
	pinctrl-names = "default";
	pinctrl-0 = <&pcie_clkreqn>;
	status = "okay";
};

&pcie_phy {
		status = "okay";
};

&pmu_io_domains {
	status = "okay";
	pmu1830-supply = <&vcc_1v8>;
};

&pwm0 {
	status = "okay";
};

&pwm2 {
	status = "okay";
};

&sdhci {
	bus-width = <8>;
	mmc-hs400-1_8v;
	supports-emmc;
	non-removable;
	keep-power-in-suspend;
	mmc-hs400-enhanced-strobe;
	status = "okay";
};

&sdmmc {
	u-boot,dm-pre-reloc;
	clock-frequency = <150000000>;
	max-frequency = <40000000>;
	supports-sd;
	bus-width = <4>;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	disable-wp;
	num-slots = <1>;
	vqmmc-supply = <&vcc_sd>;
	pinctrl-names = "default";
	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
	status = "okay";
};

&uart2 {
	status = "okay";
};

&usb_host0_ehci {
	status = "disabled";
};

&usb_host0_ohci {
	status = "disabled";
};

&dwc3_typec0 {
	status = "okay";
};

&usb_host1_ehci {
	status = "disabled";
};

&usb_host1_ohci {
	status = "disabled";
};

&dwc3_typec1 {
	status = "okay";
	tsd,usb-port-power = "usbhub_enable";
};

&vopb {
	status = "okay";
};

&gpio1 {
	u-boot,dm-pre-reloc;
};

&gpio3 {
	u-boot,dm-pre-reloc;
};

&pinctrl {
	/* Pins that are not explicitely used by any devices */
	pinctrl-names = "default";
	pinctrl-0 = <&puma_pin_hog>;

	hog {
		puma_pin_hog: puma_pin_hog {
			rockchip,pins =
				/* We need pull-ups on Q7 buttons */
				<RK_GPIO0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>, /* LID_BTN# */
				<RK_GPIO0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>, /* BATLOW# */
				<RK_GPIO0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>, /* SLP_BTN# */
				<RK_GPIO0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>; /* BIOS_DISABLE# */
		};
	};

	pmic {
		pmic_int_l: pmic-int-l {
			rockchip,pins =
				<RK_GPIO1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	leds_pins_puma: led_pins@0 {
			rockchip,pins =
				<RK_GPIO2 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>,
				<RK_GPIO1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
	};

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

		host_vbus_drv: host-vbus-drv {
			rockchip,pins =
				<RK_GPIO4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	i2c8 {
		i2c8_xfer_a: i2c8-xfer {
			rockchip,pins =
				<RK_GPIO1 RK_PC5 RK_FUNC_1 &pcfg_pull_up>,
				<RK_GPIO1 RK_PC4 RK_FUNC_1 &pcfg_pull_up>;
		};
	};
};

&i2c1 {
	status = "okay";
	clock-frequency = <400000>;
};
&i2c2 {
	status = "okay";
	clock-frequency = <400000>;
};
&i2c4 {
	status = "okay";
	clock-frequency = <400000>;
};
&i2c6 {
	status = "okay";
	clock-frequency = <400000>;
};

&i2c6_xfer {
	/* Enable pull-ups, the pins would float otherwise. */
	rockchip,pins =
		<RK_GPIO2 RK_PB2 RK_FUNC_2 &pcfg_pull_up>,
		<RK_GPIO2 RK_PB1 RK_FUNC_2 &pcfg_pull_up>;
};

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

	rtc_twi: rtc@6f {
		compatible = "isil,isl1208";
		reg = <0x6f>;
	};
	fan: fan@18 {
		compatible = "ti,amc6821";
		reg = <0x18>;
		cooling-min-state = <0>;
		cooling-max-state = <9>;
		#cooling-cells = <2>;
	};
};

&uart0 {
	u-boot,dm-pre-reloc;
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_xfer &uart0_cts>;
	status = "okay";
};


&spi1 {
	u-boot,dm-pre-reloc;

	status = "okay";

	#address-cells = <1>;
	#size-cells = <0>;

	spiflash: w25q32dw@0 {
		u-boot,dm-pre-reloc;

		compatible = "spi-flash";
		reg = <0>;
		spi-max-frequency = <49500000>;
		spi-cpol;
		spi-cpha;
	};
};

&spi5 {
	status = "okay";
};
