[PATCH] drm/msm/mdp5: fix kernel panic during shutdown

2022-09-09 Thread Fabien Parent
The kernel is panicking when rebooting on MSM8939:

# reboot -f
[   87.280853] Unable to handle kernel write to read-only memory at 
virtual address 88ed5810
...
snip
...
[   87.445142] Call trace:
[   87.452253]  mutex_lock+0x1c/0x50
[   87.454511]  msm_drv_shutdown+0x28/0x40
[   87.457984]  platform_shutdown+0x28/0x40
[   87.461629]  device_shutdown+0x14c/0x240
[   87.465796]  __do_sys_reboot+0x180/0x274
[   87.469703]  __arm64_sys_reboot+0x28/0x3c
[   87.473608]  invoke_syscall+0x54/0x124
[   87.477515]  el0_svc_common.constprop.0+0x44/0xec
[   87.481163]  do_el0_svc+0x90/0xe0
[   87.485934]  el0_svc+0x50/0xa4
[   87.489232]  el0t_64_sync_handler+0x11c/0x150
[   87.492185]  el0t_64_sync+0x190/0x194
[   87.496618] Code: f9800011 c85ffc03 ca010064 b564 (c8047c02)
[   87.500264] ---[ end trace  ]---
Segmentation fault

The issue comes from the fact that mdp5_init() is calling
platform_set_drvdata() and consequently overwriting the driver data
previously set by msm_drv_probe.
msm_drv_shutdown was casting the driver data as "struct msm_drm_private"
while it was actually a "struct mdp5_kms".

This commit fixes the issue by having mdp5_init() not override the
platform driver data, and instead use a series of
to_mdp5_kms(to_mdp_kms(priv->kms)) to retrieve the mdp5_kms from the
pdata.

Fixes: 54199009958f ("drm/msm: Fix shutdown")
Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 18 +++---
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c 
b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
index d2a48caf9d27..17aeabeedfeb 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
@@ -634,7 +634,8 @@ static int mdp5_kms_init(struct drm_device *dev)
 
 static void mdp5_destroy(struct platform_device *pdev)
 {
-   struct mdp5_kms *mdp5_kms = platform_get_drvdata(pdev);
+   struct msm_drm_private *priv = platform_get_drvdata(pdev);
+   struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms));
int i;
 
if (mdp5_kms->ctlm)
@@ -797,7 +798,8 @@ static int mdp5_init(struct platform_device *pdev, struct 
drm_device *dev)
goto fail;
}
 
-   platform_set_drvdata(pdev, mdp5_kms);
+   /* set uninit-ed kms */
+   priv->kms = &mdp5_kms->base.base;
 
spin_lock_init(&mdp5_kms->resource_lock);
 
@@ -890,13 +892,13 @@ static int mdp5_init(struct platform_device *pdev, struct 
drm_device *dev)
if (ret)
goto fail;
 
-   /* set uninit-ed kms */
-   priv->kms = &mdp5_kms->base.base;
-
return 0;
 fail:
if (mdp5_kms)
mdp5_destroy(pdev);
+
+   priv->kms = NULL;
+
return ret;
 }
 
@@ -956,7 +958,8 @@ static int mdp5_dev_remove(struct platform_device *pdev)
 static __maybe_unused int mdp5_runtime_suspend(struct device *dev)
 {
struct platform_device *pdev = to_platform_device(dev);
-   struct mdp5_kms *mdp5_kms = platform_get_drvdata(pdev);
+   struct msm_drm_private *priv = platform_get_drvdata(pdev);
+   struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms));
 
DBG("");
 
@@ -966,7 +969,8 @@ static __maybe_unused int mdp5_runtime_suspend(struct 
device *dev)
 static __maybe_unused int mdp5_runtime_resume(struct device *dev)
 {
struct platform_device *pdev = to_platform_device(dev);
-   struct mdp5_kms *mdp5_kms = platform_get_drvdata(pdev);
+   struct msm_drm_private *priv = platform_get_drvdata(pdev);
+   struct mdp5_kms *mdp5_kms = to_mdp5_kms(to_mdp_kms(priv->kms));
 
DBG("");
 
-- 
2.37.2



[PATCH 3/7] dt-bindings: display: mediatek: add bindings for MT8365 SoC

2022-05-31 Thread Fabien Parent
Add MT8365 binding documentation for all the display components that are
compatible with the compatible string from other SoCs.

Signed-off-by: Fabien Parent 
---
 .../bindings/display/mediatek/mediatek,aal.yaml |  1 +
 .../display/mediatek/mediatek,ccorr.yaml|  1 +
 .../display/mediatek/mediatek,color.yaml|  1 +
 .../display/mediatek/mediatek,dither.yaml   |  1 +
 .../bindings/display/mediatek/mediatek,dsi.yaml | 17 +++--
 .../display/mediatek/mediatek,gamma.yaml|  1 +
 .../display/mediatek/mediatek,mutex.yaml|  1 +
 .../bindings/display/mediatek/mediatek,ovl.yaml |  1 +
 .../display/mediatek/mediatek,rdma.yaml |  1 +
 9 files changed, 19 insertions(+), 6 deletions(-)

diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,aal.yaml 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,aal.yaml
index d4d585485e7b..d47bc72f09c0 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,aal.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,aal.yaml
@@ -33,6 +33,7 @@ properties:
   - mediatek,mt8186-disp-aal
   - mediatek,mt8192-disp-aal
   - mediatek,mt8195-disp-aal
+  - mediatek,mt8365-disp-aal
   - const: mediatek,mt8183-disp-aal
 
   reg:
diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,ccorr.yaml 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,ccorr.yaml
index 63fb02014a56..fc999e614718 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,ccorr.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,ccorr.yaml
@@ -32,6 +32,7 @@ properties:
   - items:
   - enum:
   - mediatek,mt8186-disp-ccorr
+  - mediatek,mt8365-disp-ccorr
   - const: mediatek,mt8183-disp-ccorr
 
   reg:
diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,color.yaml 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,color.yaml
index d2f89ee7996f..9d081da433e8 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,color.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,color.yaml
@@ -39,6 +39,7 @@ properties:
   - mediatek,mt8186-disp-color
   - mediatek,mt8192-disp-color
   - mediatek,mt8195-disp-color
+  - mediatek,mt8365-disp-color
   - const: mediatek,mt8173-disp-color
   reg:
 maxItems: 1
diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,dither.yaml 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,dither.yaml
index 8ad8187c02d1..a7706cd65675 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dither.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dither.yaml
@@ -29,6 +29,7 @@ properties:
   - mediatek,mt8186-disp-dither
   - mediatek,mt8192-disp-dither
   - mediatek,mt8195-disp-dither
+  - mediatek,mt8365-disp-dither
   - const: mediatek,mt8183-disp-dither
 
   reg:
diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.yaml 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.yaml
index fa5bdf28668a..d17ea215960c 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.yaml
@@ -22,12 +22,17 @@ allOf:
 
 properties:
   compatible:
-enum:
-  - mediatek,mt2701-dsi
-  - mediatek,mt7623-dsi
-  - mediatek,mt8167-dsi
-  - mediatek,mt8173-dsi
-  - mediatek,mt8183-dsi
+oneOf:
+  - enum:
+  - mediatek,mt2701-dsi
+  - mediatek,mt7623-dsi
+  - mediatek,mt8167-dsi
+  - mediatek,mt8173-dsi
+  - mediatek,mt8183-dsi
+  - items:
+  - enum:
+  - mediatek,mt8365-dsi
+  - const: mediatek,mt8183-dsi
 
   reg:
 maxItems: 1
diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml
index a89ea0ea7542..f54859cfc97b 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,gamma.yaml
@@ -30,6 +30,7 @@ properties:
   - mediatek,mt8186-disp-gamma
   - mediatek,mt8192-disp-gamma
   - mediatek,mt8195-disp-gamma
+  - mediatek,mt8365-disp-gamma
   - const: mediatek,mt8183-disp-gamma
 
   reg:
diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,mutex.yaml 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,mutex.yaml
index 3fdad71210b4..f4a12dfae77b 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,mutex.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek

[PATCH 6/7] drm/mediatek: dpi: add support for dpi clock

2022-05-31 Thread Fabien Parent
MT8365 requires an additional clock for DPI. Add support for that
additional clock.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_dpi.c | 18 +-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_dpi.c 
b/drivers/gpu/drm/mediatek/mtk_dpi.c
index e61cd67b978f..7872db60840e 100644
--- a/drivers/gpu/drm/mediatek/mtk_dpi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dpi.c
@@ -72,6 +72,7 @@ struct mtk_dpi {
struct device *dev;
struct clk *engine_clk;
struct clk *pixel_clk;
+   struct clk *dpi_clk;
struct clk *tvd_clk;
int irq;
struct drm_display_mode mode;
@@ -412,6 +413,7 @@ static void mtk_dpi_power_off(struct mtk_dpi *dpi)
mtk_dpi_disable(dpi);
clk_disable_unprepare(dpi->pixel_clk);
clk_disable_unprepare(dpi->engine_clk);
+   clk_disable_unprepare(dpi->dpi_clk);
 }
 
 static int mtk_dpi_power_on(struct mtk_dpi *dpi)
@@ -421,10 +423,16 @@ static int mtk_dpi_power_on(struct mtk_dpi *dpi)
if (++dpi->refcount != 1)
return 0;
 
+   ret = clk_prepare_enable(dpi->dpi_clk);
+   if (ret) {
+   dev_err(dpi->dev, "failed to enable dpi clock: %d\n", ret);
+   goto err_refcount;
+   }
+
ret = clk_prepare_enable(dpi->engine_clk);
if (ret) {
dev_err(dpi->dev, "Failed to enable engine clock: %d\n", ret);
-   goto err_refcount;
+   goto err_engine;
}
 
ret = clk_prepare_enable(dpi->pixel_clk);
@@ -441,6 +449,8 @@ static int mtk_dpi_power_on(struct mtk_dpi *dpi)
 
 err_pixel:
clk_disable_unprepare(dpi->engine_clk);
+err_engine:
+   clk_disable_unprepare(dpi->dpi_clk);
 err_refcount:
dpi->refcount--;
return ret;
@@ -893,6 +903,12 @@ static int mtk_dpi_probe(struct platform_device *pdev)
return ret;
}
 
+   dpi->dpi_clk = devm_clk_get_optional(dev, "dpi");
+   if (IS_ERR(dpi->dpi_clk)) {
+   return dev_err_probe(dev, ret, "Failed to get dpi clock: %pe\n",
+dpi->dpi_clk);
+   }
+
dpi->irq = platform_get_irq(pdev, 0);
if (dpi->irq <= 0)
return -EINVAL;
-- 
2.36.1



[PATCH 1/7] dt-bindings: display: mediatek: dpi: add power-domains property

2022-05-31 Thread Fabien Parent
DPI is part of the display / multimedia block in MediaTek SoCs, and
always have a power-domain (at least in the upstream device-trees).
Add the power-domains property to the binding documentation.

Signed-off-by: Fabien Parent 
---
 .../devicetree/bindings/display/mediatek/mediatek,dpi.yaml  | 6 ++
 1 file changed, 6 insertions(+)

diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
index 77ee1b923991..caf4c88708f4 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
@@ -57,6 +57,9 @@ properties:
   Output port node. This port should be connected to the input port of an
   attached HDMI or LVDS encoder chip.
 
+  power-domains:
+maxItems: 1
+
 required:
   - compatible
   - reg
@@ -64,6 +67,7 @@ required:
   - clocks
   - clock-names
   - port
+  - power-domains
 
 additionalProperties: false
 
@@ -71,11 +75,13 @@ examples:
   - |
 #include 
 #include 
+#include 
 
 dpi0: dpi@1401d000 {
 compatible = "mediatek,mt8173-dpi";
 reg = <0x1401d000 0x1000>;
 interrupts = ;
+power-domains = <&spm MT8173_POWER_DOMAIN_MM>;
 clocks = <&mmsys CLK_MM_DPI_PIXEL>,
  <&mmsys CLK_MM_DPI_ENGINE>,
  <&apmixedsys CLK_APMIXED_TVDPLL>;
-- 
2.36.1



[PATCH] drm/mediatek: fix crtc index computation

2022-05-31 Thread Fabien Parent
The code always assume that the main path is enabled, which is not
always the case. When the main path is not enabled, the CRTC index
of the ext path is incorrect which makes the secondary path
not usable. Fix the CRTC index calculation.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 46 +++--
 1 file changed, 34 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c 
b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
index 5d7504a72b11..6f2abfc608fb 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
@@ -430,25 +430,47 @@ int mtk_ddp_comp_get_id(struct device_node *node,
return -EINVAL;
 }
 
+static bool mtk_drm_comp_is_enabled(struct drm_device *drm,
+   const enum mtk_ddp_comp_id *path,
+   unsigned int path_len)
+{
+   struct mtk_drm_private *priv = drm->dev_private;
+
+   return path && path_len && !!priv->comp_node[path[path_len - 1]];
+}
+
 unsigned int mtk_drm_find_possible_crtc_by_comp(struct drm_device *drm,
struct device *dev)
 {
struct mtk_drm_private *private = drm->dev_private;
-   unsigned int ret = 0;
+   unsigned int index = 0;
 
-   if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path, 
private->data->main_len,
+   if (mtk_drm_find_comp_in_ddp(dev, private->data->main_path,
+private->data->main_len,
 private->ddp_comp))
-   ret = BIT(0);
-   else if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path,
- private->data->ext_len, 
private->ddp_comp))
-   ret = BIT(1);
-   else if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path,
- private->data->third_len, 
private->ddp_comp))
-   ret = BIT(2);
-   else
-   DRM_INFO("Failed to find comp in ddp table\n");
+   return BIT(index);
+
+   if (mtk_drm_comp_is_enabled(drm, private->data->main_path,
+   private->data->main_len))
+   index++;
 
