lkml.org 
[lkml]   [2022]   [May]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6/7] drm/mediatek: dpi: add support for dpi clock
    Date
    MT8365 requires an additional clock for DPI. Add support for that
    additional clock.

    Signed-off-by: Fabien Parent <fparent@baylibre.com>
    ---
    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
    \
     
     \ /
      Last update: 2022-05-30 22:16    [W:2.315 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site