// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * FriendlyElec NanoPC-T4 board device tree source
 *
 * Copyright (c) 2018 FriendlyElec Computer Tech. Co., Ltd.
 * (http://www.friendlyarm.com)
 *
 * Copyright (c) 2018 Collabora Ltd.
 */

/dts-v1/;
#include "rk3399-nanopi4.dtsi"

/ {
	model = "FriendlyElec NanoPC-T4";
	compatible = "friendlyarm,nanopc-t4", "rockchip,rk3399";

	vcc12v0_sys: vcc12v0-sys {
		compatible = "regulator-fixed";
		regulator-always-on;
		regulator-boot-on;
		regulator-max-microvolt = <12000000>;
		regulator-min-microvolt = <12000000>;
		regulator-name = "vcc12v0_sys";
	};

	vcc5v0_host0: vcc5v0-host0 {
		compatible = "regulator-fixed";
		regulator-always-on;
		regulator-boot-on;
		regulator-name = "vcc5v0_host0";
		vin-supply = <&vcc5v0_sys>;
	};

	adc-keys {
		compatible = "adc-keys";
		io-channels = <&saradc 1>;
		io-channel-names = "buttons";
		keyup-threshold-microvolt = <1800000>;
		poll-interval = <100>;

		button-recovery {
			label = "Recovery";
			linux,code = <KEY_VENDOR>;
			press-threshold-microvolt = <18000>;
		};
	};

	ir-receiver {
		compatible = "gpio-ir-receiver";
		gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&ir_rx>;
	};

	fan: pwm-fan {
		compatible = "pwm-fan";
		/*
		 * With 20KHz PWM and an EVERCOOL EC4007H12SA fan, these levels
		 * work out to 0, ~1200, ~3000, and 5000RPM respectively.
		 */
		cooling-levels = <0 12 18 255>;
		#cooling-cells = <2>;
		fan-supply = <&vcc12v0_sys>;
		pwms = <&pwm1 0 50000 0>;
	};
};

&cpu_thermal {
	trips {
		cpu_warm: cpu_warm {
			temperature = <55000>;
			hysteresis = <2000>;
			type = "active";
		};

		cpu_hot: cpu_hot {
			temperature = <65000>;
			hysteresis = <2000>;
			type = "active";
		};
	};

	cooling-maps {
		map2 {
			trip = <&cpu_warm>;
			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
		};

		map3 {
			trip = <&cpu_hot>;
			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
		};
	};
};

&pcie0 {
	ep-gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_HIGH>;
	num-lanes = <4>;
	vpcie3v3-supply = <&vcc3v3_sys>;
};

&pinctrl {
	ir {
		ir_rx: ir-rx {
			/* external pullup to VCC3V3_SYS, despite being 1.8V :/ */
			rockchip,pins = <0 RK_PA6 1 &pcfg_pull_none>;
		};
	};
};

&sdhci {
	mmc-hs400-1_8v;
	mmc-hs400-enhanced-strobe;
};

&u2phy0_host {
	phy-supply = <&vcc5v0_host0>;
};

&u2phy1_host {
	phy-supply = <&vcc5v0_host0>;
};

&vcc5v0_sys {
	vin-supply = <&vcc12v0_sys>;
};

&vcc3v3_sys {
	vin-supply = <&vcc12v0_sys>;
};

&vbus_typec {
	enable-active-high;
	gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
	vin-supply = <&vcc5v0_sys>;
};