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

				pwm0_pin_default: pwm0_pin_default {
					pins1 {
						pinmux = <MT8167_PIN_25_EINT25__FUNC_PWM_B>;
					};
				};
			};
	};

	fragment@1 {
		target = <&pwm>;
			__overlay__ {
				status = "okay";
				pinctrl-names = "default";
				pinctrl-0 = <&pwm0_pin_default>;
				#pwm-cells = <2>;
			};
	};

	fragment@2 {
		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@3 {
		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@4 {
		target = <&mipi_tx>;
			__overlay__ {
				status = "okay";
		};
	};


	fragment@5 {
		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>;
						};
					};
				};
			};
	};
};

