Add display device tree overlay

Add display overlay. Currently only backlight pwm is enabled.

Also add pinctrl mapping for the pwm driver.

Change-Id: I961a0196b87f784c3f5bd124d56815e52a646562
diff --git a/arch/arm64/boot/dts/mediatek/Makefile b/arch/arm64/boot/dts/mediatek/Makefile
index 1eb3d72..0045410 100644
--- a/arch/arm64/boot/dts/mediatek/Makefile
+++ b/arch/arm64/boot/dts/mediatek/Makefile
@@ -6,7 +6,8 @@
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt6797-x20-dev.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt7622-rfb1.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8167-coral.dtb
-dtb-$(CONFIG_ARCH_MEDIATEK) += mt8167-coral-overlay.dtb
+dtb-$(CONFIG_ARCH_MEDIATEK) += mt8167-coral-evt2-overlay.dtb
+dtb-$(CONFIG_ARCH_MEDIATEK) += mt8167-coral-display-overlay.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8167-pumpkin.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8173-evb.dtb
 dtb-$(CONFIG_ARCH_MEDIATEK) += mt8183-evb.dtb
diff --git a/arch/arm64/boot/dts/mediatek/mt8167-coral-display-overlay.dts b/arch/arm64/boot/dts/mediatek/mt8167-coral-display-overlay.dts
new file mode 100644
index 0000000..0be0d31
--- /dev/null
+++ b/arch/arm64/boot/dts/mediatek/mt8167-coral-display-overlay.dts
@@ -0,0 +1,28 @@
+// Set display panel config
+/dts-v1/;
+/plugin/;
+
+#include "mt8167-pinfunc.h"
+
+/ {
+	compatible = "mediatek,mt8167";
+	fragment@0 {
+		target = <&pio>;
+			__overlay__ {
+				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>;
+			};
+	};
+};
diff --git a/arch/arm64/boot/dts/mediatek/mt8167-coral-overlay.dts b/arch/arm64/boot/dts/mediatek/mt8167-coral-evt2-overlay.dts
similarity index 100%
rename from arch/arm64/boot/dts/mediatek/mt8167-coral-overlay.dts
rename to arch/arm64/boot/dts/mediatek/mt8167-coral-evt2-overlay.dts
diff --git a/drivers/pwm/pwm-mediatek.c b/drivers/pwm/pwm-mediatek.c
index ca0dad3..64a9ae3 100644
--- a/drivers/pwm/pwm-mediatek.c
+++ b/drivers/pwm/pwm-mediatek.c
@@ -17,6 +17,7 @@
 #include <linux/clk.h>
 #include <linux/of.h>
 #include <linux/of_device.h>
+#include <linux/pinctrl/consumer.h>
 #include <linux/platform_device.h>
 #include <linux/pwm.h>
 #include <linux/slab.h>
@@ -75,6 +76,8 @@
 	void __iomem *regs;
 	struct clk *clks[MTK_CLK_MAX];
 	const struct mtk_pwm_platform_data *soc;
+	struct pinctrl *pinctrl;
+	struct pinctrl_state *pins_default;
 };
 
 static const unsigned int mtk_pwm_reg_offset[] = {
@@ -256,6 +259,18 @@
 	if (IS_ERR(pc->regs))
 		return PTR_ERR(pc->regs);
 
+	pc->pinctrl = devm_pinctrl_get(&pdev->dev);
+	if (IS_ERR(pc->pinctrl)) {
+		dev_err(&pdev->dev, "Cannot find pinctrl!\n");
+		return PTR_ERR(pc->pinctrl);
+	}
+
+	pc->pins_default = pinctrl_lookup_state(pc->pinctrl, "default");
+	if (IS_ERR(pc->pins_default)) {
+		dev_err(&pdev->dev, "Cannot find default pinctrl group!\n");
+		return PTR_ERR(pc->pins_default);
+	}
+
 	for (i = 0; i < data->num_pwms + 2 && pc->soc->has_clks; i++) {
 		pc->clks[i] = devm_clk_get(&pdev->dev, mtk_pwm_clk_name[i]);
 		if (IS_ERR(pc->clks[i])) {