// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2022 Neil Armstrong <neil.armstrong@linaro.org>
 */

/dts-v1/;

#include "meson-g12b-s922x.dtsi"
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/sound/meson-g12a-toacodec.h>
#include <dt-bindings/sound/meson-g12a-tohdmitx.h>

/ {
	compatible = "hardkernel,odroid-go-ultra", "amlogic,s922x", "amlogic,g12b";
	model = "Hardkernel ODROID-GO-Ultra";

	aliases {
		serial0 = &uart_AO;
		rtc0 = &vrtc;
	};

	adc-joystick-left {
		compatible = "adc-joystick";
		io-channels = <&saradc 2>, <&saradc 3>;
		poll-interval = <10>;
		#address-cells = <1>;
		#size-cells = <0>;

		axis@0 {
			reg = <0>;
			linux,code = <ABS_Y>;
			abs-range = <3150 950>;
			abs-fuzz = <32>;
			abs-flat = <64>;
		};
		axis@1 {
			reg = <1>;
			linux,code = <ABS_X>;
			abs-range = <700 2900>;
			abs-fuzz = <32>;
			abs-flat = <64>;
		};
	};

	adc-joystick-right {
		compatible = "adc-joystick";
		io-channels = <&saradc 0>, <&saradc 1>;
		poll-interval = <10>;
		#address-cells = <1>;
		#size-cells = <0>;

		axis@0 {
			reg = <0>;
			linux,code = <ABS_RY>;
			abs-range = <3150 950>;
			abs-fuzz = <32>;
			abs-flat = <64>;
		};
		axis@1 {
			reg = <1>;
			linux,code = <ABS_RX>;
			abs-range = <800 3000>;
			abs-fuzz = <32>;
			abs-flat = <64>;
		};
	};

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

	codec_clk: codec-clk {
		compatible = "fixed-clock";
		clock-frequency = <12288000>;
		clock-output-names = "codec_clk";
		#clock-cells = <0>;
	};

	gpio-keys {
		compatible = "gpio-keys-polled";
		poll-interval = <10>;
		pinctrl-0 = <&keypad_gpio_pins>;
		pinctrl-names = "default";

		volume-up-button {
			label = "VOLUME-UP";
			linux,code = <KEY_VOLUMEUP>;
			gpios = <&gpio GPIOX_8 GPIO_ACTIVE_LOW>;
		};
		volume-down-button {
			label = "VOLUME-DOWN";
			linux,code = <KEY_VOLUMEDOWN>;
			gpios = <&gpio GPIOX_9 GPIO_ACTIVE_LOW>;
		};
		dpad-up-button {
			label = "DPAD-UP";
			linux,code = <BTN_DPAD_UP>;
			gpios = <&gpio GPIOX_0 GPIO_ACTIVE_LOW>;
		};
		dpad-down-button {
			label = "DPAD-DOWN";
			linux,code = <BTN_DPAD_DOWN>;
			gpios = <&gpio GPIOX_1 GPIO_ACTIVE_LOW>;
		};
		dpad-left-button {
			label = "DPAD-LEFT";
			linux,code = <BTN_DPAD_LEFT>;
			gpios = <&gpio GPIOX_2 GPIO_ACTIVE_LOW>;
		};
		dpad-right-button {
			label = "DPAD-RIGHT";
			linux,code = <BTN_DPAD_RIGHT>;
			gpios = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>;
		};
		a-button {
			label = "A";
			linux,code = <BTN_EAST>;
			gpios = <&gpio GPIOX_4 GPIO_ACTIVE_LOW>;
		};
		b-button {
			label = "B";
			linux,code = <BTN_SOUTH>;
			gpios = <&gpio GPIOX_5 GPIO_ACTIVE_LOW>;
		};
		y-button {
			label = "Y";
			linux,code = <BTN_WEST>;
			gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
		};
		x-button {
			label = "X";
			linux,code = <BTN_NORTH>;
			gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>;
		};
		f1-button {
			label = "F1";
			linux,code = <BTN_TRIGGER_HAPPY1>;
			gpios = <&gpio GPIOX_17 GPIO_ACTIVE_LOW>;
		};
		f2-button {
			label = "F2";
			linux,code = <BTN_TRIGGER_HAPPY2>;
			gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>;
		};
		f3-button {
			label = "F3";
			linux,code = <BTN_TRIGGER_HAPPY3>;
			gpios = <&gpio GPIOX_11 GPIO_ACTIVE_LOW>;
		};
		f4-button {
			label = "F4";
			linux,code = <BTN_TRIGGER_HAPPY4>;
			gpios = <&gpio GPIOX_12 GPIO_ACTIVE_LOW>;
		};
		f5-button {
			label = "F5";
			linux,code = <BTN_TRIGGER_HAPPY5>;
			gpios = <&gpio GPIOX_13 GPIO_ACTIVE_LOW>;
		};
		f6-button {
			label = "F6";
			linux,code = <BTN_TRIGGER_HAPPY6>;
			gpios = <&gpio GPIOX_16 GPIO_ACTIVE_LOW>;
		};
		top-left-button {
			label = "TOP Left";
			linux,code = <BTN_TL>;
			gpios = <&gpio GPIOX_14 GPIO_ACTIVE_LOW>;
		};
		top-left2-button {
			label = "TOP Left 2";
			linux,code = <BTN_TL2>;
			gpios = <&gpio GPIOX_19 GPIO_ACTIVE_LOW>;
		};
		top-right-button {
			label = "TOP Right";
			linux,code = <BTN_TR>;
			gpios = <&gpio GPIOX_15 GPIO_ACTIVE_LOW>;
		};
		top-right2-button {
			label = "TOP Right 2";
			linux,code = <BTN_TR2>;
			gpios = <&gpio GPIOX_18 GPIO_ACTIVE_LOW>;
		};
	};

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

	emmc_pwrseq: emmc-pwrseq {
		compatible = "mmc-pwrseq-emmc";
		reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
	};

	leds {
		compatible = "gpio-leds";

		led-blue {
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};
	};

	vdd_sys: regulator-vdd-sys {
		compatible = "regulator-fixed";
		regulator-name = "VDD_SYS";
		regulator-min-microvolt = <3800000>;
		regulator-max-microvolt = <3800000>;
		regulator-always-on;
	};

	sound {
		compatible = "amlogic,axg-sound-card";
		model = "Odroid GO Ultra";
		audio-widgets = "Microphone", "Mic Jack",
				"Headphone", "Headphones",
				"Speaker", "Internal Speakers";
		audio-aux-devs = <&tdmout_b>, <&tdmin_b>, <&speaker_amp>;
		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
				"TDM_B Playback", "TDMOUT_B OUT",
				"TDMIN_B IN 1", "TDM_B Capture",
				"TDMIN_B IN 4", "TDM_B Loopback",
				"TODDR_A IN 1", "TDMIN_B OUT",
				"MICL", "Mic Jack",
				"Headphones", "HPOL",
				"Headphones", "HPOR",
				"Speaker Amplifier INL", "HPOL",
				"Speaker Amplifier INR", "HPOR",
				"Internal Speakers", "Speaker Amplifier OUTL",
				"Internal Speakers", "Speaker Amplifier OUTR";

		assigned-clocks = <&clkc CLKID_MPLL2>,
				  <&clkc CLKID_MPLL0>,
				  <&clkc CLKID_MPLL1>;
		assigned-clock-parents = <0>, <0>, <0>;
		assigned-clock-rates = <294912000>,
				       <270950400>,
				       <393216000>;

		dai-link-0 {
			sound-dai = <&frddr_a>;
		};

		dai-link-1 {
			sound-dai = <&toddr_a>;
		};

		dai-link-2 {
			sound-dai = <&tdmif_b>;
			dai-format = "i2s";
			dai-tdm-slot-tx-mask-0 = <1 1>;
			mclk-fs = <256>;

			codec-0 {
				sound-dai = <&rk817>;
			};
		};
	};

	speaker_amp: speaker-amplifier {
		compatible = "simple-audio-amplifier";
		sound-name-prefix = "Speaker Amplifier";
		VCC-supply = <&hp_5v>;
	};
};

