// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2024 Chris Morgan <macromorgan@hotmail.com>
 */

/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include "rk3326.dtsi"

/ {
	model = "GameForce Chi";
	compatible = "gameforce,chi", "rockchip,rk3326";
	chassis-type = "handset";

	aliases {
		mmc0 = &sdmmc;
		mmc1 = &sdio;
	};

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

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

		axis@0 {
			reg = <0>;
			abs-flat = <10>;
			abs-fuzz = <10>;
			abs-range = <850 175>;
			linux,code = <ABS_Y>;
		};

		axis@1 {
			reg = <1>;
			abs-flat = <10>;
			abs-fuzz = <10>;
			abs-range = <800 190>;
			linux,code = <ABS_X>;
		};
	};

	adc_keys: adc-keys {
		compatible = "adc-keys";
		io-channels = <&saradc 2>;
		io-channel-names = "buttons";
		keyup-threshold-microvolt = <1800000>;
		poll-interval = <60>;

		button-1 {
			label = "HAPPY1";
			linux,code = <BTN_TRIGGER_HAPPY1>;
			press-threshold-microvolt = <15000>;
		};

		button-2 {
			label = "HAPPY2";
			linux,code = <BTN_TRIGGER_HAPPY2>;
			press-threshold-microvolt = <300000>;
		};
	};

	backlight: backlight {
		compatible = "pwm-backlight";
		power-supply = <&vcc_bl>;
		pwms = <&pwm1 0 25000 0>;
	};

	battery: battery {
		compatible = "simple-battery";
		charge-full-design-microamp-hours = <3000000>;
		charge-term-current-microamp = <300000>;
		constant-charge-current-max-microamp = <1500000>;
		constant-charge-voltage-max-microvolt = <4200000>;
		factory-internal-resistance-micro-ohms = <180000>;
		ocv-capacity-celsius = <20>;
		ocv-capacity-table-0 =  <4106000 100>, <4071000 95>, <4018000 90>, <3975000 85>,
					<3946000 80>, <3908000 75>, <3877000 70>, <3853000 65>,
					<3834000 60>, <3816000 55>, <3802000 50>, <3788000 45>,
					<3774000 40>, <3760000 35>, <3748000 30>, <3735000 25>,
					<3718000 20>, <3697000 15>, <3685000 10>, <3625000 5>,
					<3400000 0>;
		voltage-max-design-microvolt = <4250000>;
		voltage-min-design-microvolt = <3400000>;
	};

	gpio_leds: gpio-leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pins>;

		red_led: led-0 {
			color = <LED_COLOR_ID_RED>;
			gpios = <&gpio3 RK_PC4 GPIO_ACTIVE_HIGH>;
		};

		green_led: led-1 {
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
		};

		blue_led: led-2 {
			color = <LED_COLOR_ID_BLUE>;
			gpios = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>;
		};

		white_led: led-3 {
			color = <LED_COLOR_ID_WHITE>;
			function = LED_FUNCTION_STATUS;
			gpios = <&gpio3 RK_PB3 GPIO_ACTIVE_HIGH>;
		};

		chg_led: led-4 {
			color = <LED_COLOR_ID_RED>;
			function = LED_FUNCTION_CHARGING;
			gpios = <&gpio3 RK_PB2 GPIO_ACTIVE_HIGH>;
		};

	};

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

		button-a {
			gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_LOW>;
			label = "EAST";
			linux,code = <BTN_EAST>;
		};

		button-b {
			gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>;
			label = "SOUTH";
			linux,code = <BTN_SOUTH>;
		};

		button-down {
			gpios = <&gpio1 RK_PB5 GPIO_ACTIVE_LOW>;
			label = "DPAD-DOWN";
			linux,code = <BTN_DPAD_DOWN>;
		};

		button-home {
			gpios = <&gpio2 RK_PA0 GPIO_ACTIVE_LOW>;
			label = "HOME";
			linux,code = <BTN_MODE>;
		};

		button-l1 {
			gpios = <&gpio2 RK_PA6 GPIO_ACTIVE_LOW>;
			label = "TL";
			linux,code = <BTN_TL>;
		};

		button-l2 {
			gpios = <&gpio2 RK_PA4 GPIO_ACTIVE_LOW>;
			label = "TL2";
			linux,code = <BTN_TL2>;
		};

		button-left {
			gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_LOW>;
			label = "DPAD-LEFT";
			linux,code = <BTN_DPAD_LEFT>;
		};

		button-r1 {
			gpios = <&gpio2 RK_PA7 GPIO_ACTIVE_LOW>;
			label = "TR";
			linux,code = <BTN_TR>;
		};

		button-r2 {
			gpios = <&gpio2 RK_PA5 GPIO_ACTIVE_LOW>;
			label = "TR2";
			linux,code = <BTN_TR2>;
		};

		button-right {
			gpios = <&gpio1 RK_PB7 GPIO_ACTIVE_LOW>;
			label = "DPAD-RIGHT";
			linux,code = <BTN_DPAD_RIGHT>;
		};

		button-select {
			gpios = <&gpio2 RK_PA3 GPIO_ACTIVE_LOW>;
			label = "SELECT";
			linux,code = <BTN_SELECT>;
		};

		button-start {
			gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_LOW>;
			label = "START";
			linux,code = <BTN_START>;
		};

		button-up {
			gpios = <&gpio1 RK_PB4 GPIO_ACTIVE_LOW>;
			label = "DPAD-UP";
			linux,code = <BTN_DPAD_UP>;
		};

		button-x {
			gpios = <&gpio2 RK_PB3 GPIO_ACTIVE_LOW>;
			label = "NORTH";
			linux,code = <BTN_NORTH>;
		};

		button-y {
			gpios = <&gpio2 RK_PB2 GPIO_ACTIVE_LOW>;
			label = "WEST";
			linux,code = <BTN_WEST>;
		};
	};

	multi-led {
		compatible = "leds-group-multicolor";
		color = <LED_COLOR_ID_RGB>;
		function = LED_FUNCTION_KBD_BACKLIGHT;
		leds = <&red_led>, <&green_led>, <&blue_led>;
	};

	spk_amp: audio-amplifier {
		compatible = "simple-audio-amplifier";
		enable-gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_HIGH>;
		pinctrl-0 = <&spk_amp_enable_h>;
		pinctrl-names = "default";
		sound-name-prefix = "Speaker Amp";
	};

	sound {
		compatible = "simple-audio-card";
		pinctrl-0 = <&hp_det>;
		pinctrl-names = "default";
		simple-audio-card,name = "rk817_ext";
		simple-audio-card,aux-devs = <&spk_amp>;
		simple-audio-card,format = "i2s";
		simple-audio-card,hp-det-gpio = <&gpio2 RK_PC6 GPIO_ACTIVE_HIGH>;
		simple-audio-card,mclk-fs = <256>;
		simple-audio-card,widgets =
			"Microphone", "Mic Jack",
			"Headphone", "Headphones",
			"Speaker", "Internal Speakers";
		simple-audio-card,routing =
			"MICL", "Mic Jack",
			"Headphones", "HPOL",
			"Headphones", "HPOR",
			"Internal Speakers", "Speaker Amp OUTL",
			"Internal Speakers", "Speaker Amp OUTR",
			"Speaker Amp INL", "HPOL",
			"Speaker Amp INR", "HPOR";
		simple-audio-card,pin-switches = "Internal Speakers";

		simple-audio-card,codec {
			sound-dai = <&rk817>;
		};

		simple-audio-card,cpu {
			sound-dai = <&i2s1_2ch>;
		};
	};

	vibrator_left: pwm-vibrator-l {
		compatible = "pwm-vibrator";
		pwm-names = "enable";
		pwms = <&pwm4 0 25000 0>;
	};

	vibrator_right: pwm-vibrator-r {
		compatible = "pwm-vibrator";
		pwm-names = "enable";
		pwms = <&pwm5 0 25000 0>;
	};

	sdio_pwrseq: sdio-pwrseq {
		compatible = "mmc-pwrseq-simple";
		clocks = <&rk817 1>;
		clock-names = "ext_clock";
		pinctrl-0 = <&wifi_enable_h>;
		pinctrl-names = "default";
		post-power-on-delay-ms = <200>;
		reset-gpios = <&gpio0 RK_PA2 GPIO_ACTIVE_LOW>;
	};

	vccsys: vccsys-regulator {
		compatible = "regulator-fixed";
		regulator-name = "vcc3v8_sys";
		regulator-always-on;
		regulator-min-microvolt = <3800000>;
		regulator-max-microvolt = <3800000>;
	};
};

