// SPDX-License-Identifier: GPL-2.0+
/*
 * (C) Copyright 2016 Rockchip Electronics Co., Ltd
 */

/dts-v1/;
#include <dt-bindings/pwm/pwm.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include "rk3399.dtsi"
#include "rk3399-sdram-lpddr3-4GB-1600.dtsi"

/ {
	model = "Rockchip RK3399 Evaluation Board";
	compatible = "rockchip,rk3399-evb", "rockchip,rk3399",
		     "google,rk3399evb-rev2";

	chosen {
		stdout-path = &uart2;
		u-boot,spl-boot-order = \
			&sdhci, &sdmmc;
	};

	vdd_center: vdd-center {
		compatible = "pwm-regulator";
		pwms = <&pwm3 0 25000 1>;
		regulator-name = "vdd_center";
		regulator-min-microvolt = <800000>;
		regulator-max-microvolt = <1400000>;
		regulator-init-microvolt = <950000>;
		regulator-always-on;
		regulator-boot-on;
		status = "okay";
	};

	vccsys: vccsys {
		compatible = "regulator-fixed";
		regulator-name = "vccsys";
		regulator-boot-on;
		regulator-always-on;
	};

	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>;
	};

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

	vcc5v0_host: vcc5v0-host-en {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_host";
		gpio = <&gpio4 25 GPIO_ACTIVE_HIGH>;
	};

	vcc5v0_typec0: vcc5v0-typec0-en {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_typec0";
		gpio = <&gpio1 3 GPIO_ACTIVE_HIGH>;
	};

	vcc5v0_typec1: vcc5v0-typec1-en {
		compatible = "regulator-fixed";
		regulator-name = "vcc5v0_typec1";
		gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>;
	};

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

	backlight: backlight {
		compatible = "pwm-backlight";
		power-supply = <&vccsys>;
		enable-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
		brightness-levels = <
			  0   1   2   3   4   5   6   7
			  8   9  10  11  12  13  14  15
			 16  17  18  19  20  21  22  23
			 24  25  26  27  28  29  30  31
			 32  33  34  35  36  37  38  39
			 40  41  42  43  44  45  46  47
			 48  49  50  51  52  53  54  55
			 56  57  58  59  60  61  62  63
			 64  65  66  67  68  69  70  71
			 72  73  74  75  76  77  78  79
			 80  81  82  83  84  85  86  87
			 88  89  90  91  92  93  94  95
			 96  97  98  99 100 101 102 103
			104 105 106 107 108 109 110 111
			112 113 114 115 116 117 118 119
			120 121 122 123 124 125 126 127
			128 129 130 131 132 133 134 135
			136 137 138 139 140 141 142 143
			144 145 146 147 148 149 150 151
			152 153 154 155 156 157 158 159
			160 161 162 163 164 165 166 167
			168 169 170 171 172 173 174 175
			176 177 178 179 180 181 182 183
			184 185 186 187 188 189 190 191
			192 193 194 195 196 197 198 199
			200 201 202 203 204 205 206 207
			208 209 210 211 212 213 214 215
			216 217 218 219 220 221 222 223
			224 225 226 227 228 229 230 231
			232 233 234 235 236 237 238 239
			240 241 242 243 244 245 246 247
			248 249 250 251 252 253 254 255>;
		default-brightness-level = <200>;
		pwms = <&pwm0 0 25000 0>;
		pinctrl-names = "default";
		pinctrl-0 = <&pwm0_pin>;
		pwm-delay-us = <10000>;
		status = "disabled";
	};

	panel:panel {
		compatible = "simple-panel";
		power-supply = <&vcc33_lcd>;
		backlight = <&backlight>;
		/*enable-gpios = <&gpio4 18 GPIO_ACTIVE_HIGH>;*/
		status = "disabled";
	};
};

&emmc_phy {
	status = "okay";
};

&pwm0 {
	status = "okay";
};

&pwm2 {
	status = "okay";
};

&pwm3 {
	status = "okay";
};

&saradc {
	status = "okay";
};

&sdmmc {
	u-boot,dm-pre-reloc;
	bus-width = <4>;
	status = "okay";
};

&sdhci {
	bus-width = <8>;
	mmc-hs400-1_8v;
	mmc-hs400-enhanced-strobe;
	non-removable;
	status = "okay";
};

&uart2 {
	status = "okay";
};

&usb_host0_ehci {
	status = "okay";
};

&usb_host0_ohci {
	status = "okay";
};

&dwc3_typec0 {
	vbus-supply = <&vcc5v0_typec0>;
	status = "okay";
};

&usb_host1_ehci {
	status = "okay";
};

&usb_host1_ohci {
	status = "okay";
};

&dwc3_typec1 {
	vbus-supply = <&vcc5v0_typec1>;
	status = "okay";
};

&i2c0 {
	status = "okay";
	clock-frequency = <400000>;
	i2c-scl-falling-time-ns = <50>;
	i2c-scl-rising-time-ns = <100>;
	u-boot,dm-pre-reloc;

	rk808: pmic@1b {
		compatible = "rockchip,rk808";
		clock-output-names = "xin32k", "wifibt_32kin";
		interrupt-parent = <&gpio0>;
		interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pmic_int_l>;
		reg = <0x1b>;
		rockchip,system-power-controller;
		#clock-cells = <1>;
		u-boot,dm-pre-reloc;
		status = "okay";

		vcc12-supply = <&vcc3v3_sys>;

		regulators {
			vcc33_lcd: SWITCH_REG2 {
				regulator-always-on;
				regulator-boot-on;
				regulator-name = "vcc33_lcd";
			};
		};
	};
};

&mipi_dsi {
	status = "disabled";
	rockchip,panel = <&panel>;
	display-timings {
		timing0 {
		bits-per-pixel = <24>;
		clock-frequency = <160000000>;
		hfront-porch = <120>;
		hsync-len = <20>;
		hback-porch = <21>;
		hactive = <1200>;
		vfront-porch = <21>;
		vsync-len = <3>;
		vback-porch = <18>;
		vactive = <1920>;
		hsync-active = <0>;
		vsync-active = <0>;
		de-active = <1>;
		pixelclk-active = <0>;
		};
	};
};

&pinctrl {
	pmic {
		pmic_int_l: pmic-int-l {
			rockchip,pins =
				<1 21 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		pmic_dvs2: pmic-dvs2 {
			rockchip,pins =
				<1 18 RK_FUNC_GPIO &pcfg_pull_down>;
		};
	};
};

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