drm/mediatek: add no_clk into ddp private data
authorCK Hu <ck.hu@mediatek.com>
Wed, 9 Oct 2019 08:37:47 +0000 (16:37 +0800)
committerCK Hu <ck.hu@mediatek.com>
Wed, 9 Oct 2019 08:58:13 +0000 (16:58 +0800)
Mutex has no clock in some SoC, so add no_clk in private data and get
clock according to no_clk.

Signed-off-by: CK Hu <ck.hu@mediatek.com>
drivers/gpu/drm/mediatek/mtk_drm_ddp.c

index 4866a9b43330a02d64b01a71ca665b515bcf4faf..13035c906035107b52c42e79fedf464efd163e12 100644 (file)
@@ -157,6 +157,7 @@ struct mtk_ddp_data {
        const unsigned int *mutex_sof;
        const unsigned int mutex_mod_reg;
        const unsigned int mutex_sof_reg;
+       const bool no_clk;
 };
 
 struct mtk_ddp {
@@ -622,10 +623,14 @@ static int mtk_ddp_probe(struct platform_device *pdev)
        for (i = 0; i < 10; i++)
                ddp->mutex[i].id = i;
 
-       ddp->clk = devm_clk_get(dev, NULL);
-       if (IS_ERR(ddp->clk)) {
-               dev_err(dev, "Failed to get clock\n");
-               return PTR_ERR(ddp->clk);
+       ddp->data = of_device_get_match_data(dev);
+
+       if (!ddp->data->no_clk) {
+               ddp->clk = devm_clk_get(dev, NULL);
+               if (IS_ERR(ddp->clk)) {
+                       dev_err(dev, "Failed to get clock\n");
+                       return PTR_ERR(ddp->clk);
+               }
        }
 
        regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -635,8 +640,6 @@ static int mtk_ddp_probe(struct platform_device *pdev)
                return PTR_ERR(ddp->regs);
        }
 
-       ddp->data = of_device_get_match_data(dev);
-
        platform_set_drvdata(pdev, ddp);
 
        return 0;