On Thu, 2010-01-28 at 17:46 +0200, Ilkka Koskinen wrote:
Add ASoC interface for OMAP McBSP2 and McBSP3 sidetones.
Signed-off-by: Ilkka Koskinen ilkka.koskinen@nokia.com
sound/soc/omap/omap-mcbsp.c | 187 +++++++++++++++++++++++++++++++++++++++++++ sound/soc/omap/omap-mcbsp.h | 2 + 2 files changed, 189 insertions(+), 0 deletions(-)
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c index 6bbbd2a..295620b 100644 --- a/sound/soc/omap/omap-mcbsp.c +++ b/sound/soc/omap/omap-mcbsp.c @@ -39,6 +39,14 @@
snip
+/* McBSP Sidetone Switch */ +static const char *omap_mcbsp_st_status[] = {
- "off",
- "on",
+};
Should this not be a switch (like a mute switch) rather than an enum kcontrol ?
+static const struct soc_enum omap_mcbsp_st_status_enum[] = {
- SOC_ENUM_SINGLE_EXT(ARRAY_SIZE(omap_mcbsp_st_status),
omap_mcbsp_st_status),
+};
+static const struct snd_kcontrol_new omap_mcbsp2_st_controls[] = {
- SOC_ENUM_EXT("McBSP2 Sidetone Switch", omap_mcbsp_st_status_enum[0],
omap_mcbsp2_st_get_mode, omap_mcbsp2_st_set_mode),
- OMAP_MCBSP_SOC_SINGLE_S16_EXT("McBSP2 Sidetone Channel 0 Volume",
-32768, 32767,
omap_mcbsp2_get_st_ch0_volume,
omap_mcbsp2_set_st_ch0_volume),
- OMAP_MCBSP_SOC_SINGLE_S16_EXT("McBSP2 Sidetone Channel 1 Volume",
-32768, 32767,
omap_mcbsp2_get_st_ch1_volume,
omap_mcbsp2_set_st_ch1_volume),
+};
+static const struct snd_kcontrol_new omap_mcbsp3_st_controls[] = {
- SOC_ENUM_EXT("McBSP3 Sidetone Switch", omap_mcbsp_st_status_enum[0],
omap_mcbsp3_st_get_mode, omap_mcbsp3_st_set_mode),
- OMAP_MCBSP_SOC_SINGLE_S16_EXT("McBSP3 Sidetone Channel 0 Volume",
-32768, 32767,
omap_mcbsp3_get_st_ch0_volume,
omap_mcbsp3_set_st_ch0_volume),
- OMAP_MCBSP_SOC_SINGLE_S16_EXT("McBSP3 Sidetone Channel 1 Volume",
-32768, 32767,
omap_mcbsp3_get_st_ch1_volume,
omap_mcbsp3_set_st_ch1_volume),
+};
+int omap_mcbsp_st_add_controls(struct snd_soc_codec *codec, int mcbsp_id) +{
- if (!cpu_is_omap34xx())
return -ENODEV;
- switch (mcbsp_id) {
- case 2: /* McBSP 2 */
return snd_soc_add_controls(codec, omap_mcbsp2_st_controls,
ARRAY_SIZE(omap_mcbsp2_st_controls));
- case 3: /* McBSP 3 */
return snd_soc_add_controls(codec, omap_mcbsp3_st_controls,
ARRAY_SIZE(omap_mcbsp3_st_controls));
- default:
break;
- }
- return -1;
-EINVAL;
+} +EXPORT_SYMBOL_GPL(omap_mcbsp_st_add_controls);
static int __init snd_omap_mcbsp_init(void) { return snd_soc_register_dais(omap_mcbsp_dai, diff --git a/sound/soc/omap/omap-mcbsp.h b/sound/soc/omap/omap-mcbsp.h index 647d2f9..7537435 100644 --- a/sound/soc/omap/omap-mcbsp.h +++ b/sound/soc/omap/omap-mcbsp.h @@ -57,4 +57,6 @@ enum omap_mcbsp_div {
extern struct snd_soc_dai omap_mcbsp_dai[NUM_LINKS];
+int omap_mcbsp_st_add_controls(struct snd_soc_codec *codec, int mcbsp_id);
#endif