-   return ret;
+   if (mtk_drm_find_comp_in_ddp(dev, private->data->ext_path,
+private->data->ext_len,
+private->ddp_comp))
+   return BIT(index);
+
+   if (mtk_drm_comp_is_enabled(drm, private->data->ext_path,
+   private->data->ext_len))
+   index++;
+
+   if (mtk_drm_find_comp_in_ddp(dev, private->data->third_path,
+ private->data->third_len,
+ private->ddp_comp))
+   return BIT(index);
+
+   DRM_INFO("Failed to find comp in ddp table\n");
+
+   return 0;
 }
 
 int mtk_ddp_comp_init(struct device_node *node, struct mtk_ddp_comp *comp,
-- 
2.36.1



[PATCH 7/7] drm/mediatek: add MT8365 SoC support

2022-05-31 Thread Fabien Parent
Add DRM support for MT8365 SoC.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_drm_drv.c | 27 ++
 1 file changed, 27 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c 
b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 6abe6bcacbdc..0a30ec75b1e2 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -195,6 +195,22 @@ static const enum mtk_ddp_comp_id mt8192_mtk_ddp_ext[] = {
DDP_COMPONENT_DPI0,
 };
 
+static const enum mtk_ddp_comp_id mt8365_mtk_ddp_main[] = {
+   DDP_COMPONENT_OVL0,
+   DDP_COMPONENT_RDMA0,
+   DDP_COMPONENT_COLOR0,
+   DDP_COMPONENT_CCORR,
+   DDP_COMPONENT_AAL0,
+   DDP_COMPONENT_GAMMA,
+   DDP_COMPONENT_DITHER,
+   DDP_COMPONENT_DSI0,
+};
+
+static const enum mtk_ddp_comp_id mt8365_mtk_ddp_ext[] = {
+   DDP_COMPONENT_RDMA1,
+   DDP_COMPONENT_DPI0,
+};
+
 static const struct mtk_mmsys_driver_data mt2701_mmsys_driver_data = {
.main_path = mt2701_mtk_ddp_main,
.main_len = ARRAY_SIZE(mt2701_mtk_ddp_main),
@@ -253,6 +269,13 @@ static const struct mtk_mmsys_driver_data 
mt8192_mmsys_driver_data = {
.ext_len = ARRAY_SIZE(mt8192_mtk_ddp_ext),
 };
 
+static const struct mtk_mmsys_driver_data mt8365_mmsys_driver_data = {
+   .main_path = mt8365_mtk_ddp_main,
+   .main_len = ARRAY_SIZE(mt8365_mtk_ddp_main),
+   .ext_path = mt8365_mtk_ddp_ext,
+   .ext_len = ARRAY_SIZE(mt8365_mtk_ddp_ext),
+};
+
 static int mtk_drm_kms_init(struct drm_device *drm)
 {
struct mtk_drm_private *private = drm->dev_private;
@@ -490,6 +513,8 @@ static const struct of_device_id mtk_ddp_comp_dt_ids[] = {
  .data = (void *)MTK_DISP_MUTEX },
{ .compatible = "mediatek,mt8192-disp-mutex",
  .data = (void *)MTK_DISP_MUTEX },
+   { .compatible = "mediatek,mt8365-disp-mutex",
+ .data = (void *)MTK_DISP_MUTEX },
{ .compatible = "mediatek,mt8173-disp-od",
  .data = (void *)MTK_DISP_OD },
{ .compatible = "mediatek,mt2701-disp-ovl",
@@ -564,6 +589,8 @@ static const struct of_device_id mtk_drm_of_ids[] = {
  .data = &mt8186_mmsys_driver_data},
{ .compatible = "mediatek,mt8192-mmsys",
  .data = &mt8192_mmsys_driver_data},
+   { .compatible = "mediatek,mt8365-mmsys",
+ .data = &mt8365_mmsys_driver_data},
{ }
 };
 MODULE_DEVICE_TABLE(of, mtk_drm_of_ids);
-- 
2.36.1



[PATCH 4/7] soc: mediatek: mutex: add MT8365 support

2022-05-31 Thread Fabien Parent
Add mutex support for MT8365 SoC.

Signed-off-by: Fabien Parent 
---
 drivers/soc/mediatek/mtk-mutex.c | 40 
 1 file changed, 40 insertions(+)

diff --git a/drivers/soc/mediatek/mtk-mutex.c b/drivers/soc/mediatek/mtk-mutex.c
index 981d56967e7a..b8d5c4a62542 100644
--- a/drivers/soc/mediatek/mtk-mutex.c
+++ b/drivers/soc/mediatek/mtk-mutex.c
@@ -110,6 +110,20 @@
 #define MT8195_MUTEX_MOD_DISP_DP_INTF0 21
 #define MT8195_MUTEX_MOD_DISP_PWM0 27
 
+#define MT8365_MUTEX_MOD_DISP_OVL0 7
+#define MT8365_MUTEX_MOD_DISP_OVL0_2L  8
+#define MT8365_MUTEX_MOD_DISP_RDMA09
+#define MT8365_MUTEX_MOD_DISP_RDMA110
+#define MT8365_MUTEX_MOD_DISP_WDMA011
+#define MT8365_MUTEX_MOD_DISP_COLOR0   12
+#define MT8365_MUTEX_MOD_DISP_CCORR13
+#define MT8365_MUTEX_MOD_DISP_AAL  14
+#define MT8365_MUTEX_MOD_DISP_GAMMA15
+#define MT8365_MUTEX_MOD_DISP_DITHER   16
+#define MT8365_MUTEX_MOD_DISP_DSI0 17
+#define MT8365_MUTEX_MOD_DISP_PWM0 20
+#define MT8365_MUTEX_MOD_DISP_DPI0 22
+
 #define MT2712_MUTEX_MOD_DISP_PWM2 10
 #define MT2712_MUTEX_MOD_DISP_OVL0 11
 #define MT2712_MUTEX_MOD_DISP_OVL1 12
@@ -315,6 +329,22 @@ static const unsigned int 
mt8195_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[DDP_COMPONENT_DP_INTF0] = MT8195_MUTEX_MOD_DISP_DP_INTF0,
 };
 
+static const unsigned int mt8365_mutex_mod[DDP_COMPONENT_ID_MAX] = {
+   [DDP_COMPONENT_AAL0] = MT8365_MUTEX_MOD_DISP_AAL,
+   [DDP_COMPONENT_CCORR] = MT8365_MUTEX_MOD_DISP_CCORR,
+   [DDP_COMPONENT_COLOR0] = MT8365_MUTEX_MOD_DISP_COLOR0,
+   [DDP_COMPONENT_DITHER] = MT8365_MUTEX_MOD_DISP_DITHER,
+   [DDP_COMPONENT_DPI0] = MT8365_MUTEX_MOD_DISP_DPI0,
+   [DDP_COMPONENT_DSI0] = MT8365_MUTEX_MOD_DISP_DSI0,
+   [DDP_COMPONENT_GAMMA] = MT8365_MUTEX_MOD_DISP_GAMMA,
+   [DDP_COMPONENT_OVL0] = MT8365_MUTEX_MOD_DISP_OVL0,
+   [DDP_COMPONENT_OVL_2L0] = MT8365_MUTEX_MOD_DISP_OVL0_2L,
+   [DDP_COMPONENT_PWM0] = MT8365_MUTEX_MOD_DISP_PWM0,
+   [DDP_COMPONENT_RDMA0] = MT8365_MUTEX_MOD_DISP_RDMA0,
+   [DDP_COMPONENT_RDMA1] = MT8365_MUTEX_MOD_DISP_RDMA1,
+   [DDP_COMPONENT_WDMA0] = MT8365_MUTEX_MOD_DISP_WDMA0,
+};
+
 static const unsigned int mt2712_mutex_sof[DDP_MUTEX_SOF_MAX] = {
[MUTEX_SOF_SINGLE_MODE] = MUTEX_SOF_SINGLE_MODE,
[MUTEX_SOF_DSI0] = MUTEX_SOF_DSI0,
@@ -423,6 +453,14 @@ static const struct mtk_mutex_data 
mt8195_mutex_driver_data = {
.mutex_sof_reg = MT8183_MUTEX0_SOF0,
 };
 
+static const struct mtk_mutex_data mt8365_mutex_driver_data = {
+   .mutex_mod = mt8365_mutex_mod,
+   .mutex_sof = mt8183_mutex_sof,
+   .mutex_mod_reg = MT8183_MUTEX0_MOD0,
+   .mutex_sof_reg = MT8183_MUTEX0_SOF0,
+   .no_clk = true,
+};
+
 struct mtk_mutex *mtk_mutex_get(struct device *dev)
 {
struct mtk_mutex_ctx *mtx = dev_get_drvdata(dev);
@@ -665,6 +703,8 @@ static const struct of_device_id mutex_driver_dt_match[] = {
  .data = &mt8192_mutex_driver_data},
{ .compatible = "mediatek,mt8195-disp-mutex",
  .data = &mt8195_mutex_driver_data},
+   { .compatible = "mediatek,mt8365-disp-mutex",
+ .data = &mt8365_mutex_driver_data},
{},
 };
 MODULE_DEVICE_TABLE(of, mutex_driver_dt_match);
-- 
2.36.1



[PATCH 5/7] soc: mediatek: mt8365-mmsys: add DPI/HDMI display path

2022-05-31 Thread Fabien Parent
Right now only the DSI path connections are described in the mt8365
mmsys driver. The external path will be DPI/HDMI. This commit adds
the connections for DPI/HDMI.

Signed-off-by: Fabien Parent 
---
 drivers/soc/mediatek/mt8365-mmsys.h | 22 ++
 1 file changed, 22 insertions(+)

diff --git a/drivers/soc/mediatek/mt8365-mmsys.h 
b/drivers/soc/mediatek/mt8365-mmsys.h
index 24129a6c25f8..7abaf048d91e 100644
--- a/drivers/soc/mediatek/mt8365-mmsys.h
+++ b/drivers/soc/mediatek/mt8365-mmsys.h
@@ -10,6 +10,9 @@
 #define MT8365_DISP_REG_CONFIG_DISP_RDMA0_RSZ0_SEL_IN  0xf60
 #define MT8365_DISP_REG_CONFIG_DISP_COLOR0_SEL_IN  0xf64
 #define MT8365_DISP_REG_CONFIG_DISP_DSI0_SEL_IN0xf68
+#define MT8365_DISP_REG_CONFIG_DISP_RDMA1_SOUT_SEL 0xfd0
+#define MT8365_DISP_REG_CONFIG_DISP_DPI0_SEL_IN0xfd8
+#define MT8365_DISP_REG_CONFIG_DISP_LVDS_SYS_CFG_000xfdc
 
 #define MT8365_RDMA0_SOUT_COLOR0   0x1
 #define MT8365_DITHER_MOUT_EN_DSI0 0x1
@@ -18,6 +21,10 @@
 #define MT8365_RDMA0_RSZ0_SEL_IN_RDMA0 0x0
 #define MT8365_DISP_COLOR_SEL_IN_COLOR00x0
 #define MT8365_OVL0_MOUT_PATH0_SEL BIT(0)
+#define MT8365_RDMA1_SOUT_DPI0 0x1
+#define MT8365_DPI0_SEL_IN_RDMA1   0x0
+#define MT8365_LVDS_SYS_CFG_00_SEL_LVDS_PXL_CLK0x1
+#define MT8365_DPI0_SEL_IN_RDMA1   0x0
 
 static const struct mtk_mmsys_routes mt8365_mmsys_routing_table[] = {
{
@@ -55,6 +62,21 @@ static const struct mtk_mmsys_routes 
mt8365_mmsys_routing_table[] = {
MT8365_DISP_REG_CONFIG_DISP_RDMA0_RSZ0_SEL_IN,
MT8365_RDMA0_RSZ0_SEL_IN_RDMA0, MT8365_RDMA0_RSZ0_SEL_IN_RDMA0
},
+   {
+   DDP_COMPONENT_RDMA1, DDP_COMPONENT_DPI0,
+   MT8365_DISP_REG_CONFIG_DISP_LVDS_SYS_CFG_00,
+   MT8365_LVDS_SYS_CFG_00_SEL_LVDS_PXL_CLK, 
MT8365_LVDS_SYS_CFG_00_SEL_LVDS_PXL_CLK
+   },
+   {
+   DDP_COMPONENT_RDMA1, DDP_COMPONENT_DPI0,
+   MT8365_DISP_REG_CONFIG_DISP_DPI0_SEL_IN,
+   MT8365_DPI0_SEL_IN_RDMA1, MT8365_DPI0_SEL_IN_RDMA1
+   },
+   {
+   DDP_COMPONENT_RDMA1, DDP_COMPONENT_DPI0,
+   MT8365_DISP_REG_CONFIG_DISP_RDMA1_SOUT_SEL,
+   MT8365_RDMA1_SOUT_DPI0, MT8365_RDMA1_SOUT_DPI0
+   },
 };
 
 #endif /* __SOC_MEDIATEK_MT8365_MMSYS_H */
-- 
2.36.1



[PATCH 2/7] dt-bindings: display: mediatek: dpi: add binding for MT8365

2022-05-31 Thread Fabien Parent
DPI for MT8365 is compatible with MT8192 but requires an additional
clock. Modify the documentation to requires this clock only on MT8365 SoCs.

Signed-off-by: Fabien Parent 
---
 .../display/mediatek/mediatek,dpi.yaml| 44 ---
 1 file changed, 37 insertions(+), 7 deletions(-)

diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
index caf4c88708f4..c9c9f4d5ebe7 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dpi.yaml
@@ -17,13 +17,18 @@ description: |
 
 properties:
   compatible:
-enum:
-  - mediatek,mt2701-dpi
-  - mediatek,mt7623-dpi
-  - mediatek,mt8173-dpi
-  - mediatek,mt8183-dpi
-  - mediatek,mt8186-dpi
-  - mediatek,mt8192-dpi
+oneOf:
+  - enum:
+  - mediatek,mt2701-dpi
+  - mediatek,mt7623-dpi
+  - mediatek,mt8173-dpi
+  - mediatek,mt8183-dpi
+  - mediatek,mt8186-dpi
+  - mediatek,mt8192-dpi
+  - items:
+  - enum:
+  - mediatek,mt8365-dpi
+  - const: mediatek,mt8192-dpi
 
   reg:
 maxItems: 1
@@ -32,16 +37,20 @@ properties:
 maxItems: 1
 
   clocks:
+minItems: 3
 items:
   - description: Pixel Clock
   - description: Engine Clock
   - description: DPI PLL
+  - description: DPI Clock
 
   clock-names:
+minItems: 3
 items:
   - const: pixel
   - const: engine
   - const: pll
+  - const: dpi
 
   pinctrl-0: true
   pinctrl-1: true
@@ -71,6 +80,27 @@ required:
 
 additionalProperties: false
 
+allOf:
+  - if:
+  properties:
+compatible:
+  contains:
+const: mediatek,mt8365-dpi
+
+then:
+  properties:
+clocks:
+  maxItems: 4
+clock-names:
+  maxItems: 4
+
+else:
+  properties:
+clocks:
+  maxItems: 3
+clock-names:
+  maxItems: 3
+
 examples:
   - |
 #include 
-- 
2.36.1



Re: [PATCH] drm/bridge: ite-it6505: add missing Kconfig option select

2022-04-27 Thread Fabien Parent
On Tue, Apr 26, 2022 at 05:29:31PM +0200, Neil Armstrong wrote:
> On 26/04/2022 16:15, Fabien Parent wrote:
> > The IT6505 is using functions provided by the DRM_DP_HELPER driver.
> > In order to avoid having the bridge enabled but the helper disabled,
> > let's add a select in order to be sure that the DP helper functions are
> > always available.
> > 
> > Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver")
> > Signed-off-by: Fabien Parent 
> > ---
> >   drivers/gpu/drm/bridge/Kconfig | 1 +
> >   1 file changed, 1 insertion(+)
> > 
> > diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
> > index 007e5a282f67..2145b08f9534 100644
> > --- a/drivers/gpu/drm/bridge/Kconfig
> > +++ b/drivers/gpu/drm/bridge/Kconfig
> > @@ -78,6 +78,7 @@ config DRM_ITE_IT6505
> >   tristate "ITE IT6505 DisplayPort bridge"
> >   depends on OF
> >   select DRM_KMS_HELPER
> > +select DRM_DP_HELPER
> >   select EXTCON
> >   help
> > ITE IT6505 DisplayPort bridge chip driver.
> 
> http://lore.kernel.org/r/20220403151637.15546-1-rdun...@infradead.org also 
> select DRM_DP_AUX_BUS,
> can you check if this is really neaded ?

Oops, I didn't notice that patch.

Anyway I can successfully link with the following config:
CONFIG_DRM_ITE_IT6505=y
CONFIG_DRM_DP_AUX_BUS=m
CONFIG_DRM_DP_HELPER=y

But I cannot with the following config:
CONFIG_DRM_ITE_IT6505=y
CONFIG_DRM_DP_AUX_BUS=m
CONFIG_DRM_DP_HELPER=m

This suggest that DRM_DP_AUX_BUS is not required for that driver.

Fabien

> 
> Neil


signature.asc
Description: PGP signature


[PATCH] drm/bridge: ite-it6505: add missing Kconfig option select

2022-04-27 Thread Fabien Parent
The IT6505 is using functions provided by the DRM_DP_HELPER driver.
In order to avoid having the bridge enabled but the helper disabled,
let's add a select in order to be sure that the DP helper functions are
always available.

Fixes: b5c84a9edcd4 ("drm/bridge: add it6505 driver")
Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/bridge/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
index 007e5a282f67..2145b08f9534 100644
--- a/drivers/gpu/drm/bridge/Kconfig
+++ b/drivers/gpu/drm/bridge/Kconfig
@@ -78,6 +78,7 @@ config DRM_ITE_IT6505
 tristate "ITE IT6505 DisplayPort bridge"
 depends on OF
 select DRM_KMS_HELPER
+select DRM_DP_HELPER
 select EXTCON
 help
   ITE IT6505 DisplayPort bridge chip driver.
-- 
2.36.0



Re: [PATCH v2 5/5] drm/mediatek: Add support for main DDP path on MT8167

2020-10-28 Thread Fabien Parent
Hi Chun-Kuang,

On Fri, Oct 23, 2020 at 5:52 PM Chun-Kuang Hu  wrote:
>
> Hi, Fabien:
>
> Fabien Parent  於 2020年10月23日 週五 下午9:31寫道:
> >
> > Add the main (DSI) drm display path for MT8167.
> >
> > Signed-off-by: Fabien Parent 
> > ---
> >
> > Changelog:
> >
> > V2: No change
> >
> >  drivers/gpu/drm/mediatek/mtk_drm_drv.c | 38 ++
> >  1 file changed, 38 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c 
> > b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > index 59c85c63b7cc..3952435093fe 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
> > @@ -112,6 +112,17 @@ static const enum mtk_ddp_comp_id 
> > mt2712_mtk_ddp_third[] = {
> > DDP_COMPONENT_PWM2,
> >  };
> >
> > +static enum mtk_ddp_comp_id mt8167_mtk_ddp_main[] = {
> > +   DDP_COMPONENT_OVL0,
> > +   DDP_COMPONENT_COLOR0,
> > +   DDP_COMPONENT_CCORR,
> > +   DDP_COMPONENT_AAL0,
> > +   DDP_COMPONENT_GAMMA,
> > +   DDP_COMPONENT_DITHER,
> > +   DDP_COMPONENT_RDMA0,
> > +   DDP_COMPONENT_DSI0,
> > +};
> > +
> >  static const enum mtk_ddp_comp_id mt8173_mtk_ddp_main[] = {
> > DDP_COMPONENT_OVL0,
> > DDP_COMPONENT_COLOR0,
> > @@ -163,6 +174,11 @@ static const struct mtk_mmsys_driver_data 
> > mt8173_mmsys_driver_data = {
> > .ext_len = ARRAY_SIZE(mt8173_mtk_ddp_ext),
> >  };
> >
> > +static const struct mtk_mmsys_driver_data mt8167_mmsys_driver_data = {
> > +   .main_path = mt8167_mtk_ddp_main,
> > +   .main_len = ARRAY_SIZE(mt8167_mtk_ddp_main),
> > +};
> > +
> >  static int mtk_drm_kms_init(struct drm_device *drm)
> >  {
> > struct mtk_drm_private *private = drm->dev_private;
> > @@ -401,26 +417,42 @@ static const struct component_master_ops mtk_drm_ops 
> > = {
> >  static const struct of_device_id mtk_ddp_comp_dt_ids[] = {
> > { .compatible = "mediatek,mt2701-disp-ovl",
> >   .data = (void *)MTK_DISP_OVL },
> > +   { .compatible = "mediatek,mt8167-disp-ovl",
> > + .data = (void *)MTK_DISP_OVL },
> > { .compatible = "mediatek,mt8173-disp-ovl",
> >   .data = (void *)MTK_DISP_OVL },
> > { .compatible = "mediatek,mt2701-disp-rdma",
> >   .data = (void *)MTK_DISP_RDMA },
> > +   { .compatible = "mediatek,mt8167-disp-rdma",
> > + .data = (void *)MTK_DISP_RDMA },
> > { .compatible = "mediatek,mt8173-disp-rdma",
> >   .data = (void *)MTK_DISP_RDMA },
> > { .compatible = "mediatek,mt8173-disp-wdma",
> >   .data = (void *)MTK_DISP_WDMA },
> > +   { .compatible = "mediatek,mt8167-disp-ccorr",
> > + .data = (void *)MTK_DISP_CCORR },
> > { .compatible = "mediatek,mt2701-disp-color",
> >   .data = (void *)MTK_DISP_COLOR },
> > +   { .compatible = "mediatek,mt8167-disp-color",
> > + .data = (void *)MTK_DISP_COLOR },
> > { .compatible = "mediatek,mt8173-disp-color",
> >   .data = (void *)MTK_DISP_COLOR },
> > +   { .compatible = "mediatek,mt8167-disp-aal",
> > + .data = (void *)MTK_DISP_AAL},
> > { .compatible = "mediatek,mt8173-disp-aal",
> >   .data = (void *)MTK_DISP_AAL},
> > +   { .compatible = "mediatek,mt8167-disp-gamma",
> > + .data = (void *)MTK_DISP_GAMMA, },
> > { .compatible = "mediatek,mt8173-disp-gamma",
> >   .data = (void *)MTK_DISP_GAMMA, },
> > +   { .compatible = "mediatek,mt8167-disp-dither",
> > + .data = (void *)MTK_DISP_DITHER },
> > { .compatible = "mediatek,mt8173-disp-ufoe",
> >   .data = (void *)MTK_DISP_UFOE },
> > { .compatible = "mediatek,mt2701-dsi",
> >   .data = (void *)MTK_DSI },
> > +   { .compatible = "mediatek,mt8167-dsi",
> > + .data = (void *)MTK_DSI },
> > { .compatible = "mediatek,mt8173-dsi",
> >   .data = (void *)MTK_DSI },
> > { .compatible = "mediatek,mt2701-dpi",
> > @@ -431,10 +463,14 @@ static const struct of_device_id 
> > mtk_ddp_comp_dt_ids[] = {
> >   .data = (void *)MTK_DISP_MUTEX },
> > { .compatible = "mediatek,m

[PATCH v2 0/5] Add DRM/DSI support for MT8167 SoC

2020-10-24 Thread Fabien Parent
This series adds support for DSI on the MT8167 SoC. HDMI is not yet supported
as secondary display path.

mmsys is not supported by this series and will be sent in a seperate series
based on [0].

[0] https://patchwork.kernel.org/project/linux-mediatek/list/?series=360447

Changelog:
V2: removed 3 patches

Fabien Parent (5):
  dt-bindings: display: mediatek: disp: add documentation for MT8167 SoC
  dt-bindings: display: mediatek: dsi: add documentation for MT8167 SoC
  drm/mediatek: add disp-color MT8167 support
  drm/mediatek: add DDP support for MT8167
  drm/mediatek: Add support for main DDP path on MT8167

 .../display/mediatek/mediatek,disp.txt|  4 +-
 .../display/mediatek/mediatek,dsi.txt |  4 +-
 drivers/gpu/drm/mediatek/mtk_disp_color.c |  7 +++
 drivers/gpu/drm/mediatek/mtk_drm_ddp.c| 47 +++
 drivers/gpu/drm/mediatek/mtk_drm_drv.c| 38 +++
 5 files changed, 96 insertions(+), 4 deletions(-)

-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v2 4/5] drm/mediatek: add DDP support for MT8167

2020-10-24 Thread Fabien Parent
Add DDP support for MT8167 SoC.

Signed-off-by: Fabien Parent 
---

Changelog:

V2: don't set DDP_MUTEX_SOF_DSI{1,2,3} since they are not available on MT8167

 drivers/gpu/drm/mediatek/mtk_drm_ddp.c | 47 ++
 1 file changed, 47 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c 
b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c
index 014c1bbe1df2..1f99db6b1a42 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c
@@ -25,6 +25,19 @@
 
 #define INT_MUTEX  BIT(1)
 
+#define MT8167_MUTEX_MOD_DISP_PWM  1
+#define MT8167_MUTEX_MOD_DISP_OVL0 6
+#define MT8167_MUTEX_MOD_DISP_OVL1 7
+#define MT8167_MUTEX_MOD_DISP_RDMA08
+#define MT8167_MUTEX_MOD_DISP_RDMA19
+#define MT8167_MUTEX_MOD_DISP_WDMA010
+#define MT8167_MUTEX_MOD_DISP_CCORR11
+#define MT8167_MUTEX_MOD_DISP_COLOR12
+#define MT8167_MUTEX_MOD_DISP_AAL  13
+#define MT8167_MUTEX_MOD_DISP_GAMMA14
+#define MT8167_MUTEX_MOD_DISP_DITHER   15
+#define MT8167_MUTEX_MOD_DISP_UFOE 16
+
 #define MT8173_MUTEX_MOD_DISP_OVL0 11
 #define MT8173_MUTEX_MOD_DISP_OVL1 12
 #define MT8173_MUTEX_MOD_DISP_RDMA013
@@ -73,6 +86,8 @@
 #define MUTEX_SOF_DPI1 4
 #define MUTEX_SOF_DSI2 5
 #define MUTEX_SOF_DSI3 6
+#define MT8167_MUTEX_SOF_DPI0  2
+#define MT8167_MUTEX_SOF_DPI1  3
 
 
 struct mtk_disp_mutex {
@@ -135,6 +150,21 @@ static const unsigned int 
mt2712_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[DDP_COMPONENT_WDMA1] = MT2712_MUTEX_MOD_DISP_WDMA1,
 };
 
+static const unsigned int mt8167_mutex_mod[DDP_COMPONENT_ID_MAX] = {
+   [DDP_COMPONENT_AAL0] = MT8167_MUTEX_MOD_DISP_AAL,
+   [DDP_COMPONENT_CCORR] = MT8167_MUTEX_MOD_DISP_CCORR,
+   [DDP_COMPONENT_COLOR0] = MT8167_MUTEX_MOD_DISP_COLOR,
+   [DDP_COMPONENT_DITHER] = MT8167_MUTEX_MOD_DISP_DITHER,
+   [DDP_COMPONENT_GAMMA] = MT8167_MUTEX_MOD_DISP_GAMMA,
+   [DDP_COMPONENT_OVL0] = MT8167_MUTEX_MOD_DISP_OVL0,
+   [DDP_COMPONENT_OVL1] = MT8167_MUTEX_MOD_DISP_OVL1,
+   [DDP_COMPONENT_PWM0] = MT8167_MUTEX_MOD_DISP_PWM,
+   [DDP_COMPONENT_RDMA0] = MT8167_MUTEX_MOD_DISP_RDMA0,
+   [DDP_COMPONENT_RDMA1] = MT8167_MUTEX_MOD_DISP_RDMA1,
+   [DDP_COMPONENT_UFOE] = MT8167_MUTEX_MOD_DISP_UFOE,
+   [DDP_COMPONENT_WDMA0] = MT8167_MUTEX_MOD_DISP_WDMA0,
+};
+
 static const unsigned int mt8173_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[DDP_COMPONENT_AAL0] = MT8173_MUTEX_MOD_DISP_AAL,
[DDP_COMPONENT_COLOR0] = MT8173_MUTEX_MOD_DISP_COLOR0,
@@ -163,6 +193,13 @@ static const unsigned int 
mt2712_mutex_sof[DDP_MUTEX_SOF_DSI3 + 1] = {
[DDP_MUTEX_SOF_DSI3] = MUTEX_SOF_DSI3,
 };
 
+static const unsigned int mt8167_mutex_sof[DDP_MUTEX_SOF_DSI3 + 1] = {
+   [DDP_MUTEX_SOF_SINGLE_MODE] = MUTEX_SOF_SINGLE_MODE,
+   [DDP_MUTEX_SOF_DSI0] = MUTEX_SOF_DSI0,
+   [DDP_MUTEX_SOF_DPI0] = MT8167_MUTEX_SOF_DPI0,
+   [DDP_MUTEX_SOF_DPI1] = MT8167_MUTEX_SOF_DPI1,
+};
+
 static const struct mtk_ddp_data mt2701_ddp_driver_data = {
.mutex_mod = mt2701_mutex_mod,
.mutex_sof = mt2712_mutex_sof,
@@ -177,6 +214,14 @@ static const struct mtk_ddp_data mt2712_ddp_driver_data = {
.mutex_sof_reg = MT2701_DISP_MUTEX0_SOF0,
 };
 
+static const struct mtk_ddp_data mt8167_ddp_driver_data = {
+   .mutex_mod = mt8167_mutex_mod,
+   .mutex_sof = mt8167_mutex_sof,
+   .mutex_mod_reg = MT2701_DISP_MUTEX0_MOD0,
+   .mutex_sof_reg = MT2701_DISP_MUTEX0_SOF0,
+   .no_clk = true,
+};
+
 static const struct mtk_ddp_data mt8173_ddp_driver_data = {
.mutex_mod = mt8173_mutex_mod,
.mutex_sof = mt2712_mutex_sof,
@@ -400,6 +445,8 @@ static const struct of_device_id ddp_driver_dt_match[] = {
  .data = &mt2701_ddp_driver_data},
{ .compatible = "mediatek,mt2712-disp-mutex",
  .data = &mt2712_ddp_driver_data},
+   { .compatible = "mediatek,mt8167-disp-mutex",
+ .data = &mt8167_ddp_driver_data},
{ .compatible = "mediatek,mt8173-disp-mutex",
  .data = &mt8173_ddp_driver_data},
{},
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v2 3/5] drm/mediatek: add disp-color MT8167 support

2020-10-24 Thread Fabien Parent
Add support for disp-color on MT8167 SoC.

Signed-off-by: Fabien Parent 
Reviewed-by: Chun-Kuang Hu 
---

Changelog:

V2: No change

 drivers/gpu/drm/mediatek/mtk_disp_color.c | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_color.c 
b/drivers/gpu/drm/mediatek/mtk_disp_color.c
index 3ae9c810845b..a1227cefbf31 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_color.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_color.c
@@ -16,6 +16,7 @@
 
 #define DISP_COLOR_CFG_MAIN0x0400
 #define DISP_COLOR_START_MT27010x0f00
+#define DISP_COLOR_START_MT81670x0400
 #define DISP_COLOR_START_MT81730x0c00
 #define DISP_COLOR_START(comp) ((comp)->data->color_offset)
 #define DISP_COLOR_WIDTH(comp) (DISP_COLOR_START(comp) + 0x50)
@@ -148,6 +149,10 @@ static const struct mtk_disp_color_data 
mt2701_color_driver_data = {
.color_offset = DISP_COLOR_START_MT2701,
 };
 
+static const struct mtk_disp_color_data mt8167_color_driver_data = {
+   .color_offset = DISP_COLOR_START_MT8167,
+};
+
 static const struct mtk_disp_color_data mt8173_color_driver_data = {
.color_offset = DISP_COLOR_START_MT8173,
 };
@@ -155,6 +160,8 @@ static const struct mtk_disp_color_data 
mt8173_color_driver_data = {
 static const struct of_device_id mtk_disp_color_driver_dt_match[] = {
{ .compatible = "mediatek,mt2701-disp-color",
  .data = &mt2701_color_driver_data},
+   { .compatible = "mediatek,mt8167-disp-color",
+ .data = &mt8167_color_driver_data},
{ .compatible = "mediatek,mt8173-disp-color",
  .data = &mt8173_color_driver_data},
{},
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v2 5/5] drm/mediatek: Add support for main DDP path on MT8167

2020-10-24 Thread Fabien Parent
Add the main (DSI) drm display path for MT8167.

Signed-off-by: Fabien Parent 
---

Changelog:

V2: No change

 drivers/gpu/drm/mediatek/mtk_drm_drv.c | 38 ++
 1 file changed, 38 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c 
b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 59c85c63b7cc..3952435093fe 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -112,6 +112,17 @@ static const enum mtk_ddp_comp_id mt2712_mtk_ddp_third[] = 
{
DDP_COMPONENT_PWM2,
 };
 
+static enum mtk_ddp_comp_id mt8167_mtk_ddp_main[] = {
+   DDP_COMPONENT_OVL0,
+   DDP_COMPONENT_COLOR0,
+   DDP_COMPONENT_CCORR,
+   DDP_COMPONENT_AAL0,
+   DDP_COMPONENT_GAMMA,
+   DDP_COMPONENT_DITHER,
+   DDP_COMPONENT_RDMA0,
+   DDP_COMPONENT_DSI0,
+};
+
 static const enum mtk_ddp_comp_id mt8173_mtk_ddp_main[] = {
DDP_COMPONENT_OVL0,
DDP_COMPONENT_COLOR0,
@@ -163,6 +174,11 @@ static const struct mtk_mmsys_driver_data 
mt8173_mmsys_driver_data = {
.ext_len = ARRAY_SIZE(mt8173_mtk_ddp_ext),
 };
 
+static const struct mtk_mmsys_driver_data mt8167_mmsys_driver_data = {
+   .main_path = mt8167_mtk_ddp_main,
+   .main_len = ARRAY_SIZE(mt8167_mtk_ddp_main),
+};
+
 static int mtk_drm_kms_init(struct drm_device *drm)
 {
struct mtk_drm_private *private = drm->dev_private;
@@ -401,26 +417,42 @@ static const struct component_master_ops mtk_drm_ops = {
 static const struct of_device_id mtk_ddp_comp_dt_ids[] = {
{ .compatible = "mediatek,mt2701-disp-ovl",
  .data = (void *)MTK_DISP_OVL },
+   { .compatible = "mediatek,mt8167-disp-ovl",
+ .data = (void *)MTK_DISP_OVL },
{ .compatible = "mediatek,mt8173-disp-ovl",
  .data = (void *)MTK_DISP_OVL },
{ .compatible = "mediatek,mt2701-disp-rdma",
  .data = (void *)MTK_DISP_RDMA },
+   { .compatible = "mediatek,mt8167-disp-rdma",
+ .data = (void *)MTK_DISP_RDMA },
{ .compatible = "mediatek,mt8173-disp-rdma",
  .data = (void *)MTK_DISP_RDMA },
{ .compatible = "mediatek,mt8173-disp-wdma",
  .data = (void *)MTK_DISP_WDMA },
+   { .compatible = "mediatek,mt8167-disp-ccorr",
+ .data = (void *)MTK_DISP_CCORR },
{ .compatible = "mediatek,mt2701-disp-color",
  .data = (void *)MTK_DISP_COLOR },
+   { .compatible = "mediatek,mt8167-disp-color",
+ .data = (void *)MTK_DISP_COLOR },
{ .compatible = "mediatek,mt8173-disp-color",
  .data = (void *)MTK_DISP_COLOR },
+   { .compatible = "mediatek,mt8167-disp-aal",
+ .data = (void *)MTK_DISP_AAL},
{ .compatible = "mediatek,mt8173-disp-aal",
  .data = (void *)MTK_DISP_AAL},
+   { .compatible = "mediatek,mt8167-disp-gamma",
+ .data = (void *)MTK_DISP_GAMMA, },
{ .compatible = "mediatek,mt8173-disp-gamma",
  .data = (void *)MTK_DISP_GAMMA, },
+   { .compatible = "mediatek,mt8167-disp-dither",
+ .data = (void *)MTK_DISP_DITHER },
{ .compatible = "mediatek,mt8173-disp-ufoe",
  .data = (void *)MTK_DISP_UFOE },
{ .compatible = "mediatek,mt2701-dsi",
  .data = (void *)MTK_DSI },
+   { .compatible = "mediatek,mt8167-dsi",
+ .data = (void *)MTK_DSI },
{ .compatible = "mediatek,mt8173-dsi",
  .data = (void *)MTK_DSI },
{ .compatible = "mediatek,mt2701-dpi",
@@ -431,10 +463,14 @@ static const struct of_device_id mtk_ddp_comp_dt_ids[] = {
  .data = (void *)MTK_DISP_MUTEX },
{ .compatible = "mediatek,mt2712-disp-mutex",
  .data = (void *)MTK_DISP_MUTEX },
+   { .compatible = "mediatek,mt8167-disp-mutex",
+ .data = (void *)MTK_DISP_MUTEX },
{ .compatible = "mediatek,mt8173-disp-mutex",
  .data = (void *)MTK_DISP_MUTEX },
{ .compatible = "mediatek,mt2701-disp-pwm",
  .data = (void *)MTK_DISP_BLS },
+   { .compatible = "mediatek,mt8167-disp-pwm",
+ .data = (void *)MTK_DISP_PWM },
{ .compatible = "mediatek,mt8173-disp-pwm",
  .data = (void *)MTK_DISP_PWM },
{ .compatible = "mediatek,mt8173-disp-od",
@@ -449,6 +485,8 @@ static const struct of_device_id mtk_drm_of_ids[] = {
  .data = &mt7623_mmsys_driver_data},
{ .compatible = "mediatek,mt2712-mmsys",
  .data = &mt2712_mmsys_driver_data},
+   { .compatible = "mediatek,mt8167-mmsys",
+ .data = &mt8167_mmsys_driver_data},
{ .compatible = "mediatek,mt8173-mmsys",
  .data = &mt8173_mmsys_driver_data},
{ }
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v2 2/5] dt-bindings: display: mediatek: dsi: add documentation for MT8167 SoC

2020-10-24 Thread Fabien Parent
Add binding documentation for the MT8167 SoC.

Signed-off-by: Fabien Parent 
---

Changelog:

V2: removed part that added a new clock

 .../devicetree/bindings/display/mediatek/mediatek,dsi.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
index f06f24d405a5..6a10de812158 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
@@ -7,7 +7,7 @@ channel output.
 
 Required properties:
 - compatible: "mediatek,-dsi"
-- the supported chips are mt2701, mt7623, mt8173 and mt8183.
+- the supported chips are mt2701, mt7623, mt8167, mt8173 and mt8183.
 - reg: Physical base address and length of the controller's registers
 - interrupts: The interrupt signal from the function block.
 - clocks: device clocks
@@ -26,7 +26,7 @@ The MIPI TX configuration module controls the MIPI D-PHY.
 
 Required properties:
 - compatible: "mediatek,-mipi-tx"
-- the supported chips are mt2701, 7623, mt8173 and mt8183.
+- the supported chips are mt2701, 7623, mt8167, mt8173 and mt8183.
 - reg: Physical base address and length of the controller's registers
 - clocks: PLL reference clock
 - clock-output-names: name of the output clock line to the DSI encoder
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v2 1/5] dt-bindings: display: mediatek: disp: add documentation for MT8167 SoC

2020-10-24 Thread Fabien Parent
Add binding documentation for the MT8167 SoC

Signed-off-by: Fabien Parent 
Reviewed-by: Chun-Kuang Hu 
---

Changelog:

V2: No change

 .../devicetree/bindings/display/mediatek/mediatek,disp.txt| 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt
index 121220745d46..33977e15bebd 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt
@@ -43,7 +43,7 @@ Required properties (all function blocks):
"mediatek,-dpi"   - DPI controller, see 
mediatek,dpi.txt
"mediatek,-disp-mutex"- display mutex
"mediatek,-disp-od"   - overdrive
-  the supported chips are mt2701, mt7623, mt2712 and mt8173.
+  the supported chips are mt2701, mt7623, mt2712, mt8167 and mt8173.
 - reg: Physical base address and length of the function block register space
 - interrupts: The interrupt signal from the function block (required, except 
for
   merge and split function blocks).
@@ -59,7 +59,7 @@ Required properties (DMA function blocks):
"mediatek,-disp-ovl"
"mediatek,-disp-rdma"
"mediatek,-disp-wdma"
-  the supported chips are mt2701 and mt8173.
+  the supported chips are mt2701, mt8167 and mt8173.
 - larb: Should contain a phandle pointing to the local arbiter device as 
defined
   in Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt
 - iommus: Should point to the respective IOMMU block with master port as
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 4/8] drm/mediatek: dsi: add pdata variable to start clk in HS mode

2020-10-23 Thread Fabien Parent
Hi Chun-Kuang,

On Wed, Oct 21, 2020 at 7:07 PM Chun-Kuang Hu  wrote:
>
> Hi, Fabien:
>
> Fabien Parent  於 2020年10月21日 週三 上午1:43寫道:
> >
> > On MT8167, DSI seems to work fine only if we start the clk in HS mode.
> > If we don't start the clk in HS but try to switch later to HS, the
> > display does not work.
> >
> > This commit adds a platform data variable to be used to start the
> > DSI clk in HS mode at power on.
>
> This patch looks like a hack patch. If you cowork with Mediatek,
> please find out the correct solution or give a reasonable explanation.
> If you could not get help from Mediatek, I would wait for comment on
> this patch.

It seems that this workaround is because of a specific display and not
because of a specific issue of the MT8167 DSI IP. I will drop this
patch in v2.

> Regards,
> Chun-Kuang.
>
> >
> > Signed-off-by: Fabien Parent 
> > ---
> >  drivers/gpu/drm/mediatek/mtk_dsi.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c 
> > b/drivers/gpu/drm/mediatek/mtk_dsi.c
> > index 4a188a942c38..461643c05689 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_dsi.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
> > @@ -175,6 +175,7 @@ struct mtk_dsi_driver_data {
> > const u32 reg_cmdq_off;
> > bool has_shadow_ctl;
> > bool has_size_ctl;
> > +   bool use_hs_on_power_on;
> >  };
> >
> >  struct mtk_dsi {
> > @@ -671,7 +672,7 @@ static int mtk_dsi_poweron(struct mtk_dsi *dsi)
> >
> > mtk_dsi_clk_ulp_mode_leave(dsi);
> > mtk_dsi_lane0_ulp_mode_leave(dsi);
> > -   mtk_dsi_clk_hs_mode(dsi, 0);
> > +   mtk_dsi_clk_hs_mode(dsi, !!dsi->driver_data->use_hs_on_power_on);
> >
> > return 0;
> >  err_disable_engine_clk:
> > --
> > 2.28.0
> >
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 2/8] dt-bindings: display: mediatek: dsi: add documentation for MT8167 SoC

2020-10-22 Thread Fabien Parent
Hi Chun-Kuang,

On Wed, Oct 21, 2020 at 7:01 PM Chun-Kuang Hu  wrote:
>
> Hi, Fabien:
>
> Fabien Parent  於 2020年10月21日 週三 上午1:43寫道:
> >
> > Add binding documentation for the MT8167 SoC. The SoC needs
> > an additional clock compared to the already supported SoC: mipi26m.
> >
> > Signed-off-by: Fabien Parent 
> > ---
> >  .../devicetree/bindings/display/mediatek/mediatek,dsi.txt  | 7 ---
> >  1 file changed, 4 insertions(+), 3 deletions(-)
> >
> > diff --git 
> > a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt 
> > b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
> > index f06f24d405a5..10ae6be7225e 100644
> > --- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
> > +++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
> > @@ -7,12 +7,13 @@ channel output.
> >
> >  Required properties:
> >  - compatible: "mediatek,-dsi"
> > -- the supported chips are mt2701, mt7623, mt8173 and mt8183.
> > +- the supported chips are mt2701, mt7623, mt8167, mt8173 and mt8183.
> >  - reg: Physical base address and length of the controller's registers
> >  - interrupts: The interrupt signal from the function block.
> >  - clocks: device clocks
> >See Documentation/devicetree/bindings/clock/clock-bindings.txt for 
> > details.
> > -- clock-names: must contain "engine", "digital", and "hs"
> > +- clock-names: must contain "engine", "digital", "hs"
> > +  Can optionnally also contain "mipi26m"
>
> It seems that mipi26m is the clock of mipi-tx. In mt8173.dtsi [1],
> mipi-tx's clock is 26m.
>
> mipi_tx0: mipi-dphy@10215000 {
> compatible = "mediatek,mt8173-mipi-tx";
> reg = <0 0x10215000 0 0x1000>;
> clocks = <&clk26m>;
> clock-output-names = "mipi_tx0_pll";
> #clock-cells = <0>;
> #phy-cells = <0>;
> status = "disabled";
> };
>
> If this is the clock of mipi-tx, it should be controlled by mipi-tx driver.

Thanks, I will fix that in v2.

>
> [1] 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/arm64/boot/dts/mediatek/mt8173.dtsi?h=v5.9
>
> Regards,
> Chun-Kuang.
>
> >  - phys: phandle link to the MIPI D-PHY controller.
> >  - phy-names: must contain "dphy"
> >  - port: Output port node with endpoint definitions as described in
> > @@ -26,7 +27,7 @@ The MIPI TX configuration module controls the MIPI D-PHY.
> >
> >  Required properties:
> >  - compatible: "mediatek,-mipi-tx"
> > -- the supported chips are mt2701, 7623, mt8173 and mt8183.
> > +- the supported chips are mt2701, 7623, mt8167, mt8173 and mt8183.
> >  - reg: Physical base address and length of the controller's registers
> >  - clocks: PLL reference clock
> >  - clock-output-names: name of the output clock line to the DSI encoder
> > --
> > 2.28.0
> >
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 2/8] dt-bindings: display: mediatek: dsi: add documentation for MT8167 SoC

2020-10-21 Thread Fabien Parent
Add binding documentation for the MT8167 SoC. The SoC needs
an additional clock compared to the already supported SoC: mipi26m.

Signed-off-by: Fabien Parent 
---
 .../devicetree/bindings/display/mediatek/mediatek,dsi.txt  | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
index f06f24d405a5..10ae6be7225e 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,dsi.txt
@@ -7,12 +7,13 @@ channel output.
 
 Required properties:
 - compatible: "mediatek,-dsi"
-- the supported chips are mt2701, mt7623, mt8173 and mt8183.
+- the supported chips are mt2701, mt7623, mt8167, mt8173 and mt8183.
 - reg: Physical base address and length of the controller's registers
 - interrupts: The interrupt signal from the function block.
 - clocks: device clocks
   See Documentation/devicetree/bindings/clock/clock-bindings.txt for details.
-- clock-names: must contain "engine", "digital", and "hs"
+- clock-names: must contain "engine", "digital", "hs"
+  Can optionnally also contain "mipi26m"
 - phys: phandle link to the MIPI D-PHY controller.
 - phy-names: must contain "dphy"
 - port: Output port node with endpoint definitions as described in
@@ -26,7 +27,7 @@ The MIPI TX configuration module controls the MIPI D-PHY.
 
 Required properties:
 - compatible: "mediatek,-mipi-tx"
-- the supported chips are mt2701, 7623, mt8173 and mt8183.
+- the supported chips are mt2701, 7623, mt8167, mt8173 and mt8183.
 - reg: Physical base address and length of the controller's registers
 - clocks: PLL reference clock
 - clock-output-names: name of the output clock line to the DSI encoder
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 8/8] drm/mediatek: Add support for main DDP path on MT8167

2020-10-21 Thread Fabien Parent
Add the main (DSI) drm display path for MT8167.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_drm_drv.c | 38 ++
 1 file changed, 38 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c 
b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 59c85c63b7cc..3952435093fe 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -112,6 +112,17 @@ static const enum mtk_ddp_comp_id mt2712_mtk_ddp_third[] = 
{
DDP_COMPONENT_PWM2,
 };
 
+static enum mtk_ddp_comp_id mt8167_mtk_ddp_main[] = {
+   DDP_COMPONENT_OVL0,
+   DDP_COMPONENT_COLOR0,
+   DDP_COMPONENT_CCORR,
+   DDP_COMPONENT_AAL0,
+   DDP_COMPONENT_GAMMA,
+   DDP_COMPONENT_DITHER,
+   DDP_COMPONENT_RDMA0,
+   DDP_COMPONENT_DSI0,
+};
+
 static const enum mtk_ddp_comp_id mt8173_mtk_ddp_main[] = {
DDP_COMPONENT_OVL0,
DDP_COMPONENT_COLOR0,
@@ -163,6 +174,11 @@ static const struct mtk_mmsys_driver_data 
mt8173_mmsys_driver_data = {
.ext_len = ARRAY_SIZE(mt8173_mtk_ddp_ext),
 };
 
+static const struct mtk_mmsys_driver_data mt8167_mmsys_driver_data = {
+   .main_path = mt8167_mtk_ddp_main,
+   .main_len = ARRAY_SIZE(mt8167_mtk_ddp_main),
+};
+
 static int mtk_drm_kms_init(struct drm_device *drm)
 {
struct mtk_drm_private *private = drm->dev_private;
@@ -401,26 +417,42 @@ static const struct component_master_ops mtk_drm_ops = {
 static const struct of_device_id mtk_ddp_comp_dt_ids[] = {
{ .compatible = "mediatek,mt2701-disp-ovl",
  .data = (void *)MTK_DISP_OVL },
+   { .compatible = "mediatek,mt8167-disp-ovl",
+ .data = (void *)MTK_DISP_OVL },
{ .compatible = "mediatek,mt8173-disp-ovl",
  .data = (void *)MTK_DISP_OVL },
{ .compatible = "mediatek,mt2701-disp-rdma",
  .data = (void *)MTK_DISP_RDMA },
+   { .compatible = "mediatek,mt8167-disp-rdma",
+ .data = (void *)MTK_DISP_RDMA },
{ .compatible = "mediatek,mt8173-disp-rdma",
  .data = (void *)MTK_DISP_RDMA },
{ .compatible = "mediatek,mt8173-disp-wdma",
  .data = (void *)MTK_DISP_WDMA },
+   { .compatible = "mediatek,mt8167-disp-ccorr",
+ .data = (void *)MTK_DISP_CCORR },
{ .compatible = "mediatek,mt2701-disp-color",
  .data = (void *)MTK_DISP_COLOR },
+   { .compatible = "mediatek,mt8167-disp-color",
+ .data = (void *)MTK_DISP_COLOR },
{ .compatible = "mediatek,mt8173-disp-color",
  .data = (void *)MTK_DISP_COLOR },
+   { .compatible = "mediatek,mt8167-disp-aal",
+ .data = (void *)MTK_DISP_AAL},
{ .compatible = "mediatek,mt8173-disp-aal",
  .data = (void *)MTK_DISP_AAL},
+   { .compatible = "mediatek,mt8167-disp-gamma",
+ .data = (void *)MTK_DISP_GAMMA, },
{ .compatible = "mediatek,mt8173-disp-gamma",
  .data = (void *)MTK_DISP_GAMMA, },
+   { .compatible = "mediatek,mt8167-disp-dither",
+ .data = (void *)MTK_DISP_DITHER },
{ .compatible = "mediatek,mt8173-disp-ufoe",
  .data = (void *)MTK_DISP_UFOE },
{ .compatible = "mediatek,mt2701-dsi",
  .data = (void *)MTK_DSI },
+   { .compatible = "mediatek,mt8167-dsi",
+ .data = (void *)MTK_DSI },
{ .compatible = "mediatek,mt8173-dsi",
  .data = (void *)MTK_DSI },
{ .compatible = "mediatek,mt2701-dpi",
@@ -431,10 +463,14 @@ static const struct of_device_id mtk_ddp_comp_dt_ids[] = {
  .data = (void *)MTK_DISP_MUTEX },
{ .compatible = "mediatek,mt2712-disp-mutex",
  .data = (void *)MTK_DISP_MUTEX },
+   { .compatible = "mediatek,mt8167-disp-mutex",
+ .data = (void *)MTK_DISP_MUTEX },
{ .compatible = "mediatek,mt8173-disp-mutex",
  .data = (void *)MTK_DISP_MUTEX },
{ .compatible = "mediatek,mt2701-disp-pwm",
  .data = (void *)MTK_DISP_BLS },
+   { .compatible = "mediatek,mt8167-disp-pwm",
+ .data = (void *)MTK_DISP_PWM },
{ .compatible = "mediatek,mt8173-disp-pwm",
  .data = (void *)MTK_DISP_PWM },
{ .compatible = "mediatek,mt8173-disp-od",
@@ -449,6 +485,8 @@ static const struct of_device_id mtk_drm_of_ids[] = {
  .data = &mt7623_mmsys_driver_data},
{ .compatible = "mediatek,mt2712-mmsys",
  .data = &mt2712_mmsys_driver_data},
+   { .compatible = "mediatek,mt8167-mmsys",
+ .data = &mt8167_mmsys_driver_data},
{ .compatible = "mediatek,mt8173-mmsys",
  .data = &mt8173_mmsys_driver_data},
{ }
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 7/8] drm/mediatek: add DDP support for MT8167

2020-10-21 Thread Fabien Parent
Add DDP support for MT8167 SoC.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_drm_ddp.c | 50 ++
 1 file changed, 50 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c 
b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c
index 014c1bbe1df2..bb62fdcf3d71 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_ddp.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp.c
@@ -25,6 +25,19 @@
 
 #define INT_MUTEX  BIT(1)
 
+#define MT8167_MUTEX_MOD_DISP_PWM  1
+#define MT8167_MUTEX_MOD_DISP_OVL0 6
+#define MT8167_MUTEX_MOD_DISP_OVL1 7
+#define MT8167_MUTEX_MOD_DISP_RDMA08
+#define MT8167_MUTEX_MOD_DISP_RDMA19
+#define MT8167_MUTEX_MOD_DISP_WDMA010
+#define MT8167_MUTEX_MOD_DISP_CCORR11
+#define MT8167_MUTEX_MOD_DISP_COLOR12
+#define MT8167_MUTEX_MOD_DISP_AAL  13
+#define MT8167_MUTEX_MOD_DISP_GAMMA14
+#define MT8167_MUTEX_MOD_DISP_DITHER   15
+#define MT8167_MUTEX_MOD_DISP_UFOE 16
+
 #define MT8173_MUTEX_MOD_DISP_OVL0 11
 #define MT8173_MUTEX_MOD_DISP_OVL1 12
 #define MT8173_MUTEX_MOD_DISP_RDMA013
@@ -73,6 +86,8 @@
 #define MUTEX_SOF_DPI1 4
 #define MUTEX_SOF_DSI2 5
 #define MUTEX_SOF_DSI3 6
+#define MT8167_MUTEX_SOF_DPI0  2
+#define MT8167_MUTEX_SOF_DPI1  3
 
 
 struct mtk_disp_mutex {
@@ -135,6 +150,21 @@ static const unsigned int 
mt2712_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[DDP_COMPONENT_WDMA1] = MT2712_MUTEX_MOD_DISP_WDMA1,
 };
 
+static const unsigned int mt8167_mutex_mod[DDP_COMPONENT_ID_MAX] = {
+   [DDP_COMPONENT_AAL0] = MT8167_MUTEX_MOD_DISP_AAL,
+   [DDP_COMPONENT_CCORR] = MT8167_MUTEX_MOD_DISP_CCORR,
+   [DDP_COMPONENT_COLOR0] = MT8167_MUTEX_MOD_DISP_COLOR,
+   [DDP_COMPONENT_DITHER] = MT8167_MUTEX_MOD_DISP_DITHER,
+   [DDP_COMPONENT_GAMMA] = MT8167_MUTEX_MOD_DISP_GAMMA,
+   [DDP_COMPONENT_OVL0] = MT8167_MUTEX_MOD_DISP_OVL0,
+   [DDP_COMPONENT_OVL1] = MT8167_MUTEX_MOD_DISP_OVL1,
+   [DDP_COMPONENT_PWM0] = MT8167_MUTEX_MOD_DISP_PWM,
+   [DDP_COMPONENT_RDMA0] = MT8167_MUTEX_MOD_DISP_RDMA0,
+   [DDP_COMPONENT_RDMA1] = MT8167_MUTEX_MOD_DISP_RDMA1,
+   [DDP_COMPONENT_UFOE] = MT8167_MUTEX_MOD_DISP_UFOE,
+   [DDP_COMPONENT_WDMA0] = MT8167_MUTEX_MOD_DISP_WDMA0,
+};
+
 static const unsigned int mt8173_mutex_mod[DDP_COMPONENT_ID_MAX] = {
[DDP_COMPONENT_AAL0] = MT8173_MUTEX_MOD_DISP_AAL,
[DDP_COMPONENT_COLOR0] = MT8173_MUTEX_MOD_DISP_COLOR0,
@@ -163,6 +193,16 @@ static const unsigned int 
mt2712_mutex_sof[DDP_MUTEX_SOF_DSI3 + 1] = {
[DDP_MUTEX_SOF_DSI3] = MUTEX_SOF_DSI3,
 };
 
+static const unsigned int mt8167_mutex_sof[DDP_MUTEX_SOF_DSI3 + 1] = {
+   [DDP_MUTEX_SOF_SINGLE_MODE] = MUTEX_SOF_SINGLE_MODE,
+   [DDP_MUTEX_SOF_DSI0] = MUTEX_SOF_DSI0,
+   [DDP_MUTEX_SOF_DSI1] = MUTEX_SOF_DSI1,
+   [DDP_MUTEX_SOF_DPI0] = MT8167_MUTEX_SOF_DPI0,
+   [DDP_MUTEX_SOF_DPI1] = MT8167_MUTEX_SOF_DPI1,
+   [DDP_MUTEX_SOF_DSI2] = MUTEX_SOF_DSI2,
+   [DDP_MUTEX_SOF_DSI3] = MUTEX_SOF_DSI3,
+};
+
 static const struct mtk_ddp_data mt2701_ddp_driver_data = {
.mutex_mod = mt2701_mutex_mod,
.mutex_sof = mt2712_mutex_sof,
@@ -177,6 +217,14 @@ static const struct mtk_ddp_data mt2712_ddp_driver_data = {
.mutex_sof_reg = MT2701_DISP_MUTEX0_SOF0,
 };
 
+static const struct mtk_ddp_data mt8167_ddp_driver_data = {
+   .mutex_mod = mt8167_mutex_mod,
+   .mutex_sof = mt8167_mutex_sof,
+   .mutex_mod_reg = MT2701_DISP_MUTEX0_MOD0,
+   .mutex_sof_reg = MT2701_DISP_MUTEX0_SOF0,
+   .no_clk = true,
+};
+
 static const struct mtk_ddp_data mt8173_ddp_driver_data = {
.mutex_mod = mt8173_mutex_mod,
.mutex_sof = mt2712_mutex_sof,
@@ -400,6 +448,8 @@ static const struct of_device_id ddp_driver_dt_match[] = {
  .data = &mt2701_ddp_driver_data},
{ .compatible = "mediatek,mt2712-disp-mutex",
  .data = &mt2712_ddp_driver_data},
+   { .compatible = "mediatek,mt8167-disp-mutex",
+ .data = &mt8167_ddp_driver_data},
{ .compatible = "mediatek,mt8173-disp-mutex",
  .data = &mt8173_ddp_driver_data},
{},
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 1/8] dt-bindings: display: mediatek: disp: add documentation for MT8167 SoC

2020-10-21 Thread Fabien Parent
Add binding documentation for the MT8167 SoC

Signed-off-by: Fabien Parent 
---
 .../devicetree/bindings/display/mediatek/mediatek,disp.txt| 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt 
b/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt
index 121220745d46..33977e15bebd 100644
--- a/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt
+++ b/Documentation/devicetree/bindings/display/mediatek/mediatek,disp.txt
@@ -43,7 +43,7 @@ Required properties (all function blocks):
"mediatek,-dpi"   - DPI controller, see 
mediatek,dpi.txt
"mediatek,-disp-mutex"- display mutex
"mediatek,-disp-od"   - overdrive
-  the supported chips are mt2701, mt7623, mt2712 and mt8173.
+  the supported chips are mt2701, mt7623, mt2712, mt8167 and mt8173.
 - reg: Physical base address and length of the function block register space
 - interrupts: The interrupt signal from the function block (required, except 
for
   merge and split function blocks).
@@ -59,7 +59,7 @@ Required properties (DMA function blocks):
"mediatek,-disp-ovl"
"mediatek,-disp-rdma"
"mediatek,-disp-wdma"
-  the supported chips are mt2701 and mt8173.
+  the supported chips are mt2701, mt8167 and mt8173.
 - larb: Should contain a phandle pointing to the local arbiter device as 
defined
   in Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt
 - iommus: Should point to the respective IOMMU block with master port as
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 3/8] drm/mediatek: add disp-color MT8167 support

2020-10-21 Thread Fabien Parent
Add support for disp-color on MT8167 SoC.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_disp_color.c | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_disp_color.c 
b/drivers/gpu/drm/mediatek/mtk_disp_color.c
index 3ae9c810845b..a1227cefbf31 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_color.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_color.c
@@ -16,6 +16,7 @@
 
 #define DISP_COLOR_CFG_MAIN0x0400
 #define DISP_COLOR_START_MT27010x0f00
+#define DISP_COLOR_START_MT81670x0400
 #define DISP_COLOR_START_MT81730x0c00
 #define DISP_COLOR_START(comp) ((comp)->data->color_offset)
 #define DISP_COLOR_WIDTH(comp) (DISP_COLOR_START(comp) + 0x50)
@@ -148,6 +149,10 @@ static const struct mtk_disp_color_data 
mt2701_color_driver_data = {
.color_offset = DISP_COLOR_START_MT2701,
 };
 
+static const struct mtk_disp_color_data mt8167_color_driver_data = {
+   .color_offset = DISP_COLOR_START_MT8167,
+};
+
 static const struct mtk_disp_color_data mt8173_color_driver_data = {
.color_offset = DISP_COLOR_START_MT8173,
 };
@@ -155,6 +160,8 @@ static const struct mtk_disp_color_data 
mt8173_color_driver_data = {
 static const struct of_device_id mtk_disp_color_driver_dt_match[] = {
{ .compatible = "mediatek,mt2701-disp-color",
  .data = &mt2701_color_driver_data},
+   { .compatible = "mediatek,mt8167-disp-color",
+ .data = &mt8167_color_driver_data},
{ .compatible = "mediatek,mt8173-disp-color",
  .data = &mt8173_color_driver_data},
{},
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 0/8] Add DRM/DSI support for MT8167 SoC.

2020-10-21 Thread Fabien Parent
This series adds support for DSI on the MT8167 SoC. HDMI is not yet supported
as secondary display path.

mmsys is not supported by this series and will be sent in a seperate series
based on [0].

[0] https://patchwork.kernel.org/project/linux-mediatek/list/?series=360447

Fabien Parent (8):
  dt-bindings: display: mediatek: disp: add documentation for MT8167 SoC
  dt-bindings: display: mediatek: dsi: add documentation for MT8167 SoC
  drm/mediatek: add disp-color MT8167 support
  drm/mediatek: dsi: add pdata variable to start clk in HS mode
  drm/mediatek: dsi: add support for mipi26m clk
  drm/mediatek: dsi: add support for MT8167 SoC
  drm/mediatek: add DDP support for MT8167
  drm/mediatek: Add support for main DDP path on MT8167

 .../display/mediatek/mediatek,disp.txt|  4 +-
 .../display/mediatek/mediatek,dsi.txt |  7 +--
 drivers/gpu/drm/mediatek/mtk_disp_color.c |  7 +++
 drivers/gpu/drm/mediatek/mtk_drm_ddp.c| 50 +++
 drivers/gpu/drm/mediatek/mtk_drm_drv.c| 38 ++
 drivers/gpu/drm/mediatek/mtk_dsi.c| 20 +++-
 6 files changed, 120 insertions(+), 6 deletions(-)

-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 5/8] drm/mediatek: dsi: add support for mipi26m clk

2020-10-21 Thread Fabien Parent
MT8167 SoC needs an additional clock to be enabled. Add support for
the mipi26m clk.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_dsi.c | 10 ++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c 
b/drivers/gpu/drm/mediatek/mtk_dsi.c
index 461643c05689..08786734df8e 100644
--- a/drivers/gpu/drm/mediatek/mtk_dsi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
@@ -193,6 +193,7 @@ struct mtk_dsi {
struct clk *engine_clk;
struct clk *digital_clk;
struct clk *hs_clk;
+   struct clk *mipi26m;
 
u32 data_rate;
 
@@ -653,6 +654,12 @@ static int mtk_dsi_poweron(struct mtk_dsi *dsi)
goto err_disable_engine_clk;
}
 
+   ret = clk_prepare_enable(dsi->mipi26m);
+   if (ret < 0) {
+   dev_err(dev, "Failed to enable mipi26m clock: %d\n", ret);
+   goto err_phy_power_off;
+   }
+
mtk_dsi_enable(dsi);
 
if (dsi->driver_data->has_shadow_ctl)
@@ -710,6 +717,7 @@ static void mtk_dsi_poweroff(struct mtk_dsi *dsi)
 
clk_disable_unprepare(dsi->engine_clk);
clk_disable_unprepare(dsi->digital_clk);
+   clk_disable_unprepare(dsi->mipi26m);
 
phy_power_off(dsi->phy);
 }
@@ -1086,6 +1094,8 @@ static int mtk_dsi_probe(struct platform_device *pdev)
goto err_unregister_host;
}
 
+   dsi->mipi26m = devm_clk_get_optional(dev, "mipi26m");
+
dsi->hs_clk = devm_clk_get(dev, "hs");
if (IS_ERR(dsi->hs_clk)) {
ret = PTR_ERR(dsi->hs_clk);
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 6/8] drm/mediatek: dsi: add support for MT8167 SoC

2020-10-21 Thread Fabien Parent
Add platform data to support the MT8167 SoC.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_dsi.c | 7 +++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c 
b/drivers/gpu/drm/mediatek/mtk_dsi.c
index 08786734df8e..d90dd0f83292 100644
--- a/drivers/gpu/drm/mediatek/mtk_dsi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
@@ -1182,6 +1182,11 @@ static int mtk_dsi_remove(struct platform_device *pdev)
return 0;
 }
 
+static const struct mtk_dsi_driver_data mt8167_dsi_driver_data = {
+   .reg_cmdq_off = 0x180,
+   .use_hs_on_power_on = true,
+};
+
 static const struct mtk_dsi_driver_data mt8173_dsi_driver_data = {
.reg_cmdq_off = 0x200,
 };
@@ -1199,6 +1204,8 @@ static const struct mtk_dsi_driver_data 
mt8183_dsi_driver_data = {
 static const struct of_device_id mtk_dsi_of_match[] = {
{ .compatible = "mediatek,mt2701-dsi",
  .data = &mt2701_dsi_driver_data },
+   { .compatible = "mediatek,mt8167-dsi",
+ .data = &mt8167_dsi_driver_data },
{ .compatible = "mediatek,mt8173-dsi",
  .data = &mt8173_dsi_driver_data },
{ .compatible = "mediatek,mt8183-dsi",
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 4/8] drm/mediatek: dsi: add pdata variable to start clk in HS mode

2020-10-21 Thread Fabien Parent
On MT8167, DSI seems to work fine only if we start the clk in HS mode.
If we don't start the clk in HS but try to switch later to HS, the
display does not work.

This commit adds a platform data variable to be used to start the
DSI clk in HS mode at power on.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_dsi.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c 
b/drivers/gpu/drm/mediatek/mtk_dsi.c
index 4a188a942c38..461643c05689 100644
--- a/drivers/gpu/drm/mediatek/mtk_dsi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
@@ -175,6 +175,7 @@ struct mtk_dsi_driver_data {
const u32 reg_cmdq_off;
bool has_shadow_ctl;
bool has_size_ctl;
+   bool use_hs_on_power_on;
 };
 
 struct mtk_dsi {
@@ -671,7 +672,7 @@ static int mtk_dsi_poweron(struct mtk_dsi *dsi)
 
mtk_dsi_clk_ulp_mode_leave(dsi);
mtk_dsi_lane0_ulp_mode_leave(dsi);
-   mtk_dsi_clk_hs_mode(dsi, 0);
+   mtk_dsi_clk_hs_mode(dsi, !!dsi->driver_data->use_hs_on_power_on);
 
return 0;
 err_disable_engine_clk:
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v2 2/2] drm/mediatek: mtk_hdmi: add MT8167 support for HDMI

2020-10-15 Thread Fabien Parent
Hi Chun-Kuang,

On Wed, Oct 14, 2020 at 6:25 PM Fabien Parent  wrote:
>
> Hi Chun-Kuang,
>
> On Wed, Oct 14, 2020 at 3:00 PM Chun-Kuang Hu  wrote:
> >
> > Hi, Fabien:
> >
> > Fabien Parent  於 2020年10月14日 週三 上午2:19寫道:
> > >
> > > Add support for HDMI on MT8167. HDMI on MT8167 is similar to
> > > MT8173/MT2701 execpt for the two registers: SYS_CFG1C and SYS_CFG20
> >
> > I think you should drop this series. According to Mediatek HDMI
> > binding document [1], the second parameter of mediatek,syscon-hdmi is
> > the register offset. I think you could set register offset to 0x800
> > for mt8167.
> Ok, thank you. I will try it.

Thanks, it works. Dropping this series.

>
> >
> > [1] 
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.txt?h=v5.9
> >
> > Regards,
> > Chun-Kuang.
> >
> > >
> > > Signed-off-by: Fabien Parent 
> > > ---
> > >
> > > Changelog:
> > > v2: fix name of pdata structure
> > >
> > >  drivers/gpu/drm/mediatek/mtk_hdmi.c  | 7 +++
> > >  drivers/gpu/drm/mediatek/mtk_hdmi_regs.h | 2 ++
> > >  2 files changed, 9 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c 
> > > b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > index 57370c036497..484ea9cd654a 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > > @@ -1835,9 +1835,16 @@ static struct mtk_hdmi_data 
> > > mt8173_hdmi_driver_data = {
> > > .sys_cfg20 = HDMI_SYS_CFG20,
> > >  };
> > >
> > > +static struct mtk_hdmi_data mt8167_hdmi_driver_data = {
> > > +   .sys_cfg1c = MT8167_HDMI_SYS_CFG1C,
> > > +   .sys_cfg20 = MT8167_HDMI_SYS_CFG20,
> > > +};
> > > +
> > >  static const struct of_device_id mtk_drm_hdmi_of_ids[] = {
> > > { .compatible = "mediatek,mt8173-hdmi",
> > >   .data = &mt8173_hdmi_driver_data },
> > > +   { .compatible = "mediatek,mt8167-hdmi",
> > > + .data = &mt8167_hdmi_driver_data },
> > > {}
> > >  };
> > >
> > > diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h 
> > > b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
> > > index 2050ba45b23a..a0f9c367d7aa 100644
> > > --- a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
> > > +++ b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
> > > @@ -195,6 +195,7 @@
> > >  #define GEN_RGB(0 << 7)
> > >
> > >  #define HDMI_SYS_CFG1C 0x000
> > > +#define MT8167_HDMI_SYS_CFG1C  0x800
> > >  #define HDMI_ONBIT(0)
> > >  #define HDMI_RST   BIT(1)
> > >  #define ANLG_ONBIT(2)
> > > @@ -211,6 +212,7 @@
> > >  #define HTPLG_PIN_SEL_OFF  BIT(30)
> > >  #define AES_EFUSE_ENABLE   BIT(31)
> > >  #define HDMI_SYS_CFG20 0x004
> > > +#define MT8167_HDMI_SYS_CFG20  0x804
> > >  #define DEEP_COLOR_MODE_MASK   (3 << 1)
> > >  #define COLOR_8BIT_MODE(0 << 1)
> > >  #define COLOR_10BIT_MODE   (1 << 1)
> > > --
> > > 2.28.0
> > >
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH v2 2/2] drm/mediatek: mtk_hdmi: add MT8167 support for HDMI

2020-10-15 Thread Fabien Parent
Hi Chun-Kuang,

On Wed, Oct 14, 2020 at 3:00 PM Chun-Kuang Hu  wrote:
>
> Hi, Fabien:
>
> Fabien Parent  於 2020年10月14日 週三 上午2:19寫道:
> >
> > Add support for HDMI on MT8167. HDMI on MT8167 is similar to
> > MT8173/MT2701 execpt for the two registers: SYS_CFG1C and SYS_CFG20
>
> I think you should drop this series. According to Mediatek HDMI
> binding document [1], the second parameter of mediatek,syscon-hdmi is
> the register offset. I think you could set register offset to 0x800
> for mt8167.
Ok, thank you. I will try it.

>
> [1] 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/display/mediatek/mediatek,hdmi.txt?h=v5.9
>
> Regards,
> Chun-Kuang.
>
> >
> > Signed-off-by: Fabien Parent 
> > ---
> >
> > Changelog:
> > v2: fix name of pdata structure
> >
> >  drivers/gpu/drm/mediatek/mtk_hdmi.c  | 7 +++
> >  drivers/gpu/drm/mediatek/mtk_hdmi_regs.h | 2 ++
> >  2 files changed, 9 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c 
> > b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > index 57370c036497..484ea9cd654a 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> > @@ -1835,9 +1835,16 @@ static struct mtk_hdmi_data mt8173_hdmi_driver_data 
> > = {
> > .sys_cfg20 = HDMI_SYS_CFG20,
> >  };
> >
> > +static struct mtk_hdmi_data mt8167_hdmi_driver_data = {
> > +   .sys_cfg1c = MT8167_HDMI_SYS_CFG1C,
> > +   .sys_cfg20 = MT8167_HDMI_SYS_CFG20,
> > +};
> > +
> >  static const struct of_device_id mtk_drm_hdmi_of_ids[] = {
> > { .compatible = "mediatek,mt8173-hdmi",
> >   .data = &mt8173_hdmi_driver_data },
> > +   { .compatible = "mediatek,mt8167-hdmi",
> > + .data = &mt8167_hdmi_driver_data },
> > {}
> >  };
> >
> > diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h 
> > b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
> > index 2050ba45b23a..a0f9c367d7aa 100644
> > --- a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
> > +++ b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
> > @@ -195,6 +195,7 @@
> >  #define GEN_RGB(0 << 7)
> >
> >  #define HDMI_SYS_CFG1C 0x000
> > +#define MT8167_HDMI_SYS_CFG1C  0x800
> >  #define HDMI_ONBIT(0)
> >  #define HDMI_RST   BIT(1)
> >  #define ANLG_ONBIT(2)
> > @@ -211,6 +212,7 @@
> >  #define HTPLG_PIN_SEL_OFF  BIT(30)
> >  #define AES_EFUSE_ENABLE   BIT(31)
> >  #define HDMI_SYS_CFG20 0x004
> > +#define MT8167_HDMI_SYS_CFG20  0x804
> >  #define DEEP_COLOR_MODE_MASK   (3 << 1)
> >  #define COLOR_8BIT_MODE(0 << 1)
> >  #define COLOR_10BIT_MODE   (1 << 1)
> > --
> > 2.28.0
> >
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 2/2] drm/mediatek: mtk_hdmi: add MT8167 support for HDMI

2020-10-14 Thread Fabien Parent
On Tue, Oct 13, 2020 at 7:28 PM Fabien Parent  wrote:
>
> Add support for HDMI on MT8167. HDMI on MT8167 is similar to
> MT8173/MT2701 execpt for the two registers: SYS_CFG1C and SYS_CFG20
>
> Signed-off-by: Fabien Parent 
> ---
>  drivers/gpu/drm/mediatek/mtk_hdmi.c  | 7 +++
>  drivers/gpu/drm/mediatek/mtk_hdmi_regs.h | 2 ++
>  2 files changed, 9 insertions(+)
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c 
> b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> index c70f195c21be..7762be5cb446 100644
> --- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
> @@ -1835,9 +1835,16 @@ static struct mtk_hdmi_data mt8173_hdmi_driver_data = {
> .sys_cfg20 = HDMI_SYS_CFG20,
>  };
>
> +static struct mtk_hdmi_conf mt8167_hdmi_driver_data = {

Sent the wrong patch. Sending v2 soon.

> +   .sys_cfg1c = MT8167_HDMI_SYS_CFG1C,
> +   .sys_cfg20 = MT8167_HDMI_SYS_CFG20,
> +};
> +
>  static const struct of_device_id mtk_drm_hdmi_of_ids[] = {
> { .compatible = "mediatek,mt8173-hdmi",
>   .data = &mt8173_hdmi_driver_data },
> +   { .compatible = "mediatek,mt8167-hdmi",
> + .data = &mt8167_hdmi_driver_data },
> {}
>  };
>
> diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h 
> b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
> index 2050ba45b23a..a0f9c367d7aa 100644
> --- a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
> +++ b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
> @@ -195,6 +195,7 @@
>  #define GEN_RGB(0 << 7)
>
>  #define HDMI_SYS_CFG1C 0x000
> +#define MT8167_HDMI_SYS_CFG1C  0x800
>  #define HDMI_ONBIT(0)
>  #define HDMI_RST   BIT(1)
>  #define ANLG_ONBIT(2)
> @@ -211,6 +212,7 @@
>  #define HTPLG_PIN_SEL_OFF  BIT(30)
>  #define AES_EFUSE_ENABLE   BIT(31)
>  #define HDMI_SYS_CFG20 0x004
> +#define MT8167_HDMI_SYS_CFG20  0x804
>  #define DEEP_COLOR_MODE_MASK   (3 << 1)
>  #define COLOR_8BIT_MODE(0 << 1)
>  #define COLOR_10BIT_MODE   (1 << 1)
> --
> 2.28.0
>
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH v2 1/2] drm/mediatek: mtk_hdmi: move 2 registers address into of_data

2020-10-14 Thread Fabien Parent
On MT8167, the two registers SYS_CFG1C and SYS_CFG20 don't have the
same address as on MT8173. Add OF data in order to store the address
of these two registers.

Signed-off-by: Fabien Parent 
---

Changelog:
v2: no changes

 drivers/gpu/drm/mediatek/mtk_hdmi.c | 45 ++---
 1 file changed, 34 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c 
b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index a97725680d4e..57370c036497 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -36,6 +36,11 @@
 
 #define NCTS_BYTES 7
 
+struct mtk_hdmi_data {
+   uint32_t sys_cfg1c;
+   uint32_t sys_cfg20;
+};
+
 enum mtk_hdmi_clk_id {
MTK_HDMI_CLK_HDMI_PIXEL,
MTK_HDMI_CLK_HDMI_PLL,
@@ -146,6 +151,7 @@ struct hdmi_audio_param {
 };
 
 struct mtk_hdmi {
+   const struct mtk_hdmi_data *data;
struct drm_bridge bridge;
struct drm_bridge *next_bridge;
struct drm_connector conn;
@@ -244,21 +250,24 @@ static void mtk_hdmi_hw_make_reg_writable(struct mtk_hdmi 
*hdmi, bool enable)
 */
if (hdmi_phy->conf && hdmi_phy->conf->tz_disabled)
regmap_update_bits(hdmi->sys_regmap,
-  hdmi->sys_offset + HDMI_SYS_CFG20,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   0x80008005, enable ? 0x8005 : 0x8000);
else
arm_smccc_smc(MTK_SIP_SET_AUTHORIZED_SECURE_REG, 0x14000904,
  0x8000, 0, 0, 0, 0, 0, &res);
 
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   HDMI_PCLK_FREE_RUN, enable ? HDMI_PCLK_FREE_RUN : 0);
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG1C,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg1c,
   HDMI_ON | ANLG_ON, enable ? (HDMI_ON | ANLG_ON) : 0);
 }
 
 static void mtk_hdmi_hw_1p4_version_enable(struct mtk_hdmi *hdmi, bool enable)
 {
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   HDMI2P0_EN, enable ? 0 : HDMI2P0_EN);
 }
 
@@ -274,12 +283,15 @@ static void mtk_hdmi_hw_aud_unmute(struct mtk_hdmi *hdmi)
 
 static void mtk_hdmi_hw_reset(struct mtk_hdmi *hdmi)
 {
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG1C,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg1c,
   HDMI_RST, HDMI_RST);
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG1C,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg1c,
   HDMI_RST, 0);
mtk_hdmi_clear_bits(hdmi, GRL_CFG3, CFG3_CONTROL_PACKET_DELAY);
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG1C,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg1c,
   ANLG_ON, ANLG_ON);
 }
 
@@ -362,16 +374,19 @@ static void mtk_hdmi_hw_send_aud_packet(struct mtk_hdmi 
*hdmi, bool enable)
 
 static void mtk_hdmi_hw_config_sys(struct mtk_hdmi *hdmi)
 {
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   HDMI_OUT_FIFO_EN | MHL_MODE_ON, 0);
usleep_range(2000, 4000);
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   HDMI_OUT_FIFO_EN | MHL_MODE_ON, HDMI_OUT_FIFO_EN);
 }
 
 static void mtk_hdmi_hw_set_deep_color_mode(struct mtk_hdmi *hdmi)
 {
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   DEEP_COLOR_MODE_MASK | DEEP_COLOR_EN,
   COLOR_8BIT_MODE);
 }
@@ -1733,6 +1748,7 @@ static int mtk_drm_hdmi_probe(struct platform_device 
*pdev)
return -ENOMEM;
 
hdmi->dev = dev;
+   hdmi->data = of_device_get_match_data(dev);
 
ret = mtk_hdmi_dt_pars

[PATCH v2 2/2] drm/mediatek: mtk_hdmi: add MT8167 support for HDMI

2020-10-14 Thread Fabien Parent
Add support for HDMI on MT8167. HDMI on MT8167 is similar to
MT8173/MT2701 execpt for the two registers: SYS_CFG1C and SYS_CFG20

Signed-off-by: Fabien Parent 
---

Changelog:
v2: fix name of pdata structure

 drivers/gpu/drm/mediatek/mtk_hdmi.c  | 7 +++
 drivers/gpu/drm/mediatek/mtk_hdmi_regs.h | 2 ++
 2 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c 
b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index 57370c036497..484ea9cd654a 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -1835,9 +1835,16 @@ static struct mtk_hdmi_data mt8173_hdmi_driver_data = {
.sys_cfg20 = HDMI_SYS_CFG20,
 };
 
+static struct mtk_hdmi_data mt8167_hdmi_driver_data = {
+   .sys_cfg1c = MT8167_HDMI_SYS_CFG1C,
+   .sys_cfg20 = MT8167_HDMI_SYS_CFG20,
+};
+
 static const struct of_device_id mtk_drm_hdmi_of_ids[] = {
{ .compatible = "mediatek,mt8173-hdmi",
  .data = &mt8173_hdmi_driver_data },
+   { .compatible = "mediatek,mt8167-hdmi",
+ .data = &mt8167_hdmi_driver_data },
{}
 };
 
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h 
b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
index 2050ba45b23a..a0f9c367d7aa 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
@@ -195,6 +195,7 @@
 #define GEN_RGB(0 << 7)
 
 #define HDMI_SYS_CFG1C 0x000
+#define MT8167_HDMI_SYS_CFG1C  0x800
 #define HDMI_ONBIT(0)
 #define HDMI_RST   BIT(1)
 #define ANLG_ONBIT(2)
@@ -211,6 +212,7 @@
 #define HTPLG_PIN_SEL_OFF  BIT(30)
 #define AES_EFUSE_ENABLE   BIT(31)
 #define HDMI_SYS_CFG20 0x004
+#define MT8167_HDMI_SYS_CFG20  0x804
 #define DEEP_COLOR_MODE_MASK   (3 << 1)
 #define COLOR_8BIT_MODE(0 << 1)
 #define COLOR_10BIT_MODE   (1 << 1)
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 1/2] drm/mediatek: mtk_hdmi: move 2 registers address into of_data

2020-10-14 Thread Fabien Parent
On MT8167, the two registers SYS_CFG1C and SYS_CFG20 don't have the
same address as on MT8173. Add OF data in order to store the address
of these two registers.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_hdmi.c | 45 ++---
 1 file changed, 34 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c 
b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index a97725680d4e..c70f195c21be 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -36,6 +36,11 @@
 
 #define NCTS_BYTES 7
 
+struct mtk_hdmi_data {
+   uint32_t sys_cfg1c;
+   uint32_t sys_cfg20;
+};
+
 enum mtk_hdmi_clk_id {
MTK_HDMI_CLK_HDMI_PIXEL,
MTK_HDMI_CLK_HDMI_PLL,
@@ -146,6 +151,7 @@ struct hdmi_audio_param {
 };
 
 struct mtk_hdmi {
+   const struct mtk_hdmi_data *data;
struct drm_bridge bridge;
struct drm_bridge *next_bridge;
struct drm_connector conn;
@@ -244,21 +250,24 @@ static void mtk_hdmi_hw_make_reg_writable(struct mtk_hdmi 
*hdmi, bool enable)
 */
if (hdmi_phy->conf && hdmi_phy->conf->tz_disabled)
regmap_update_bits(hdmi->sys_regmap,
-  hdmi->sys_offset + HDMI_SYS_CFG20,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   0x80008005, enable ? 0x8005 : 0x8000);
else
arm_smccc_smc(MTK_SIP_SET_AUTHORIZED_SECURE_REG, 0x14000904,
  0x8000, 0, 0, 0, 0, 0, &res);
 
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   HDMI_PCLK_FREE_RUN, enable ? HDMI_PCLK_FREE_RUN : 0);
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG1C,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg1c,
   HDMI_ON | ANLG_ON, enable ? (HDMI_ON | ANLG_ON) : 0);
 }
 
 static void mtk_hdmi_hw_1p4_version_enable(struct mtk_hdmi *hdmi, bool enable)
 {
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   HDMI2P0_EN, enable ? 0 : HDMI2P0_EN);
 }
 
@@ -274,12 +283,15 @@ static void mtk_hdmi_hw_aud_unmute(struct mtk_hdmi *hdmi)
 
 static void mtk_hdmi_hw_reset(struct mtk_hdmi *hdmi)
 {
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG1C,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg1c,
   HDMI_RST, HDMI_RST);
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG1C,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg1c,
   HDMI_RST, 0);
mtk_hdmi_clear_bits(hdmi, GRL_CFG3, CFG3_CONTROL_PACKET_DELAY);
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG1C,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg1c,
   ANLG_ON, ANLG_ON);
 }
 
