// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
 *
 */

/dts-v1/;
#include <dt-bindings/sensor-dev.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/display/mipi_dsi.h>
#include <dt-bindings/pwm/pwm.h>
#include "rk3399.dtsi"
#include "rk3399-android.dtsi"
#include "rk3399-opp.dtsi"
#include "rk3399-vop-clk-set.dtsi"

/ {
	compatible = "rockchip,rk3399-mid", "rockchip,rk3399";
	chosen: chosen {
		bootargs = "earlycon=uart8250,mmio32,0xff1a0000 console=ttyFIQ0 init=/init initrd=0x62000001,0x00800000 coherent_pool=1m";
	};

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

		vol-up-key {
			label = "volume up";
			linux,code = <KEY_VOLUMEUP>;
			press-threshold-microvolt = <1000>;
		};

		vol-down-key {
			label = "volume down";
			linux,code = <KEY_VOLUMEDOWN>;
			press-threshold-microvolt = <170000>;
		};
	};

	rk_headset: rk-headset {
		compatible = "rockchip_headset";
		headset_gpio = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&hp_det>;
		io-channels = <&saradc 2>;
	};

	charge-animation {
		compatible = "rockchip,uboot-charge";
		rockchip,uboot-charge-on = <1>;
		rockchip,android-charge-on = <0>;
		rockchip,uboot-low-power-voltage = <6700>;
		rockchip,screen-on-voltage = <6800>;
		status = "okay";
	};

	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		clocks = <&rk818 1>;
		clock-names = "ext_clock";
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_enable_h>;

		/*
		 * On the module itself this is one of these (depending
		 * on the actual card populated):
		 * - SDIO_RESET_L_WL_REG_ON
		 * - PDN (power down when low)
		 */
		reset-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; /* GPIO0_B2 */
	};

	hall_sensor: hall-mh248 {
		compatible = "hall-mh248";
		pinctrl-names = "default";
		pinctrl-0 = <&mh248_irq_gpio>;
		irq-gpio = <&gpio1 2 IRQ_TYPE_EDGE_BOTH>;
		hall-active = <1>;
		status = "okay";
	};

	vcc_sys: vcc-sys {
		compatible = "regulator-fixed";
		regulator-name = "vcc_sys";
		regulator-always-on;
		regulator-boot-on;
		regulator-min-microvolt = <3900000>;
		regulator-max-microvolt = <3900000>;
	};

	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_host: vcc5v0-host-regulator {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio4 25 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&host_vbus_drv>;
		regulator-name = "vcc5v0_host";
		regulator-always-on;
	};

	vdd_log: vdd-log {
		compatible = "pwm-regulator";
		pwms = <&pwm2 0 25000 1>;
		rockchip,pwm_id= <2>;
		rockchip,pwm_voltage = <900000>;
		regulator-name = "vdd_log";
		regulator-min-microvolt = <750000>;
		regulator-max-microvolt = <1350000>;
		regulator-always-on;
		regulator-boot-on;
	};

	xin32k: xin32k {
		compatible = "fixed-clock";
		clock-frequency = <32768>;
		clock-output-names = "xin32k";
		#clock-cells = <0>;
	};

	edp_panel: edp-panel {
		compatible = "lg,lp079qx1-sp0v", "panel-simple";
		bus-format = <MEDIA_BUS_FMT_RGB666_1X18>;
		bpc = <6>;
		backlight = <&backlight>;
		power-supply = <&vcc3v3_s0>;
		enable-gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
		ports {
			panel_in_edp: endpoint {
				remote-endpoint = <&edp_out_panel>;
			};
		};
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		pwms = <&pwm0 0 25000 0>;
		brightness-levels = <
			255 200 199 198 197 197 196 195 194 193 193 192
			191 190 189 189 188 187 186 185 185 184 183 182
			181 181 180 179 178 177 177 176 175 174 173 173
			172 171 170 169 169 168 167 166 165 165 164 163
			162 161 161 160 159 158 157 157 156 155 154 153
			153 152 151 150 149 149 148 147 146 145 145 144
			143 142 141 141 140 139 138 137 137 136 135 134
			133 133 132 131 130 129 129 128 127 126 125 125
			124 123 122 121 121 120 119 118 117 117 116 115
			114 113 113 112 111 110 109 109 108 107 106 105
			105 104 103 102 101 101 100  99  98  97  97  96
			 95  94  93  93  92  91  90  89  89  88  87  86
			 85  85  84  83  82  81  81  80  79  78  77  77
			 76  75  74  73  73  72  71  70  69  69  68  67
			 66  65  65  64  63  62  61  61  60  59  58  57
			 57  56  55  54  53  53  52  51  50  49  49  48
			 47  46  45  45  44  43  42  41  41  40  39  38
			 37  37  36  35  34  33  33  32  31  30  29  29
			 28  27  26  25  25  24  23  22  21  21  20  19
			 18  17  17  16  15  14  13  13  12  11  10   9
			  9   8   7   6   5   5   4   3   2   1   1   0
			  0   0   0   0>;
		default-brightness-level = <200>;
		enable-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
	};

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

	es8316-sound {
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,name = "rockchip,es8316-codec";
		simple-audio-card,mclk-fs = <256>;
		simple-audio-card,widgets =
			"Microphone", "Mic Jack",
			"Headphone", "Headphone Jack";
		simple-audio-card,routing =
			"Mic Jack", "MICBIAS1",
			"IN1P", "Mic Jack",
			"Headphone Jack", "HPOL",
			"Headphone Jack", "HPOR";
		simple-audio-card,cpu {
			sound-dai = <&i2s0>;
		};
		simple-audio-card,codec {
			sound-dai = <&es8316>;
		};
	};

	spdif-sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "rockchip,spdif";
		simple-audio-card,mclk-fs = <128>;
		simple-audio-card,cpu {
			sound-dai = <&spdif>;
		};
		simple-audio-card,codec {
			sound-dai = <&spdif_out>;
		};
	};

	spdif_out: spdif-out {
		compatible = "linux,spdif-dit";
		#sound-dai-cells = <0>;
	};

	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		clocks = <&rk818 1>;
		clock-names = "ext_clock";
		pinctrl-names = "default";
		pinctrl-0 = <&wifi_enable_h>;

		/*
		 * On the module itself this is one of these (depending
		 * on the actual card populated):
		 * - SDIO_RESET_L_WL_REG_ON
		 * - PDN (power down when low)
		 */
		reset-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>; /* GPIO0_B2 */
	};

	wireless-wlan {
		compatible = "wlan-platdata";
		rockchip,grf = <&grf>;
		wifi_chip_type = "ap6354";
		sdio_vref = <1800>;
		WIFI,host_wake_irq = <&gpio0 3 GPIO_ACTIVE_HIGH>; /* GPIO0_a3 */
		status = "okay";
	};

	wireless-bluetooth {
		compatible = "bluetooth-platdata";
		clocks = <&rk818 1>;
		clock-names = "ext_clock";
		//wifi-bt-power-toggle;
		uart_rts_gpios = <&gpio2 19 GPIO_ACTIVE_LOW>; /* GPIO2_C3 */
		pinctrl-names = "default", "rts_gpio";
		pinctrl-0 = <&uart0_rts>, <&bt_reset_gpio>, <&bt_wake_gpio>, <&bt_irq_gpio>;
		pinctrl-1 = <&uart0_gpios>;
		//BT,power_gpio  = <&gpio3 19 GPIO_ACTIVE_HIGH>; /* GPIOx_xx */
		BT,reset_gpio    = <&gpio0 9 GPIO_ACTIVE_HIGH>; /* GPIO0_B1 */
		BT,wake_gpio     = <&gpio2 26 GPIO_ACTIVE_HIGH>; /* GPIO2_D2 */
		BT,wake_host_irq = <&gpio0 4 GPIO_ACTIVE_HIGH>; /* GPIO0_A4 */
		status = "okay";
	};

	vibrator {
		compatible = "rk-vibrator-gpio";
		vibrator-gpio = <&gpio4 30 GPIO_ACTIVE_LOW>;
		status = "okay";
	};

};

&dfi {
	status = "okay";
};

&dmc {
	status = "okay";
	center-supply = <&vdd_center>;
	upthreshold = <40>;
	downdifferential = <20>;
	system-status-freq = <
		/*system status         freq(KHz)*/
		SYS_STATUS_NORMAL       800000
		SYS_STATUS_REBOOT       528000
		SYS_STATUS_SUSPEND      200000
		SYS_STATUS_VIDEO_1080P  200000
		SYS_STATUS_VIDEO_4K     600000
		SYS_STATUS_VIDEO_4K_10B 800000
		SYS_STATUS_PERFORMANCE  800000
		SYS_STATUS_BOOST        600000
		SYS_STATUS_DUALVIEW     600000
		SYS_STATUS_ISP          600000
	>;
	vop-bw-dmc-freq = <
	/* min_bw(MB/s) max_bw(MB/s) freq(KHz) */
		0       762      200000
		763     1893     400000
		1894    3012     528000
		3013    99999    800000
	>;

	auto-min-freq = <200000>;
};

&sdmmc {
	clock-frequency = <50000000>;
	clock-freq-min-max = <400000 150000000>;
	no-sdio;
	no-mmc;
	bus-width = <4>;
	cap-mmc-highspeed;
	cap-sd-highspeed;
	disable-wp;
	num-slots = <1>;
	//sd-uhs-sdr104;
	vqmmc-supply = <&vcc_sd>;
	pinctrl-names = "default";
	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
	status = "okay";
};

