summaryrefslogtreecommitdiff
path: root/sound/soc/codecs
diff options
context:
space:
mode:
authorShyam Krishnan M <shyam.moni@stericsson.com>2011-08-31 18:48:18 +0530
committerPhilippe Langlais <philippe.langlais@stericsson.com>2011-12-06 10:59:41 +0100
commit33caef80420e62393c8beaa239154398addb5d49 (patch)
tree2a829f3d11854e0e5b6d9323a6a5e639f4e4b8d1 /sound/soc/codecs
parente469688019cc8f829f15e9e41683e8dc0fafa788 (diff)
Ux500 ASoC: Add codec-driver for AB5500
ST-Ericsson Linux next: Not tested ST-Ericsson ID: 332112 ST-Ericsson FOSS-OUT ID: STETL-FOSS-OUT-10006 Ref: Commit-id: Ic35d9290ab3d938f19b8581c8e82cbd878952f54 Signed-off-by: Avinash A <Avinash.a@stericsson.com> Change-Id: I0f48b74fd7f46f10b45834d74f8167a1a45f1ea7 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/30116 Reviewed-by: Avinash A <avinash.a@stericsson.com> Tested-by: Avinash A <avinash.a@stericsson.com>
Diffstat (limited to 'sound/soc/codecs')
-rw-r--r--sound/soc/codecs/ab5500.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/sound/soc/codecs/ab5500.c b/sound/soc/codecs/ab5500.c
index 1875db4fc77..957b8fa28c2 100644
--- a/sound/soc/codecs/ab5500.c
+++ b/sound/soc/codecs/ab5500.c
@@ -1107,6 +1107,11 @@ static void power_for_playback(enum enum_power onoff, int ifsel)
widget_if0_dld_l : widget_if1_dld_l);
power_widget_unlocked(onoff, ifsel == 0 ?
widget_if0_dld_r : widget_if1_dld_r);
+
+ mask_set_reg(SPKR1, SPKRx_PWR_MASK, 0x03 << SPKRx_PWR_SHIFT);
+ mask_set_reg(SPKR1, SPKRx_GAIN_MASK, 0x12 << SPKRx_GAIN_SHIFT);
+ mask_set_reg(RX3_DPGA, RXx_DPGA_MASK, 0x3F << RXx_DPGA_SHIFT);
+
mutex_unlock(&ab5500_pm_mutex);
}
@@ -1447,7 +1452,7 @@ static int ab5500_codec_write_reg(struct snd_soc_codec *codec,
*/
/* changed between the two amplifier modes */
- if (hweight8(diff & SPKR1_MODE_MASK) == 2) {
+ if (count_ones(diff & SPKR1_MODE_MASK) == 2) {
set_reg(reg, value);
break;
}
@@ -1526,6 +1531,12 @@ static inline void init_playback_route(void)
update_widgets_link(LINK, widget_dac2, widget_auxo2,
AUXO2_ADDER, DAC2_TO_X_MASK, 0xff);
+ /* if1_dld_l -> rx3 -> dac3 -> spkr1 */
+ update_widgets_link(LINK, widget_if1_dld_l, widget_rx3, RX3,
+ RXx_DATA_MASK, 0x05 << RXx_DATA_SHIFT);
+ update_widgets_link(LINK, widget_rx3, widget_dac3, 0, 0, 0);
+ update_widgets_link(LINK, widget_dac3, widget_spkr1, SPKR1_ADDER,
+ DAC3_TO_X_MASK, 0xff);
}
static inline void init_capture_route(void)