Lines Matching refs:itv
92 void ivtv_udma_alloc(struct ivtv *itv) in ivtv_udma_alloc() argument
94 if (itv->udma.SG_handle == 0) { in ivtv_udma_alloc()
96 itv->udma.SG_handle = pci_map_single(itv->pdev, itv->udma.SGarray, in ivtv_udma_alloc()
97 sizeof(itv->udma.SGarray), PCI_DMA_TODEVICE); in ivtv_udma_alloc()
98 ivtv_udma_sync_for_cpu(itv); in ivtv_udma_alloc()
102 int ivtv_udma_setup(struct ivtv *itv, unsigned long ivtv_dest_addr, in ivtv_udma_setup() argument
106 struct ivtv_user_dma *dma = &itv->udma; in ivtv_udma_setup()
153 dma->SG_length = pci_map_sg(itv->pdev, dma->SGlist, dma->page_count, PCI_DMA_TODEVICE); in ivtv_udma_setup()
161 ivtv_udma_sync_for_device(itv); in ivtv_udma_setup()
165 void ivtv_udma_unmap(struct ivtv *itv) in ivtv_udma_unmap() argument
167 struct ivtv_user_dma *dma = &itv->udma; in ivtv_udma_unmap()
178 pci_unmap_sg(itv->pdev, dma->SGlist, dma->page_count, PCI_DMA_TODEVICE); in ivtv_udma_unmap()
182 ivtv_udma_sync_for_cpu(itv); in ivtv_udma_unmap()
191 void ivtv_udma_free(struct ivtv *itv) in ivtv_udma_free() argument
196 if (itv->udma.SG_handle) { in ivtv_udma_free()
197 pci_unmap_single(itv->pdev, itv->udma.SG_handle, in ivtv_udma_free()
198 sizeof(itv->udma.SGarray), PCI_DMA_TODEVICE); in ivtv_udma_free()
202 if (itv->udma.SG_length) { in ivtv_udma_free()
203 pci_unmap_sg(itv->pdev, itv->udma.SGlist, itv->udma.page_count, PCI_DMA_TODEVICE); in ivtv_udma_free()
207 if (itv->udma.bouncemap[i]) in ivtv_udma_free()
208 __free_page(itv->udma.bouncemap[i]); in ivtv_udma_free()
212 void ivtv_udma_start(struct ivtv *itv) in ivtv_udma_start() argument
215 write_reg(itv->udma.SG_handle, IVTV_REG_DECDMAADDR); in ivtv_udma_start()
217 set_bit(IVTV_F_I_DMA, &itv->i_flags); in ivtv_udma_start()
218 set_bit(IVTV_F_I_UDMA, &itv->i_flags); in ivtv_udma_start()
219 clear_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags); in ivtv_udma_start()
222 void ivtv_udma_prepare(struct ivtv *itv) in ivtv_udma_prepare() argument
226 spin_lock_irqsave(&itv->dma_reg_lock, flags); in ivtv_udma_prepare()
227 if (!test_bit(IVTV_F_I_DMA, &itv->i_flags)) in ivtv_udma_prepare()
228 ivtv_udma_start(itv); in ivtv_udma_prepare()
230 set_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags); in ivtv_udma_prepare()
231 spin_unlock_irqrestore(&itv->dma_reg_lock, flags); in ivtv_udma_prepare()