Lines Matching defs:itv
80 void ivtv_udma_alloc(struct ivtv *itv)
82 if (itv->udma.SG_handle == 0) {
84 itv->udma.SG_handle = dma_map_single(&itv->pdev->dev,
85 itv->udma.SGarray,
86 sizeof(itv->udma.SGarray),
88 ivtv_udma_sync_for_cpu(itv);
92 int ivtv_udma_setup(struct ivtv *itv, unsigned long ivtv_dest_addr,
96 struct ivtv_user_dma *dma = &itv->udma;
140 dma->SG_length = dma_map_sg(&itv->pdev->dev, dma->SGlist,
149 ivtv_udma_sync_for_device(itv);
153 void ivtv_udma_unmap(struct ivtv *itv)
155 struct ivtv_user_dma *dma = &itv->udma;
165 dma_unmap_sg(&itv->pdev->dev, dma->SGlist, dma->page_count,
170 ivtv_udma_sync_for_cpu(itv);
176 void ivtv_udma_free(struct ivtv *itv)
181 if (itv->udma.SG_handle) {
182 dma_unmap_single(&itv->pdev->dev, itv->udma.SG_handle,
183 sizeof(itv->udma.SGarray), DMA_TO_DEVICE);
187 if (itv->udma.SG_length) {
188 dma_unmap_sg(&itv->pdev->dev, itv->udma.SGlist,
189 itv->udma.page_count, DMA_TO_DEVICE);
193 if (itv->udma.bouncemap[i])
194 __free_page(itv->udma.bouncemap[i]);
198 void ivtv_udma_start(struct ivtv *itv)
201 write_reg(itv->udma.SG_handle, IVTV_REG_DECDMAADDR);
203 set_bit(IVTV_F_I_DMA, &itv->i_flags);
204 set_bit(IVTV_F_I_UDMA, &itv->i_flags);
205 clear_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags);
208 void ivtv_udma_prepare(struct ivtv *itv)
212 spin_lock_irqsave(&itv->dma_reg_lock, flags);
213 if (!test_bit(IVTV_F_I_DMA, &itv->i_flags))
214 ivtv_udma_start(itv);
216 set_bit(IVTV_F_I_UDMA_PENDING, &itv->i_flags);
217 spin_unlock_irqrestore(&itv->dma_reg_lock, flags);