&sdio0 {
	clock-frequency = <150000000>;
	clock-freq-min-max = <200000 150000000>;
	no-sd;
	no-mmc;
	bus-width = <4>;
	disable-wp;
	cap-sd-highspeed;
	cap-sdio-irq;
	keep-power-in-suspend;
	mmc-pwrseq = <&sdio_pwrseq>;
	non-removable;
	num-slots = <1>;
	pinctrl-names = "default";
	pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
	sd-uhs-sdr104;
	status = "okay";
};

&emmc_phy {
	status = "okay";
};

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

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

&spdif {
	status = "disabled";
	#sound-dai-cells = <0>;
};

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

	vdd_cpu_b: syr837@40 {
		compatible = "silergy,syr827";
		reg = <0x40>;
		vin-supply = <&vcc_sys>;
		regulator-compatible = "fan53555-reg";
		pinctrl-0 = <&vsel1_gpio>;
		vsel-gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
		regulator-name = "vdd_cpu_b";
		regulator-min-microvolt = <712500>;
		regulator-max-microvolt = <1500000>;
		regulator-ramp-delay = <1000>;
		fcs,suspend-voltage-selector = <1>;
		regulator-always-on;
		regulator-initial-state = <3>;
		regulator-state-mem {
			regulator-off-in-suspend;
		};
	};

	vdd_gpu: syr828@41 {
		compatible = "silergy,syr828";
		status = "okay";
		reg = <0x41>;
		vin-supply = <&vcc_sys>;
		regulator-compatible = "fan53555-reg";
		pinctrl-0 = <&vsel2_gpio>;
		vsel-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
		regulator-name = "vdd_gpu";
		regulator-min-microvolt = <735000>;
		regulator-max-microvolt = <1400000>;
		regulator-ramp-delay = <1000>;
		fcs,suspend-voltage-selector = <1>;
		regulator-always-on;
		regulator-boot-on;
		regulator-state-mem {
			regulator-off-in-suspend;
		};
	};

	rk818: pmic@1c {
		compatible = "rockchip,rk818";
		status = "okay";
		reg = <0x1c>;
		clock-output-names = "rk818-clkout1", "wifibt_32kin";
		interrupt-parent = <&gpio1>;
		interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&pmic_int_l>;
		rockchip,system-power-controller;
		rk818,support_dc_chg = <1>;/*1: dc chg; 0:usb chg*/
		wakeup-source;
		extcon = <&fusb0>;
		#clock-cells = <1>;

		vcc1-supply = <&vcc_sys>;
		vcc2-supply = <&vcc_sys>;
		vcc3-supply = <&vcc_sys>;
		vcc4-supply = <&vcc_sys>;
		vcc6-supply = <&vcc_sys>;
		vcc7-supply = <&vcc3v3_sys>;
		vcc8-supply = <&vcc_sys>;
		vcc9-supply = <&vcc3v3_sys>;

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

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

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

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

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

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

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

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

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

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

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

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

			vcc_sd: LDO_REG9 {
				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>;
				};
			};

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

			boost_otg: DCDC_BOOST {
				regulator-name = "boost_otg";
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <5000000>;
				regulator-max-microvolt = <5000000>;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <5000000>;
				};
			};

			otg_switch: OTG_SWITCH {
				regulator-name = "otg_switch";
			};
		};

		battery {
			compatible = "rk818-battery";
			ocv_table = <3400 3675 3689 3716 3740 3756 3768 3780
				3793 3807 3827 3853 3896 3937 3974 4007 4066
				4110 4161 4217 4308>;
			design_capacity = <7916>;
			design_qmax = <8708>;
			bat_res = <65>;
			max_input_current = <3000>;
			max_chrg_current = <3000>;
			max_chrg_voltage = <4350>;
			sleep_enter_current = <300>;
			sleep_exit_current = <300>;
			power_off_thresd = <3400>;
			zero_algorithm_vol = <3950>;
			fb_temperature = <105>;
			sample_res = <20>;
			max_soc_offset = <60>;
			energy_mode = <0>;
			monitor_sec = <5>;
			virtual_power = <0>;
			power_dc2otg = <0>;
		};
	};
};

