summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorOla Lilja <elilola@steludxu2785.(none)>2011-05-26 17:30:26 +0200
committerUlf Hansson <ulf.hansson@stericsson.com>2011-09-19 15:15:34 +0200
commit0a545959d5da963036e41a21ff9cf6bd627f814d (patch)
tree61593a2624dc41da60941360d1d72f8d79fec2c8 /sound
parentebdad44168a2de4a7aaee02748d0a2df423ebcf7 (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.c27
-rw-r--r--sound/soc/codecs/ab8500_audio.h8
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