&arb {
	status = "okay";
};

&cpu0 {
	cpu-supply = <&vddcpu_b>;
	operating-points-v2 = <&cpu_opp_table_0>;
	clocks = <&clkc CLKID_CPU_CLK>;
	clock-latency = <50000>;
};

&cpu1 {
	cpu-supply = <&vddcpu_b>;
	operating-points-v2 = <&cpu_opp_table_0>;
	clocks = <&clkc CLKID_CPU_CLK>;
	clock-latency = <50000>;
};

&cpu100 {
	cpu-supply = <&vddcpu_a>;
	operating-points-v2 = <&cpub_opp_table_1>;
	clocks = <&clkc CLKID_CPUB_CLK>;
	clock-latency = <50000>;
};

&cpu101 {
	cpu-supply = <&vddcpu_a>;
	operating-points-v2 = <&cpub_opp_table_1>;
	clocks = <&clkc CLKID_CPUB_CLK>;
	clock-latency = <50000>;
};

&cpu102 {
	cpu-supply = <&vddcpu_a>;
	operating-points-v2 = <&cpub_opp_table_1>;
	clocks = <&clkc CLKID_CPUB_CLK>;
	clock-latency = <50000>;
};

&cpu103 {
	cpu-supply = <&vddcpu_a>;
	operating-points-v2 = <&cpub_opp_table_1>;
	clocks = <&clkc CLKID_CPUB_CLK>;
	clock-latency = <50000>;
};