&i2c1 {
	status = "okay";
	i2c-scl-rising-time-ns = <140>;
	i2c-scl-falling-time-ns = <30>;

	es8316: es8316@10 {
		#sound-dai-cells = <0>;
		compatible = "everest,es8316";
		reg = <0x11>;
		clocks = <&cru SCLK_I2S_8CH_OUT>;
		clock-names = "mclk";
		pinctrl-names = "default";
		pinctrl-0 = <&i2s_8ch_mclk>;
		spk-con-gpio = <&gpio0 11 GPIO_ACTIVE_HIGH>;
	};
};

&i2c4 {
	status = "okay";
	i2c-scl-rising-time-ns = <345>;
	i2c-scl-falling-time-ns = <11>;
	clock-frequency = <400000>;

	lsm330_accel@1e {
		status = "okay";
		compatible = "lsm330_acc";
		pinctrl-names = "default";
		pinctrl-0 = <&lsm330a_irq_gpio>;
		reg = <0x1e>;
		irq-gpio = <&gpio2 27 IRQ_TYPE_EDGE_RISING>;
		type = <SENSOR_TYPE_ACCEL>;
		irq_enable = <1>;
		poll_delay_ms = <30>;
		power-off-in-suspend = <1>;
		layout = <4>;
	};

	lsm330_gyro@6a {
		status = "okay";
		compatible = "lsm330_gyro";
		pinctrl-names = "default";
		pinctrl-0 = <&lsm330g_irq_gpio>;
		reg = <0x6a>;
		irq-gpio = <&gpio1 20 IRQ_TYPE_EDGE_RISING>;
		type = <SENSOR_TYPE_GYROSCOPE>;
		irq_enable = <0>;
		power-off-in-suspend = <1>;
		poll_delay_ms = <30>;
	};

	mpu6500@68 {
		status = "disabled";
		compatible = "invensense,mpu6500";
		pinctrl-names = "default";
		pinctrl-0 = <&mpu6500_irq_gpio>;
		reg = <0x68>;
		irq-gpio = <&gpio2 27 IRQ_TYPE_EDGE_RISING>;
		mpu-int_config = <0x10>;
		mpu-level_shifter = <0>;
		mpu-orientation = <1 0 0 0 1 0 0 0 1>;
		orientation-x= <1>;
		orientation-y= <1>;
		orientation-z= <0>;
		support-hw-poweroff = <1>;
		mpu-debug = <1>;
	};

	sensor@0d {
		status = "okay";
		compatible = "ak8963";
		pinctrl-names = "default";
		pinctrl-0 = <&ak8963_irq_gpio>;
		reg = <0x0d>;
		type = <SENSOR_TYPE_COMPASS>;
		irq-gpio = <&gpio2 28 IRQ_TYPE_EDGE_RISING>;
		irq_enable = <0>;
		poll_delay_ms = <30>;
		layout = <3>;
	};

	sensor@10 {
		status = "okay";
		compatible = "capella,light_cm3218";
		pinctrl-names = "default";
		pinctrl-0 = <&cm3218_irq_gpio>;
		reg = <0x10>;
		type = <SENSOR_TYPE_LIGHT>;
		irq-gpio = <&gpio4 24 IRQ_TYPE_EDGE_FALLING>;
		irq_enable = <1>;
		poll_delay_ms = <30>;
	};

	fusb0: fusb30x@22 {
		compatible = "fairchild,fusb302";
		reg = <0x22>;
		pinctrl-names = "default";
		pinctrl-0 = <&fusb0_int>;
		int-n-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
		status = "okay";
	};
};

