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

#include "mt8167-pinfunc.h"
#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.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>;
					};
				};

				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 0 1000000>;
				enable-gpios = <&pio 25 0>;
				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>;
					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>;
				};
			};
	};

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