@@ -362,16 +374,19 @@ static void mtk_hdmi_hw_send_aud_packet(struct mtk_hdmi 
*hdmi, bool enable)
 
 static void mtk_hdmi_hw_config_sys(struct mtk_hdmi *hdmi)
 {
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   HDMI_OUT_FIFO_EN | MHL_MODE_ON, 0);
usleep_range(2000, 4000);
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   HDMI_OUT_FIFO_EN | MHL_MODE_ON, HDMI_OUT_FIFO_EN);
 }
 
 static void mtk_hdmi_hw_set_deep_color_mode(struct mtk_hdmi *hdmi)
 {
-   regmap_update_bits(hdmi->sys_regmap, hdmi->sys_offset + HDMI_SYS_CFG20,
+   regmap_update_bits(hdmi->sys_regmap,
+  hdmi->sys_offset + hdmi->data->sys_cfg20,
   DEEP_COLOR_MODE_MASK | DEEP_COLOR_EN,
   COLOR_8BIT_MODE);
 }
@@ -1733,6 +1748,7 @@ static int mtk_drm_hdmi_probe(struct platform_device 
*pdev)
return -ENOMEM;
 
hdmi->dev = dev;
+   hdmi->conf = of_device_get_match_data(dev);
 
ret = mtk_hdmi_dt_parse_pdata(hdmi, pdev);
if (re

[PATCH 2/2] drm/mediatek: mtk_hdmi: add MT8167 support for HDMI

2020-10-14 Thread Fabien Parent
Add support for HDMI on MT8167. HDMI on MT8167 is similar to
MT8173/MT2701 execpt for the two registers: SYS_CFG1C and SYS_CFG20

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/mtk_hdmi.c  | 7 +++
 drivers/gpu/drm/mediatek/mtk_hdmi_regs.h | 2 ++
 2 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi.c 
b/drivers/gpu/drm/mediatek/mtk_hdmi.c
index c70f195c21be..7762be5cb446 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi.c
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi.c
@@ -1835,9 +1835,16 @@ static struct mtk_hdmi_data mt8173_hdmi_driver_data = {
.sys_cfg20 = HDMI_SYS_CFG20,
 };
 
+static struct mtk_hdmi_conf mt8167_hdmi_driver_data = {
+   .sys_cfg1c = MT8167_HDMI_SYS_CFG1C,
+   .sys_cfg20 = MT8167_HDMI_SYS_CFG20,
+};
+
 static const struct of_device_id mtk_drm_hdmi_of_ids[] = {
{ .compatible = "mediatek,mt8173-hdmi",
  .data = &mt8173_hdmi_driver_data },
+   { .compatible = "mediatek,mt8167-hdmi",
+ .data = &mt8167_hdmi_driver_data },
{}
 };
 
diff --git a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h 
b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
index 2050ba45b23a..a0f9c367d7aa 100644
--- a/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
+++ b/drivers/gpu/drm/mediatek/mtk_hdmi_regs.h
@@ -195,6 +195,7 @@
 #define GEN_RGB(0 << 7)
 
 #define HDMI_SYS_CFG1C 0x000
+#define MT8167_HDMI_SYS_CFG1C  0x800
 #define HDMI_ONBIT(0)
 #define HDMI_RST   BIT(1)
 #define ANLG_ONBIT(2)
@@ -211,6 +212,7 @@
 #define HTPLG_PIN_SEL_OFF  BIT(30)
 #define AES_EFUSE_ENABLE   BIT(31)
 #define HDMI_SYS_CFG20 0x004
+#define MT8167_HDMI_SYS_CFG20  0x804
 #define DEEP_COLOR_MODE_MASK   (3 << 1)
 #define COLOR_8BIT_MODE(0 << 1)
 #define COLOR_10BIT_MODE   (1 << 1)
-- 
2.28.0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH] drm/mediatek: fix indentation

2020-01-04 Thread Fabien Parent
Fix indentation in the Makefile by replacing spaces with tabs.

Signed-off-by: Fabien Parent 
---
 drivers/gpu/drm/mediatek/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/mediatek/Makefile 
b/drivers/gpu/drm/mediatek/Makefile
index 8067a4be8311..b2b523913164 100644
--- a/drivers/gpu/drm/mediatek/Makefile
+++ b/drivers/gpu/drm/mediatek/Makefile
@@ -21,7 +21,7 @@ obj-$(CONFIG_DRM_MEDIATEK) += mediatek-drm.o
 mediatek-drm-hdmi-objs := mtk_cec.o \
  mtk_hdmi.o \
  mtk_hdmi_ddc.o \
-  mtk_mt2701_hdmi_phy.o \
+ mtk_mt2701_hdmi_phy.o \
  mtk_mt8173_hdmi_phy.o \
  mtk_hdmi_phy.o
 
-- 
2.25.0.rc0

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel