11a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil/* 21a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil Copyright (C) 2003-2004 Kevin Thayer <nufan_wfk at yahoo.com> 31a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil Copyright (C) 2004 Chris Kennedy <c@groovy.org> 41a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil Copyright (C) 2006-2007 Hans Verkuil <hverkuil@xs4all.nl> 51a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil 61a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil This program is free software; you can redistribute it and/or modify 71a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil it under the terms of the GNU General Public License as published by 81a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil the Free Software Foundation; either version 2 of the License, or 91a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil (at your option) any later version. 101a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil 111a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil This program is distributed in the hope that it will be useful, 121a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil but WITHOUT ANY WARRANTY; without even the implied warranty of 131a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 141a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil GNU General Public License for more details. 151a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil 161a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil You should have received a copy of the GNU General Public License 171a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil along with this program; if not, write to the Free Software 181a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 191a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil */ 201a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil 21612570f2c4794bbf4e5bfa8648b61fbfc9cd8501Hans Verkuil#ifndef IVTV_UDMA_H 22612570f2c4794bbf4e5bfa8648b61fbfc9cd8501Hans Verkuil#define IVTV_UDMA_H 23612570f2c4794bbf4e5bfa8648b61fbfc9cd8501Hans Verkuil 241a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil/* User DMA functions */ 251a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilvoid ivtv_udma_get_page_info(struct ivtv_dma_page_info *dma_page, unsigned long first, unsigned long size); 261a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilint ivtv_udma_fill_sg_list(struct ivtv_user_dma *dma, struct ivtv_dma_page_info *dma_page, int map_offset); 271a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilvoid ivtv_udma_fill_sg_array(struct ivtv_user_dma *dma, u32 buffer_offset, u32 buffer_offset_2, u32 split); 281a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilint ivtv_udma_setup(struct ivtv *itv, unsigned long ivtv_dest_addr, 291a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil void __user *userbuf, int size_in_bytes); 301a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilvoid ivtv_udma_unmap(struct ivtv *itv); 311a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilvoid ivtv_udma_free(struct ivtv *itv); 321a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilvoid ivtv_udma_alloc(struct ivtv *itv); 331a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilvoid ivtv_udma_prepare(struct ivtv *itv); 341a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilvoid ivtv_udma_start(struct ivtv *itv); 351a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil 361a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilstatic inline void ivtv_udma_sync_for_device(struct ivtv *itv) 371a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil{ 388ac05ae3192ce8a71fc84e4a88772cce0c09173cHans Verkuil pci_dma_sync_single_for_device(itv->pdev, itv->udma.SG_handle, 391a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil sizeof(itv->udma.SGarray), PCI_DMA_TODEVICE); 401a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil} 411a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil 421a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuilstatic inline void ivtv_udma_sync_for_cpu(struct ivtv *itv) 431a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil{ 448ac05ae3192ce8a71fc84e4a88772cce0c09173cHans Verkuil pci_dma_sync_single_for_cpu(itv->pdev, itv->udma.SG_handle, 451a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil sizeof(itv->udma.SGarray), PCI_DMA_TODEVICE); 461a0adaf37c30e89e44d1470ef604a930999a5826Hans Verkuil} 47612570f2c4794bbf4e5bfa8648b61fbfc9cd8501Hans Verkuil 48612570f2c4794bbf4e5bfa8648b61fbfc9cd8501Hans Verkuil#endif 49