summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/bridge/sec-dsim.c9
-rw-r--r--drivers/gpu/drm/imx/sec_mipi_dsim-imx.c9
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;