/* RK817 only supports 12.5mV steps, round up the values */
&cpu_opp_table_0 {
	opp-1000000000 {
		opp-microvolt = <737500>;
	};
	opp-1200000000 {
		opp-microvolt = <737500>;
	};
	opp-1398000000 {
		opp-microvolt = <762500>;
	};
	opp-1512000000 {
		opp-microvolt = <800000>;
	};
	opp-1608000000 {
		opp-microvolt = <837500>;
	};
	opp-1704000000 {
		opp-microvolt = <862500>;
	};
	opp-1896000000 {
		opp-microvolt = <987500>;
	};
	opp-1992000000 {
		opp-microvolt = <1012500>;
	};
};

/* RK818 only supports 12.5mV steps, round up the values */
&cpub_opp_table_1 {
	opp-1000000000 {
		opp-microvolt = <775000>;
	};
	opp-1200000000 {
		opp-microvolt = <775000>;
	};
	opp-1398000000 {
		opp-microvolt = <800000>;
	};
	opp-1512000000 {
		opp-microvolt = <825000>;
	};
	opp-1608000000 {
		opp-microvolt = <862500>;
	};
	opp-1704000000 {
		opp-microvolt = <900000>;
	};
	opp-1800000000 {
		opp-microvolt = <987500>;
	};
	opp-1908000000 {
		opp-microvolt = <1025000>;
	};
};

&i2c_AO {
	status = "okay";
	pinctrl-0 = <&i2c_ao_sck_pins>, <&i2c_ao_sda_pins>;
	pinctrl-names = "default";

	rk818: pmic@1c {
		compatible = "rockchip,rk818";
		reg = <0x1c>;
		interrupt-parent = <&gpio_intc>;
		interrupts = <IRQID_GPIOAO_7 IRQ_TYPE_LEVEL_LOW>; /* GPIOAO_7 */
		#clock-cells = <1>;

		vcc1-supply = <&vdd_sys>;
		vcc2-supply = <&vdd_sys>;
		vcc3-supply = <&vdd_sys>;
		vcc4-supply = <&vdd_sys>;
		vcc6-supply = <&vdd_sys>;
		vcc7-supply = <&vcc_2v3>;
		vcc8-supply = <&vcc_2v3>;
		vcc9-supply = <&vddao_3v3>;
		boost-supply = <&vdd_sys>;

		regulators {
			vddcpu_a: DCDC_REG1 {
				regulator-name = "vddcpu_a";
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <775000>;
				regulator-max-microvolt = <1025000>;
				regulator-ramp-delay = <6001>;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <775000>;
				};
			};

			vdd_ee: DCDC_REG2 {
				regulator-name = "vdd_ee";
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <875000>;
				regulator-max-microvolt = <1250000>;
				regulator-ramp-delay = <6001>;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <875000>;
				};
			};

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

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

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

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

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

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

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

			OTG_SWITCH {
				regulator-name = "otg_switch";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};
		};
	};
};

