RE: [alsa-devel] [PATCH 2/2] ASoC: OMAP-McBSP: ASoC interface for McBSP sidetone
Hi, From: ext Liam Girdwood [mailto:l...@slimlogic.co.uk] Sent: 28 January, 2010 18:22 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.koski...@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 ? Makes sense. I'll change it. +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; Oops, thanks. Cheers, Ilkka +} +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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [alsa-devel] [PATCH 2/2] ASoC: OMAP-McBSP: ASoC interface for McBSP sidetone
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.koski...@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 -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html