msm: mdss: enable mmagic gdsc before turning on mdp gdsc

MDP, DSI, HDMI and PLL modules turn on mdp gdsc independently.
It is illegal to turn on mdp gdsc without turning on mmagic
gdsc on thulium target. This change adds mmagic vote
for these modules.

Change-Id: I765fcc42477b9e46d0da48cb0cf5b298f58b7815
[veeras@codeaurora.org: As part of 3.18 upgrade,
remove msmthulium-mdss-pll.dtsi, msmthulium-mdss.dtsi changes
from this gerit]
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
This commit is contained in:
Dhaval Patel 2015-02-21 12:41:58 -08:00 committed by David Keitel
parent 11f814f19a
commit a3eab01e8d
2 changed files with 26 additions and 0 deletions

View file

@ -183,6 +183,7 @@ struct mdss_data_type {
u32 mdp_rev;
struct clk *mdp_clk[MDSS_MAX_CLK];
struct regulator *fs;
struct regulator *mmagic_mdss;
struct regulator *vdd_cx;
bool batfet_required;
struct regulator *batfet;

View file

@ -880,6 +880,14 @@ static int mdss_mdp_irq_clk_setup(struct mdss_data_type *mdata)
pr_err("unable to get gdsc regulator\n");
return -EINVAL;
}
mdata->mmagic_mdss = devm_regulator_get(&mdata->pdev->dev,
"gdsc-mmagic-mdss");
if (IS_ERR_OR_NULL(mdata->mmagic_mdss)) {
mdata->mmagic_mdss = NULL;
pr_debug("unable to get mmagic gdsc regulator\n");
}
mdata->fs_ena = false;
mdata->gdsc_cb.notifier_call = mdss_mdp_gdsc_notifier_call;
@ -1086,6 +1094,12 @@ void mdss_mdp_footswitch_ctrl_splash(int on)
if (mdata != NULL) {
if (on) {
pr_debug("Enable MDP FS for splash.\n");
if (mdata->mmagic_mdss) {
ret = regulator_enable(mdata->mmagic_mdss);
if (ret)
pr_err("Mmagic MDSS failed to enable\n");
}
ret = regulator_enable(mdata->fs);
if (ret)
pr_err("Footswitch failed to enable\n");
@ -1095,6 +1109,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->mmagic_mdss)
regulator_disable(mdata->mmagic_mdss);
mdata->handoff_pending = false;
}
} else {
@ -3211,9 +3227,16 @@ 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->mmagic_mdss) {
ret = regulator_enable(mdata->mmagic_mdss);
if (ret)
pr_warn("mmagic mdss failed to enable\n");
}
ret = regulator_enable(mdata->fs);
if (ret)
pr_warn("Footswitch failed to enable\n");
if (!mdata->idle_pc) {
mdss_mdp_cx_ctrl(mdata, true);
mdss_mdp_batfet_ctrl(mdata, true);
@ -3237,6 +3260,8 @@ static void mdss_mdp_footswitch_ctrl(struct mdss_data_type *mdata, int on)
mdss_mdp_batfet_ctrl(mdata, false);
}
regulator_disable(mdata->fs);
if (mdata->mmagic_mdss)
regulator_disable(mdata->mmagic_mdss);
}
mdata->fs_ena = false;
}