1e7a09590STomeu Vizoso// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2e7a09590STomeu Vizoso/*
3e7a09590STomeu Vizoso * FriendlyElec NanoPC-T4 board device tree source
4e7a09590STomeu Vizoso *
5e7a09590STomeu Vizoso * Copyright (c) 2018 FriendlyElec Computer Tech. Co., Ltd.
6e7a09590STomeu Vizoso * (http://www.friendlyarm.com)
7e7a09590STomeu Vizoso *
8e7a09590STomeu Vizoso * Copyright (c) 2018 Collabora Ltd.
9e7a09590STomeu Vizoso */
10e7a09590STomeu Vizoso
11e7a09590STomeu Vizoso/dts-v1/;
12e7a09590STomeu Vizoso#include "rk3399-nanopi4.dtsi"
13e7a09590STomeu Vizoso
14e7a09590STomeu Vizoso/ {
15e7a09590STomeu Vizoso	model = "FriendlyElec NanoPC-T4";
16e7a09590STomeu Vizoso	compatible = "friendlyarm,nanopc-t4", "rockchip,rk3399";
17c62ffaf5SRobin Murphy
18c62ffaf5SRobin Murphy	vcc12v0_sys: vcc12v0-sys {
19c62ffaf5SRobin Murphy		compatible = "regulator-fixed";
20c62ffaf5SRobin Murphy		regulator-always-on;
21c62ffaf5SRobin Murphy		regulator-boot-on;
22c62ffaf5SRobin Murphy		regulator-max-microvolt = <12000000>;
23c62ffaf5SRobin Murphy		regulator-min-microvolt = <12000000>;
24c62ffaf5SRobin Murphy		regulator-name = "vcc12v0_sys";
25c62ffaf5SRobin Murphy	};
26c62ffaf5SRobin Murphy
27c62ffaf5SRobin Murphy	vcc5v0_host0: vcc5v0-host0 {
28c62ffaf5SRobin Murphy		compatible = "regulator-fixed";
29c62ffaf5SRobin Murphy		regulator-always-on;
30c62ffaf5SRobin Murphy		regulator-boot-on;
31c62ffaf5SRobin Murphy		regulator-name = "vcc5v0_host0";
32c62ffaf5SRobin Murphy		vin-supply = <&vcc5v0_sys>;
33c62ffaf5SRobin Murphy	};
34c62ffaf5SRobin Murphy
35c62ffaf5SRobin Murphy	adc-keys {
36c62ffaf5SRobin Murphy		compatible = "adc-keys";
37c62ffaf5SRobin Murphy		io-channels = <&saradc 1>;
38c62ffaf5SRobin Murphy		io-channel-names = "buttons";
39c62ffaf5SRobin Murphy		keyup-threshold-microvolt = <1800000>;
40c62ffaf5SRobin Murphy		poll-interval = <100>;
41c62ffaf5SRobin Murphy
42*f2bd2e76SJohan Jonker		button-recovery {
43c62ffaf5SRobin Murphy			label = "Recovery";
44c62ffaf5SRobin Murphy			linux,code = <KEY_VENDOR>;
45c62ffaf5SRobin Murphy			press-threshold-microvolt = <18000>;
46c62ffaf5SRobin Murphy		};
47c62ffaf5SRobin Murphy	};
4895658e21SRobin Murphy
4995658e21SRobin Murphy	ir-receiver {
5095658e21SRobin Murphy		compatible = "gpio-ir-receiver";
5195658e21SRobin Murphy		gpios = <&gpio0 RK_PA6 GPIO_ACTIVE_LOW>;
5295658e21SRobin Murphy		pinctrl-names = "default";
5395658e21SRobin Murphy		pinctrl-0 = <&ir_rx>;
5495658e21SRobin Murphy	};
55980b5216SRobin Murphy
56980b5216SRobin Murphy	fan: pwm-fan {
57980b5216SRobin Murphy		compatible = "pwm-fan";
58980b5216SRobin Murphy		/*
59980b5216SRobin Murphy		 * With 20KHz PWM and an EVERCOOL EC4007H12SA fan, these levels
60980b5216SRobin Murphy		 * work out to 0, ~1200, ~3000, and 5000RPM respectively.
61980b5216SRobin Murphy		 */
62980b5216SRobin Murphy		cooling-levels = <0 12 18 255>;
63980b5216SRobin Murphy		#cooling-cells = <2>;
64980b5216SRobin Murphy		fan-supply = <&vcc12v0_sys>;
65980b5216SRobin Murphy		pwms = <&pwm1 0 50000 0>;
66980b5216SRobin Murphy	};
67980b5216SRobin Murphy};
68980b5216SRobin Murphy
69980b5216SRobin Murphy&cpu_thermal {
70980b5216SRobin Murphy	trips {
71980b5216SRobin Murphy		cpu_warm: cpu_warm {
72980b5216SRobin Murphy			temperature = <55000>;
73980b5216SRobin Murphy			hysteresis = <2000>;
74980b5216SRobin Murphy			type = "active";
75980b5216SRobin Murphy		};
76980b5216SRobin Murphy
77980b5216SRobin Murphy		cpu_hot: cpu_hot {
78980b5216SRobin Murphy			temperature = <65000>;
79980b5216SRobin Murphy			hysteresis = <2000>;
80980b5216SRobin Murphy			type = "active";
81980b5216SRobin Murphy		};
82980b5216SRobin Murphy	};
83980b5216SRobin Murphy
84980b5216SRobin Murphy	cooling-maps {
85980b5216SRobin Murphy		map2 {
86980b5216SRobin Murphy			trip = <&cpu_warm>;
87980b5216SRobin Murphy			cooling-device = <&fan THERMAL_NO_LIMIT 1>;
88980b5216SRobin Murphy		};
89980b5216SRobin Murphy
90980b5216SRobin Murphy		map3 {
91980b5216SRobin Murphy			trip = <&cpu_hot>;
92980b5216SRobin Murphy			cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
93980b5216SRobin Murphy		};
94980b5216SRobin Murphy	};
95980b5216SRobin Murphy};
96980b5216SRobin Murphy
97876816b2SRobin Murphy&pcie0 {
983503376dSChen-Yu Tsai	ep-gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_HIGH>;
99876816b2SRobin Murphy	num-lanes = <4>;
100876816b2SRobin Murphy	vpcie3v3-supply = <&vcc3v3_sys>;
101876816b2SRobin Murphy};
102876816b2SRobin Murphy
10395658e21SRobin Murphy&pinctrl {
10495658e21SRobin Murphy	ir {
10595658e21SRobin Murphy		ir_rx: ir-rx {
10695658e21SRobin Murphy			/* external pullup to VCC3V3_SYS, despite being 1.8V :/ */
107d64420e8SHeiko Stuebner			rockchip,pins = <0 RK_PA6 1 &pcfg_pull_none>;
10895658e21SRobin Murphy		};
10995658e21SRobin Murphy	};
110c62ffaf5SRobin Murphy};
111c62ffaf5SRobin Murphy
112c62ffaf5SRobin Murphy&sdhci {
113c62ffaf5SRobin Murphy	mmc-hs400-1_8v;
114c62ffaf5SRobin Murphy	mmc-hs400-enhanced-strobe;
115c62ffaf5SRobin Murphy};
116c62ffaf5SRobin Murphy
117c62ffaf5SRobin Murphy&u2phy0_host {
118c62ffaf5SRobin Murphy	phy-supply = <&vcc5v0_host0>;
119c62ffaf5SRobin Murphy};
120c62ffaf5SRobin Murphy
121c62ffaf5SRobin Murphy&u2phy1_host {
122c62ffaf5SRobin Murphy	phy-supply = <&vcc5v0_host0>;
123c62ffaf5SRobin Murphy};
124c62ffaf5SRobin Murphy
125c62ffaf5SRobin Murphy&vcc5v0_sys {
126c62ffaf5SRobin Murphy	vin-supply = <&vcc12v0_sys>;
127c62ffaf5SRobin Murphy};
128c62ffaf5SRobin Murphy
129c62ffaf5SRobin Murphy&vcc3v3_sys {
130c62ffaf5SRobin Murphy	vin-supply = <&vcc12v0_sys>;
131c62ffaf5SRobin Murphy};
132c62ffaf5SRobin Murphy
133c62ffaf5SRobin Murphy&vbus_typec {
134c62ffaf5SRobin Murphy	enable-active-high;
135c62ffaf5SRobin Murphy	gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
136c62ffaf5SRobin Murphy	vin-supply = <&vcc5v0_sys>;
137e7a09590STomeu Vizoso};
138