[alsa-devel] [PATCH V4 1/5] sound: asoc: Adding support for STA529 Audio Codec
Mark Brown
broonie at opensource.wolfsonmicro.com
Mon Jun 6 13:55:19 CEST 2011
On Mon, Jun 06, 2011 at 11:27:32AM +0530, Rajeev Kumar wrote:
> This patch adds the support for STA529 audio codec.
> Details of the audio codec can be seen here:
> http://www.st.com/internet/imag_video/product/159187.jsp
As I'm fairly sure I've said before please do try to use subject lines
for your patches which are consistent with the style for the subsystem
you're submitting against.
> +struct sta529 {
> + unsigned int sysclk;
> + enum snd_soc_control_type control_type;
> + void *control_data;
why do you need the control_data here? You also don't need to pass the
control_type if the device is I2C only.
> +static const struct snd_kcontrol_new sta529_new_snd_controls[] = {
> + SOC_ENUM("PWM Select", pwm_src_enum),
> + SOC_ENUM("MODE Select", mode_src_enum),
MODE especially should be configured by _dai_fmt().
> +static int sta529_mute(struct snd_soc_dai *dai, int mute)
> +{
> + struct snd_soc_codec *codec = dai->codec;
> +
> + u8 mute_reg = snd_soc_read(codec, STA529_FFXCFG0) & ~CODEC_MUTE_VAL;
> +
> + if (mute)
> + mute_reg |= CODEC_MUTE_VAL;
> +
> + snd_soc_update_bits(codec, STA529_FFXCFG0, 0x80, 00);
This update completely ignores the check you've made above...
> + /*
> + * store the label for powers down audio subsystem for suspend.This is
> + * used by soc core layer
> + */
You want a space after the period here.
> +static struct snd_soc_dai_driver sta529_dai = {
> + .name = "sta529-audio",
Does the chip have non-audio funtionality?
> + snd_soc_add_controls(codec, sta529_snd_controls,
> + ARRAY_SIZE(sta529_snd_controls));
> +
> + snd_soc_add_controls(codec, sta529_new_snd_controls,
> + ARRAY_SIZE(sta529_new_snd_controls));
Like Lars-Peter said use data based init here.
> +static int sta529_resume(struct snd_soc_codec *codec)
> +{
> + snd_soc_cache_sync(codec);
> + sta529_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
> + sta529_set_bias_level(codec, codec->dapm.suspend_bias_level);
The second set_bias_level() should be redundant - we'll always have been
shut down by the core before we get to suspending.
> +static int __init sta529_modinit(void)
> +{
> + int ret = 0;
> +
> + ret = i2c_add_driver(&sta529_i2c_driver);
> + if (ret != 0)
> + printk(KERN_ERR "Failed to reg sta529 I2C driver: %d\n", ret);
Error out if we can't load; ignoring the error only makes sense if we
have multiple bus types and another might have succeeded.
More information about the Alsa-devel
mailing list