Lines Matching refs:cs5535au
82 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
86 runtime->hw.rates = cs5535au->ac97->rates[AC97_RATES_FRONT_DAC];
88 cs5535au->playback_substream = substream;
89 runtime->private_data = &(cs5535au->dmas[CS5535AUDIO_DMA_PLAYBACK]);
105 static int cs5535audio_build_dma_packets(struct cs5535audio *cs5535au,
120 &cs5535au->pci->dev,
154 spin_lock_irq(&cs5535au->reg_lock);
155 dma->ops->disable_dma(cs5535au);
156 dma->ops->setup_prd(cs5535au, jmpprd_addr);
157 spin_unlock_irq(&cs5535au->reg_lock);
161 static void cs5535audio_playback_enable_dma(struct cs5535audio *cs5535au)
163 cs_writeb(cs5535au, ACC_BM0_CMD, BM_CTL_EN);
166 static void cs5535audio_playback_disable_dma(struct cs5535audio *cs5535au)
168 cs_writeb(cs5535au, ACC_BM0_CMD, 0);
171 static void cs5535audio_playback_pause_dma(struct cs5535audio *cs5535au)
173 cs_writeb(cs5535au, ACC_BM0_CMD, BM_CTL_PAUSE);
176 static void cs5535audio_playback_setup_prd(struct cs5535audio *cs5535au,
179 cs_writel(cs5535au, ACC_BM0_PRD, prd_addr);
182 static u32 cs5535audio_playback_read_prd(struct cs5535audio *cs5535au)
184 return cs_readl(cs5535au, ACC_BM0_PRD);
187 static u32 cs5535audio_playback_read_dma_pntr(struct cs5535audio *cs5535au)
189 return cs_readl(cs5535au, ACC_BM0_PNTR);
192 static void cs5535audio_capture_enable_dma(struct cs5535audio *cs5535au)
194 cs_writeb(cs5535au, ACC_BM1_CMD, BM_CTL_EN);
197 static void cs5535audio_capture_disable_dma(struct cs5535audio *cs5535au)
199 cs_writeb(cs5535au, ACC_BM1_CMD, 0);
202 static void cs5535audio_capture_pause_dma(struct cs5535audio *cs5535au)
204 cs_writeb(cs5535au, ACC_BM1_CMD, BM_CTL_PAUSE);
207 static void cs5535audio_capture_setup_prd(struct cs5535audio *cs5535au,
210 cs_writel(cs5535au, ACC_BM1_PRD, prd_addr);
213 static u32 cs5535audio_capture_read_prd(struct cs5535audio *cs5535au)
215 return cs_readl(cs5535au, ACC_BM1_PRD);
218 static u32 cs5535audio_capture_read_dma_pntr(struct cs5535audio *cs5535au)
220 return cs_readl(cs5535au, ACC_BM1_PNTR);
223 static void cs5535audio_clear_dma_packets(struct cs5535audio *cs5535au,
235 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
242 err = cs5535audio_build_dma_packets(cs5535au, dma, substream,
253 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
257 if (substream == cs5535au->playback_substream)
258 snd_ac97_update_power(cs5535au->ac97,
261 snd_ac97_update_power(cs5535au->ac97,
265 cs5535audio_clear_dma_packets(cs5535au, dma, substream);
271 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
272 return snd_ac97_set_rate(cs5535au->ac97, AC97_PCM_FRONT_DAC_RATE,
278 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
282 spin_lock(&cs5535au->reg_lock);
285 dma->ops->pause_dma(cs5535au);
288 dma->ops->enable_dma(cs5535au);
291 dma->ops->enable_dma(cs5535au);
294 dma->ops->enable_dma(cs5535au);
297 dma->ops->disable_dma(cs5535au);
300 dma->ops->disable_dma(cs5535au);
303 dev_err(cs5535au->card->dev, "unhandled trigger\n");
307 spin_unlock(&cs5535au->reg_lock);
314 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
319 curdma = dma->ops->read_dma_pntr(cs5535au);
321 dev_err(cs5535au->card->dev, "curdma=%x < %x bufaddr.\n",
327 dev_err(cs5535au->card->dev, "diff=%x >= %x buf_bytes.\n",
337 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
341 runtime->hw.rates = cs5535au->ac97->rates[AC97_RATES_ADC];
343 cs5535au->capture_substream = substream;
344 runtime->private_data = &(cs5535au->dmas[CS5535AUDIO_DMA_CAPTURE]);
348 olpc_capture_open(cs5535au->ac97);
354 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
355 olpc_capture_close(cs5535au->ac97);
361 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
362 return snd_ac97_set_rate(cs5535au->ac97, AC97_PCM_LR_ADC_RATE,
406 int snd_cs5535audio_pcm(struct cs5535audio *cs5535au)
411 err = snd_pcm_new(cs5535au->card, "CS5535 Audio", 0, 1, 1, &pcm);
415 cs5535au->dmas[CS5535AUDIO_DMA_PLAYBACK].ops =
417 cs5535au->dmas[CS5535AUDIO_DMA_CAPTURE].ops =
424 pcm->private_data = cs5535au;
429 &cs5535au->pci->dev,
431 cs5535au->pcm = pcm;