// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2016 Matthias Brugger <mbrugger@suse.com>
 */

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

/ {
	model = "Rockchip Orion R68";
	compatible = "tronsmart,orion-r68-meta", "rockchip,rk3368";

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

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

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

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

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

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

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

		red_led: led-0 {
			gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
			label = "orion:red:led";
			pinctrl-names = "default";
			pinctrl-0 = <&led_ctl>;
			default-state = "on";
		};

		blue_led: led-1 {
			gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
			label = "orion:blue:led";
			pinctrl-names = "default";
			pinctrl-0 = <&stby_pwren>;
			default-state = "off";
		};
	};

	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";
		gpio = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
		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_sd: vcc-sd-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc_sd";
		gpio = <&gpio3 RK_PB3 GPIO_ACTIVE_LOW>;
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;
		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_sd: vcc-io-sd-regulator {
		compatible = "regulator-fixed";
		regulator-name= "vccio_sd";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		regulator-boot-on;
		vin-supply = <&vcc_io>;
	};

	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>;
	mmc-hs200-1_2v;
	mmc-hs200-1_8v;
	non-removable;
	pinctrl-names = "default";
	pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
	status = "okay";
};

&gmac {
	assigned-clocks = <&cru SCLK_MAC>;
	assigned-clock-parents = <&ext_gmac>;
	clock_in_out = "input";
	phy-supply = <&vcc_lan>;
	phy-mode = "rgmii";
	pinctrl-names = "default";
	pinctrl-0 = <&rgmii_pins>;
	snps,reset-gpio = <&gpio3 RK_PB4 GPIO_ACTIVE_HIGH>;
	snps,reset-active-low;
	snps,reset-delays-us = <0 10000 1000000>;
	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 */
	};
};

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

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

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

	sdmmc {
		sdmmc_clk: sdmmc-clk {
			rockchip,pins = <2 RK_PB1 1 &pcfg_pull_none_drv_8ma>;
		};

		sdmmc_cmd: sdmmc-cmd {
			rockchip,pins = <2 RK_PB2 1 &pcfg_pull_up_drv_8ma>;
		};

		sdmmc_cd: sdmmc-cd {
			rockchip,pins = <2 RK_PB3 1 &pcfg_pull_up_drv_8ma>;
		};

		sdmmc_bus1: sdmmc-bus1 {
			rockchip,pins = <2 RK_PA5 1 &pcfg_pull_up_drv_8ma>;
		};

		sdmmc_bus4: sdmmc-bus4 {
			rockchip,pins = <2 RK_PA5 1 &pcfg_pull_up_drv_8ma>,
					<2 RK_PA6 1 &pcfg_pull_up_drv_8ma>,
					<2 RK_PA7 1 &pcfg_pull_up_drv_8ma>,
					<2 RK_PB0 1 &pcfg_pull_up_drv_8ma>;
		};
	};

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

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

&sdmmc {
	bus-width = <4>;
	clock-frequency = <50000000>;
	max-frequency = <50000000>;
	cap-sd-highspeed;
	card-detect-delay = <200>;
	pinctrl-names = "default";
	pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
	vmmc-supply = <&vcc_sd>;
	vqmmc-supply = <&vccio_sd>;
	status = "okay";
};

&uart2 {
	status = "okay";
};

&uart4 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart4_xfer>;
	status = "okay";
};

&usb_host0_ehci {
	status = "okay";
};

&usb_otg {
	status = "okay";
};

&wdt {
	status = "okay";
};
