[alsa-devel] [PATCH V3 1/5] sound: asoc: Adding support for STA529 Audio Codec

Mark Brown broonie at opensource.wolfsonmicro.com
Mon Apr 11 16:56:22 CEST 2011


On Mon, Apr 11, 2011 at 11:00:00AM +0530, Rajeev Kumar wrote:

> +static const char *op_mode_text[] = { "slave", "master"};

What is op_mode?  This sounds like it should be configured by
set_dai_fmt()...

> +static const struct snd_kcontrol_new sta529_new_snd_controls[] = {
> +	SOC_ENUM("pwm select", pwm_src_enum),
> +	SOC_ENUM("mode select", mode_src_enum),
> +};

ALSA control names are idiomatically things like "PWM Select" with
capitalisation.

> +	/*store the label for powers down audio subsystem for suspend.This is
> +	 ** used by soc core layer*/
> +	codec->bias_level = level;

The formatting of this comment isn't terribly idiomatic.

> +static int sta529_probe(struct snd_soc_codec *codec)
> +{
> +	struct sta529 *sta529 = snd_soc_codec_get_drvdata(codec);
> +	int ret;
> +
> +	codec->hw_write = (hw_write_t)i2c_master_send;
> +	codec->hw_read = NULL;
> +	ret = snd_soc_codec_set_cache_io(codec, 8, 8, sta529->control_type);
> +	if (ret < 0) {
> +		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
> +		return ret;
> +	}

You shouldn't need to be assigning the I/O functions if you set the
control type.  If the device only supports I2C that can just be hard
coded.

> +static int sta529_resume(struct snd_soc_codec *codec)
> +{
> +	int i;
> +	u8 data[2];
> +	u8 *cache = codec->reg_cache;
> +
> +	for (i = 0; i < ARRAY_SIZE(sta529_reg); i++) {
> +		data[0] = i;
> +		data[1] = cache[i];
> +		codec->hw_write(codec->control_data, data, 2);
> +	}

It looks like you can use the standard cache sync implementation here?
snd_soc_cache_sync().


More information about the Alsa-devel mailing list