msm_fb: display: Add clk prepare changes to MDP and rotator
Use clk_prepare_enable and clk_disable_unprepare instead of
clk_enable and clk_disable respectively.
CRs-Fixed: 351340
Change-Id: Ifb2a9405b8f445a90277d2fade9ab33f5becbd6e
Signed-off-by: Ravishangar Kalyanam <rkalya@codeaurora.org>
diff --git a/drivers/char/msm_rotator.c b/drivers/char/msm_rotator.c
index be6c8e4..aec041c 100644
--- a/drivers/char/msm_rotator.c
+++ b/drivers/char/msm_rotator.c
@@ -211,7 +211,7 @@
cancel_delayed_work(&msm_rotator_dev->imem_clk_work);
if (msm_rotator_dev->imem_clk_state != CLK_EN
&& msm_rotator_dev->imem_clk) {
- clk_enable(msm_rotator_dev->imem_clk);
+ clk_prepare_enable(msm_rotator_dev->imem_clk);
msm_rotator_dev->imem_clk_state = CLK_EN;
}
}
@@ -240,7 +240,7 @@
if (mutex_trylock(&msm_rotator_dev->imem_lock)) {
if (msm_rotator_dev->imem_clk_state == CLK_EN
&& msm_rotator_dev->imem_clk) {
- clk_disable(msm_rotator_dev->imem_clk);
+ clk_disable_unprepare(msm_rotator_dev->imem_clk);
msm_rotator_dev->imem_clk_state = CLK_DIS;
} else if (msm_rotator_dev->imem_clk_state == CLK_SUSPEND)
msm_rotator_dev->imem_clk_state = CLK_DIS;
@@ -255,18 +255,18 @@
if (msm_rotator_dev->regulator)
regulator_enable(msm_rotator_dev->regulator);
if (msm_rotator_dev->core_clk != NULL)
- clk_enable(msm_rotator_dev->core_clk);
+ clk_prepare_enable(msm_rotator_dev->core_clk);
if (msm_rotator_dev->pclk != NULL)
- clk_enable(msm_rotator_dev->pclk);
+ clk_prepare_enable(msm_rotator_dev->pclk);
}
/* disable clocks needed by rotator block */
static void disable_rot_clks(void)
{
if (msm_rotator_dev->core_clk != NULL)
- clk_disable(msm_rotator_dev->core_clk);
+ clk_disable_unprepare(msm_rotator_dev->core_clk);
if (msm_rotator_dev->pclk != NULL)
- clk_disable(msm_rotator_dev->pclk);
+ clk_disable_unprepare(msm_rotator_dev->pclk);
if (msm_rotator_dev->regulator)
regulator_disable(msm_rotator_dev->regulator);
}
@@ -1579,7 +1579,7 @@
#ifdef CONFIG_MSM_ROTATOR_USE_IMEM
if (msm_rotator_dev->imem_clk)
- clk_enable(msm_rotator_dev->imem_clk);
+ clk_prepare_enable(msm_rotator_dev->imem_clk);
#endif
enable_rot_clks();
ver = ioread32(MSM_ROTATOR_HW_VERSION);
@@ -1587,7 +1587,7 @@
#ifdef CONFIG_MSM_ROTATOR_USE_IMEM
if (msm_rotator_dev->imem_clk)
- clk_disable(msm_rotator_dev->imem_clk);
+ clk_disable_unprepare(msm_rotator_dev->imem_clk);
#endif
if (ver != pdata->hardware_version_number)
pr_info("%s: invalid HW version ver 0x%x\n",
@@ -1688,7 +1688,7 @@
iounmap(msm_rotator_dev->io_base);
if (msm_rotator_dev->imem_clk) {
if (msm_rotator_dev->imem_clk_state == CLK_EN)
- clk_disable(msm_rotator_dev->imem_clk);
+ clk_disable_unprepare(msm_rotator_dev->imem_clk);
clk_put(msm_rotator_dev->imem_clk);
msm_rotator_dev->imem_clk = NULL;
}
@@ -1714,7 +1714,7 @@
mutex_lock(&msm_rotator_dev->imem_lock);
if (msm_rotator_dev->imem_clk_state == CLK_EN
&& msm_rotator_dev->imem_clk) {
- clk_disable(msm_rotator_dev->imem_clk);
+ clk_disable_unprepare(msm_rotator_dev->imem_clk);
msm_rotator_dev->imem_clk_state = CLK_SUSPEND;
}
mutex_unlock(&msm_rotator_dev->imem_lock);
@@ -1732,7 +1732,7 @@
mutex_lock(&msm_rotator_dev->imem_lock);
if (msm_rotator_dev->imem_clk_state == CLK_SUSPEND
&& msm_rotator_dev->imem_clk) {
- clk_enable(msm_rotator_dev->imem_clk);
+ clk_prepare_enable(msm_rotator_dev->imem_clk);
msm_rotator_dev->imem_clk_state = CLK_EN;
}
mutex_unlock(&msm_rotator_dev->imem_lock);
diff --git a/drivers/video/msm/adv7520.c b/drivers/video/msm/adv7520.c
index df501dd..c0fb370 100644
--- a/drivers/video/msm/adv7520.c
+++ b/drivers/video/msm/adv7520.c
@@ -344,7 +344,7 @@
{
struct msm_fb_data_type *mfd = platform_get_drvdata(pdev);
- clk_enable(tv_enc_clk);
+ clk_prepare_enable(tv_enc_clk);
external_common_state->dev = &pdev->dev;
if (mfd != NULL) {
DEV_INFO("adv7520_power: ON (%dx%d %d)\n",
@@ -378,7 +378,7 @@
adv7520_chip_off();
wake_unlock(&wlock);
adv7520_comm_power(0, 1);
- clk_disable(tv_enc_clk);
+ clk_disable_unprepare(tv_enc_clk);
return 0;
}
diff --git a/drivers/video/msm/hdmi_msm.c b/drivers/video/msm/hdmi_msm.c
index cf08f40..375f82f 100644
--- a/drivers/video/msm/hdmi_msm.c
+++ b/drivers/video/msm/hdmi_msm.c
@@ -4074,30 +4074,30 @@
DEV_DBG("HDMI Clk: %s\n", on ? "Enable" : "Disable");
if (on) {
- rc = clk_enable(hdmi_msm_state->hdmi_app_clk);
+ rc = clk_prepare_enable(hdmi_msm_state->hdmi_app_clk);
if (rc) {
DEV_ERR("'hdmi_app_clk' clock enable failed, rc=%d\n",
rc);
return rc;
}
- rc = clk_enable(hdmi_msm_state->hdmi_m_pclk);
+ rc = clk_prepare_enable(hdmi_msm_state->hdmi_m_pclk);
if (rc) {
DEV_ERR("'hdmi_m_pclk' clock enable failed, rc=%d\n",
rc);
return rc;
}
- rc = clk_enable(hdmi_msm_state->hdmi_s_pclk);
+ rc = clk_prepare_enable(hdmi_msm_state->hdmi_s_pclk);
if (rc) {
DEV_ERR("'hdmi_s_pclk' clock enable failed, rc=%d\n",
rc);
return rc;
}
} else {
- clk_disable(hdmi_msm_state->hdmi_app_clk);
- clk_disable(hdmi_msm_state->hdmi_m_pclk);
- clk_disable(hdmi_msm_state->hdmi_s_pclk);
+ clk_disable_unprepare(hdmi_msm_state->hdmi_app_clk);
+ clk_disable_unprepare(hdmi_msm_state->hdmi_m_pclk);
+ clk_disable_unprepare(hdmi_msm_state->hdmi_s_pclk);
}
return 0;
@@ -4200,7 +4200,7 @@
{
uint32 hpd_ctrl;
- clk_enable(hdmi_msm_state->hdmi_app_clk);
+ clk_prepare_enable(hdmi_msm_state->hdmi_app_clk);
hdmi_msm_state->pd->core_power(1, 1);
hdmi_msm_state->pd->enable_5v(1);
hdmi_msm_set_mode(FALSE);
@@ -4226,7 +4226,7 @@
hdmi_msm_set_mode(FALSE);
hdmi_msm_state->pd->core_power(0, 1);
hdmi_msm_state->pd->enable_5v(0);
- clk_disable(hdmi_msm_state->hdmi_app_clk);
+ clk_disable_unprepare(hdmi_msm_state->hdmi_app_clk);
}
static void hdmi_msm_hpd_off(void)
diff --git a/drivers/video/msm/lcdc.c b/drivers/video/msm/lcdc.c
index 9709a07..863d59d 100644
--- a/drivers/video/msm/lcdc.c
+++ b/drivers/video/msm/lcdc.c
@@ -65,8 +65,8 @@
mfd = platform_get_drvdata(pdev);
ret = panel_next_off(pdev);
- clk_disable(pixel_mdp_clk);
- clk_disable(pixel_lcdc_clk);
+ clk_disable_unprepare(pixel_mdp_clk);
+ clk_disable_unprepare(pixel_lcdc_clk);
if (lcdc_pdata && lcdc_pdata->lcdc_power_save)
lcdc_pdata->lcdc_power_save(0);
@@ -81,7 +81,7 @@
pr_err("%s: ebi1_lcdc_clk set rate failed\n",
__func__);
}
- clk_disable(mfd->ebi1_clk);
+ clk_disable_unprepare(mfd->ebi1_clk);
}
#else
mdp_bus_scale_update_request(0);
@@ -122,7 +122,7 @@
} else {
clk_set_rate(mfd->ebi1_clk, pm_qos_rate * 1000);
}
- clk_enable(mfd->ebi1_clk);
+ clk_prepare_enable(mfd->ebi1_clk);
}
#endif
@@ -137,8 +137,8 @@
goto out;
}
- clk_enable(pixel_mdp_clk);
- clk_enable(pixel_lcdc_clk);
+ clk_prepare_enable(pixel_mdp_clk);
+ clk_prepare_enable(pixel_lcdc_clk);
if (lcdc_pdata && lcdc_pdata->lcdc_power_save)
lcdc_pdata->lcdc_power_save(1);
diff --git a/drivers/video/msm/lvds.c b/drivers/video/msm/lvds.c
index 1a7619d..8f1e510 100644
--- a/drivers/video/msm/lvds.c
+++ b/drivers/video/msm/lvds.c
@@ -208,7 +208,7 @@
ret = panel_next_off(pdev);
if (lvds_clk)
- clk_disable(lvds_clk);
+ clk_disable_unprepare(lvds_clk);
if (lvds_pdata && lvds_pdata->lcdc_power_save)
lvds_pdata->lcdc_power_save(0);
@@ -249,7 +249,7 @@
__func__, mfd->fbi->var.pixclock);
goto out;
}
- clk_enable(lvds_clk);
+ clk_prepare_enable(lvds_clk);
}
if (lvds_pdata && lvds_pdata->lcdc_power_save)
diff --git a/drivers/video/msm/mddi.c b/drivers/video/msm/mddi.c
index 7f5e125..1154913 100644
--- a/drivers/video/msm/mddi.c
+++ b/drivers/video/msm/mddi.c
@@ -156,11 +156,11 @@
}
if (mddi_clk) {
- clk_disable(mddi_clk);
+ clk_disable_unprepare(mddi_clk);
pmdh_clk_status = 0;
}
if (mddi_pclk)
- clk_disable(mddi_pclk);
+ clk_disable_unprepare(mddi_pclk);
mutex_unlock(&pmdh_clk_lock);
}
@@ -173,11 +173,11 @@
}
if (mddi_clk) {
- clk_enable(mddi_clk);
+ clk_prepare_enable(mddi_clk);
pmdh_clk_status = 1;
}
if (mddi_pclk)
- clk_enable(mddi_pclk);
+ clk_prepare_enable(mddi_pclk);
if (int_mddi_pri_flag && !irq_enabled) {
enable_irq(INT_MDDI_PRI);
@@ -216,7 +216,7 @@
mdp_bus_scale_update_request(0);
#else
if (mfd->ebi1_clk)
- clk_disable(mfd->ebi1_clk);
+ clk_disable_unprepare(mfd->ebi1_clk);
#endif
pm_runtime_put(&pdev->dev);
return ret;
@@ -279,7 +279,7 @@
mdp_bus_scale_update_request(2);
#else
if (mfd->ebi1_clk)
- clk_enable(mfd->ebi1_clk);
+ clk_prepare_enable(mfd->ebi1_clk);
#endif
ret = panel_next_on(pdev);
diff --git a/drivers/video/msm/mddi_ext.c b/drivers/video/msm/mddi_ext.c
index 09cc201..dc79fed 100644
--- a/drivers/video/msm/mddi_ext.c
+++ b/drivers/video/msm/mddi_ext.c
@@ -155,13 +155,13 @@
pr_err("can't find emdh_clk\n");
return PTR_ERR(mddi_ext_clk);
}
- clk_enable(mddi_ext_clk);
+ clk_prepare_enable(mddi_ext_clk);
mddi_ext_pclk = clk_get(&pdev->dev, "iface_clk");
if (IS_ERR(mddi_ext_pclk))
mddi_ext_pclk = NULL;
else
- clk_enable(mddi_ext_pclk);
+ clk_prepare_enable(mddi_ext_pclk);
size = resource_size(&pdev->resource[0]);
msm_emdh_base = ioremap(pdev->resource[0].start, size);
@@ -278,9 +278,9 @@
mddi_ext_is_in_suspend = 1;
- clk_disable(mddi_ext_clk);
+ clk_disable_unprepare(mddi_ext_clk);
if (mddi_ext_pclk)
- clk_disable(mddi_ext_pclk);
+ clk_disable_unprepare(mddi_ext_pclk);
disable_irq(INT_MDDI_EXT);
@@ -299,9 +299,9 @@
mddi_ext_is_in_suspend = 0;
enable_irq(INT_MDDI_EXT);
- clk_enable(mddi_ext_clk);
+ clk_prepare_enable(mddi_ext_clk);
if (mddi_ext_pclk)
- clk_enable(mddi_ext_pclk);
+ clk_prepare_enable(mddi_ext_pclk);
return 0;
}
@@ -343,12 +343,6 @@
ret = mddi_ext_register_driver();
if (ret) {
- clk_disable(mddi_ext_clk);
- clk_put(mddi_ext_clk);
- if (mddi_ext_pclk) {
- clk_disable(mddi_ext_pclk);
- clk_put(mddi_ext_pclk);
- }
printk(KERN_ERR "mddi_ext_register_driver() failed!\n");
return ret;
}
diff --git a/drivers/video/msm/mdp.c b/drivers/video/msm/mdp.c
index a339600..e749a44 100644
--- a/drivers/video/msm/mdp.c
+++ b/drivers/video/msm/mdp.c
@@ -1493,7 +1493,7 @@
}
if (mdp_clk != NULL) {
mdp_clk_rate = clk_get_rate(mdp_clk);
- clk_disable(mdp_clk);
+ clk_disable_unprepare(mdp_clk);
if (mdp_hw_revision <=
MDP4_REVISION_V2_1 &&
mdp_clk_rate > 122880000) {
@@ -1503,11 +1503,11 @@
MSM_FB_DEBUG("MDP CLK OFF\n");
}
if (mdp_pclk != NULL) {
- clk_disable(mdp_pclk);
+ clk_disable_unprepare(mdp_pclk);
MSM_FB_DEBUG("MDP PCLK OFF\n");
}
if (mdp_lut_clk != NULL)
- clk_disable(mdp_lut_clk);
+ clk_disable_unprepare(mdp_lut_clk);
} else {
/* send workqueue to turn off mdp power */
queue_delayed_work(mdp_pipe_ctrl_wq,
@@ -1531,15 +1531,15 @@
clk_set_rate(mdp_clk,
mdp_clk_rate);
}
- clk_enable(mdp_clk);
+ clk_prepare_enable(mdp_clk);
MSM_FB_DEBUG("MDP CLK ON\n");
}
if (mdp_pclk != NULL) {
- clk_enable(mdp_pclk);
+ clk_prepare_enable(mdp_pclk);
MSM_FB_DEBUG("MDP PCLK ON\n");
}
if (mdp_lut_clk != NULL)
- clk_enable(mdp_lut_clk);
+ clk_prepare_enable(mdp_lut_clk);
mdp_vsync_clk_enable();
}
up(&mdp_pipe_ctrl_mutex);
diff --git a/drivers/video/msm/mdp4_dtv.c b/drivers/video/msm/mdp4_dtv.c
index 9f2cf8c..f7e74e6 100644
--- a/drivers/video/msm/mdp4_dtv.c
+++ b/drivers/video/msm/mdp4_dtv.c
@@ -91,9 +91,9 @@
pr_info("%s\n", __func__);
- clk_disable(hdmi_clk);
+ clk_disable_unprepare(hdmi_clk);
if (mdp_tv_clk)
- clk_disable(mdp_tv_clk);
+ clk_disable_unprepare(mdp_tv_clk);
if (dtv_pdata && dtv_pdata->lcdc_power_save)
dtv_pdata->lcdc_power_save(0);
@@ -106,7 +106,7 @@
0);
#else
if (ebi1_clk)
- clk_disable(ebi1_clk);
+ clk_disable_unprepare(ebi1_clk);
#endif
mdp4_extn_disp = 0;
return ret;
@@ -134,7 +134,7 @@
#else
if (ebi1_clk) {
clk_set_rate(ebi1_clk, pm_qos_rate * 1000);
- clk_enable(ebi1_clk);
+ clk_prepare_enable(ebi1_clk);
}
#endif
mfd = platform_get_drvdata(pdev);
@@ -150,13 +150,13 @@
pr_info("%s: tv_src_clk=%dkHz, pm_qos_rate=%ldkHz, [%d]\n", __func__,
mfd->fbi->var.pixclock/1000, pm_qos_rate, ret);
- clk_enable(hdmi_clk);
+ clk_prepare_enable(hdmi_clk);
clk_reset(hdmi_clk, CLK_RESET_ASSERT);
udelay(20);
clk_reset(hdmi_clk, CLK_RESET_DEASSERT);
if (mdp_tv_clk)
- clk_enable(mdp_tv_clk);
+ clk_prepare_enable(mdp_tv_clk);
if (dtv_pdata && dtv_pdata->lcdc_power_save)
dtv_pdata->lcdc_power_save(1);
diff --git a/drivers/video/msm/mdp_lcdc.c b/drivers/video/msm/mdp_lcdc.c
index be8d39d..62b0975 100644
--- a/drivers/video/msm/mdp_lcdc.c
+++ b/drivers/video/msm/mdp_lcdc.c
@@ -91,9 +91,9 @@
pr_info("%s: suspending\n", __func__);
mdp_writel(lcdc->mdp, 0, MDP_LCDC_EN);
- clk_disable(lcdc->pad_pclk);
- clk_disable(lcdc->pclk);
- clk_disable(lcdc->mdp_clk);
+ clk_disable_unprepare(lcdc->pad_pclk);
+ clk_disable_unprepare(lcdc->pclk);
+ clk_disable_unprepare(lcdc->mdp_clk);
return 0;
}
@@ -104,9 +104,9 @@
pr_info("%s: resuming\n", __func__);
- clk_enable(lcdc->mdp_clk);
- clk_enable(lcdc->pclk);
- clk_enable(lcdc->pad_pclk);
+ clk_prepare_enable(lcdc->mdp_clk);
+ clk_prepare_enable(lcdc->pclk);
+ clk_prepare_enable(lcdc->pad_pclk);
mdp_writel(lcdc->mdp, 1, MDP_LCDC_EN);
return 0;
@@ -117,9 +117,9 @@
struct msm_panel_data *fb_panel = &lcdc->fb_panel_data;
uint32_t dma_cfg;
- clk_enable(lcdc->mdp_clk);
- clk_enable(lcdc->pclk);
- clk_enable(lcdc->pad_pclk);
+ clk_prepare_enable(lcdc->mdp_clk);
+ clk_prepare_enable(lcdc->pclk);
+ clk_prepare_enable(lcdc->pad_pclk);
clk_set_rate(lcdc->pclk, lcdc->parms.clk_rate);
clk_set_rate(lcdc->pad_pclk, lcdc->parms.clk_rate);
diff --git a/drivers/video/msm/mdp_vsync.c b/drivers/video/msm/mdp_vsync.c
index c73de92..87e74d9 100644
--- a/drivers/video/msm/mdp_vsync.c
+++ b/drivers/video/msm/mdp_vsync.c
@@ -79,7 +79,7 @@
return;
mutex_lock(&vsync_clk_lock);
if (mfd->use_mdp_vsync) {
- clk_enable(mdp_vsync_clk);
+ clk_prepare_enable(mdp_vsync_clk);
vsync_clk_status = 1;
}
mutex_unlock(&vsync_clk_lock);
@@ -91,7 +91,7 @@
return;
mutex_lock(&vsync_clk_lock);
if (mfd->use_mdp_vsync) {
- clk_disable(mdp_vsync_clk);
+ clk_disable_unprepare(mdp_vsync_clk);
vsync_clk_status = 0;
}
mutex_unlock(&vsync_clk_lock);
diff --git a/drivers/video/msm/mipi_dsi.c b/drivers/video/msm/mipi_dsi.c
index 7e3eb19..b8169d9 100644
--- a/drivers/video/msm/mipi_dsi.c
+++ b/drivers/video/msm/mipi_dsi.c
@@ -132,6 +132,7 @@
mipi_dsi_ahb_ctrl(0);
local_bh_enable();
+ mipi_dsi_unprepare_clocks();
if (mipi_dsi_pdata && mipi_dsi_pdata->dsi_power_save)
mipi_dsi_pdata->dsi_power_save(0);
@@ -168,6 +169,8 @@
mipi_dsi_pdata->dsi_power_save(1);
cont_splash_clk_ctrl(0);
+ mipi_dsi_prepare_clocks();
+
local_bh_disable();
mipi_dsi_ahb_ctrl(1);
local_bh_enable();
diff --git a/drivers/video/msm/mipi_dsi.h b/drivers/video/msm/mipi_dsi.h
index 31ce3ba..ff2910f 100644
--- a/drivers/video/msm/mipi_dsi.h
+++ b/drivers/video/msm/mipi_dsi.h
@@ -301,6 +301,8 @@
uint32 *expected_dsi_pclk);
int mipi_dsi_clk_init(struct platform_device *pdev);
void mipi_dsi_clk_deinit(struct device *dev);
+void mipi_dsi_prepare_clocks(void);
+void mipi_dsi_unprepare_clocks(void);
void mipi_dsi_ahb_ctrl(u32 enable);
void cont_splash_clk_ctrl(int enable);
void mipi_dsi_turn_on_clks(void);
diff --git a/drivers/video/msm/msm_dss_io_7x27a.c b/drivers/video/msm/msm_dss_io_7x27a.c
index 70f8982..9e77e30 100644
--- a/drivers/video/msm/msm_dss_io_7x27a.c
+++ b/drivers/video/msm/msm_dss_io_7x27a.c
@@ -316,6 +316,28 @@
{
}
+void mipi_dsi_prepare_clocks(void)
+{
+ clk_prepare(dsi_ref_clk);
+ clk_prepare(ahb_m_clk);
+ clk_prepare(ahb_s_clk);
+ clk_prepare(ebi1_dsi_clk);
+ clk_prepare(mdp_dsi_pclk);
+ clk_prepare(dsi_byte_div_clk);
+ clk_prepare(dsi_esc_clk);
+}
+
+void mipi_dsi_unprepare_clocks(void)
+{
+ clk_unprepare(dsi_esc_clk);
+ clk_unprepare(dsi_byte_div_clk);
+ clk_unprepare(mdp_dsi_pclk);
+ clk_unprepare(ebi1_dsi_clk);
+ clk_unprepare(ahb_m_clk);
+ clk_unprepare(ahb_s_clk);
+ clk_unprepare(dsi_ref_clk);
+}
+
void mipi_dsi_ahb_ctrl(u32 enable)
{
static int ahb_ctrl_done;
diff --git a/drivers/video/msm/msm_dss_io_8960.c b/drivers/video/msm/msm_dss_io_8960.c
index eb30448..30edbd1 100644
--- a/drivers/video/msm/msm_dss_io_8960.c
+++ b/drivers/video/msm/msm_dss_io_8960.c
@@ -548,16 +548,34 @@
{
static int cont_splash_clks_enabled;
if (enable && !cont_splash_clks_enabled) {
- clk_enable(dsi_byte_div_clk);
- clk_enable(dsi_esc_clk);
+ clk_prepare_enable(dsi_byte_div_clk);
+ clk_prepare_enable(dsi_esc_clk);
cont_splash_clks_enabled = 1;
} else if (!enable && cont_splash_clks_enabled) {
- clk_disable(dsi_byte_div_clk);
- clk_disable(dsi_esc_clk);
+ clk_disable_unprepare(dsi_byte_div_clk);
+ clk_disable_unprepare(dsi_esc_clk);
cont_splash_clks_enabled = 0;
}
}
+void mipi_dsi_prepare_clocks(void)
+{
+ clk_prepare(amp_pclk);
+ clk_prepare(dsi_m_pclk);
+ clk_prepare(dsi_s_pclk);
+ clk_prepare(dsi_byte_div_clk);
+ clk_prepare(dsi_esc_clk);
+}
+
+void mipi_dsi_unprepare_clocks(void)
+{
+ clk_unprepare(dsi_esc_clk);
+ clk_unprepare(dsi_byte_div_clk);
+ clk_unprepare(dsi_m_pclk);
+ clk_unprepare(dsi_s_pclk);
+ clk_unprepare(amp_pclk);
+}
+
void mipi_dsi_ahb_ctrl(u32 enable)
{
static int ahb_ctrl_done;
diff --git a/drivers/video/msm/msm_dss_io_8x60.c b/drivers/video/msm/msm_dss_io_8x60.c
index 72d7960..bbee726 100644
--- a/drivers/video/msm/msm_dss_io_8x60.c
+++ b/drivers/video/msm/msm_dss_io_8x60.c
@@ -407,6 +407,24 @@
{
}
+void mipi_dsi_prepare_clocks(void)
+{
+ clk_prepare(amp_pclk);
+ clk_prepare(dsi_m_pclk);
+ clk_prepare(dsi_s_pclk);
+ clk_prepare(dsi_byte_div_clk);
+ clk_prepare(dsi_esc_clk);
+}
+
+void mipi_dsi_unprepare_clocks(void)
+{
+ clk_unprepare(dsi_esc_clk);
+ clk_unprepare(dsi_byte_div_clk);
+ clk_unprepare(dsi_m_pclk);
+ clk_unprepare(dsi_s_pclk);
+ clk_unprepare(amp_pclk);
+}
+
void mipi_dsi_ahb_ctrl(u32 enable)
{
static int ahb_ctrl_done;
diff --git a/drivers/video/msm/tvenc.c b/drivers/video/msm/tvenc.c
index e494cfa..30dc854 100644
--- a/drivers/video/msm/tvenc.c
+++ b/drivers/video/msm/tvenc.c
@@ -101,7 +101,7 @@
goto tvsrc_err;
}
#endif
- ret = clk_enable(tvenc_clk);
+ ret = clk_prepare_enable(tvenc_clk);
if (ret) {
pr_err("%s: tvenc_clk enable failed! %d\n",
__func__, ret);
@@ -109,7 +109,7 @@
}
if (!IS_ERR(tvenc_pclk)) {
- ret = clk_enable(tvenc_pclk);
+ ret = clk_prepare_enable(tvenc_pclk);
if (ret) {
pr_err("%s: tvenc_pclk enable failed! %d\n",
__func__, ret);
@@ -119,12 +119,12 @@
return ret;
} else {
if (!IS_ERR(tvenc_pclk))
- clk_disable(tvenc_pclk);
- clk_disable(tvenc_clk);
+ clk_disable_unprepare(tvenc_pclk);
+ clk_disable_unprepare(tvenc_clk);
return ret;
}
tvencp_err:
- clk_disable(tvenc_clk);
+ clk_disable_unprepare(tvenc_clk);
tvsrc_err:
return ret;
}
@@ -141,14 +141,14 @@
goto tvenc_err;
}
}
- ret = clk_enable(tvdac_clk);
+ ret = clk_prepare_enable(tvdac_clk);
if (ret) {
pr_err("%s: tvdac_clk enable failed! %d\n",
__func__, ret);
goto tvdac_err;
}
if (!IS_ERR(mdp_tv_clk)) {
- ret = clk_enable(mdp_tv_clk);
+ ret = clk_prepare_enable(mdp_tv_clk);
if (ret) {
pr_err("%s: mdp_tv_clk enable failed! %d\n",
__func__, ret);
@@ -158,15 +158,15 @@
return ret;
} else {
if (!IS_ERR(mdp_tv_clk))
- clk_disable(mdp_tv_clk);
- clk_disable(tvdac_clk);
+ clk_disable_unprepare(mdp_tv_clk);
+ clk_disable_unprepare(tvdac_clk);
if (tvenc_pdata->poll)
tvenc_set_encoder_clock(CLOCK_OFF);
return ret;
}
mdptv_err:
- clk_disable(tvdac_clk);
+ clk_disable_unprepare(tvdac_clk);
tvdac_err:
tvenc_set_encoder_clock(CLOCK_OFF);
tvenc_err:
@@ -196,7 +196,7 @@
0);
#else
if (mfd->ebi1_clk)
- clk_disable(mfd->ebi1_clk);
+ clk_disable_unprepare(mfd->ebi1_clk);
#endif
if (ret)
@@ -220,7 +220,7 @@
1);
#else
if (mfd->ebi1_clk)
- clk_enable(mfd->ebi1_clk);
+ clk_prepare_enable(mfd->ebi1_clk);
#endif
mdp4_extn_disp = 1;
if (tvenc_pdata && tvenc_pdata->pm_vid_en)