// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2015 Heiko Stuebner <heiko@sntech.de>
 */

/dts-v1/;
#include "rk3368.dtsi"
#include <dt-bindings/input/input.h>

/ {
	model = "Rockchip R88";
	compatible = "rockchip,r88", "rockchip,rk3368";

	chosen {
		stdout-path = "serial2:115200n8";
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x0 0x0 0x40000000>;
	};

	emmc_pwrseq: emmc-pwrseq {
		compatible = "mmc-pwrseq-emmc";
		pinctrl-0 = <&emmc_reset>;
		pinctrl-names = "default";
		reset-gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_HIGH>;
	};

	keys: gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&pwr_key>;

		power {
			wakeup-source;
			gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
			label = "GPIO Power";
			linux,code = <KEY_POWER>;
		};
	};

	leds: gpio-leds {
		compatible = "gpio-leds";

		work_led: led-0 {
			gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
			label = "r88:green:led";
			pinctrl-names = "default";
			pinctrl-0 = <&led_ctl>;
		};
	};

	ir: ir-receiver {
		compatible = "gpio-ir-receiver";
		gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_LOW>;
		pinctrl-names = "default";
		pinctrl-0 = <&ir_int>;
	};

	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		clocks = <&hym8563>;
		clock-names = "ext_clock";
		pinctrl-names = "default";
		pinctrl-0 = <&bt_rst>, <&wifi_reg_on>;

		reset-gpios =
			/* BT_RST_N */
			<&gpio3 RK_PA5 GPIO_ACTIVE_LOW>,

			/* WL_REG_ON */
			<&gpio3 RK_PA4 GPIO_ACTIVE_LOW>;
	};

	vcc_18: vcc18-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc_18";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <1800000>;
		regulator-always-on;
		regulator-boot-on;
		vin-supply = <&vcc_sys>;
	};

	/* supplies both host and otg */
	vcc_host: vcc-host-regulator {
		compatible = "regulator-fixed";
		enable-active-high;
		gpio = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
		pinctrl-names = "default";
		pinctrl-0 = <&host_vbus_drv>;
		regulator-name = "vcc_host";
		regulator-always-on;
		regulator-boot-on;
		vin-supply = <&vcc_sys>;
	};

	vcc_io: vcc-io-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc_io";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		regulator-boot-on;
		vin-supply = <&vcc_sys>;
	};

	vcc_lan: vcc-lan-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc_lan";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		regulator-boot-on;
		vin-supply = <&vcc_io>;
	};

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

	vccio_wl: vccio-wl-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vccio_wl";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		regulator-boot-on;
		vin-supply = <&vcc_io>;
	};

	vdd_10: vdd-10-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vdd_10";
		regulator-min-microvolt = <1000000>;
		regulator-max-microvolt = <1000000>;
		regulator-always-on;
		regulator-boot-on;
		vin-supply = <&vcc_sys>;
	};
};

&emmc {
	bus-width = <8>;
	cap-mmc-highspeed;
	mmc-pwrseq = <&emmc_pwrseq>;
	non-removable;
	pinctrl-names = "default";
	pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
	status = "okay";
};

&gmac {
	phy-supply = <&vcc_lan>;
	phy-mode = "rmii";
	clock_in_out = "output";
	snps,reset-gpio = <&gpio3 RK_PB4 GPIO_ACTIVE_HIGH>;
	snps,reset-active-low;
	snps,reset-delays-us = <0 10000 1000000>;
	pinctrl-names = "default";
	pinctrl-0 = <&rmii_pins>;
	tx_delay = <0x30>;
	rx_delay = <0x10>;
	status = "okay";
};

&i2c0 {
	status = "okay";

	vdd_cpu: syr827@40 {
		compatible = "silergy,syr827";
		reg = <0x40>;
		fcs,suspend-voltage-selector = <1>;
		regulator-name = "vdd_cpu";
		regulator-enable-ramp-delay = <300>;
		regulator-min-microvolt = <712500>;
		regulator-max-microvolt = <1500000>;
		regulator-ramp-delay = <8000>;
		regulator-always-on;
		regulator-boot-on;
		vin-supply = <&vcc_sys>;
	};

	hym8563: hym8563@51 {
		compatible = "haoyu,hym8563";
		reg = <0x51>;
		#clock-cells = <0>;
		clock-frequency = <32768>;
		clock-output-names = "xin32k";
		/* rtc_int is not connected */
	};
};

&io_domains {
	status = "okay";

	audio-supply = <&vcc_io>;
	gpio30-supply = <&vcc_io>;
	gpio1830-supply = <&vcc_io>;
	wifi-supply = <&vccio_wl>;
};

&sdio0 {
	assigned-clocks = <&cru SCLK_SDIO0>;
	assigned-clock-parents = <&cru PLL_CPLL>;
	bus-width = <4>;
	cap-sd-highspeed;
	cap-sdio-irq;
	keep-power-in-suspend;
	mmc-pwrseq = <&sdio_pwrseq>;
	non-removable;
	pinctrl-names = "default";
	pinctrl-0 = <&sdio0_clk &sdio0_cmd &sdio0_bus4>;
	vmmc-supply = <&vcc_io>;
	vqmmc-supply = <&vccio_wl>;
	status = "okay";
};

&pinctrl {
	pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
		bias-disable;
		drive-strength = <8>;
	};

	pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
		bias-pull-up;
		drive-strength = <8>;
	};

	emmc {
		emmc_bus8: emmc-bus8 {
			rockchip,pins = <1 RK_PC2 2 &pcfg_pull_up_drv_8ma>,
					<1 RK_PC3 2 &pcfg_pull_up_drv_8ma>,
					<1 RK_PC4 2 &pcfg_pull_up_drv_8ma>,
					<1 RK_PC5 2 &pcfg_pull_up_drv_8ma>,
					<1 RK_PC6 2 &pcfg_pull_up_drv_8ma>,
					<1 RK_PC7 2 &pcfg_pull_up_drv_8ma>,
					<1 RK_PD0 2 &pcfg_pull_up_drv_8ma>,
					<1 RK_PD1 2 &pcfg_pull_up_drv_8ma>;
		};

		emmc-clk {
			rockchip,pins = <2 RK_PA4 2 &pcfg_pull_none_drv_8ma>;
		};

		emmc-cmd {
			rockchip,pins = <1 RK_PD2 2 &pcfg_pull_up_drv_8ma>;
		};

		emmc_reset: emmc-reset {
			rockchip,pins = <2 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	ir {
		ir_int: ir-int {
			rockchip,pins = <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	keys {
		pwr_key: pwr-key {
			rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	leds {
		stby_pwren: stby-pwren {
			rockchip,pins = <0 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		led_ctl: led-ctl {
			rockchip,pins = <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	sdio {
		wifi_reg_on: wifi-reg-on {
			rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		bt_rst: bt-rst {
			rockchip,pins = <3 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	usb {
		host_vbus_drv: host-vbus-drv {
			rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

&pmu_io_domains {
	status = "okay";

	pmu-supply = <&vcc_io>;
	vop-supply = <&vcc_io>;
};

&saradc {
	vref-supply = <&vcc_18>;
	status = "okay";
};

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

&uart2 {
	status = "okay";
};

&usb_host0_ehci {
	status = "okay";
};

&usb_otg {
	dr_mode = "host";
	status = "okay";
};

&wdt {
	status = "okay";
};
