Lines Matching refs:dev

55 	struct saa7134_dev *dev;  member
70 struct saa7134_dev *dev; member
89 static void saa7134_dma_stop(struct saa7134_dev *dev) in saa7134_dma_stop() argument
91 dev->dmasound.dma_blk = -1; in saa7134_dma_stop()
92 dev->dmasound.dma_running = 0; in saa7134_dma_stop()
93 saa7134_set_dmabits(dev); in saa7134_dma_stop()
105 static void saa7134_dma_start(struct saa7134_dev *dev) in saa7134_dma_start() argument
107 dev->dmasound.dma_blk = 0; in saa7134_dma_start()
108 dev->dmasound.dma_running = 1; in saa7134_dma_start()
109 saa7134_set_dmabits(dev); in saa7134_dma_start()
123 static void saa7134_irq_alsa_done(struct saa7134_dev *dev, in saa7134_irq_alsa_done() argument
128 spin_lock(&dev->slock); in saa7134_irq_alsa_done()
129 if (UNSET == dev->dmasound.dma_blk) { in saa7134_irq_alsa_done()
137 if (0 == (dev->dmasound.dma_blk & 0x01)) in saa7134_irq_alsa_done()
141 if (1 == (dev->dmasound.dma_blk & 0x01)) in saa7134_irq_alsa_done()
150 if (dev->dmasound.read_count >= dev->dmasound.blksize * (dev->dmasound.blocks-2)) { in saa7134_irq_alsa_done()
152 dev->dmasound.read_count, in saa7134_irq_alsa_done()
153 dev->dmasound.bufsize, dev->dmasound.blocks); in saa7134_irq_alsa_done()
154 spin_unlock(&dev->slock); in saa7134_irq_alsa_done()
155 snd_pcm_stop_xrun(dev->dmasound.substream); in saa7134_irq_alsa_done()
160 next_blk = (dev->dmasound.dma_blk + 2) % dev->dmasound.blocks; in saa7134_irq_alsa_done()
161 saa_writel(reg,next_blk * dev->dmasound.blksize); in saa7134_irq_alsa_done()
164 next_blk * dev->dmasound.blksize, dev->dmasound.blocks, in saa7134_irq_alsa_done()
165 dev->dmasound.blksize, dev->dmasound.read_count); in saa7134_irq_alsa_done()
168 dev->dmasound.dma_blk = (dev->dmasound.dma_blk + 1) % dev->dmasound.blocks; in saa7134_irq_alsa_done()
169 dev->dmasound.read_count += dev->dmasound.blksize; in saa7134_irq_alsa_done()
171 dev->dmasound.recording_on = reg; in saa7134_irq_alsa_done()
173 if (dev->dmasound.read_count >= snd_pcm_lib_period_bytes(dev->dmasound.substream)) { in saa7134_irq_alsa_done()
174 spin_unlock(&dev->slock); in saa7134_irq_alsa_done()
175 snd_pcm_period_elapsed(dev->dmasound.substream); in saa7134_irq_alsa_done()
176 spin_lock(&dev->slock); in saa7134_irq_alsa_done()
180 spin_unlock(&dev->slock); in saa7134_irq_alsa_done()
195 struct saa7134_dev *dev = dmasound->priv_data; in saa7134_alsa_irq() local
208 saa7134_irq_alsa_done(dev, status); in saa7134_alsa_irq()
237 struct saa7134_dev *dev=pcm->dev; in snd_card_saa7134_capture_trigger() local
240 spin_lock(&dev->slock); in snd_card_saa7134_capture_trigger()
243 saa7134_dma_start(dev); in snd_card_saa7134_capture_trigger()
246 saa7134_dma_stop(dev); in snd_card_saa7134_capture_trigger()
250 spin_unlock(&dev->slock); in snd_card_saa7134_capture_trigger()
255 static int saa7134_alsa_dma_init(struct saa7134_dev *dev, in saa7134_alsa_dma_init() argument
258 struct saa7134_dmasound *dma = &dev->dmasound; in saa7134_alsa_dma_init()
296 static int saa7134_alsa_dma_map(struct saa7134_dev *dev) in saa7134_alsa_dma_map() argument
298 struct saa7134_dmasound *dma = &dev->dmasound; in saa7134_alsa_dma_map()
300 dma->sglen = dma_map_sg(&dev->pci->dev, dma->sglist, in saa7134_alsa_dma_map()
310 static int saa7134_alsa_dma_unmap(struct saa7134_dev *dev) in saa7134_alsa_dma_unmap() argument
312 struct saa7134_dmasound *dma = &dev->dmasound; in saa7134_alsa_dma_unmap()
317 dma_unmap_sg(&dev->pci->dev, dma->sglist, dma->nr_pages, DMA_FROM_DEVICE); in saa7134_alsa_dma_unmap()
342 static int dsp_buffer_init(struct saa7134_dev *dev) in dsp_buffer_init() argument
346 BUG_ON(!dev->dmasound.bufsize); in dsp_buffer_init()
348 err = saa7134_alsa_dma_init(dev, in dsp_buffer_init()
349 (dev->dmasound.bufsize + PAGE_SIZE) >> PAGE_SHIFT); in dsp_buffer_init()
362 static int dsp_buffer_free(struct saa7134_dev *dev) in dsp_buffer_free() argument
364 BUG_ON(!dev->dmasound.blksize); in dsp_buffer_free()
366 saa7134_alsa_dma_free(&dev->dmasound); in dsp_buffer_free()
368 dev->dmasound.blocks = 0; in dsp_buffer_free()
369 dev->dmasound.blksize = 0; in dsp_buffer_free()
370 dev->dmasound.bufsize = 0; in dsp_buffer_free()
386 struct saa7134_dev *dev; in snd_saa7134_capsrc_set() local
388 dev = chip->dev; in snd_saa7134_capsrc_set()
404 dev->dmasound.input = addr; in snd_saa7134_capsrc_set()
409 switch (dev->pci->device) { in snd_saa7134_capsrc_set()
423 rate = (32000 == dev->dmasound.rate) ? in snd_saa7134_capsrc_set()
453 saa_dsp_writel(dev, SAA7133_DIGITAL_OUTPUT_SEL1, in snd_saa7134_capsrc_set()
458 saa_dsp_writel(dev, SAA7133_DIGITAL_INPUT_XBAR1, in snd_saa7134_capsrc_set()
462 saa_dsp_writel(dev, SAA7133_DIGITAL_INPUT_XBAR1, in snd_saa7134_capsrc_set()
503 struct saa7134_dev *dev; in snd_card_saa7134_capture_prepare() local
506 pcm->dev->dmasound.substream = substream; in snd_card_saa7134_capture_prepare()
508 dev = saa7134->dev; in snd_card_saa7134_capture_prepare()
525 switch (dev->pci->device) { in snd_card_saa7134_capture_prepare()
534 fmt |= (MIXER_ADDR_TVTUNER == dev->dmasound.input) ? 0xc0 : 0x80; in snd_card_saa7134_capture_prepare()
535 saa_writeb(SAA7134_NUM_SAMPLES0, ((dev->dmasound.blksize - 1) & 0x0000ff)); in snd_card_saa7134_capture_prepare()
536 saa_writeb(SAA7134_NUM_SAMPLES1, ((dev->dmasound.blksize - 1) & 0x00ff00) >> 8); in snd_card_saa7134_capture_prepare()
537 saa_writeb(SAA7134_NUM_SAMPLES2, ((dev->dmasound.blksize - 1) & 0xff0000) >> 16); in snd_card_saa7134_capture_prepare()
549 saa_writel(SAA7133_NUM_SAMPLES, dev->dmasound.blksize -1); in snd_card_saa7134_capture_prepare()
560 (dev->dmasound.pt.dma >> 12); in snd_card_saa7134_capture_prepare()
565 saa_writel(SAA7134_RS_BA2(6),dev->dmasound.blksize); in snd_card_saa7134_capture_prepare()
569 dev->dmasound.rate = runtime->rate; in snd_card_saa7134_capture_prepare()
572 snd_saa7134_capsrc_set(saa7134->capture_ctl[dev->dmasound.input], 1, 1, in snd_card_saa7134_capture_prepare()
595 struct saa7134_dev *dev=pcm->dev; in snd_card_saa7134_capture_pointer() local
597 if (dev->dmasound.read_count) { in snd_card_saa7134_capture_pointer()
598 dev->dmasound.read_count -= snd_pcm_lib_period_bytes(substream); in snd_card_saa7134_capture_pointer()
599 dev->dmasound.read_offset += snd_pcm_lib_period_bytes(substream); in snd_card_saa7134_capture_pointer()
600 if (dev->dmasound.read_offset == dev->dmasound.bufsize) in snd_card_saa7134_capture_pointer()
601 dev->dmasound.read_offset = 0; in snd_card_saa7134_capture_pointer()
604 return bytes_to_frames(runtime, dev->dmasound.read_offset); in snd_card_saa7134_capture_pointer()
665 struct saa7134_dev *dev; in snd_card_saa7134_hw_params() local
679 dev = saa7134->dev; in snd_card_saa7134_hw_params()
681 if (dev->dmasound.blocks == periods && in snd_card_saa7134_hw_params()
682 dev->dmasound.blksize == period_size) in snd_card_saa7134_hw_params()
687 saa7134_pgtable_free(dev->pci, &dev->dmasound.pt); in snd_card_saa7134_hw_params()
688 saa7134_alsa_dma_unmap(dev); in snd_card_saa7134_hw_params()
689 dsp_buffer_free(dev); in snd_card_saa7134_hw_params()
692 dev->dmasound.blocks = periods; in snd_card_saa7134_hw_params()
693 dev->dmasound.blksize = period_size; in snd_card_saa7134_hw_params()
694 dev->dmasound.bufsize = period_size * periods; in snd_card_saa7134_hw_params()
696 err = dsp_buffer_init(dev); in snd_card_saa7134_hw_params()
698 dev->dmasound.blocks = 0; in snd_card_saa7134_hw_params()
699 dev->dmasound.blksize = 0; in snd_card_saa7134_hw_params()
700 dev->dmasound.bufsize = 0; in snd_card_saa7134_hw_params()
704 err = saa7134_alsa_dma_map(dev); in snd_card_saa7134_hw_params()
706 dsp_buffer_free(dev); in snd_card_saa7134_hw_params()
709 err = saa7134_pgtable_alloc(dev->pci, &dev->dmasound.pt); in snd_card_saa7134_hw_params()
711 saa7134_alsa_dma_unmap(dev); in snd_card_saa7134_hw_params()
712 dsp_buffer_free(dev); in snd_card_saa7134_hw_params()
715 err = saa7134_pgtable_build(dev->pci, &dev->dmasound.pt, in snd_card_saa7134_hw_params()
716 dev->dmasound.sglist, dev->dmasound.sglen, 0); in snd_card_saa7134_hw_params()
718 saa7134_pgtable_free(dev->pci, &dev->dmasound.pt); in snd_card_saa7134_hw_params()
719 saa7134_alsa_dma_unmap(dev); in snd_card_saa7134_hw_params()
720 dsp_buffer_free(dev); in snd_card_saa7134_hw_params()
728 substream->runtime->dma_area = dev->dmasound.vaddr; in snd_card_saa7134_hw_params()
729 substream->runtime->dma_bytes = dev->dmasound.bufsize; in snd_card_saa7134_hw_params()
749 struct saa7134_dev *dev; in snd_card_saa7134_hw_free() local
751 dev = saa7134->dev; in snd_card_saa7134_hw_free()
754 saa7134_pgtable_free(dev->pci, &dev->dmasound.pt); in snd_card_saa7134_hw_free()
755 saa7134_alsa_dma_unmap(dev); in snd_card_saa7134_hw_free()
756 dsp_buffer_free(dev); in snd_card_saa7134_hw_free()
775 struct saa7134_dev *dev = saa7134->dev; in snd_card_saa7134_capture_close() local
778 dev->ctl_mute = 1; in snd_card_saa7134_capture_close()
779 saa7134_tvaudio_setmute(dev); in snd_card_saa7134_capture_close()
799 struct saa7134_dev *dev; in snd_card_saa7134_capture_open() local
806 dev = saa7134->dev; in snd_card_saa7134_capture_open()
807 mutex_lock(&dev->dmasound.lock); in snd_card_saa7134_capture_open()
809 dev->dmasound.read_count = 0; in snd_card_saa7134_capture_open()
810 dev->dmasound.read_offset = 0; in snd_card_saa7134_capture_open()
812 amux = dev->input->amux; in snd_card_saa7134_capture_open()
815 dev->dmasound.input = amux - 1; in snd_card_saa7134_capture_open()
817 mutex_unlock(&dev->dmasound.lock); in snd_card_saa7134_capture_open()
823 pcm->dev=saa7134->dev; in snd_card_saa7134_capture_open()
832 if (dev->ctl_mute != 0) { in snd_card_saa7134_capture_open()
834 dev->ctl_mute = 0; in snd_card_saa7134_capture_open()
835 saa7134_tvaudio_setmute(dev); in snd_card_saa7134_capture_open()
930 struct saa7134_dev *dev = chip->dev; in snd_saa7134_volume_put() local
956 switch (dev->pci->device) { in snd_saa7134_volume_put()
1096 if (chip->dev->dmasound.priv_data == NULL) in snd_saa7134_free()
1100 free_irq(chip->irq, &chip->dev->dmasound); in snd_saa7134_free()
1102 chip->dev->dmasound.priv_data = NULL; in snd_saa7134_free()
1114 static int alsa_card_saa7134_create(struct saa7134_dev *dev, int devnum) in alsa_card_saa7134_create() argument
1127 err = snd_card_new(&dev->pci->dev, index[devnum], id[devnum], in alsa_card_saa7134_create()
1142 chip->dev = dev; in alsa_card_saa7134_create()
1146 chip->pci = dev->pci; in alsa_card_saa7134_create()
1147 chip->iobase = pci_resource_start(dev->pci, 0); in alsa_card_saa7134_create()
1150 err = request_irq(dev->pci->irq, saa7134_alsa_irq, in alsa_card_saa7134_create()
1151 IRQF_SHARED, dev->name, in alsa_card_saa7134_create()
1152 (void*) &dev->dmasound); in alsa_card_saa7134_create()
1156 dev->name, dev->pci->irq); in alsa_card_saa7134_create()
1160 chip->irq = dev->pci->irq; in alsa_card_saa7134_create()
1162 mutex_init(&dev->dmasound.lock); in alsa_card_saa7134_create()
1174 chip->dev->name, chip->iobase, chip->irq); in alsa_card_saa7134_create()
1177 dev->name, card->longname, index[devnum]); in alsa_card_saa7134_create()
1190 static int alsa_device_init(struct saa7134_dev *dev) in alsa_device_init() argument
1192 dev->dmasound.priv_data = dev; in alsa_device_init()
1193 alsa_card_saa7134_create(dev,dev->nr); in alsa_device_init()
1197 static int alsa_device_exit(struct saa7134_dev *dev) in alsa_device_exit() argument
1199 if (!snd_saa7134_cards[dev->nr]) in alsa_device_exit()
1202 snd_card_free(snd_saa7134_cards[dev->nr]); in alsa_device_exit()
1203 snd_saa7134_cards[dev->nr] = NULL; in alsa_device_exit()
1217 struct saa7134_dev *dev; in saa7134_alsa_init() local
1224 list_for_each_entry(dev, &saa7134_devlist, devlist) { in saa7134_alsa_init()
1225 if (dev->pci->device == PCI_DEVICE_ID_PHILIPS_SAA7130) in saa7134_alsa_init()
1227 dev->name, saa7134_boards[dev->board].name); in saa7134_alsa_init()
1229 alsa_device_init(dev); in saa7134_alsa_init()