Example #1
0
static int
snd_nm256_playback_trigger(snd_pcm_substream_t *substream, int cmd)
{
    nm256_t *chip = snd_pcm_substream_chip(substream);
    nm256_stream_t *s = (nm256_stream_t*)substream->runtime->private_data;
    int err = 0;

    snd_assert(s != NULL, return -ENXIO);

    spin_lock(&chip->reg_lock);
    switch (cmd) {
    case SNDRV_PCM_TRIGGER_START:
    case SNDRV_PCM_TRIGGER_RESUME:
        if (! s->running) {
            snd_nm256_playback_start(chip, s, substream);
            s->running = 1;
        }
        break;
    case SNDRV_PCM_TRIGGER_STOP:
    case SNDRV_PCM_TRIGGER_SUSPEND:
        if (s->running) {
            snd_nm256_playback_stop(chip);
            s->running = 0;
        }
        break;
    default:
        err = -EINVAL;
        break;
    }
    spin_unlock(&chip->reg_lock);
    return err;
}
Example #2
0
static int
snd_nm256_playback_trigger(struct snd_pcm_substream *substream, int cmd)
{
	struct nm256 *chip = snd_pcm_substream_chip(substream);
	struct nm256_stream *s = substream->runtime->private_data;
	int err = 0;

	if (snd_BUG_ON(!s))
		return -ENXIO;

	spin_lock(&chip->reg_lock);
	switch (cmd) {
	case SNDRV_PCM_TRIGGER_RESUME:
		s->suspended = 0;
		/* fallthru */
	case SNDRV_PCM_TRIGGER_START:
		if (! s->running) {
			snd_nm256_playback_start(chip, s, substream);
			s->running = 1;
		}
		break;
	case SNDRV_PCM_TRIGGER_SUSPEND:
		s->suspended = 1;
		/* fallthru */
	case SNDRV_PCM_TRIGGER_STOP:
		if (s->running) {
			snd_nm256_playback_stop(chip);
			s->running = 0;
		}
		break;
	default:
		err = -EINVAL;
		break;
	}
	spin_unlock(&chip->reg_lock);
	return err;
}