diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss.h | 1 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp.c | 24 |
2 files changed, 25 insertions, 0 deletions
diff --git a/drivers/video/fbdev/msm/mdss.h b/drivers/video/fbdev/msm/mdss.h index 3339b264988a..8d015640796c 100644 --- a/drivers/video/fbdev/msm/mdss.h +++ b/drivers/video/fbdev/msm/mdss.h @@ -206,6 +206,7 @@ struct mdss_data_type { u32 mdp_rev; struct clk *mdp_clk[MDSS_MAX_CLK]; struct regulator *fs; + struct regulator *venus; struct regulator *vdd_cx; bool batfet_required; struct regulator *batfet; diff --git a/drivers/video/fbdev/msm/mdss_mdp.c b/drivers/video/fbdev/msm/mdss_mdp.c index e9302b100c8d..6b69865abf54 100644 --- a/drivers/video/fbdev/msm/mdss_mdp.c +++ b/drivers/video/fbdev/msm/mdss_mdp.c @@ -943,6 +943,14 @@ static int mdss_mdp_irq_clk_setup(struct mdss_data_type *mdata) pr_err("unable to get gdsc regulator\n"); return -EINVAL; } + + mdata->venus = devm_regulator_get_optional(&mdata->pdev->dev, + "gdsc-venus"); + if (IS_ERR_OR_NULL(mdata->venus)) { + mdata->venus = NULL; + pr_debug("unable to get venus gdsc regulator\n"); + } + mdata->fs_ena = false; mdata->gdsc_cb.notifier_call = mdss_mdp_gdsc_notifier_call; @@ -1203,6 +1211,12 @@ void mdss_mdp_footswitch_ctrl_splash(int on) if (mdata != NULL) { if (on) { pr_debug("Enable MDP FS for splash.\n"); + if (mdata->venus) { + ret = regulator_enable(mdata->venus); + if (ret) + pr_err("venus failed to enable\n"); + } + ret = regulator_enable(mdata->fs); if (ret) pr_err("Footswitch failed to enable\n"); @@ -1212,6 +1226,8 @@ void mdss_mdp_footswitch_ctrl_splash(int on) pr_debug("Disable MDP FS for splash.\n"); mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_OFF); regulator_disable(mdata->fs); + if (mdata->venus) + regulator_disable(mdata->venus); mdata->handoff_pending = false; } } else { @@ -3497,6 +3513,12 @@ static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on) if (on) { if (!mdata->fs_ena) { pr_debug("Enable MDP FS\n"); + if (mdata->venus) { + ret = regulator_enable(mdata->venus); + if (ret) + pr_err("venus failed to enable\n"); + } + ret = regulator_enable(mdata->fs); if (ret) pr_warn("Footswitch failed to enable\n"); @@ -3527,6 +3549,8 @@ static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on) if (mdata->en_svs_high) mdss_mdp_config_cx_voltage(mdata, false); regulator_disable(mdata->fs); + if (mdata->venus) + regulator_disable(mdata->venus); } mdata->fs_ena = false; } |
