diff options
-rw-r--r-- | drivers/gpu/drm/bridge/sec-dsim.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/imx/sec_mipi_dsim-imx.c | 9 |
2 files changed, 10 insertions, 8 deletions
diff --git a/drivers/gpu/drm/bridge/sec-dsim.c b/drivers/gpu/drm/bridge/sec-dsim.c index 2349e55530b2..303122217833 100644 --- a/drivers/gpu/drm/bridge/sec-dsim.c +++ b/drivers/gpu/drm/bridge/sec-dsim.c @@ -22,6 +22,7 @@ #include <linux/log2.h> #include <linux/module.h> #include <linux/of_graph.h> +#include <linux/pm_runtime.h> #include <drm/bridge/sec_mipi_dsim.h> #include <drm/drmP.h> #include <drm/drm_atomic_helper.h> @@ -1840,10 +1841,12 @@ int sec_mipi_dsim_bind(struct device *dev, struct device *master, void *data, return ret; } - clk_prepare_enable(dsim->clk_cfg); + dev_set_drvdata(dev, dsim); + + pm_runtime_get_sync(dev); version = dsim_read(dsim, DSIM_VERSION); WARN_ON(version != pdata->version); - clk_disable_unprepare(dsim->clk_cfg); + pm_runtime_put_sync(dev); dev_info(dev, "version number is %#x\n", version); @@ -1898,8 +1901,6 @@ int sec_mipi_dsim_bind(struct device *dev, struct device *master, void *data, bridge->encoder = encoder; encoder->bridge = bridge; - dev_set_drvdata(dev, dsim); - /* attach sec dsim bridge and its next bridge if exists */ ret = drm_bridge_attach(encoder, bridge, NULL); if (ret) { diff --git a/drivers/gpu/drm/imx/sec_mipi_dsim-imx.c b/drivers/gpu/drm/imx/sec_mipi_dsim-imx.c index 427fb1aa39dc..560323301a6a 100644 --- a/drivers/gpu/drm/imx/sec_mipi_dsim-imx.c +++ b/drivers/gpu/drm/imx/sec_mipi_dsim-imx.c @@ -261,18 +261,19 @@ static int imx_sec_dsim_bind(struct device *dev, struct device *master, if (ret) return ret; + atomic_set(&dsim_dev->rpm_suspended, 0); + pm_runtime_enable(dev); + atomic_inc(&dsim_dev->rpm_suspended); + /* bind sec dsim bridge */ ret = sec_mipi_dsim_bind(dev, master, data, encoder, res, irq, pdata); if (ret) { dev_err(dev, "failed to bind sec dsim bridge: %d\n", ret); + pm_runtime_disable(dev); drm_encoder_cleanup(encoder); return ret; } - atomic_set(&dsim_dev->rpm_suspended, 0); - pm_runtime_enable(dev); - atomic_inc(&dsim_dev->rpm_suspended); - dev_dbg(dev, "%s: dsim bind end\n", __func__); return 0; |