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

/dts-v1/;
#include "px30.dtsi"
#include <dt-bindings/leds/common.h>

/ {
	aliases {
		mmc0 = &emmc;
		mmc1 = &sdio;
		rtc0 = &rtc_twi;
		rtc1 = &rk809;
	};

	emmc_pwrseq: emmc-pwrseq {
		compatible = "mmc-pwrseq-emmc";
		pinctrl-0 = <&emmc_reset>;
		pinctrl-names = "default";
		reset-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
	};

	leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&module_led_pin>;
		status = "okay";

		module_led: led-0 {
			gpios = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>;
			function = LED_FUNCTION_HEARTBEAT;
			linux,default-trigger = "heartbeat";
			color = <LED_COLOR_ID_AMBER>;
		};
	};

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

&cpu0 {
	cpu-supply = <&vdd_arm>;
};

&cpu1 {
	cpu-supply = <&vdd_arm>;
};

&cpu2 {
	cpu-supply = <&vdd_arm>;
};

&cpu3 {
	cpu-supply = <&vdd_arm>;
};

&emmc {
	bus-width = <8>;
	cap-mmc-highspeed;
	mmc-hs200-1_8v;
	mmc-pwrseq = <&emmc_pwrseq>;
	non-removable;
	vmmc-supply = <&vcc_3v3>;
	vqmmc-supply = <&vcc_emmc>;

	status = "okay";
};

/* On-module TI DP83825I PHY but no connector, enable in carrierboard */
&gmac {
	snps,reset-gpio = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
	snps,reset-active-low;
	snps,reset-delays-us = <0 50000 50000>;
	phy-supply = <&vcc_3v3>;
	clock_in_out = "output";
};

&gpio2 {
	/*
	 * The Qseven BIOS_DISABLE signal on the PX30-µQ7 keeps the on-module
	 * eMMC powered-down initially (in fact it keeps the reset signal
	 * asserted). BIOS_DISABLE_OVERRIDE pin allows to re-enable eMMC after
	 * the SPL has been booted from SD Card.
	 */
	bios-disable-override-hog {
		gpios = <RK_PB5 GPIO_ACTIVE_LOW>;
		output-high;
		line-name = "bios_disable_override";
		gpio-hog;
	};

	/*
	 * The BIOS_DISABLE hog is a feedback pin for the actual status of the
	 * signal, ignoring the BIOS_DISABLE_OVERRIDE logic. This usually
	 * represents the state of a switch on the baseboard.
	 */
	bios-disable-n-hog {
		gpios = <RK_PC2 GPIO_ACTIVE_LOW>;
		line-name = "bios_disable";
		input;
		gpio-hog;
	};
};

&gpu {
	status = "okay";
};

&i2c0 {
	status = "okay";

	rk809: pmic@20 {
		compatible = "rockchip,rk809";
		reg = <0x20>;
		interrupt-parent = <&gpio0>;
		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-0 = <&pmic_int>;
		pinctrl-names = "default";
		#clock-cells = <0>;
		clock-output-names = "xin32k";
		rockchip,system-power-controller;
		wakeup-source;

		vcc1-supply = <&vcc5v0_sys>;
		vcc2-supply = <&vcc5v0_sys>;
		vcc3-supply = <&vcc5v0_sys>;
		vcc4-supply = <&vcc5v0_sys>;
		vcc5-supply = <&vcc_3v3>;
		vcc6-supply = <&vcc_3v3>;
		vcc7-supply = <&vcc_3v3>;
		vcc9-supply = <&vcc5v0_sys>;

		regulators {
			vdd_log: DCDC_REG1 {
				regulator-name = "vdd_log";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <6001>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <950000>;
				};
			};

			vdd_arm: DCDC_REG2 {
				regulator-name = "vdd_arm";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-ramp-delay = <6001>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-suspend-microvolt = <950000>;
				};
			};

			vcc_ddr: DCDC_REG3 {
				regulator-name = "vcc_ddr";
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			vcc_3v0_1v8: vcc_emmc: DCDC_REG4 {
				regulator-name = "vcc_3v0_1v8";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3000000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3000000>;
				};
			};

			vcc_3v3: DCDC_REG5 {
				regulator-name = "vcc_3v3";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vcc_1v8: LDO_REG2 {
				regulator-name = "vcc_1v8";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vcc_1v0: LDO_REG3 {
				regulator-name = "vcc_1v0";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};

			vccio_sd: LDO_REG5 {
				regulator-name = "vccio_sd";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <3300000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vcc_lcd: LDO_REG7 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-name = "vcc_lcd";

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};

			vcc_1v8_lcd: LDO_REG8 {
				regulator-name = "vcc_1v8_lcd";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vcca_1v8: LDO_REG9 {
				regulator-name = "vcca_1v8";
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-always-on;
				regulator-boot-on;

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};
		};
	};
};

&i2c1 {
	status = "okay";

	/* SE05x is limited to Fast Mode */
	clock-frequency = <400000>;

	fan: fan@18 {
		compatible = "ti,amc6821";
		reg = <0x18>;
		#cooling-cells = <2>;
	};

	rtc_twi: rtc@6f {
		compatible = "isil,isl1208";
		reg = <0x6f>;
	};
};

&i2c3 {
	status = "okay";
};

&i2s0_8ch {
	rockchip,trcm-sync-tx-only;

	pinctrl-0 = <&i2s0_8ch_sclktx &i2s0_8ch_lrcktx
		     &i2s0_8ch_sdo0 &i2s0_8ch_sdi0>;
};

&io_domains {
	vccio1-supply = <&vcc_3v3>;
	vccio2-supply = <&vccio_sd>;
	vccio3-supply = <&vcc_3v3>;
	vccio4-supply = <&vcc_3v3>;
	vccio5-supply = <&vcc_3v3>;
	vccio6-supply = <&vcc_emmc>;
	vccio-oscgpi-supply = <&vcc_3v3>;

	status = "okay";
};

&pinctrl {
	emmc {
		emmc_reset: emmc-reset {
			rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	leds {
		module_led_pin: module-led-pin {
			rockchip,pins = <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	pmic {
		pmic_int: pmic-int {
			rockchip,pins =
				<0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};
};

&pmu_io_domains {
	pmuio1-supply = <&vcc_3v3>;
	pmuio2-supply = <&vcc_3v3>;
	status = "okay";
};

&saradc {
	vref-supply = <&vcc_1v8>;
	status = "okay";
};

&sdmmc {
	vqmmc-supply = <&vccio_sd>;
};

&tsadc {
	status = "okay";
};

&u2phy {
	status = "okay";
};

&u2phy_host {
	status = "okay";
};

/* Mule UCAN */
&usb_host0_ehci {
	status = "okay";
};

&usb_host0_ohci {
	status = "okay";
};

&wdt {
	status = "okay";
};
