[alsa-devel] [PATCH 06/10] ASoC: twl6040: correct loop counters for HS/HF ramp code
Peter Ujfalusi
peter.ujfalusi at ti.com
Mon Sep 26 15:26:29 CEST 2011
4 bit resolution means 16 steps -> for loop till >=15 (HS)
5 bit resolution means 32 steps -> for loop till >=31 (HF)
In case of the Handsfree we have 0x1e, 0x1f as invalid values.
In case of HF we can limit the loop for 0x1d (29).
Signed-off-by: Peter Ujfalusi <peter.ujfalusi at ti.com>
---
sound/soc/codecs/twl6040.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/sound/soc/codecs/twl6040.c b/sound/soc/codecs/twl6040.c
index 156ebf7..5a33fe1 100644
--- a/sound/soc/codecs/twl6040.c
+++ b/sound/soc/codecs/twl6040.c
@@ -497,7 +497,7 @@ static void twl6040_pga_hs_work(struct work_struct *work)
return;
/* HS PGA volumes have 4 bits of resolution to ramp */
- for (i = 0; i <= 16; i++) {
+ for (i = 0; i <= 15; i++) {
headset_complete = twl6040_hs_ramp_step(codec,
headset->left_step,
headset->right_step);
@@ -539,8 +539,11 @@ static void twl6040_pga_hf_work(struct work_struct *work)
if (handsfree->ramp == TWL6040_RAMP_NONE)
return;
- /* HF PGA volumes have 5 bits of resolution to ramp */
- for (i = 0; i <= 32; i++) {
+ /*
+ * HF PGA volumes have 5 bits of resolution to ramp, but 0x1e, 0x1f are
+ * invalid values, loop till 0x1d
+ */
+ for (i = 0; i <= 29; i++) {
handsfree_complete = twl6040_hf_ramp_step(codec,
handsfree->left_step,
handsfree->right_step);
--
1.7.6.1
More information about the Alsa-devel
mailing list