diff options
author | Mikael Vatau <mikael.vatau@stericsson.com> | 2011-05-04 20:14:44 +0200 |
---|---|---|
committer | Robert Marklund <robert.marklund@stericsson.com> | 2011-10-05 12:13:10 +0200 |
commit | 81a05a349bac8539558b4b2f0fb3e32ad4c538c6 (patch) | |
tree | 82699dc0898d44329ef350d5872f7b97db2eef4b /drivers/misc | |
parent | 0e2f6bd69a2695ca9e57846b65e1d1600c7b5fdf (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.c | 15 |
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"); |