// SPDX-License-Identifier: (GPL-2.0+ OR MIT)

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include "rk3566-anbernic-rgxx3.dtsi"

/ {
	adc-joystick {
		compatible = "adc-joystick";
		io-channels = <&adc_mux 0>,
			      <&adc_mux 1>,
			      <&adc_mux 2>,
			      <&adc_mux 3>;
		pinctrl-0 = <&joy_mux_en>;
		pinctrl-names = "default";
		poll-interval = <60>;
		#address-cells = <1>;
		#size-cells = <0>;

		axis@0 {
			reg = <0>;
			abs-flat = <32>;
			abs-fuzz = <32>;
			abs-range = <1023 15>;
			linux,code = <ABS_X>;
		};

		axis@1 {
			reg = <1>;
			abs-flat = <32>;
			abs-fuzz = <32>;
			abs-range = <15 1023>;
			linux,code = <ABS_RX>;
		};

		axis@2 {
			reg = <2>;
			abs-flat = <32>;
			abs-fuzz = <32>;
			abs-range = <15 1023>;
			linux,code = <ABS_Y>;
		};

		axis@3 {
			reg = <3>;
			abs-flat = <32>;
			abs-fuzz = <32>;
			abs-range = <1023 15>;
			linux,code = <ABS_RY>;
		};
	};

	adc_mux: adc-mux {
		compatible = "io-channel-mux";
		channels = "left_x", "right_x", "left_y", "right_y";
		#io-channel-cells = <1>;
		io-channels = <&saradc 3>;
		io-channel-names = "parent";
		mux-controls = <&gpio_mux>;
		settle-time-us = <100>;
	};

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

	gpio_mux: mux-controller {
		compatible = "gpio-mux";
		mux-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>,
			    <&gpio0 RK_PB7 GPIO_ACTIVE_LOW>;
		#mux-control-cells = <0>;
	};
};

&cru {
	assigned-clocks = <&pmucru CLK_RTC_32K>, <&cru PLL_GPLL>,
			  <&pmucru PLL_PPLL>, <&cru PLL_VPLL>;
	assigned-clock-rates = <32768>, <1200000000>,
			       <200000000>, <241500000>;
};

&dsi_dphy0 {
	status = "okay";
};

&dsi0 {
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;

	ports {
		dsi0_in: port@0 {
			reg = <0>;
			dsi0_in_vp1: endpoint {
				remote-endpoint = <&vp1_out_dsi0>;
			};
		};

		dsi0_out: port@1 {
			reg = <1>;
			mipi_out_panel: endpoint {
				remote-endpoint = <&mipi_in_panel>;
			};
		};
	};

	panel: panel@0 {
		compatible = "anbernic,rg353p-panel", "newvision,nv3051d";
		reg = <0>;
		backlight = <&backlight>;
		pinctrl-names = "default";
		pinctrl-0 = <&lcd_rst>;
		reset-gpios = <&gpio4 RK_PA0 GPIO_ACTIVE_LOW>;
		vdd-supply = <&vcc3v3_lcd0_n>;

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

&gpio_keys_control {
	button-a {
		gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>;
		label = "EAST";
		linux,code = <BTN_EAST>;
	};

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

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

	button-thumbl {
		gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_LOW>;
		label = "THUMBL";
		linux,code = <BTN_THUMBL>;
	};

	button-thumbr {
		gpios = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>;
		label = "THUMBR";
		linux,code = <BTN_THUMBR>;
	};

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

&i2c0 {
	/* This hardware is physically present but unused. */
	power-monitor@62 {
		compatible = "cellwise,cw2015";
		reg = <0x62>;
		status = "disabled";
	};
};

&pinctrl {
	gpio-lcd {
		lcd_rst: lcd-rst {
			rockchip,pins =
				<4 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
		};
	};
};

&pwm4 {
	status = "okay";
};

&vp1 {
	vp1_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 {
		reg = <ROCKCHIP_VOP2_EP_MIPI0>;
		remote-endpoint = <&dsi0_in_vp1>;
	};
};
