aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc
diff options
context:
space:
mode:
authorMikael Vatau <mikael.vatau@stericsson.com>2011-05-04 20:14:44 +0200
committerRobert Marklund <robert.marklund@stericsson.com>2011-10-05 12:13:10 +0200
commit81a05a349bac8539558b4b2f0fb3e32ad4c538c6 (patch)
tree82699dc0898d44329ef350d5872f7b97db2eef4b /drivers/misc
parent0e2f6bd69a2695ca9e57846b65e1d1600c7b5fdf (diff)
msp i2s: Don't enable regulator for msp1 and msp3
Enabling the regulator for msp1/msp3 hinders sleep when in burst mode. Change-Id: Ic9484221e44e68b9e185d0a180f49d957e5aa9cd Signed-off-by: Mikael Vatau <mikael.vatau@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/22351 Reviewed-by: QATEST Reviewed-by: Peter AULIN <peter.aulin@stericsson.com> Tested-by: Peter AULIN <peter.aulin@stericsson.com> Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/i2s/msp_i2s.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/misc/i2s/msp_i2s.c b/drivers/misc/i2s/msp_i2s.c
index 90629398202..5645e980c93 100644
--- a/drivers/misc/i2s/msp_i2s.c
+++ b/drivers/misc/i2s/msp_i2s.c
@@ -957,8 +957,10 @@ static int stm_msp_configure_enable(struct i2s_controller *i2s_cont,
/* Two simultanous configuring msp is avoidable */
down(&msp->lock);
- switch (msp->users) {
- case 0:
+
+ /* Don't enable regulator if its msp1 or msp3 */
+ if (!(msp->reg_enabled) && msp->id != MSP_1_I2S_CONTROLLER
+ && msp->id != MSP_3_I2S_CONTROLLER) {
res = regulator_enable(msp_vape_supply);
if (res != 0) {
dev_err(&msp->i2s_cont->dev,
@@ -966,7 +968,11 @@ static int stm_msp_configure_enable(struct i2s_controller *i2s_cont,
up(&msp->lock);
return res;
}
+ msp->reg_enabled = 1;
+ }
+ switch (msp->users) {
+ case 0:
clk_enable(msp->clk);
msp->direction = config->direction;
break;
@@ -1768,7 +1774,10 @@ static int stm_msp_close(struct i2s_controller *i2s_cont, i2s_flag flag)
else {
status = stm_msp_disable(msp, MSP_BOTH_T_R_MODE, DISABLE_ALL);
clk_disable(msp->clk);
- status = regulator_disable(msp_vape_supply);
+ if (msp->reg_enabled) {
+ status = regulator_disable(msp_vape_supply);
+ msp->reg_enabled = 0;
+ }
if (status != 0) {
dev_err(&msp->i2s_cont->dev,
"Failed to disable regulator\n");