// SPDX-License-Identifier: BSD-3-Clause
/*
 * Copyright (c) 2024, Linaro Limited
 */

/*
 * Display Card kit overlay
 * This requires S5702 Switch 7 to be turned to OFF to route DSI0 to the display panel
 */

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>

/dts-v1/;
/plugin/;

/* Disable HDMI bridge related nodes (mutually exclusive with the display card) */

&i2c6 {
	status = "disabled";
};

&lt9611_1v2 {
	status = "disabled";
};

&lt9611_3v3 {
	status = "disabled";
};

&vreg_bob_3v3 {
	status = "disabled";
};

&lt9611_codec {
	status = "disabled";
};

&mdss_dsi0 {
	#address-cells = <1>;
	#size-cells = <0>;

	panel@0 {
		compatible = "visionox,vtdr6130";
		reg = <0>;

		reset-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;

		vddio-supply = <&vreg_l12b_1p8>;
		vci-supply = <&vreg_l13b_3p0>;
		vdd-supply = <&vreg_l11b_1p2>;

		pinctrl-0 = <&disp0_reset_n_active>, <&mdp_vsync>;
		pinctrl-1 = <&disp0_reset_n_suspend>, <&mdp_vsync>;
		pinctrl-names = "default", "sleep";

		port {
			panel0_in: endpoint {
				remote-endpoint = <&mdss_dsi0_out>;
			};
		};
	};

	ports {
		#address-cells = <1>;
		#size-cells = <0>;

		port@1 {
			reg = <1>;

			mdss_dsi0_out: endpoint {
				remote-endpoint = <&panel0_in>;
			};
		};
	};
};

&spi4 {
	#address-cells = <1>;
	#size-cells = <0>;

	status = "okay";

	touchscreen@0 {
		compatible = "goodix,gt9916";
		reg = <0>;

		interrupt-parent = <&tlmm>;
		interrupts = <162 IRQ_TYPE_LEVEL_LOW>;

		reset-gpios = <&tlmm 161 GPIO_ACTIVE_LOW>;

		avdd-supply = <&vreg_l14b_3p2>;

		spi-max-frequency = <1000000>;

		touchscreen-size-x = <1080>;
		touchscreen-size-y = <2400>;

		pinctrl-0 = <&ts_irq>, <&ts_reset>;
		pinctrl-names = "default";
	};
};

&tlmm {
	disp0_reset_n_active: disp0-reset-n-active-state {
		pins = "gpio133";
		function = "gpio";
		drive-strength = <8>;
		bias-disable;
	};

	disp0_reset_n_suspend: disp0-reset-n-suspend-state {
		pins = "gpio133";
		function = "gpio";
		drive-strength = <2>;
		bias-pull-down;
	};

	mdp_vsync: mdp-vsync-state {
		pins = "gpio86";
		function = "mdp_vsync";
		drive-strength = <2>;
		bias-pull-down;
	};

	ts_irq: ts-irq-state {
		pins = "gpio161";
		function = "gpio";
		drive-strength = <8>;
		bias-pull-up;
		output-disable;
	};

	ts_reset: ts-reset-state {
		pins = "gpio162";
		function = "gpio";
		drive-strength = <8>;
		bias-pull-up;
	};
};