&cpu0 {
	cpu-supply = <&vdd_arm>;
};

&cpu1 {
	cpu-supply = <&vdd_arm>;
};

&cpu2 {
	cpu-supply = <&vdd_arm>;
};

&cpu3 {
	cpu-supply = <&vdd_arm>;
};

&display_subsystem {
	status = "okay";
};

&dsi {
	status = "okay";

	internal_display: panel@0 {
		reg = <0>;
		compatible = "gameforce,chi-panel";
		backlight = <&backlight>;
		iovcc-supply = <&vcc_lcd>;
		vcc-supply = <&vcc_lcd>;
		reset-gpios = <&gpio3 RK_PA0 GPIO_ACTIVE_LOW>;

		port {
			mipi_in_panel: endpoint {
				remote-endpoint = <&mipi_out_panel>;
			};
		};
	};

	ports {
		mipi_out: port@1 {
			reg = <1>;

			mipi_out_panel: endpoint {
				remote-endpoint = <&mipi_in_panel>;
			};
		};
	};
};

&dsi_dphy {
	status = "okay";
};

&gpu {
	mali-supply = <&vdd_logic>;
	status = "okay";
};

&i2c0 {
	clock-frequency = <400000>;
	i2c-scl-falling-time-ns = <16>;
	i2c-scl-rising-time-ns = <280>;
	status = "okay";

	rk817: pmic@20 {
		compatible = "rockchip,rk817";
		reg = <0x20>;
		#clock-cells = <1>;
		clock-names = "mclk";
		clock-output-names = "rk808-clkout1", "xin32k";
		clocks = <&cru SCLK_I2S1_OUT>;
		interrupt-parent = <&gpio0>;
		interrupts = <RK_PC1 IRQ_TYPE_LEVEL_LOW>;
		pinctrl-0 = <&pmic_int>, <&i2s1_2ch_mclk>;
		pinctrl-names = "default";
		#sound-dai-cells = <0>;
		system-power-controller;
		wakeup-source;

		vcc1-supply = <&vccsys>;
		vcc2-supply = <&vccsys>;
		vcc3-supply = <&vccsys>;
		vcc4-supply = <&vccsys>;
		vcc5-supply = <&vccsys>;
		vcc6-supply = <&vccsys>;
		vcc7-supply = <&vcc_3v0>;
		vcc8-supply = <&vccsys>;
		vcc9-supply = <&dcdc_boost>;

		regulators {
			vdd_logic: DCDC_REG1 {
				regulator-always-on;
				regulator-boot-on;
				regulator-max-microvolt = <1150000>;
				regulator-min-microvolt = <950000>;
				regulator-name = "vdd_logic";
				regulator-ramp-delay = <6001>;

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <950000>;
				};
			};

			vdd_arm: DCDC_REG2 {
				regulator-always-on;
				regulator-boot-on;
				regulator-max-microvolt = <1350000>;
				regulator-min-microvolt = <950000>;
				regulator-name = "vdd_arm";
				regulator-ramp-delay = <6001>;

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-suspend-microvolt = <950000>;
				};
			};

			vcc_ddr: DCDC_REG3 {
				regulator-always-on;
				regulator-boot-on;
				regulator-name = "vcc_ddr";

				regulator-state-mem {
					regulator-on-in-suspend;
				};
			};

			vcc_3v0: DCDC_REG4 {
				regulator-always-on;
				regulator-boot-on;
				regulator-max-microvolt = <3000000>;
				regulator-min-microvolt = <3000000>;
				regulator-name = "vcc_3v0";

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-suspend-microvolt = <3000000>;
				};
			};

			vcc_1v8: LDO_REG2 {
				regulator-always-on;
				regulator-boot-on;
				regulator-max-microvolt = <1800000>;
				regulator-min-microvolt = <1800000>;
				regulator-name = "vcc_1v8";

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1800000>;
				};
			};

			vdd_1v0: LDO_REG3 {
				regulator-always-on;
				regulator-boot-on;
				regulator-max-microvolt = <1000000>;
				regulator-min-microvolt = <1000000>;
				regulator-name = "vdd_1v0";

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <1000000>;
				};
			};

			vcc_3v0_pmu: LDO_REG4 {
				regulator-always-on;
				regulator-boot-on;
				regulator-max-microvolt = <3000000>;
				regulator-min-microvolt = <3000000>;
				regulator-name = "vcc_3v0_pmu";

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3000000>;
				};
			};

			vccio_sd: LDO_REG5 {
				regulator-always-on;
				regulator-boot-on;
				regulator-max-microvolt = <3300000>;
				regulator-min-microvolt = <1800000>;
				regulator-name = "vccio_sd";

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vcc_sd: LDO_REG6 {
				regulator-boot-on;
				regulator-max-microvolt = <3300000>;
				regulator-min-microvolt = <3300000>;
				regulator-name = "vcc_sd";

				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vcc_bl: LDO_REG7 {
				regulator-max-microvolt = <3300000>;
				regulator-min-microvolt = <3300000>;
				regulator-name = "vcc_bl";

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			vcc_lcd: LDO_REG8 {
				regulator-max-microvolt = <2800000>;
				regulator-min-microvolt = <2800000>;
				regulator-name = "vcc_lcd";

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-suspend-microvolt = <2800000>;
				};
			};

			vcc_wifi: LDO_REG9 {
				regulator-always-on;
				regulator-boot-on;
				regulator-max-microvolt = <3300000>;
				regulator-min-microvolt = <3300000>;
				regulator-name = "vcc_wifi";

				regulator-state-mem {
					regulator-off-in-suspend;
					regulator-suspend-microvolt = <3300000>;
				};
			};

			dcdc_boost: BOOST {
				regulator-max-microvolt = <5000000>;
				regulator-min-microvolt = <5000000>;
				regulator-name = "dcdc_boost";

				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};

			otg_switch: OTG_SWITCH {
				regulator-name = "otg_switch";

				regulator-state-mem {
					regulator-off-in-suspend;
				};
			};
		};

		rk817_charger: charger {
			monitored-battery = <&battery>;
			rockchip,resistor-sense-micro-ohms = <10000>;
			rockchip,sleep-enter-current-microamp = <300000>;
			rockchip,sleep-filter-current-microamp = <100000>;
		};
	};
};