&i2c3 {
	status = "okay";
	pinctrl-0 = <&i2c3_sda_a_pins>, <&i2c3_sck_a_pins>;
	pinctrl-names = "default";

	rk817: pmic@20 {
		compatible = "rockchip,rk817";
		reg = <0x20>;
		interrupt-parent = <&gpio_intc>;

		interrupts = <IRQID_GPIOAO_5 IRQ_TYPE_LEVEL_LOW>; /* GPIOAO_5 */

		vcc1-supply = <&vdd_sys>;
		vcc2-supply = <&vdd_sys>;
		vcc3-supply = <&vdd_sys>;
		vcc4-supply = <&vdd_sys>;
		vcc5-supply = <&vdd_sys>;
		vcc6-supply = <&vdd_sys>;
		vcc7-supply = <&vdd_sys>;
		vcc8-supply = <&vdd_sys>;
		vcc9-supply = <&rk817_boost>;

		#sound-dai-cells = <0>;
		clocks = <&codec_clk>;
		clock-names = "mclk";

		#clock-cells = <1>;

		regulators {
			vddcpu_b: DCDC_REG2 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <737500>;
				regulator-max-microvolt = <1012500>;
				regulator-ramp-delay = <6001>;
				regulator-initial-mode = <0x2>;
				regulator-name = "vddcpu_b";
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};

			vcc_2v3: DCDC_REG3 {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <2300000>;
				regulator-max-microvolt = <2400000>;
				regulator-initial-mode = <0x2>;
				regulator-name = "vcc_2v3";
				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

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

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

			rk817_boost: BOOST {
				regulator-always-on;
				regulator-boot-on;
				regulator-min-microvolt = <5000000>;
				regulator-max-microvolt = <5400000>;
				regulator-name = "rk817_boost";
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			usb_host: OTG_SWITCH {
				regulator-name = "usb_host";
				regulator-min-microvolt = <5000000>;
				regulator-max-microvolt = <5000000>;
				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};
		};
	};
};

&clkc_audio {
	status = "okay";
};

&eth_phy {
	status = "disabled";
};

&frddr_a {
	status = "okay";
};

&periphs_pinctrl {
	keypad_gpio_pins: keypad-gpio-state {
		mux {
			groups = "GPIOX_0", "GPIOX_1", "GPIOX_2", "GPIOX_3",
			         "GPIOX_4", "GPIOX_5", "GPIOX_6", "GPIOX_7",
				 "GPIOX_8", "GPIOX_9", "GPIOX_10", "GPIOX_11",
				 "GPIOX_12", "GPIOX_13", "GPIOX_14",  "GPIOX_15",
				 "GPIOX_16", "GPIOX_17", "GPIOX_18",  "GPIOX_19";
			function = "gpio_periphs";
			bias-pull-up;
			output-disable;
		};
	};
};

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

/* SD card */
&sd_emmc_b {
	status = "okay";
	pinctrl-0 = <&sdcard_c_pins>;
	pinctrl-1 = <&sdcard_clk_gate_c_pins>;
	pinctrl-names = "default", "clk-gate";

	bus-width = <4>;
	cap-sd-highspeed;
	max-frequency = <50000000>;
	disable-wp;

	cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
	vmmc-supply = <&vcc_sd>;
	vqmmc-supply = <&vddio_c>;

};

/* eMMC */
&sd_emmc_c {
	status = "okay";
	pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
	pinctrl-1 = <&emmc_clk_gate_pins>;
	pinctrl-names = "default", "clk-gate";

	bus-width = <8>;
	cap-mmc-highspeed;
	mmc-ddr-1_8v;
	mmc-hs200-1_8v;
	max-frequency = <200000000>;
	disable-wp;

	mmc-pwrseq = <&emmc_pwrseq>;
	vmmc-supply = <&vcc_sd>;
	vqmmc-supply = <&vddio_ao1v8>;
};


&tdmif_b {
	pinctrl-0 = <&tdm_b_dout0_pins>, <&tdm_b_fs_pins>, <&tdm_b_sclk_pins>, <&tdm_b_din1_pins>;
	pinctrl-names = "default";
	status = "okay";

	assigned-clocks = <&clkc_audio AUD_CLKID_TDM_SCLK_PAD1>,
			  <&clkc_audio AUD_CLKID_TDM_LRCLK_PAD1>;
	assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_B_SCLK>,
				 <&clkc_audio AUD_CLKID_MST_B_LRCLK>;
	assigned-clock-rates = <0>, <0>;
};

&tdmin_b {
	status = "okay";
};

&tdmout_b {
	status = "okay";
};

&toddr_a {
	status = "okay";
};

&uart_AO {
	status = "okay";
	pinctrl-0 = <&uart_ao_a_pins>;
	pinctrl-names = "default";
};

&usb {
	status = "okay";
	dr_mode = "peripheral";
};

&usb2_phy0 {
	status = "okay";
};

&usb2_phy1 {
	status = "okay";
	phy-supply = <&usb_host>;
};
