diff options
author | Ola Lilja <elilola@steludxu2785.(none)> | 2011-05-26 17:30:26 +0200 |
---|---|---|
committer | said m bagheri <ebgheri@steludxu2848.(none)> | 2011-06-17 13:42:10 +0200 |
commit | 3cfc1990ed6d08bd72e0bbba0e438714844ace48 (patch) | |
tree | 4100a3f158f4abd3ad4cf27eb68129bbed7f53f2 /sound | |
parent | f077b35a82bf33a74264603390e295795432cf21 (diff) |
Ux500 ASoC: Add controls for sidetone in AB8500
Controls needed for setting sidetone FIR-coeffecients
has been added to the AB8500 codec-driver.
ST-Ericsson ID: 328357
Change-Id: Ibe7ba8226356f8bcc2ab2dc397b34af8331bb2b8
Signed-off-by: Ola Lilja <ola.o.lilja@stericsson.com>
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/23999
Reviewed-by: QATEST
Reviewed-by: Henrik SEGERBACK <henrik.xh.segerback@stericsson.com>
Reviewed-by: Linus WALLEIJ <linus.walleij@stericsson.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/ab8500_audio.c | 27 | ||||
-rw-r--r-- | sound/soc/codecs/ab8500_audio.h | 8 |
2 files changed, 34 insertions, 1 deletions
diff --git a/sound/soc/codecs/ab8500_audio.c b/sound/soc/codecs/ab8500_audio.c index 84ae53c6e38..49b4bf32417 100644 --- a/sound/soc/codecs/ab8500_audio.c +++ b/sound/soc/codecs/ab8500_audio.c @@ -1340,6 +1340,12 @@ static SOC_ENUM_SINGLE_DECL(soc_enum_bfifomast, static SOC_ENUM_SINGLE_DECL(soc_enum_bfifoint, REG_FIFOCONF3, REG_FIFOCONF3_BFIFORUN_SHIFT, enum_dis_ena); +/* Sidetone */ +static const char *enum_coeffctrl[] = {"Ready", "Apply"}; +static SOC_ENUM_SINGLE_DECL(soc_enum_coeffctrl, + REG_SIDFIRADR, REG_SIDFIRADR_FIRSIDSET, enum_coeffctrl); + + /* TODO: move to DAPM */ static SOC_ENUM_SINGLE_DECL(soc_enum_enfirsids, REG_SIDFIRCONF, REG_SIDFIRCONF_ENFIRSIDS, enum_dis_ena); @@ -1585,7 +1591,26 @@ static struct snd_kcontrol_new ab8500_snd_controls[] = { REG_FIFOCONF6, REG_FIFOCONF6_BFIFOSAMPLE_SHIFT, REG_FIFOCONF6_BFIFOSAMPLE_MAX, - NORMAL) + NORMAL), + + /* Sidetone */ + SOC_SINGLE("Sidetone FIR Coeffecient Index", + REG_SIDFIRADR, + REG_SIDFIRADR_ADDRESS_SHIFT, + REG_SIDFIRADR_ADDRESS_MAX, + NORMAL), + SOC_ENUM("Sidetone FIR Apply Coeffecients", soc_enum_coeffctrl), + + SOC_SINGLE("Sidetone FIR Coeffecient Value MSB", + REG_SIDFIRCOEF1, + REG_SIDFIRCOEFX_VALUE_SHIFT, + REG_SIDFIRCOEFX_VALUE_MAX, + NORMAL), + SOC_SINGLE("Sidetone FIR Coeffecient Value LSB", + REG_SIDFIRCOEF2, + REG_SIDFIRCOEFX_VALUE_SHIFT, + REG_SIDFIRCOEFX_VALUE_MAX, + NORMAL), }; static int ab8500_codec_set_format_if1(struct snd_soc_codec *codec, unsigned int fmt) diff --git a/sound/soc/codecs/ab8500_audio.h b/sound/soc/codecs/ab8500_audio.h index 8e2468d7883..1ff7dafa3e7 100644 --- a/sound/soc/codecs/ab8500_audio.h +++ b/sound/soc/codecs/ab8500_audio.h @@ -505,9 +505,17 @@ int ab8500_audio_setup_if1(struct snd_soc_codec *codec, /* REG_ANCCONF12 */ /* REG_ANCCONF13 */ /* REG_ANCCONF14 */ + /* REG_SIDFIRADR */ +#define REG_SIDFIRADR_FIRSIDSET 7 +#define REG_SIDFIRADR_ADDRESS_SHIFT 0 +#define REG_SIDFIRADR_ADDRESS_MAX 0x7F + /* REG_SIDFIRCOEF1 */ /* REG_SIDFIRCOEF2 */ +#define REG_SIDFIRCOEFX_VALUE_SHIFT 0 +#define REG_SIDFIRCOEFX_VALUE_MAX 0xFF + /* REG_SIDFIRCONF */ #define REG_SIDFIRCONF_ENFIRSIDS 2 #define REG_SIDFIRCONF_FIRSIDSTOIF1 1 |