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@xxxxxxxxx> > --- > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html