Lines Matching refs:itv
80 void ivtv_udma_alloc(struct ivtv *itv) in ivtv_udma_alloc() argument
82 if (itv->udma.SG_handle == 0) { in ivtv_udma_alloc()
84 itv->udma.SG_handle = dma_map_single(&itv->pdev->dev, in ivtv_udma_alloc()
85 itv->udma.SGarray, in ivtv_udma_alloc()
86 sizeof(itv->udma.SGarray), in ivtv_udma_alloc()
88 ivtv_udma_sync_for_cpu(itv); in ivtv_udma_alloc()
92 int ivtv_udma_setup(struct ivtv *itv, unsigned long ivtv_dest_addr, in ivtv_udma_setup() argument
96 struct ivtv_user_dma *dma = &itv->udma; in ivtv_udma_setup()
142 dma->SG_length = dma_map_sg(&itv->pdev->dev, dma->SGlist, in ivtv_udma_setup()
157 ivtv_udma_sync_for_device(itv); in ivtv_udma_setup()
161 void ivtv_udma_unmap(struct ivtv *itv) in ivtv_udma_unmap() argument
163 struct ivtv_user_dma *dma = &itv->udma; in ivtv_udma_unmap()
173 dma_unmap_sg(&itv->pdev->dev, dma->SGlist, dma->page_count, in ivtv_udma_unmap()
178 ivtv_udma_sync_for_cpu(itv); in ivtv_udma_unmap()
184 void ivtv_udma_free(struct ivtv *itv) in ivtv_udma_free() argument
189 if (itv->udma.SG_handle) { in ivtv_udma_free()
190 dma_unmap_single(&itv->pdev->dev, itv->udma.SG_handle, in ivtv_udma_free()
191 sizeof(itv->udma.SGarray), DMA_TO_DEVICE); in ivtv_udma_free()
195 if (itv->udma.SG_length) { in ivtv_udma_free()
196 dma_unmap_sg(&itv->pdev->dev, itv->udma.SGlist, in ivtv_udma_free()
197 itv->udma.page_count, DMA_TO_DEVICE); in ivtv_udma_free()
201 if (itv->udma.bouncemap[i]) in ivtv_udma_free()
202 __free_page(itv->udma.bouncemap[i]); in ivtv_udma_free()
206 void ivtv_udma_start(struct ivtv *itv) in ivtv_udma_start() argument
209 write_reg(itv->udma.SG_handle, IVTV_REG_DECDMAADDR); in ivtv_udma_start()
211 set_bit(IVTV_F_I_DMA, &itv->i_flags); in ivtv_udma_start()
212 set_bit(IVTV_F_I_UDMA, &itv->i_flags); in ivtv_udma_start()
213 clear_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags); in ivtv_udma_start()
216 void ivtv_udma_prepare(struct ivtv *itv) in ivtv_udma_prepare() argument
220 spin_lock_irqsave(&itv->dma_reg_lock, flags); in ivtv_udma_prepare()
221 if (!test_bit(IVTV_F_I_DMA, &itv->i_flags)) in ivtv_udma_prepare()
222 ivtv_udma_start(itv); in ivtv_udma_prepare()
224 set_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags); in ivtv_udma_prepare()
225 spin_unlock_irqrestore(&itv->dma_reg_lock, flags); in ivtv_udma_prepare()