// 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";

		clocks = <&clkc CLKID_MPLL2>,
			 <&clkc CLKID_MPLL0>,
			 <&clkc CLKID_MPLL1>;

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

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

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

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

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

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

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