&i2s1_2ch {
	status = "okay";
};

&io_domains {
	vccio1-supply = <&vcc_3v0_pmu>;
	vccio2-supply = <&vccio_sd>;
	vccio3-supply = <&vcc_3v0>;
	vccio4-supply = <&vcc_3v0>;
	vccio5-supply = <&vcc_3v0>;
	vccio6-supply = <&vcc_3v0>;
	status = "okay";
};

&pinctrl {
	bluetooth-pins {
		bt_reset: bt-reset {
			rockchip,pins =
				<0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_down>;
		};

		bt_wake_dev: bt-wake-dev {
			rockchip,pins =
				<0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
		};

		bt_wake_host: bt-wake-host {
			rockchip,pins =
				<0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	headphone {
		hp_det: hp-det {
			rockchip,pins =
				<2 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	gpio-btns {
		btn_pins_ctrl: btn-pins-ctrl {
			rockchip,pins =
				<1 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>,
				<1 RK_PB5 RK_FUNC_GPIO &pcfg_pull_up>,
				<1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>,
				<1 RK_PB7 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>,
				<2 RK_PB3 RK_FUNC_GPIO &pcfg_pull_up>;
		};
	};

	gpio-leds {
		led_pins: led-pins {
			rockchip,pins =
				<3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>,
				<3 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>,
				<3 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>,
				<3 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>,
				<3 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	pmic {
		pmic_int: pmic-int {
			rockchip,pins =
				<0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_up>;
		};

		soc_slppin_gpio: soc_slppin_gpio {
			rockchip,pins =
				<0 RK_PA4 RK_FUNC_GPIO &pcfg_output_low>;
		};

		soc_slppin_rst: soc_slppin_rst {
			rockchip,pins =
				<0 RK_PA4 2 &pcfg_pull_none>;
		};

		soc_slppin_slp: soc_slppin_slp {
			rockchip,pins =
				<0 RK_PA4 1 &pcfg_pull_none>;
		};
	};

	sdio-pwrseq {
		wifi_enable_h: wifi-enable-h {
			rockchip,pins =
				<0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};

	speaker {
		spk_amp_enable_h: spk-amp-enable-h {
			rockchip,pins =
				<2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

&pmu_io_domains {
	pmuio1-supply = <&vcc_1v8>;
	pmuio2-supply = <&vcc_3v0_pmu>;
	status = "okay";
};

&pwm1 {
	status = "okay";
};

&pwm4 {
	status = "okay";
};

&pwm5 {
	status = "okay";
};

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

&sdio {
	bus-width = <4>;
	cap-sd-highspeed;
	cap-sdio-irq;
	disable-wp;
	keep-power-in-suspend;
	mmc-pwrseq = <&sdio_pwrseq>;
	no-mmc;
	no-sd;
	non-removable;
	sd-uhs-sdr104;
	status = "okay";
};

&sdmmc {
	cap-mmc-highspeed;
	cap-sd-highspeed;
	no-sdio;
	sd-uhs-sdr12;
	sd-uhs-sdr25;
	sd-uhs-sdr50;
	sd-uhs-sdr104;
	vmmc-supply = <&vcc_sd>;
	vqmmc-supply = <&vccio_sd>;
	status = "okay";
};

&sfc {
	#address-cells = <1>;
	pinctrl-0 = <&sfc_clk &sfc_cs0 &sfc_bus2>;
	pinctrl-names = "default";
	#size-cells = <0>;
	status = "okay";

	flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <108000000>;
		spi-rx-bus-width = <2>;
		spi-tx-bus-width = <1>;
	};
};

&tsadc {
	status = "okay";
};

&u2phy {
	status = "okay";

	u2phy_otg: otg-port {
		status = "okay";
	};
};

&usb20_otg {
	status = "okay";
};

/*
 * The right ADC joystick exists connected to an unknown ADC
 * controller which can be communicated with via uart0. This ADC device
 * is an 8-pin SOIC with no markings located right next to the left ADC
 * joystick ribbon cable. The pinout for this ADC controller appears to
 * be pin 1 - VCC (2.8v), pin 2 - 1.8v (clk maybe?), pin 3 - GPIO 10,
 * pin 4 - unknown, pin 5 - unknown, pin 6 - analog in, pin 7 - analog in,
 * pin 8 - ground. There is currently a userspace UART driver for this
 * device but it only works with the BSP joystick driver.
 */
&uart0 {
	status = "okay";
};

/*
 * Bluetooth was not working on BSP and is not currently working on
 * mainline due to missing firmware. Bluetooth requires removal of DMA
 * or else it will not probe.
 */
&uart1 {
	/delete-property/ dma-names;
	/delete-property/ dmas;
	uart-has-rtscts;
	status = "okay";

	bluetooth: bluetooth {
		compatible = "realtek,rtl8723ds-bt";
		device-wake-gpios = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
		enable-gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
		host-wake-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_HIGH>;
		pinctrl-0 = <&bt_reset>, <&bt_wake_dev>, <&bt_wake_host>;
		pinctrl-names = "default";
	};
};

&uart2 {
	pinctrl-0 = <&uart2m1_xfer>;
	pinctrl-names = "default";
	status = "okay";
};

&vopb {
	status = "okay";
};

&vopb_mmu {
	status = "okay";
};
