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])) {