&i2c5 {
	status = "okay";
	i2c-scl-rising-time-ns = <150>;
	i2c-scl-falling-time-ns = <30>;
	clock-frequency = <400000>;

	gt9xx: gt9xx@14 {
		compatible = "goodix,gt9xx";
		reg = <0x14>;
		touch-gpio = <&gpio3 12 IRQ_TYPE_LEVEL_LOW>;
		reset-gpio = <&gpio3 13 GPIO_ACTIVE_HIGH>;
		max-x = <1536>;
		max-y = <2048>;
		tp-size = <970>;
		tp-supply = <&vcc3v0_tp>;
	};
};

&io_domains {
	status = "okay";

	bt656-supply = <&vcc1v8_dvp>;
	audio-supply = <&vcca1v8_codec>;
	sdmmc-supply = <&vcc_sd>;
	gpio1830-supply = <&vcc_3v0>;
};

&isp0_mmu {
	status = "okay";
};

&isp1_mmu {
	status = "okay";
};

&cpu_l0 {
	cpu-supply = <&vdd_cpu_l>;
};

&cpu_l1 {
	cpu-supply = <&vdd_cpu_l>;
};

&cpu_l2 {
	cpu-supply = <&vdd_cpu_l>;
};

&cpu_l3 {
	cpu-supply = <&vdd_cpu_l>;
};

&cpu_b0 {
	cpu-supply = <&vdd_cpu_b>;
};

&cpu_b1 {
	cpu-supply = <&vdd_cpu_b>;
};

&gpu {
	status = "okay";
	mali-supply = <&vdd_gpu>;
};

&spi1 {
	status = "disabled";
	max-freq = <50000000>;
	mpu6500@0 {
		status = "disabled";
		compatible = "inv-spi,mpu6500";
		pinctrl-names = "default";
		pinctrl-0 = <&mpu6500_irq_gpio>;
		irq-gpio = <&gpio2 27 IRQ_TYPE_EDGE_RISING>;
		reg = <0>;
		spi-max-frequency = <1000000>;
		spi-cpha;
		spi-cpol;
		mpu-int_config = <0x00>;
		mpu-level_shifter = <0>;
		mpu-orientation = <1 0 0 0 1 0 0 0 1>;
		orientation-x= <1>;
		orientation-y= <0>;
		orientation-z= <1>;
		support-hw-poweroff = <1>;
		mpu-debug = <1>;
	};
};

&tcphy0 {
	extcon = <&fusb0>;
	status = "okay";
};

&tsadc {
	rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
	rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
	status = "okay";
};

&u2phy0 {
	status = "okay";
	extcon = <&fusb0>;

	u2phy0_otg: otg-port {
		status = "okay";
	};

	u2phy0_host: host-port {
		phy-supply = <&vcc5v0_host>;
		status = "okay";
	};
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_xfer &uart0_cts>;
	status = "okay";
};

&uart2 {
	status = "okay";
};

