[alsa-devel] [PATCH 5/6] compress: add the core file

Mark Brown broonie at opensource.wolfsonmicro.com
Wed Nov 23 17:02:53 CET 2011


On Tue, Nov 22, 2011 at 02:21:59PM +0530, Vinod Koul wrote:

Looks mostly good.

> +static int snd_compr_resume(struct snd_compr_stream *stream)
> +{
> +	int retval;
> +
> +	if (stream->runtime->state != SNDRV_PCM_STATE_PAUSED)
> +		return -EPERM;
> +	retval = stream->ops->trigger(stream, SNDRV_PCM_TRIGGER_PAUSE_RELEASE);
> +	if (!retval)
> +		stream->runtime->state = SNDRV_PCM_STATE_RUNNING;
> +	return retval;

Here we do the state transition if the trigger is successful but...

> +static int snd_compr_start(struct snd_compr_stream *stream)
> +{
> +	int retval;
> +
> +	if (stream->runtime->state != SNDRV_PCM_STATE_PREPARED)
> +		return -EPERM;
> +	retval = stream->ops->trigger(stream, SNDRV_PCM_TRIGGER_START);
> +	stream->runtime->state = SNDRV_PCM_STATE_RUNNING;
> +	return retval;

...here we unconditionally set the new state.

> +static int snd_compress_add_device(struct snd_compr *device)
> +{
> +	int ret;
> +	struct snd_card *card;
> +
> +	ret = snd_card_create(SNDRV_DEFAULT_IDX1, device->name,
> +			THIS_MODULE, 0, &card);
> +	if (ret < 0)
> +		goto out;

It's a bit surprising that this is doing snd_card_create() - I'd expect
a compressed device to be added as a subdevice on a card being passed
in.  At least in the embedded case you'd normally get a card with a mix
of PCM and compressed streams in one unified card.

> +	mutex_init(&device->lock);
> +	/* todo integrate with asoc */

The core code shouldn't know anything about ASoC, ASoC should be able to
use the core API like any other card driver.


More information about the Alsa-devel mailing list