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]);
106 static int cs5535audio_build_dma_packets(struct cs5535audio *cs5535au,
121 &cs5535au->pci->dev,
153 spin_lock_irq(&cs5535au->reg_lock);
154 dma->ops->disable_dma(cs5535au);
155 dma->ops->setup_prd(cs5535au, jmpprd_addr);
156 spin_unlock_irq(&cs5535au->reg_lock);
160 static void cs5535audio_playback_enable_dma(struct cs5535audio *cs5535au)
162 cs_writeb(cs5535au, ACC_BM0_CMD, BM_CTL_EN);
165 static void cs5535audio_playback_disable_dma(struct cs5535audio *cs5535au)
167 cs_writeb(cs5535au, ACC_BM0_CMD, 0);
170 static void cs5535audio_playback_pause_dma(struct cs5535audio *cs5535au)
172 cs_writeb(cs5535au, ACC_BM0_CMD, BM_CTL_PAUSE);
175 static void cs5535audio_playback_setup_prd(struct cs5535audio *cs5535au,
178 cs_writel(cs5535au, ACC_BM0_PRD, prd_addr);
181 static u32 cs5535audio_playback_read_prd(struct cs5535audio *cs5535au)
183 return cs_readl(cs5535au, ACC_BM0_PRD);
186 static u32 cs5535audio_playback_read_dma_pntr(struct cs5535audio *cs5535au)
188 return cs_readl(cs5535au, ACC_BM0_PNTR);
191 static void cs5535audio_capture_enable_dma(struct cs5535audio *cs5535au)
193 cs_writeb(cs5535au, ACC_BM1_CMD, BM_CTL_EN);
196 static void cs5535audio_capture_disable_dma(struct cs5535audio *cs5535au)
198 cs_writeb(cs5535au, ACC_BM1_CMD, 0);
201 static void cs5535audio_capture_pause_dma(struct cs5535audio *cs5535au)
203 cs_writeb(cs5535au, ACC_BM1_CMD, BM_CTL_PAUSE);
206 static void cs5535audio_capture_setup_prd(struct cs5535audio *cs5535au,
209 cs_writel(cs5535au, ACC_BM1_PRD, prd_addr);
212 static u32 cs5535audio_capture_read_prd(struct cs5535audio *cs5535au)
214 return cs_readl(cs5535au, ACC_BM1_PRD);
217 static u32 cs5535audio_capture_read_dma_pntr(struct cs5535audio *cs5535au)
219 return cs_readl(cs5535au, ACC_BM1_PNTR);
222 static void cs5535audio_clear_dma_packets(struct cs5535audio *cs5535au,
234 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
241 err = cs5535audio_build_dma_packets(cs5535au, dma, substream,
252 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
256 if (substream == cs5535au->playback_substream)
257 snd_ac97_update_power(cs5535au->ac97,
260 snd_ac97_update_power(cs5535au->ac97,
264 cs5535audio_clear_dma_packets(cs5535au, dma, substream);
270 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
271 return snd_ac97_set_rate(cs5535au->ac97, AC97_PCM_FRONT_DAC_RATE,
277 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
281 spin_lock(&cs5535au->reg_lock);
284 dma->ops->pause_dma(cs5535au);
287 dma->ops->enable_dma(cs5535au);
290 dma->ops->enable_dma(cs5535au);
293 dma->ops->enable_dma(cs5535au);
296 dma->ops->disable_dma(cs5535au);
299 dma->ops->disable_dma(cs5535au);
302 dev_err(cs5535au->card->dev, "unhandled trigger\n");
306 spin_unlock(&cs5535au->reg_lock);
313 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
318 curdma = dma->ops->read_dma_pntr(cs5535au);
320 dev_err(cs5535au->card->dev, "curdma=%x < %x bufaddr.\n",
326 dev_err(cs5535au->card->dev, "diff=%x >= %x buf_bytes.\n",
336 struct cs5535audio *cs5535au = snd_pcm_substream_chip(substream);
340 runtime->hw.rates = cs5535au->ac97->rates[AC97_RATES_ADC];
342 cs5535au->capture_substream = substream;
343 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;