&usb_host0_ehci {
	status = "okay";
};

&usb_host0_ohci {
	status = "okay";
};

&usbdrd3_0 {
	status = "okay";
};

&usbdrd_dwc3_0 {
	status = "okay";
	extcon = <&fusb0>;
};

&pwm0 {
	status = "okay";
};

&pwm2 {
	status = "okay";
	pinctrl-names = "active";
	pinctrl-0 = <&pwm2_pin_pull_down>;
};

&saradc {
	status = "okay";
};

&rockchip_suspend {
	status = "okay";
	rockchip,sleep-debug-en = <1>;
	rockchip,sleep-mode-config = <
		(0
		| RKPM_SLP_ARMPD
		| RKPM_SLP_PERILPPD
		| RKPM_SLP_DDR_RET
		| RKPM_SLP_PLLPD
		| RKPM_SLP_CENTER_PD
		| RKPM_SLP_OSC_DIS
		| RKPM_SLP_AP_PWROFF
		)
	>;
	rockchip,wakeup-config = <
		(0
		| RKPM_GPIO_WKUP_EN
		)
	>;
	rockchip,pwm-regulator-config = <
		(0
		| PWM2_REGULATOR_EN
		)
	>;
	rockchip,power-ctrl =
		<&gpio1 17 GPIO_ACTIVE_HIGH>,
		<&gpio1 14 GPIO_ACTIVE_HIGH>;
};

&pinctrl {
	sdio-pwrseq {
		wifi_enable_h: wifi-enable-h {
			rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	wireless-bluetooth {
		uart0_gpios: uart0-gpios {
			rockchip,pins = <2 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		bt_reset_gpio: bt-reset-gpio {
			rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		bt_wake_gpio: bt-wake-gpio {
			rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		bt_irq_gpio: bt-irq-gpio {
			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_down>;
		};
	};

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

		pmic_dvs2: pmic-dvs2 {
			rockchip,pins =
				<1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_down>;
		};
		vsel1_gpio: vsel1-gpio {
			rockchip,pins =
				<1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
		};
		vsel2_gpio: vsel2-gpio {
			rockchip,pins =
				<1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
		};
	};

	hallsensor {
		mh248_irq_gpio: mh248-irq-gpio {
			rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	headphone {
		hp_det: hp-det {
			rockchip,pins = <4 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	lsm330_a {
		lsm330a_irq_gpio: lsm330a-irq-gpio {
			rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	lsm330_g {
		lsm330g_irq_gpio: lsm330g-irq-gpio {
			rockchip,pins = <1 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	mpu6500 {
		mpu6500_irq_gpio: mpu6500-irq-gpio {
			rockchip,pins = <2 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	ak8963 {
		ak8963_irq_gpio: ak8963-irq-gpio {
			rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	cm3218 {
		cm3218_irq_gpio: cm3218-irq-gpio {
			rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	usb2 {
		host_vbus_drv: host-vbus-drv {
			rockchip,pins =
				<4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	fusb30x {
		fusb0_int: fusb0-int {
			rockchip,pins =
				<1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};
};

&edp {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&edp_hpd>;

	ports {
		edp_out: port@1 {
			reg = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			edp_out_panel: endpoint@0 {
				reg = <0>;
				remote-endpoint = <&panel_in_edp>;
			};
		};
	};
};

&edp_in_vopl {
	status = "disabled";
};

&hdmi {
	status = "disabled";
};

&hdmi_in_vopb {
	status = "disabled";
};

&cdn_dp {
	status = "okay";
	extcon = <&fusb0>;
	phys = <&tcphy0_dp>;
};

&dp_in_vopb {
	status = "disabled";
};

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

&route_edp {
	status = "okay";
	logo,mode = "center";
};

&vopb {
	assigned-clocks = <&cru DCLK_VOP0_DIV>;
	assigned-clock-parents = <&cru PLL_CPLL>;
};

&vopl {
	assigned-clocks = <&cru DCLK_VOP1_DIV>;
	assigned-clock-parents = <&cru PLL_VPLL>;
};
