// Set display panel config
/dts-v1/;
/plugin/;

#include "mt8167-pinfunc.h"
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	compatible = "mediatek,mt8167";
	fragment@0 {
		target = <&pio>;
			__overlay__ {

				panel_pins: panel_pins {
					pins1 {
						pinmux = <MT8167_PIN_66_LCM_RST__FUNC_GPIO66>;
						output-high;
					};
				};

				ts_pin_nint: ts_pin_nint {
					pins1 {
						pinmux = <MT8167_PIN_16_EINT16__FUNC_GPIO16>;
						input-enable;
						bias-pull-up;
					};
				};

				ts_pin_nrst: ts_pin_nrst {
					pins1 {
						pinmux = <MT8167_PIN_21_EINT21__FUNC_GPIO21>;
						output-high;
					};
				};
			};
	};

	fragment@1 {
		target = <&backlight>;
			__overlay__ {
				status = "okay";
				pwms = <&pwm 1 1000000>;
				brightness-levels = <0 4 8 16 32 64 128 255>;
				default-brightness-level = <6>;
		};
	};

	fragment@2 {
		target = <&i2c2>;
			__overlay__ {
				focaltech@38 {
					status = "okay";
					compatible = "focaltech,fts";
					reg = <0x38>;
					pinctrl-0 = <&ts_pin_nint>;
					interrupt-parent = <&pio>;
					interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
					focaltech,panel-type = <FT6236>;
					focaltech,reset-gpio = <&pio 21 GPIO_ACTIVE_HIGH>;
					focaltech,irq-gpio = <&pio 16 GPIO_ACTIVE_HIGH>;
					focaltech,max-touch-number = <5>;
					focaltech,display-coords = <0 0 320 480>;
					touchscreen-size-x = <320>;
					touchscreen-size-y = <480>;
				};
			};
	};

	fragment@3 {
		target = <&mipi_tx>;
			__overlay__ {
				status = "okay";
		};
	};


	fragment@4 {
		target = <&dsi>;
			__overlay__ {
				status = "okay";
				#address-cells = <1>;
				#size-cells = <0>;

				ports {
					port@0 {
						reg = <0>;
						dsi_out: endpoint {
							remote-endpoint = <&panel_in>;
						};
					};
				};

				panel@0 {
					compatible = "startek,ili9488";
					reg = <0>;
					pinctrl-names = "default";
					pinctrl-0 = <&panel_pins>;
					reset-gpio = <&pio 66 GPIO_ACTIVE_HIGH>;
					dsi-lanes = <1>;
					panel-width-mm = <49>;
					panel-height-mm = <74>;
					backlight = <&backlight>;
					status = "okay";

					port {
						panel_in: endpoint {
							remote-endpoint = <&dsi_out>;
						};
					};
				};
			};
	};
};

