162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Google Gru (and derivatives) board device tree source
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright 2016-2017 Google, Inc
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <dt-bindings/input/input.h>
962306a36Sopenharmony_ci#include "rk3399.dtsi"
1062306a36Sopenharmony_ci#include "rk3399-op1-opp.dtsi"
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci/ {
1362306a36Sopenharmony_ci	aliases {
1462306a36Sopenharmony_ci		mmc0 = &sdmmc;
1562306a36Sopenharmony_ci		mmc1 = &sdhci;
1662306a36Sopenharmony_ci	};
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci	chosen {
1962306a36Sopenharmony_ci		stdout-path = "serial2:115200n8";
2062306a36Sopenharmony_ci	};
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	/*
2362306a36Sopenharmony_ci	 * Power Tree
2462306a36Sopenharmony_ci	 *
2562306a36Sopenharmony_ci	 * In general an attempt is made to include all rails called out by
2662306a36Sopenharmony_ci	 * the schematic as long as those rails interact in some way with
2762306a36Sopenharmony_ci	 * the AP.  AKA:
2862306a36Sopenharmony_ci	 * - Rails that only connect to the EC (or devices that the EC talks to)
2962306a36Sopenharmony_ci	 *   are not included.
3062306a36Sopenharmony_ci	 * - Rails _are_ included if the rails go to the AP even if the AP
3162306a36Sopenharmony_ci	 *   doesn't currently care about them / they are always on.  The idea
3262306a36Sopenharmony_ci	 *   here is that it makes it easier to map to the schematic or extend
3362306a36Sopenharmony_ci	 *   later.
3462306a36Sopenharmony_ci	 *
3562306a36Sopenharmony_ci	 * If two rails are substantially the same from the AP's point of
3662306a36Sopenharmony_ci	 * view, though, we won't create a full fixed regulator.  We'll just
3762306a36Sopenharmony_ci	 * put the child rail as an alias of the parent rail.  Sometimes rails
3862306a36Sopenharmony_ci	 * look the same to the AP because one of these is true:
3962306a36Sopenharmony_ci	 * - The EC controls the enable and the EC always enables a rail as
4062306a36Sopenharmony_ci	 *   long as the AP is running.
4162306a36Sopenharmony_ci	 * - The rails are actually connected to each other by a jumper and
4262306a36Sopenharmony_ci	 *   the distinction is just there to add clarity/flexibility to the
4362306a36Sopenharmony_ci	 *   schematic.
4462306a36Sopenharmony_ci	 */
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci	ppvar_sys: ppvar-sys {
4762306a36Sopenharmony_ci		compatible = "regulator-fixed";
4862306a36Sopenharmony_ci		regulator-name = "ppvar_sys";
4962306a36Sopenharmony_ci		regulator-always-on;
5062306a36Sopenharmony_ci		regulator-boot-on;
5162306a36Sopenharmony_ci	};
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci	pp1200_lpddr: pp1200-lpddr {
5462306a36Sopenharmony_ci		compatible = "regulator-fixed";
5562306a36Sopenharmony_ci		regulator-name = "pp1200_lpddr";
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci		/* EC turns on w/ lpddr_pwr_en; always on for AP */
5862306a36Sopenharmony_ci		regulator-always-on;
5962306a36Sopenharmony_ci		regulator-boot-on;
6062306a36Sopenharmony_ci		regulator-min-microvolt = <1200000>;
6162306a36Sopenharmony_ci		regulator-max-microvolt = <1200000>;
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci		vin-supply = <&ppvar_sys>;
6462306a36Sopenharmony_ci	};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci	pp1800: pp1800 {
6762306a36Sopenharmony_ci		compatible = "regulator-fixed";
6862306a36Sopenharmony_ci		regulator-name = "pp1800";
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci		/* Always on when ppvar_sys shows power good */
7162306a36Sopenharmony_ci		regulator-always-on;
7262306a36Sopenharmony_ci		regulator-boot-on;
7362306a36Sopenharmony_ci		regulator-min-microvolt = <1800000>;
7462306a36Sopenharmony_ci		regulator-max-microvolt = <1800000>;
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci		vin-supply = <&ppvar_sys>;
7762306a36Sopenharmony_ci	};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci	pp3300: pp3300 {
8062306a36Sopenharmony_ci		compatible = "regulator-fixed";
8162306a36Sopenharmony_ci		regulator-name = "pp3300";
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci		/* Always on; plain and simple */
8462306a36Sopenharmony_ci		regulator-always-on;
8562306a36Sopenharmony_ci		regulator-boot-on;
8662306a36Sopenharmony_ci		regulator-min-microvolt = <3300000>;
8762306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci		vin-supply = <&ppvar_sys>;
9062306a36Sopenharmony_ci	};
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci	pp5000: pp5000 {
9362306a36Sopenharmony_ci		compatible = "regulator-fixed";
9462306a36Sopenharmony_ci		regulator-name = "pp5000";
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci		/* EC turns on w/ pp5000_en; always on for AP */
9762306a36Sopenharmony_ci		regulator-always-on;
9862306a36Sopenharmony_ci		regulator-boot-on;
9962306a36Sopenharmony_ci		regulator-min-microvolt = <5000000>;
10062306a36Sopenharmony_ci		regulator-max-microvolt = <5000000>;
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci		vin-supply = <&ppvar_sys>;
10362306a36Sopenharmony_ci	};
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci	ppvar_bigcpu_pwm: ppvar-bigcpu-pwm {
10662306a36Sopenharmony_ci		compatible = "pwm-regulator";
10762306a36Sopenharmony_ci		regulator-name = "ppvar_bigcpu_pwm";
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci		pwms = <&pwm1 0 3337 0>;
11062306a36Sopenharmony_ci		pwm-supply = <&ppvar_sys>;
11162306a36Sopenharmony_ci		pwm-dutycycle-range = <100 0>;
11262306a36Sopenharmony_ci		pwm-dutycycle-unit = <100>;
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci		/* EC turns on w/ ap_core_en; always on for AP */
11562306a36Sopenharmony_ci		regulator-always-on;
11662306a36Sopenharmony_ci		regulator-boot-on;
11762306a36Sopenharmony_ci		regulator-min-microvolt = <800107>;
11862306a36Sopenharmony_ci		regulator-max-microvolt = <1302232>;
11962306a36Sopenharmony_ci	};
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci	ppvar_bigcpu: ppvar-bigcpu {
12262306a36Sopenharmony_ci		compatible = "vctrl-regulator";
12362306a36Sopenharmony_ci		regulator-name = "ppvar_bigcpu";
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci		regulator-min-microvolt = <800107>;
12662306a36Sopenharmony_ci		regulator-max-microvolt = <1302232>;
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_ci		ctrl-supply = <&ppvar_bigcpu_pwm>;
12962306a36Sopenharmony_ci		ctrl-voltage-range = <800107 1302232>;
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci		regulator-settling-time-up-us = <322>;
13262306a36Sopenharmony_ci	};
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci	ppvar_litcpu_pwm: ppvar-litcpu-pwm {
13562306a36Sopenharmony_ci		compatible = "pwm-regulator";
13662306a36Sopenharmony_ci		regulator-name = "ppvar_litcpu_pwm";
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci		pwms = <&pwm2 0 3337 0>;
13962306a36Sopenharmony_ci		pwm-supply = <&ppvar_sys>;
14062306a36Sopenharmony_ci		pwm-dutycycle-range = <100 0>;
14162306a36Sopenharmony_ci		pwm-dutycycle-unit = <100>;
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci		/* EC turns on w/ ap_core_en; always on for AP */
14462306a36Sopenharmony_ci		regulator-always-on;
14562306a36Sopenharmony_ci		regulator-boot-on;
14662306a36Sopenharmony_ci		regulator-min-microvolt = <797743>;
14762306a36Sopenharmony_ci		regulator-max-microvolt = <1307837>;
14862306a36Sopenharmony_ci	};
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci	ppvar_litcpu: ppvar-litcpu {
15162306a36Sopenharmony_ci		compatible = "vctrl-regulator";
15262306a36Sopenharmony_ci		regulator-name = "ppvar_litcpu";
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci		regulator-min-microvolt = <797743>;
15562306a36Sopenharmony_ci		regulator-max-microvolt = <1307837>;
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci		ctrl-supply = <&ppvar_litcpu_pwm>;
15862306a36Sopenharmony_ci		ctrl-voltage-range = <797743 1307837>;
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci		regulator-settling-time-up-us = <384>;
16162306a36Sopenharmony_ci	};
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci	ppvar_gpu_pwm: ppvar-gpu-pwm {
16462306a36Sopenharmony_ci		compatible = "pwm-regulator";
16562306a36Sopenharmony_ci		regulator-name = "ppvar_gpu_pwm";
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci		pwms = <&pwm0 0 3337 0>;
16862306a36Sopenharmony_ci		pwm-supply = <&ppvar_sys>;
16962306a36Sopenharmony_ci		pwm-dutycycle-range = <100 0>;
17062306a36Sopenharmony_ci		pwm-dutycycle-unit = <100>;
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci		/* EC turns on w/ ap_core_en; always on for AP */
17362306a36Sopenharmony_ci		regulator-always-on;
17462306a36Sopenharmony_ci		regulator-boot-on;
17562306a36Sopenharmony_ci		regulator-min-microvolt = <786384>;
17662306a36Sopenharmony_ci		regulator-max-microvolt = <1217747>;
17762306a36Sopenharmony_ci	};
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci	ppvar_gpu: ppvar-gpu {
18062306a36Sopenharmony_ci		compatible = "vctrl-regulator";
18162306a36Sopenharmony_ci		regulator-name = "ppvar_gpu";
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci		regulator-min-microvolt = <786384>;
18462306a36Sopenharmony_ci		regulator-max-microvolt = <1217747>;
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci		ctrl-supply = <&ppvar_gpu_pwm>;
18762306a36Sopenharmony_ci		ctrl-voltage-range = <786384 1217747>;
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci		regulator-settling-time-up-us = <390>;
19062306a36Sopenharmony_ci	};
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci	/* EC turns on w/ pp900_ddrpll_en */
19362306a36Sopenharmony_ci	pp900_ddrpll: pp900-ap {
19462306a36Sopenharmony_ci	};
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci	/* EC turns on w/ pp900_pll_en */
19762306a36Sopenharmony_ci	pp900_pll: pp900-ap {
19862306a36Sopenharmony_ci	};
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci	/* EC turns on w/ pp900_pmu_en */
20162306a36Sopenharmony_ci	pp900_pmu: pp900-ap {
20262306a36Sopenharmony_ci	};
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci	/* EC turns on w/ pp1800_s0_en_l */
20562306a36Sopenharmony_ci	pp1800_ap_io: pp1800_emmc: pp1800_nfc: pp1800_s0: pp1800 {
20662306a36Sopenharmony_ci	};
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci	/* EC turns on w/ pp1800_avdd_en_l */
20962306a36Sopenharmony_ci	pp1800_avdd: pp1800 {
21062306a36Sopenharmony_ci	};
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci	/* EC turns on w/ pp1800_lid_en_l */
21362306a36Sopenharmony_ci	pp1800_lid: pp1800_mic: pp1800 {
21462306a36Sopenharmony_ci	};
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ci	/* EC turns on w/ lpddr_pwr_en */
21762306a36Sopenharmony_ci	pp1800_lpddr: pp1800 {
21862306a36Sopenharmony_ci	};
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci	/* EC turns on w/ pp1800_pmu_en_l */
22162306a36Sopenharmony_ci	pp1800_pmu: pp1800 {
22262306a36Sopenharmony_ci	};
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ci	/* EC turns on w/ pp1800_usb_en_l */
22562306a36Sopenharmony_ci	pp1800_usb: pp1800 {
22662306a36Sopenharmony_ci	};
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ci	pp3000_sd_slot: pp3000-sd-slot {
22962306a36Sopenharmony_ci		compatible = "regulator-fixed";
23062306a36Sopenharmony_ci		regulator-name = "pp3000_sd_slot";
23162306a36Sopenharmony_ci		pinctrl-names = "default";
23262306a36Sopenharmony_ci		pinctrl-0 = <&sd_slot_pwr_en>;
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci		enable-active-high;
23562306a36Sopenharmony_ci		gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ci		vin-supply = <&pp3000>;
23862306a36Sopenharmony_ci	};
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci	/*
24162306a36Sopenharmony_ci	 * Technically, this is a small abuse of 'regulator-gpio'; this
24262306a36Sopenharmony_ci	 * regulator is a mux between pp1800 and pp3300. pp1800 and pp3300 are
24362306a36Sopenharmony_ci	 * always on though, so it is sufficient to simply control the mux
24462306a36Sopenharmony_ci	 * here.
24562306a36Sopenharmony_ci	 */
24662306a36Sopenharmony_ci	ppvar_sd_card_io: ppvar-sd-card-io {
24762306a36Sopenharmony_ci		compatible = "regulator-gpio";
24862306a36Sopenharmony_ci		regulator-name = "ppvar_sd_card_io";
24962306a36Sopenharmony_ci		pinctrl-names = "default";
25062306a36Sopenharmony_ci		pinctrl-0 = <&sd_io_pwr_en &sd_pwr_1800_sel>;
25162306a36Sopenharmony_ci
25262306a36Sopenharmony_ci		enable-active-high;
25362306a36Sopenharmony_ci		enable-gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
25462306a36Sopenharmony_ci		gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
25562306a36Sopenharmony_ci		states = <1800000 0x1>,
25662306a36Sopenharmony_ci			 <3000000 0x0>;
25762306a36Sopenharmony_ci
25862306a36Sopenharmony_ci		regulator-min-microvolt = <1800000>;
25962306a36Sopenharmony_ci		regulator-max-microvolt = <3000000>;
26062306a36Sopenharmony_ci	};
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci	/* EC turns on w/ pp3300_trackpad_en_l */
26362306a36Sopenharmony_ci	pp3300_trackpad: pp3300-trackpad {
26462306a36Sopenharmony_ci	};
26562306a36Sopenharmony_ci
26662306a36Sopenharmony_ci	/* EC turns on w/ usb_a_en */
26762306a36Sopenharmony_ci	pp5000_usb_a_vbus: pp5000 {
26862306a36Sopenharmony_ci	};
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ci	ap_rtc_clk: ap-rtc-clk {
27162306a36Sopenharmony_ci		compatible = "fixed-clock";
27262306a36Sopenharmony_ci		clock-frequency = <32768>;
27362306a36Sopenharmony_ci		clock-output-names = "xin32k";
27462306a36Sopenharmony_ci		#clock-cells = <0>;
27562306a36Sopenharmony_ci	};
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci	max98357a: max98357a {
27862306a36Sopenharmony_ci		compatible = "maxim,max98357a";
27962306a36Sopenharmony_ci		pinctrl-names = "default";
28062306a36Sopenharmony_ci		pinctrl-0 = <&sdmode_en>;
28162306a36Sopenharmony_ci		sdmode-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
28262306a36Sopenharmony_ci		sdmode-delay = <2>;
28362306a36Sopenharmony_ci		#sound-dai-cells = <0>;
28462306a36Sopenharmony_ci		status = "okay";
28562306a36Sopenharmony_ci	};
28662306a36Sopenharmony_ci
28762306a36Sopenharmony_ci	sound: sound {
28862306a36Sopenharmony_ci		compatible = "rockchip,rk3399-gru-sound";
28962306a36Sopenharmony_ci		rockchip,cpu = <&i2s0 &spdif>;
29062306a36Sopenharmony_ci	};
29162306a36Sopenharmony_ci};
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_ci&cdn_dp {
29462306a36Sopenharmony_ci	status = "okay";
29562306a36Sopenharmony_ci};
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci/*
29862306a36Sopenharmony_ci * Set some suspend operating points to avoid OVP in suspend
29962306a36Sopenharmony_ci *
30062306a36Sopenharmony_ci * When we go into S3 ARM Trusted Firmware will transition our PWM regulators
30162306a36Sopenharmony_ci * from wherever they're at back to the "default" operating point (whatever
30262306a36Sopenharmony_ci * voltage we get when we set the PWM pins to "input").
30362306a36Sopenharmony_ci *
30462306a36Sopenharmony_ci * This quick transition under light load has the possibility to trigger the
30562306a36Sopenharmony_ci * regulator "over voltage protection" (OVP).
30662306a36Sopenharmony_ci *
30762306a36Sopenharmony_ci * To make extra certain that we don't hit this OVP at suspend time, we'll
30862306a36Sopenharmony_ci * transition to a voltage that's much closer to the default (~1.0 V) so that
30962306a36Sopenharmony_ci * there will not be a big jump.  Technically we only need to get within 200 mV
31062306a36Sopenharmony_ci * of the default voltage, but the speed here should be fast enough and we need
31162306a36Sopenharmony_ci * suspend/resume to be rock solid.
31262306a36Sopenharmony_ci */
31362306a36Sopenharmony_ci
31462306a36Sopenharmony_ci&cluster0_opp {
31562306a36Sopenharmony_ci	opp05 {
31662306a36Sopenharmony_ci		opp-suspend;
31762306a36Sopenharmony_ci	};
31862306a36Sopenharmony_ci};
31962306a36Sopenharmony_ci
32062306a36Sopenharmony_ci&cluster1_opp {
32162306a36Sopenharmony_ci	opp06 {
32262306a36Sopenharmony_ci		opp-suspend;
32362306a36Sopenharmony_ci	};
32462306a36Sopenharmony_ci};
32562306a36Sopenharmony_ci
32662306a36Sopenharmony_ci&cpu_l0 {
32762306a36Sopenharmony_ci	cpu-supply = <&ppvar_litcpu>;
32862306a36Sopenharmony_ci};
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_ci&cpu_l1 {
33162306a36Sopenharmony_ci	cpu-supply = <&ppvar_litcpu>;
33262306a36Sopenharmony_ci};
33362306a36Sopenharmony_ci
33462306a36Sopenharmony_ci&cpu_l2 {
33562306a36Sopenharmony_ci	cpu-supply = <&ppvar_litcpu>;
33662306a36Sopenharmony_ci};
33762306a36Sopenharmony_ci
33862306a36Sopenharmony_ci&cpu_l3 {
33962306a36Sopenharmony_ci	cpu-supply = <&ppvar_litcpu>;
34062306a36Sopenharmony_ci};
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_ci&cpu_b0 {
34362306a36Sopenharmony_ci	cpu-supply = <&ppvar_bigcpu>;
34462306a36Sopenharmony_ci};
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_ci&cpu_b1 {
34762306a36Sopenharmony_ci	cpu-supply = <&ppvar_bigcpu>;
34862306a36Sopenharmony_ci};
34962306a36Sopenharmony_ci
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci&cru {
35262306a36Sopenharmony_ci	assigned-clocks =
35362306a36Sopenharmony_ci		<&cru PLL_GPLL>, <&cru PLL_CPLL>,
35462306a36Sopenharmony_ci		<&cru PLL_NPLL>,
35562306a36Sopenharmony_ci		<&cru ACLK_PERIHP>, <&cru HCLK_PERIHP>,
35662306a36Sopenharmony_ci		<&cru PCLK_PERIHP>,
35762306a36Sopenharmony_ci		<&cru ACLK_PERILP0>, <&cru HCLK_PERILP0>,
35862306a36Sopenharmony_ci		<&cru PCLK_PERILP0>, <&cru ACLK_CCI>,
35962306a36Sopenharmony_ci		<&cru HCLK_PERILP1>, <&cru PCLK_PERILP1>,
36062306a36Sopenharmony_ci		<&cru ACLK_VIO>, <&cru ACLK_HDCP>,
36162306a36Sopenharmony_ci		<&cru ACLK_GIC_PRE>,
36262306a36Sopenharmony_ci		<&cru PCLK_DDR>;
36362306a36Sopenharmony_ci	assigned-clock-rates =
36462306a36Sopenharmony_ci		<600000000>, <800000000>,
36562306a36Sopenharmony_ci		<1000000000>,
36662306a36Sopenharmony_ci		<150000000>, <75000000>,
36762306a36Sopenharmony_ci		<37500000>,
36862306a36Sopenharmony_ci		<100000000>, <100000000>,
36962306a36Sopenharmony_ci		<50000000>, <800000000>,
37062306a36Sopenharmony_ci		<100000000>, <50000000>,
37162306a36Sopenharmony_ci		<400000000>, <400000000>,
37262306a36Sopenharmony_ci		<200000000>,
37362306a36Sopenharmony_ci		<200000000>;
37462306a36Sopenharmony_ci};
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ci&dfi {
37762306a36Sopenharmony_ci	status = "okay";
37862306a36Sopenharmony_ci};
37962306a36Sopenharmony_ci
38062306a36Sopenharmony_ci&dmc {
38162306a36Sopenharmony_ci	status = "okay";
38262306a36Sopenharmony_ci
38362306a36Sopenharmony_ci	rockchip,pd-idle-ns = <160>;
38462306a36Sopenharmony_ci	rockchip,sr-idle-ns = <10240>;
38562306a36Sopenharmony_ci	rockchip,sr-mc-gate-idle-ns = <40960>;
38662306a36Sopenharmony_ci	rockchip,srpd-lite-idle-ns = <61440>;
38762306a36Sopenharmony_ci	rockchip,standby-idle-ns = <81920>;
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci	rockchip,ddr3_odt_dis_freq = <666000000>;
39062306a36Sopenharmony_ci	rockchip,lpddr3_odt_dis_freq = <666000000>;
39162306a36Sopenharmony_ci	rockchip,lpddr4_odt_dis_freq = <666000000>;
39262306a36Sopenharmony_ci
39362306a36Sopenharmony_ci	rockchip,sr-mc-gate-idle-dis-freq-hz = <1000000000>;
39462306a36Sopenharmony_ci	rockchip,srpd-lite-idle-dis-freq-hz = <0>;
39562306a36Sopenharmony_ci	rockchip,standby-idle-dis-freq-hz = <928000000>;
39662306a36Sopenharmony_ci};
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ci&dmc_opp_table {
39962306a36Sopenharmony_ci	opp03 {
40062306a36Sopenharmony_ci		opp-suspend;
40162306a36Sopenharmony_ci	};
40262306a36Sopenharmony_ci};
40362306a36Sopenharmony_ci
40462306a36Sopenharmony_ci&emmc_phy {
40562306a36Sopenharmony_ci	status = "okay";
40662306a36Sopenharmony_ci};
40762306a36Sopenharmony_ci
40862306a36Sopenharmony_ci&gpu {
40962306a36Sopenharmony_ci	mali-supply = <&ppvar_gpu>;
41062306a36Sopenharmony_ci	status = "okay";
41162306a36Sopenharmony_ci};
41262306a36Sopenharmony_ci
41362306a36Sopenharmony_ciap_i2c_ts: &i2c3 {
41462306a36Sopenharmony_ci	status = "okay";
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ci	clock-frequency = <400000>;
41762306a36Sopenharmony_ci
41862306a36Sopenharmony_ci	/* These are relatively safe rise/fall times */
41962306a36Sopenharmony_ci	i2c-scl-falling-time-ns = <50>;
42062306a36Sopenharmony_ci	i2c-scl-rising-time-ns = <300>;
42162306a36Sopenharmony_ci};
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_ciap_i2c_audio: &i2c8 {
42462306a36Sopenharmony_ci	status = "okay";
42562306a36Sopenharmony_ci
42662306a36Sopenharmony_ci	clock-frequency = <400000>;
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci	/* These are relatively safe rise/fall times */
42962306a36Sopenharmony_ci	i2c-scl-falling-time-ns = <50>;
43062306a36Sopenharmony_ci	i2c-scl-rising-time-ns = <300>;
43162306a36Sopenharmony_ci
43262306a36Sopenharmony_ci	codec: da7219@1a {
43362306a36Sopenharmony_ci		compatible = "dlg,da7219";
43462306a36Sopenharmony_ci		reg = <0x1a>;
43562306a36Sopenharmony_ci		interrupt-parent = <&gpio1>;
43662306a36Sopenharmony_ci		interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
43762306a36Sopenharmony_ci		clocks = <&cru SCLK_I2S_8CH_OUT>;
43862306a36Sopenharmony_ci		clock-names = "mclk";
43962306a36Sopenharmony_ci		dlg,micbias-lvl = <2600>;
44062306a36Sopenharmony_ci		dlg,mic-amp-in-sel = "diff";
44162306a36Sopenharmony_ci		pinctrl-names = "default";
44262306a36Sopenharmony_ci		pinctrl-0 = <&headset_int_l>;
44362306a36Sopenharmony_ci		VDD-supply = <&pp1800>;
44462306a36Sopenharmony_ci		VDDMIC-supply = <&pp3300>;
44562306a36Sopenharmony_ci		VDDIO-supply = <&pp1800>;
44662306a36Sopenharmony_ci
44762306a36Sopenharmony_ci		da7219_aad {
44862306a36Sopenharmony_ci			dlg,adc-1bit-rpt = <1>;
44962306a36Sopenharmony_ci			dlg,btn-avg = <4>;
45062306a36Sopenharmony_ci			dlg,btn-cfg = <50>;
45162306a36Sopenharmony_ci			dlg,mic-det-thr = <500>;
45262306a36Sopenharmony_ci			dlg,jack-ins-deb = <20>;
45362306a36Sopenharmony_ci			dlg,jack-det-rate = "32ms_64ms";
45462306a36Sopenharmony_ci			dlg,jack-rem-deb = <1>;
45562306a36Sopenharmony_ci
45662306a36Sopenharmony_ci			dlg,a-d-btn-thr = <0xa>;
45762306a36Sopenharmony_ci			dlg,d-b-btn-thr = <0x16>;
45862306a36Sopenharmony_ci			dlg,b-c-btn-thr = <0x21>;
45962306a36Sopenharmony_ci			dlg,c-mic-btn-thr = <0x3E>;
46062306a36Sopenharmony_ci		};
46162306a36Sopenharmony_ci	};
46262306a36Sopenharmony_ci};
46362306a36Sopenharmony_ci
46462306a36Sopenharmony_ci&i2s0 {
46562306a36Sopenharmony_ci	status = "okay";
46662306a36Sopenharmony_ci};
46762306a36Sopenharmony_ci
46862306a36Sopenharmony_ci&io_domains {
46962306a36Sopenharmony_ci	status = "okay";
47062306a36Sopenharmony_ci
47162306a36Sopenharmony_ci	audio-supply = <&pp1800_audio>;		/* APIO5_VDD;  3d 4a */
47262306a36Sopenharmony_ci	bt656-supply = <&pp1800_ap_io>;		/* APIO2_VDD;  2a 2b */
47362306a36Sopenharmony_ci	gpio1830-supply = <&pp3000_ap>;		/* APIO4_VDD;  4c 4d */
47462306a36Sopenharmony_ci	sdmmc-supply = <&ppvar_sd_card_io>;	/* SDMMC0_VDD; 4b    */
47562306a36Sopenharmony_ci};
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_ci&pcie0 {
47862306a36Sopenharmony_ci	status = "okay";
47962306a36Sopenharmony_ci
48062306a36Sopenharmony_ci	ep-gpios = <&gpio2 27 GPIO_ACTIVE_HIGH>;
48162306a36Sopenharmony_ci	pinctrl-names = "default";
48262306a36Sopenharmony_ci	pinctrl-0 = <&pcie_clkreqn_cpm>, <&wifi_perst_l>;
48362306a36Sopenharmony_ci	vpcie3v3-supply = <&pp3300_wifi_bt>;
48462306a36Sopenharmony_ci	vpcie1v8-supply = <&wlan_pd_n>; /* HACK: see &wlan_pd_n */
48562306a36Sopenharmony_ci	vpcie0v9-supply = <&pp900_pcie>;
48662306a36Sopenharmony_ci
48762306a36Sopenharmony_ci	pci_rootport: pcie@0,0 {
48862306a36Sopenharmony_ci		reg = <0x0000 0 0 0 0>;
48962306a36Sopenharmony_ci		#address-cells = <3>;
49062306a36Sopenharmony_ci		#size-cells = <2>;
49162306a36Sopenharmony_ci		ranges;
49262306a36Sopenharmony_ci		device_type = "pci";
49362306a36Sopenharmony_ci	};
49462306a36Sopenharmony_ci};
49562306a36Sopenharmony_ci
49662306a36Sopenharmony_ci&pcie_phy {
49762306a36Sopenharmony_ci	status = "okay";
49862306a36Sopenharmony_ci};
49962306a36Sopenharmony_ci
50062306a36Sopenharmony_ci&pmu_io_domains {
50162306a36Sopenharmony_ci	status = "okay";
50262306a36Sopenharmony_ci
50362306a36Sopenharmony_ci	pmu1830-supply = <&pp1800_pmu>;		/* PMUIO2_VDD */
50462306a36Sopenharmony_ci};
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ci&pwm0 {
50762306a36Sopenharmony_ci	status = "okay";
50862306a36Sopenharmony_ci};
50962306a36Sopenharmony_ci
51062306a36Sopenharmony_ci&pwm1 {
51162306a36Sopenharmony_ci	status = "okay";
51262306a36Sopenharmony_ci};
51362306a36Sopenharmony_ci
51462306a36Sopenharmony_ci&pwm2 {
51562306a36Sopenharmony_ci	status = "okay";
51662306a36Sopenharmony_ci};
51762306a36Sopenharmony_ci
51862306a36Sopenharmony_ci&pwm3 {
51962306a36Sopenharmony_ci	status = "okay";
52062306a36Sopenharmony_ci};
52162306a36Sopenharmony_ci
52262306a36Sopenharmony_ci&sdhci {
52362306a36Sopenharmony_ci	/*
52462306a36Sopenharmony_ci	 * Signal integrity isn't great at 200 MHz and 150 MHz (DDR) gives the
52562306a36Sopenharmony_ci	 * same (or nearly the same) performance for all eMMC that are intended
52662306a36Sopenharmony_ci	 * to be used.
52762306a36Sopenharmony_ci	 */
52862306a36Sopenharmony_ci	assigned-clock-rates = <150000000>;
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_ci	bus-width = <8>;
53162306a36Sopenharmony_ci	mmc-hs400-1_8v;
53262306a36Sopenharmony_ci	mmc-hs400-enhanced-strobe;
53362306a36Sopenharmony_ci	non-removable;
53462306a36Sopenharmony_ci	status = "okay";
53562306a36Sopenharmony_ci};
53662306a36Sopenharmony_ci
53762306a36Sopenharmony_ci&sdmmc {
53862306a36Sopenharmony_ci	status = "okay";
53962306a36Sopenharmony_ci
54062306a36Sopenharmony_ci	/*
54162306a36Sopenharmony_ci	 * Note: configure "sdmmc_cd" as card detect even though it's actually
54262306a36Sopenharmony_ci	 * hooked to ground.  Because we specified "cd-gpios" below dw_mmc
54362306a36Sopenharmony_ci	 * should be ignoring card detect anyway.  Specifying the pin as
54462306a36Sopenharmony_ci	 * sdmmc_cd means that even if you've got GRF_SOC_CON7[12] (force_jtag)
54562306a36Sopenharmony_ci	 * turned on that the system will still make sure the port is
54662306a36Sopenharmony_ci	 * configured as SDMMC and not JTAG.
54762306a36Sopenharmony_ci	 */
54862306a36Sopenharmony_ci	pinctrl-names = "default";
54962306a36Sopenharmony_ci	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_cd_pin
55062306a36Sopenharmony_ci		     &sdmmc_bus4>;
55162306a36Sopenharmony_ci
55262306a36Sopenharmony_ci	bus-width = <4>;
55362306a36Sopenharmony_ci	cap-mmc-highspeed;
55462306a36Sopenharmony_ci	cap-sd-highspeed;
55562306a36Sopenharmony_ci	cd-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>;
55662306a36Sopenharmony_ci	disable-wp;
55762306a36Sopenharmony_ci	sd-uhs-sdr12;
55862306a36Sopenharmony_ci	sd-uhs-sdr25;
55962306a36Sopenharmony_ci	sd-uhs-sdr50;
56062306a36Sopenharmony_ci	sd-uhs-sdr104;
56162306a36Sopenharmony_ci	vmmc-supply = <&pp3000_sd_slot>;
56262306a36Sopenharmony_ci	vqmmc-supply = <&ppvar_sd_card_io>;
56362306a36Sopenharmony_ci};
56462306a36Sopenharmony_ci
56562306a36Sopenharmony_ci&spdif {
56662306a36Sopenharmony_ci	status = "okay";
56762306a36Sopenharmony_ci
56862306a36Sopenharmony_ci	/*
56962306a36Sopenharmony_ci	 * SPDIF is routed internally to DP; we either don't use these pins, or
57062306a36Sopenharmony_ci	 * mux them to something else.
57162306a36Sopenharmony_ci	 */
57262306a36Sopenharmony_ci	/delete-property/ pinctrl-0;
57362306a36Sopenharmony_ci	/delete-property/ pinctrl-names;
57462306a36Sopenharmony_ci};
57562306a36Sopenharmony_ci
57662306a36Sopenharmony_ci&spi1 {
57762306a36Sopenharmony_ci	status = "okay";
57862306a36Sopenharmony_ci
57962306a36Sopenharmony_ci	pinctrl-names = "default", "sleep";
58062306a36Sopenharmony_ci	pinctrl-1 = <&spi1_sleep>;
58162306a36Sopenharmony_ci
58262306a36Sopenharmony_ci	flash@0 {
58362306a36Sopenharmony_ci		compatible = "jedec,spi-nor";
58462306a36Sopenharmony_ci		reg = <0>;
58562306a36Sopenharmony_ci
58662306a36Sopenharmony_ci		/* May run faster once verified. */
58762306a36Sopenharmony_ci		spi-max-frequency = <10000000>;
58862306a36Sopenharmony_ci	};
58962306a36Sopenharmony_ci};
59062306a36Sopenharmony_ci
59162306a36Sopenharmony_ci&spi2 {
59262306a36Sopenharmony_ci	status = "okay";
59362306a36Sopenharmony_ci};
59462306a36Sopenharmony_ci
59562306a36Sopenharmony_ci&spi5 {
59662306a36Sopenharmony_ci	status = "okay";
59762306a36Sopenharmony_ci
59862306a36Sopenharmony_ci	cros_ec: ec@0 {
59962306a36Sopenharmony_ci		compatible = "google,cros-ec-spi";
60062306a36Sopenharmony_ci		reg = <0>;
60162306a36Sopenharmony_ci		interrupt-parent = <&gpio0>;
60262306a36Sopenharmony_ci		interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
60362306a36Sopenharmony_ci		pinctrl-names = "default";
60462306a36Sopenharmony_ci		pinctrl-0 = <&ec_ap_int_l>;
60562306a36Sopenharmony_ci		spi-max-frequency = <3000000>;
60662306a36Sopenharmony_ci
60762306a36Sopenharmony_ci		i2c_tunnel: i2c-tunnel {
60862306a36Sopenharmony_ci			compatible = "google,cros-ec-i2c-tunnel";
60962306a36Sopenharmony_ci			google,remote-bus = <4>;
61062306a36Sopenharmony_ci			#address-cells = <1>;
61162306a36Sopenharmony_ci			#size-cells = <0>;
61262306a36Sopenharmony_ci		};
61362306a36Sopenharmony_ci
61462306a36Sopenharmony_ci		usbc_extcon0: extcon0 {
61562306a36Sopenharmony_ci			compatible = "google,extcon-usbc-cros-ec";
61662306a36Sopenharmony_ci			google,usb-port-id = <0>;
61762306a36Sopenharmony_ci		};
61862306a36Sopenharmony_ci	};
61962306a36Sopenharmony_ci};
62062306a36Sopenharmony_ci
62162306a36Sopenharmony_ci&tsadc {
62262306a36Sopenharmony_ci	status = "okay";
62362306a36Sopenharmony_ci
62462306a36Sopenharmony_ci	rockchip,hw-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
62562306a36Sopenharmony_ci	rockchip,hw-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
62662306a36Sopenharmony_ci};
62762306a36Sopenharmony_ci
62862306a36Sopenharmony_ci&tcphy0 {
62962306a36Sopenharmony_ci	status = "okay";
63062306a36Sopenharmony_ci	extcon = <&usbc_extcon0>;
63162306a36Sopenharmony_ci};
63262306a36Sopenharmony_ci
63362306a36Sopenharmony_ci&u2phy0 {
63462306a36Sopenharmony_ci	status = "okay";
63562306a36Sopenharmony_ci};
63662306a36Sopenharmony_ci
63762306a36Sopenharmony_ci&u2phy0_host {
63862306a36Sopenharmony_ci	status = "okay";
63962306a36Sopenharmony_ci};
64062306a36Sopenharmony_ci
64162306a36Sopenharmony_ci&u2phy1_host {
64262306a36Sopenharmony_ci	status = "okay";
64362306a36Sopenharmony_ci};
64462306a36Sopenharmony_ci
64562306a36Sopenharmony_ci&u2phy0_otg {
64662306a36Sopenharmony_ci	status = "okay";
64762306a36Sopenharmony_ci};
64862306a36Sopenharmony_ci
64962306a36Sopenharmony_ci&u2phy1_otg {
65062306a36Sopenharmony_ci	status = "okay";
65162306a36Sopenharmony_ci};
65262306a36Sopenharmony_ci
65362306a36Sopenharmony_ci&uart2 {
65462306a36Sopenharmony_ci	status = "okay";
65562306a36Sopenharmony_ci};
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_ci&usb_host0_ohci {
65862306a36Sopenharmony_ci	status = "okay";
65962306a36Sopenharmony_ci};
66062306a36Sopenharmony_ci
66162306a36Sopenharmony_ci&usbdrd3_0 {
66262306a36Sopenharmony_ci	status = "okay";
66362306a36Sopenharmony_ci	extcon = <&usbc_extcon0>;
66462306a36Sopenharmony_ci};
66562306a36Sopenharmony_ci
66662306a36Sopenharmony_ci&usbdrd_dwc3_0 {
66762306a36Sopenharmony_ci	status = "okay";
66862306a36Sopenharmony_ci	dr_mode = "host";
66962306a36Sopenharmony_ci};
67062306a36Sopenharmony_ci
67162306a36Sopenharmony_ci&vopb {
67262306a36Sopenharmony_ci	status = "okay";
67362306a36Sopenharmony_ci};
67462306a36Sopenharmony_ci
67562306a36Sopenharmony_ci&vopb_mmu {
67662306a36Sopenharmony_ci	status = "okay";
67762306a36Sopenharmony_ci};
67862306a36Sopenharmony_ci
67962306a36Sopenharmony_ci&vopl {
68062306a36Sopenharmony_ci	status = "okay";
68162306a36Sopenharmony_ci};
68262306a36Sopenharmony_ci
68362306a36Sopenharmony_ci&vopl_mmu {
68462306a36Sopenharmony_ci	status = "okay";
68562306a36Sopenharmony_ci};
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_ci#include <arm/cros-ec-keyboard.dtsi>
68862306a36Sopenharmony_ci#include <arm/cros-ec-sbs.dtsi>
68962306a36Sopenharmony_ci
69062306a36Sopenharmony_ci&pinctrl {
69162306a36Sopenharmony_ci	/*
69262306a36Sopenharmony_ci	 * pinctrl settings for pins that have no real owners.
69362306a36Sopenharmony_ci	 *
69462306a36Sopenharmony_ci	 * At the moment settings are identical for S0 and S3, but if we later
69562306a36Sopenharmony_ci	 * need to configure things differently for S3 we'll adjust here.
69662306a36Sopenharmony_ci	 */
69762306a36Sopenharmony_ci	pinctrl-names = "default";
69862306a36Sopenharmony_ci	pinctrl-0 = <
69962306a36Sopenharmony_ci		&ap_pwroff	/* AP will auto-assert this when in S3 */
70062306a36Sopenharmony_ci		&clk_32k	/* This pin is always 32k on gru boards */
70162306a36Sopenharmony_ci	>;
70262306a36Sopenharmony_ci
70362306a36Sopenharmony_ci	pcfg_output_low: pcfg-output-low {
70462306a36Sopenharmony_ci		output-low;
70562306a36Sopenharmony_ci	};
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_ci	pcfg_output_high: pcfg-output-high {
70862306a36Sopenharmony_ci		output-high;
70962306a36Sopenharmony_ci	};
71062306a36Sopenharmony_ci
71162306a36Sopenharmony_ci	pcfg_pull_none_8ma: pcfg-pull-none-8ma {
71262306a36Sopenharmony_ci		bias-disable;
71362306a36Sopenharmony_ci		drive-strength = <8>;
71462306a36Sopenharmony_ci	};
71562306a36Sopenharmony_ci
71662306a36Sopenharmony_ci	backlight-enable {
71762306a36Sopenharmony_ci		bl_en: bl-en {
71862306a36Sopenharmony_ci			rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
71962306a36Sopenharmony_ci		};
72062306a36Sopenharmony_ci	};
72162306a36Sopenharmony_ci
72262306a36Sopenharmony_ci	cros-ec {
72362306a36Sopenharmony_ci		ec_ap_int_l: ec-ap-int-l {
72462306a36Sopenharmony_ci			rockchip,pins = <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_up>;
72562306a36Sopenharmony_ci		};
72662306a36Sopenharmony_ci	};
72762306a36Sopenharmony_ci
72862306a36Sopenharmony_ci	discrete-regulators {
72962306a36Sopenharmony_ci		sd_io_pwr_en: sd-io-pwr-en {
73062306a36Sopenharmony_ci			rockchip,pins = <2 RK_PA2 RK_FUNC_GPIO
73162306a36Sopenharmony_ci					 &pcfg_pull_none>;
73262306a36Sopenharmony_ci		};
73362306a36Sopenharmony_ci
73462306a36Sopenharmony_ci		sd_pwr_1800_sel: sd-pwr-1800-sel {
73562306a36Sopenharmony_ci			rockchip,pins = <2 RK_PD4 RK_FUNC_GPIO
73662306a36Sopenharmony_ci					 &pcfg_pull_none>;
73762306a36Sopenharmony_ci		};
73862306a36Sopenharmony_ci
73962306a36Sopenharmony_ci		sd_slot_pwr_en: sd-slot-pwr-en {
74062306a36Sopenharmony_ci			rockchip,pins = <4 RK_PD5 RK_FUNC_GPIO
74162306a36Sopenharmony_ci					 &pcfg_pull_none>;
74262306a36Sopenharmony_ci		};
74362306a36Sopenharmony_ci	};
74462306a36Sopenharmony_ci
74562306a36Sopenharmony_ci	codec {
74662306a36Sopenharmony_ci		/* Has external pullup */
74762306a36Sopenharmony_ci		headset_int_l: headset-int-l {
74862306a36Sopenharmony_ci			rockchip,pins = <1 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
74962306a36Sopenharmony_ci		};
75062306a36Sopenharmony_ci
75162306a36Sopenharmony_ci		mic_int: mic-int {
75262306a36Sopenharmony_ci			rockchip,pins = <1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_down>;
75362306a36Sopenharmony_ci		};
75462306a36Sopenharmony_ci	};
75562306a36Sopenharmony_ci
75662306a36Sopenharmony_ci	max98357a {
75762306a36Sopenharmony_ci		sdmode_en: sdmode-en {
75862306a36Sopenharmony_ci			rockchip,pins = <1 RK_PA2 RK_FUNC_GPIO &pcfg_pull_down>;
75962306a36Sopenharmony_ci		};
76062306a36Sopenharmony_ci	};
76162306a36Sopenharmony_ci
76262306a36Sopenharmony_ci	pcie {
76362306a36Sopenharmony_ci		pcie_clkreqn_cpm: pci-clkreqn-cpm {
76462306a36Sopenharmony_ci			/*
76562306a36Sopenharmony_ci			 * Since our pcie doesn't support ClockPM(CPM), we want
76662306a36Sopenharmony_ci			 * to hack this as gpio, so the EP could be able to
76762306a36Sopenharmony_ci			 * de-assert it along and make ClockPM(CPM) work.
76862306a36Sopenharmony_ci			 */
76962306a36Sopenharmony_ci			rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
77062306a36Sopenharmony_ci		};
77162306a36Sopenharmony_ci	};
77262306a36Sopenharmony_ci
77362306a36Sopenharmony_ci	sdmmc {
77462306a36Sopenharmony_ci		/*
77562306a36Sopenharmony_ci		 * We run sdmmc at max speed; bump up drive strength.
77662306a36Sopenharmony_ci		 * We also have external pulls, so disable the internal ones.
77762306a36Sopenharmony_ci		 */
77862306a36Sopenharmony_ci		sdmmc_bus4: sdmmc-bus4 {
77962306a36Sopenharmony_ci			rockchip,pins =
78062306a36Sopenharmony_ci				<4 RK_PB0 1 &pcfg_pull_none_8ma>,
78162306a36Sopenharmony_ci				<4 RK_PB1 1 &pcfg_pull_none_8ma>,
78262306a36Sopenharmony_ci				<4 RK_PB2 1 &pcfg_pull_none_8ma>,
78362306a36Sopenharmony_ci				<4 RK_PB3 1 &pcfg_pull_none_8ma>;
78462306a36Sopenharmony_ci		};
78562306a36Sopenharmony_ci
78662306a36Sopenharmony_ci		sdmmc_clk: sdmmc-clk {
78762306a36Sopenharmony_ci			rockchip,pins =
78862306a36Sopenharmony_ci				<4 RK_PB4 1 &pcfg_pull_none_8ma>;
78962306a36Sopenharmony_ci		};
79062306a36Sopenharmony_ci
79162306a36Sopenharmony_ci		sdmmc_cmd: sdmmc-cmd {
79262306a36Sopenharmony_ci			rockchip,pins =
79362306a36Sopenharmony_ci				<4 RK_PB5 1 &pcfg_pull_none_8ma>;
79462306a36Sopenharmony_ci		};
79562306a36Sopenharmony_ci
79662306a36Sopenharmony_ci		/*
79762306a36Sopenharmony_ci		 * In our case the official card detect is hooked to ground
79862306a36Sopenharmony_ci		 * to avoid getting access to JTAG just by sticking something
79962306a36Sopenharmony_ci		 * in the SD card slot (see the force_jtag bit in the TRM).
80062306a36Sopenharmony_ci		 *
80162306a36Sopenharmony_ci		 * We still configure it as card detect because it doesn't
80262306a36Sopenharmony_ci		 * hurt and dw_mmc will ignore it.  We make sure to disable
80362306a36Sopenharmony_ci		 * the pull though so we don't burn needless power.
80462306a36Sopenharmony_ci		 */
80562306a36Sopenharmony_ci		sdmmc_cd: sdmmc-cd {
80662306a36Sopenharmony_ci			rockchip,pins =
80762306a36Sopenharmony_ci				<0 RK_PA7 1 &pcfg_pull_none>;
80862306a36Sopenharmony_ci		};
80962306a36Sopenharmony_ci
81062306a36Sopenharmony_ci		/* This is where we actually hook up CD; has external pull */
81162306a36Sopenharmony_ci		sdmmc_cd_pin: sdmmc-cd-pin {
81262306a36Sopenharmony_ci			rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
81362306a36Sopenharmony_ci		};
81462306a36Sopenharmony_ci	};
81562306a36Sopenharmony_ci
81662306a36Sopenharmony_ci	spi1 {
81762306a36Sopenharmony_ci		spi1_sleep: spi1-sleep {
81862306a36Sopenharmony_ci			/*
81962306a36Sopenharmony_ci			 * Pull down SPI1 CLK/CS/RX/TX during suspend, to
82062306a36Sopenharmony_ci			 * prevent leakage.
82162306a36Sopenharmony_ci			 */
82262306a36Sopenharmony_ci			rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_down>,
82362306a36Sopenharmony_ci					<1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>,
82462306a36Sopenharmony_ci					<1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_down>,
82562306a36Sopenharmony_ci					<1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_down>;
82662306a36Sopenharmony_ci		};
82762306a36Sopenharmony_ci	};
82862306a36Sopenharmony_ci
82962306a36Sopenharmony_ci	touchscreen {
83062306a36Sopenharmony_ci		touch_int_l: touch-int-l {
83162306a36Sopenharmony_ci			rockchip,pins = <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>;
83262306a36Sopenharmony_ci		};
83362306a36Sopenharmony_ci
83462306a36Sopenharmony_ci		touch_reset_l: touch-reset-l {
83562306a36Sopenharmony_ci			rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
83662306a36Sopenharmony_ci		};
83762306a36Sopenharmony_ci	};
83862306a36Sopenharmony_ci
83962306a36Sopenharmony_ci	trackpad {
84062306a36Sopenharmony_ci		ap_i2c_tp_pu_en: ap-i2c-tp-pu-en {
84162306a36Sopenharmony_ci			rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_output_high>;
84262306a36Sopenharmony_ci		};
84362306a36Sopenharmony_ci
84462306a36Sopenharmony_ci		trackpad_int_l: trackpad-int-l {
84562306a36Sopenharmony_ci			rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>;
84662306a36Sopenharmony_ci		};
84762306a36Sopenharmony_ci	};
84862306a36Sopenharmony_ci
84962306a36Sopenharmony_ci	wifi: wifi {
85062306a36Sopenharmony_ci		wlan_module_reset_l: wlan-module-reset-l {
85162306a36Sopenharmony_ci			rockchip,pins = <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
85262306a36Sopenharmony_ci		};
85362306a36Sopenharmony_ci
85462306a36Sopenharmony_ci		bt_host_wake_l: bt-host-wake-l {
85562306a36Sopenharmony_ci			/* Kevin has an external pull up, but Gru does not */
85662306a36Sopenharmony_ci			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
85762306a36Sopenharmony_ci		};
85862306a36Sopenharmony_ci	};
85962306a36Sopenharmony_ci
86062306a36Sopenharmony_ci	write-protect {
86162306a36Sopenharmony_ci		ap_fw_wp: ap-fw-wp {
86262306a36Sopenharmony_ci			rockchip,pins = <1 RK_PC2 RK_FUNC_GPIO &pcfg_pull_up>;
86362306a36Sopenharmony_ci		};
86462306a36Sopenharmony_ci	};
86562306a36Sopenharmony_ci};
866