ASoC: cs35l35: Improve power down time
Subsystems (4)
PATCH 1/3 ASoC: cs35l35: Improve power down time
Shorten the time it takes to power down the amp by disabling the volume ramp whilst doing the final shutdown. The driver has already muted the amplifier at this stage so doing the volume ramp serves no purpose.
--- sound/soc/codecs/cs35l35.c | 8 ++++++++ sound/soc/codecs/cs35l35.h | 3 +++ 2 files changed, 11 insertions(+)
sound/soc/codecs/cs35l35.c +8 -0
@@ -187,6 +187,10 @@ static int cs35l35_sdin_event(struct snd_soc_dapm_widget *w,regmap_update_bits (cs35l35->regmap,CS35L35_PWRCTL1 ,CS35L35_PDN_ALL_MASK ,1 ); +/* Already muted, so disable volume ramp for faster shutdown */ +regmap_update_bits (cs35l35->regmap,CS35L35_AMP_DIG_VOL_CTL , +CS35L35_AMP_DIGSFT_MASK ,0 ); +reinit_completion (&cs35l35->pdn_done); ret = wait_for_completion_timeout(&cs35l35->pdn_done,
@@ -199,6 +203,10 @@ static int cs35l35_sdin_event(struct snd_soc_dapm_widget *w,regmap_update_bits (cs35l35->regmap,CS35L35_CLK_CTL1 ,CS35L35_MCLK_DIS_MASK ,1 <<CS35L35_MCLK_DIS_SHIFT ); + +regmap_update_bits (cs35l35->regmap,CS35L35_AMP_DIG_VOL_CTL , +CS35L35_AMP_DIGSFT_MASK , +1 <<CS35L35_AMP_DIGSFT_SHIFT );break ;default :dev_err (codec->dev,"Invalid event = 0x%x\n" , event);
sound/soc/codecs/cs35l35.h +3 -0
@@ -190,6 +190,9 @@#define CS35L35_AMP_GAIN_ZC_MASK 0x10#define CS35L35_AMP_GAIN_ZC_SHIFT 4 +#define CS35L35_AMP_DIGSFT_MASK 0x02 +#define CS35L35_AMP_DIGSFT_SHIFT 1 +/* CS35L35_SP_FMT_CTL3 */ #define CS35L35_SP_I2S_DRV_MASK 0x03#define CS35L35_SP_I2S_DRV_SHIFT 0
Signature · 1 line
2.1.4
A message that is not in the archive (sent off-list or not yet received): 1491483134-28079-1-git-send-email-ckeepax-yzvPICuk2AATkU/[email protected]
PATCH 2/3 ASoC: cs35l35: Correct handling of PDN_DONE with external boost
When using an external boost supply the PDN_DONE bit is not set, update the handling in this case to use to use an appropriate fixed delay.
--- include/sound/cs35l35.h | 2 ++ sound/soc/codecs/cs35l35.c | 32 ++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 8 deletions(-)
include/sound/cs35l35.h +2 -0
@@ -96,6 +96,8 @@ struct cs35l35_platform_data {int adv_channel;/* Shared Boost for stereo */ bool shared_bst; +/* Specifies this amp is using an external boost supply */ +bool ext_bst;/* ClassH Algorithm */ struct classh_cfg classh_algo;/* Monitor Config */
sound/soc/codecs/cs35l35.c +24 -8
@@ -162,6 +162,27 @@ static bool cs35l35_precious_register(struct device *dev, unsigned int reg) } } +static int cs35l35_wait_for_pdn (struct cs35l35_private *cs35l35) +{ +int ret; + +if (cs35l35->pdata.ext_bst) { +usleep_range (5000 ,5500 ); +return 0 ; + } + +reinit_completion (&cs35l35->pdn_done); + + ret =wait_for_completion_timeout (&cs35l35->pdn_done, +msecs_to_jiffies (100 )); +if (ret ==0 ) { +dev_err (cs35l35->dev,"PDN_DONE did not complete\n" ); +return -ETIMEDOUT ; + } + +return 0 ; +} +static int cs35l35_sdin_event (struct snd_soc_dapm_widget *w,struct snd_kcontrol *kcontrol,int event) {
@@ -191,14 +212,7 @@ static int cs35l35_sdin_event(struct snd_soc_dapm_widget *w,regmap_update_bits (cs35l35->regmap,CS35L35_AMP_DIG_VOL_CTL ,CS35L35_AMP_DIGSFT_MASK ,0 ); -reinit_completion (&cs35l35->pdn_done); - - ret =wait_for_completion_timeout (&cs35l35->pdn_done, -msecs_to_jiffies (100 )); -if (ret ==0 ) { -dev_err (codec->dev,"TIMEOUT PDN_DONE did not complete in 100ms\n" ); - ret = -ETIMEDOUT ; - } + ret =cs35l35_wait_for_pdn (cs35l35); regmap_update_bits(cs35l35->regmap, CS35L35_CLK_CTL1, CS35L35_MCLK_DIS_MASK,
@@ -1198,6 +1212,8 @@ static int cs35l35_handle_of_data(struct i2c_client *i2c_client, "cirrus,shared-boost"); } + pdata->ext_bst =of_property_read_bool (np,"cirrus,external-boost" ); + pdata->gain_zc =of_property_read_bool (np,"cirrus,amp-gain-zc" ); classh =of_get_child_by_name (np,"cirrus,classh-internal-algo" );
Signature · 6 lines
2.1.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 1491483134-28079-2-git-send-email-ckeepax-yzvPICuk2AATkU/[email protected]
Applied "ASoC: cs35l35: Correct handling of PDN_DONE with external boost" to the asoc tree
The patch
ASoC: cs35l35: Correct handling of PDN_DONE with external boost
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
77b329d1943d38a5acdbaf9d57754975bce701d4Mon Sep 17 00:00:00 2001
From: Charles Keepax <ckeepax-yzvPICuk2AATkU/[email protected]>
Date: Thu, 6 Apr 2017 13:52:13 +0100
Subject: [PATCH] ASoC: cs35l35: Correct handling of PDN_DONE with external
boost
When using an external boost supply the PDN_DONE bit is not set, update the handling in this case to use to use an appropriate fixed delay.
--- include/sound/cs35l35.h | 2 ++ sound/soc/codecs/cs35l35.c | 32 ++++++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 8 deletions(-)
include/sound/cs35l35.h +2 -0
@@ -96,6 +96,8 @@ struct cs35l35_platform_data {int adv_channel;/* Shared Boost for stereo */ bool shared_bst; +/* Specifies this amp is using an external boost supply */ +bool ext_bst;/* ClassH Algorithm */ struct classh_cfg classh_algo;/* Monitor Config */
sound/soc/codecs/cs35l35.c +24 -8
@@ -162,6 +162,27 @@ static bool cs35l35_precious_register(struct device *dev, unsigned int reg) } } +static int cs35l35_wait_for_pdn (struct cs35l35_private *cs35l35) +{ +int ret; + +if (cs35l35->pdata.ext_bst) { +usleep_range (5000 ,5500 ); +return 0 ; + } + +reinit_completion (&cs35l35->pdn_done); + + ret =wait_for_completion_timeout (&cs35l35->pdn_done, +msecs_to_jiffies (100 )); +if (ret ==0 ) { +dev_err (cs35l35->dev,"PDN_DONE did not complete\n" ); +return -ETIMEDOUT ; + } + +return 0 ; +} +static int cs35l35_sdin_event (struct snd_soc_dapm_widget *w,struct snd_kcontrol *kcontrol,int event) {
@@ -191,14 +212,7 @@ static int cs35l35_sdin_event(struct snd_soc_dapm_widget *w,regmap_update_bits (cs35l35->regmap,CS35L35_AMP_DIG_VOL_CTL ,CS35L35_AMP_DIGSFT_MASK ,0 ); -reinit_completion (&cs35l35->pdn_done); - - ret =wait_for_completion_timeout (&cs35l35->pdn_done, -msecs_to_jiffies (100 )); -if (ret ==0 ) { -dev_err (codec->dev,"TIMEOUT PDN_DONE did not complete in 100ms\n" ); - ret = -ETIMEDOUT ; - } + ret =cs35l35_wait_for_pdn (cs35l35); regmap_update_bits(cs35l35->regmap, CS35L35_CLK_CTL1, CS35L35_MCLK_DIS_MASK,
@@ -1198,6 +1212,8 @@ static int cs35l35_handle_of_data(struct i2c_client *i2c_client, "cirrus,shared-boost"); } + pdata->ext_bst =of_property_read_bool (np,"cirrus,external-boost" ); + pdata->gain_zc =of_property_read_bool (np,"cirrus,amp-gain-zc" ); classh =of_get_child_by_name (np,"cirrus,classh-internal-algo" );
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 3/3 ASoC: cs35l35: Add DT binding to specify usage of an external boost supply
In reply to a message not in the archiveAdd a device tree binding to let the driver know that the amplifier is configured to use an external boost supply.
--- Documentation/devicetree/bindings/sound/cs35l35.txt | 4 ++++ 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/sound/cs35l35.txt +4 -0
@@ -33,6 +33,10 @@ Optional properties: - cirrus,shared-boost : Boolean to enable ClassH tracking of Advisory Signal if 2 Devices share Boost BST_CTL + - cirrus,external-boost : Boolean to specify the device is using an external + boost supply, note that sharing a boost from another cs35l35 would constitute + using an external supply for the slave device + - cirrus,sp-drv-strength : Value for setting the Serial Port drive strength Table 3-10 of the datasheet lists drive-strength specifications 0 = 1x (Default)
Signature · 6 lines
2.1.4 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
A message that is not in the archive (sent off-list or not yet received): 1491483134-28079-3-git-send-email-ckeepax-yzvPICuk2AATkU/[email protected]
Applied "ASoC: cs35l35: Add DT binding to specify usage of an external boost supply" to the asoc tree
The patch
ASoC: cs35l35: Add DT binding to specify usage of an external boost supply
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
0c67fb5544061cb990e07a73e1b7ba1f8ca22479Mon Sep 17 00:00:00 2001
From: Charles Keepax <ckeepax-yzvPICuk2AATkU/[email protected]>
Date: Thu, 6 Apr 2017 13:52:14 +0100
Subject: [PATCH] ASoC: cs35l35: Add DT binding to specify usage of an external
boost supply
Add a device tree binding to let the driver know that the amplifier is configured to use an external boost supply.
--- Documentation/devicetree/bindings/sound/cs35l35.txt | 4 ++++ 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/sound/cs35l35.txt +4 -0
@@ -33,6 +33,10 @@ Optional properties: - cirrus,shared-boost : Boolean to enable ClassH tracking of Advisory Signal if 2 Devices share Boost BST_CTL + - cirrus,external-boost : Boolean to specify the device is using an external + boost supply, note that sharing a boost from another cs35l35 would constitute + using an external supply for the slave device + - cirrus,sp-drv-strength : Value for setting the Serial Port drive strength Table 3-10 of the datasheet lists drive-strength specifications 0 = 1x (Default)
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Applied "ASoC: cs35l35: Improve power down time" to the asoc tree
In reply to a message not in the archiveThe patch
ASoC: cs35l35: Improve power down time
has been applied to the asoc tree at
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks,
Mark
Quoted 1 line
From
2c84afb52ebea59e9862fcb8234126b7ae1d1960Mon Sep 17 00:00:00 2001
From: Charles Keepax <ckeepax-yzvPICuk2AATkU/[email protected]>
Date: Thu, 6 Apr 2017 13:52:12 +0100
Subject: [PATCH] ASoC: cs35l35: Improve power down time
Shorten the time it takes to power down the amp by disabling the volume ramp whilst doing the final shutdown. The driver has already muted the amplifier at this stage so doing the volume ramp serves no purpose.
--- sound/soc/codecs/cs35l35.c | 8 ++++++++ sound/soc/codecs/cs35l35.h | 3 +++ 2 files changed, 11 insertions(+)
sound/soc/codecs/cs35l35.c +8 -0
@@ -187,6 +187,10 @@ static int cs35l35_sdin_event(struct snd_soc_dapm_widget *w,regmap_update_bits (cs35l35->regmap,CS35L35_PWRCTL1 ,CS35L35_PDN_ALL_MASK ,1 ); +/* Already muted, so disable volume ramp for faster shutdown */ +regmap_update_bits (cs35l35->regmap,CS35L35_AMP_DIG_VOL_CTL , +CS35L35_AMP_DIGSFT_MASK ,0 ); +reinit_completion (&cs35l35->pdn_done); ret = wait_for_completion_timeout(&cs35l35->pdn_done,
@@ -199,6 +203,10 @@ static int cs35l35_sdin_event(struct snd_soc_dapm_widget *w,regmap_update_bits (cs35l35->regmap,CS35L35_CLK_CTL1 ,CS35L35_MCLK_DIS_MASK ,1 <<CS35L35_MCLK_DIS_SHIFT ); + +regmap_update_bits (cs35l35->regmap,CS35L35_AMP_DIG_VOL_CTL , +CS35L35_AMP_DIGSFT_MASK , +1 <<CS35L35_AMP_DIGSFT_SHIFT );break ;default :dev_err (codec->dev,"Invalid event = 0x%x\n" , event);
sound/soc/codecs/cs35l35.h +3 -0
@@ -190,6 +190,9 @@#define CS35L35_AMP_GAIN_ZC_MASK 0x10#define CS35L35_AMP_GAIN_ZC_SHIFT 4 +#define CS35L35_AMP_DIGSFT_MASK 0x02 +#define CS35L35_AMP_DIGSFT_SHIFT 1 +/* CS35L35_SP_FMT_CTL3 */ #define CS35L35_SP_I2S_DRV_MASK 0x03#define CS35L35_SP_I2S_DRV_SHIFT 0
Signature · 6 lines
2.11.0 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 5 lines · Charles Keepax
Shorten the time it takes to power down the amp by disabling the volume ramp whilst doing the final shutdown. The driver has already muted the amplifier at this stage so doing the volume ramp serves no purpose.
Signed-off-by Charles Keepax <[email protected]>
For the series