Exemplo n.º 1
0
/* spinlock held! */
static void
snd_nm256_playback_update(struct nm256 *chip)
{
	struct nm256_stream *s;

	s = &chip->streams[SNDRV_PCM_STREAM_PLAYBACK];
	if (s->running && s->substream) {
		spin_unlock(&chip->reg_lock);
		snd_pcm_period_elapsed(s->substream);
		spin_lock(&chip->reg_lock);
		snd_nm256_playback_mark(chip, s);
	}
}
Exemplo n.º 2
0
static void
snd_nm256_playback_start(nm256_t *chip, nm256_stream_t *s, snd_pcm_substream_t *substream)
{
    /* program buffer pointers */
    snd_nm256_writel(chip, NM_PBUFFER_START, s->buf);
    snd_nm256_writel(chip, NM_PBUFFER_END, s->buf + s->dma_size - (1 << s->shift));
    snd_nm256_writel(chip, NM_PBUFFER_CURRP, s->buf);
    snd_nm256_playback_mark(chip, s);

    /* Enable playback engine and interrupts. */
    snd_nm256_writeb(chip, NM_PLAYBACK_ENABLE_REG,
                     NM_PLAYBACK_ENABLE_FLAG | NM_PLAYBACK_FREERUN);
    /* Enable both channels. */
    snd_nm256_writew(chip, NM_AUDIO_MUTE_REG, 0x0);
}
Exemplo n.º 3
0
static void
snd_nm256_playback_start(struct nm256 *chip, struct nm256_stream *s,
			 struct snd_pcm_substream *substream)
{
	
	snd_nm256_writel(chip, NM_PBUFFER_START, s->buf);
	snd_nm256_writel(chip, NM_PBUFFER_END, s->buf + s->dma_size - (1 << s->shift));
	snd_nm256_writel(chip, NM_PBUFFER_CURRP, s->buf);
	snd_nm256_playback_mark(chip, s);

	
	snd_nm256_writeb(chip, NM_PLAYBACK_ENABLE_REG,
			 NM_PLAYBACK_ENABLE_FLAG | NM_PLAYBACK_FREERUN);
	
	snd_nm256_writew(chip, NM_AUDIO_MUTE_REG, 0x0);
}