parisc: convert to dma_map_ops
Signed-off-by: Christoph Hellwig <hch@lst.de> Tested-by: Helge Deller <deller@gmx.de> Acked-by: Helge Deller <deller@gmx.de> Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: Joerg Roedel <jroedel@suse.de> Cc: Sebastian Ott <sebott@linux.vnet.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
eae0751963
commit
79387179e2
@@ -780,8 +780,18 @@ sba_map_single(struct device *dev, void *addr, size_t size,
|
||||
}
|
||||
|
||||
|
||||
static dma_addr_t
|
||||
sba_map_page(struct device *dev, struct page *page, unsigned long offset,
|
||||
size_t size, enum dma_data_direction direction,
|
||||
struct dma_attrs *attrs)
|
||||
{
|
||||
return sba_map_single(dev, page_address(page) + offset, size,
|
||||
direction);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* sba_unmap_single - unmap one IOVA and free resources
|
||||
* sba_unmap_page - unmap one IOVA and free resources
|
||||
* @dev: instance of PCI owned by the driver that's asking.
|
||||
* @iova: IOVA of driver buffer previously mapped.
|
||||
* @size: number of bytes mapped in driver buffer.
|
||||
@@ -790,8 +800,8 @@ sba_map_single(struct device *dev, void *addr, size_t size,
|
||||
* See Documentation/DMA-API-HOWTO.txt
|
||||
*/
|
||||
static void
|
||||
sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size,
|
||||
enum dma_data_direction direction)
|
||||
sba_unmap_page(struct device *dev, dma_addr_t iova, size_t size,
|
||||
enum dma_data_direction direction, struct dma_attrs *attrs)
|
||||
{
|
||||
struct ioc *ioc;
|
||||
#if DELAYED_RESOURCE_CNT > 0
|
||||
@@ -858,15 +868,15 @@ sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size,
|
||||
|
||||
|
||||
/**
|
||||
* sba_alloc_consistent - allocate/map shared mem for DMA
|
||||
* sba_alloc - allocate/map shared mem for DMA
|
||||
* @hwdev: instance of PCI owned by the driver that's asking.
|
||||
* @size: number of bytes mapped in driver buffer.
|
||||
* @dma_handle: IOVA of new buffer.
|
||||
*
|
||||
* See Documentation/DMA-API-HOWTO.txt
|
||||
*/
|
||||
static void *sba_alloc_consistent(struct device *hwdev, size_t size,
|
||||
dma_addr_t *dma_handle, gfp_t gfp)
|
||||
static void *sba_alloc(struct device *hwdev, size_t size, dma_addr_t *dma_handle,
|
||||
gfp_t gfp, struct dma_attrs *attrs)
|
||||
{
|
||||
void *ret;
|
||||
|
||||
@@ -888,7 +898,7 @@ static void *sba_alloc_consistent(struct device *hwdev, size_t size,
|
||||
|
||||
|
||||
/**
|
||||
* sba_free_consistent - free/unmap shared mem for DMA
|
||||
* sba_free - free/unmap shared mem for DMA
|
||||
* @hwdev: instance of PCI owned by the driver that's asking.
|
||||
* @size: number of bytes mapped in driver buffer.
|
||||
* @vaddr: virtual address IOVA of "consistent" buffer.
|
||||
@@ -897,10 +907,10 @@ static void *sba_alloc_consistent(struct device *hwdev, size_t size,
|
||||
* See Documentation/DMA-API-HOWTO.txt
|
||||
*/
|
||||
static void
|
||||
sba_free_consistent(struct device *hwdev, size_t size, void *vaddr,
|
||||
dma_addr_t dma_handle)
|
||||
sba_free(struct device *hwdev, size_t size, void *vaddr,
|
||||
dma_addr_t dma_handle, struct dma_attrs *attrs)
|
||||
{
|
||||
sba_unmap_single(hwdev, dma_handle, size, 0);
|
||||
sba_unmap_page(hwdev, dma_handle, size, 0, NULL);
|
||||
free_pages((unsigned long) vaddr, get_order(size));
|
||||
}
|
||||
|
||||
@@ -933,7 +943,7 @@ int dump_run_sg = 0;
|
||||
*/
|
||||
static int
|
||||
sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||
enum dma_data_direction direction)
|
||||
enum dma_data_direction direction, struct dma_attrs *attrs)
|
||||
{
|
||||
struct ioc *ioc;
|
||||
int coalesced, filled = 0;
|
||||
@@ -1016,7 +1026,7 @@ sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||
*/
|
||||
static void
|
||||
sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||
enum dma_data_direction direction)
|
||||
enum dma_data_direction direction, struct dma_attrs *attrs)
|
||||
{
|
||||
struct ioc *ioc;
|
||||
#ifdef ASSERT_PDIR_SANITY
|
||||
@@ -1040,7 +1050,8 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||
|
||||
while (sg_dma_len(sglist) && nents--) {
|
||||
|
||||
sba_unmap_single(dev, sg_dma_address(sglist), sg_dma_len(sglist), direction);
|
||||
sba_unmap_page(dev, sg_dma_address(sglist), sg_dma_len(sglist),
|
||||
direction, NULL);
|
||||
#ifdef SBA_COLLECT_STATS
|
||||
ioc->usg_pages += ((sg_dma_address(sglist) & ~IOVP_MASK) + sg_dma_len(sglist) + IOVP_SIZE - 1) >> PAGE_SHIFT;
|
||||
ioc->usingle_calls--; /* kluge since call is unmap_sg() */
|
||||
@@ -1058,19 +1069,14 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents,
|
||||
|
||||
}
|
||||
|
||||
static struct hppa_dma_ops sba_ops = {
|
||||
static struct dma_map_ops sba_ops = {
|
||||
.dma_supported = sba_dma_supported,
|
||||
.alloc_consistent = sba_alloc_consistent,
|
||||
.alloc_noncoherent = sba_alloc_consistent,
|
||||
.free_consistent = sba_free_consistent,
|
||||
.map_single = sba_map_single,
|
||||
.unmap_single = sba_unmap_single,
|
||||
.alloc = sba_alloc,
|
||||
.free = sba_free,
|
||||
.map_page = sba_map_page,
|
||||
.unmap_page = sba_unmap_page,
|
||||
.map_sg = sba_map_sg,
|
||||
.unmap_sg = sba_unmap_sg,
|
||||
.dma_sync_single_for_cpu = NULL,
|
||||
.dma_sync_single_for_device = NULL,
|
||||
.dma_sync_sg_for_cpu = NULL,
|
||||
.dma_sync_sg_for_device = NULL,
|
||||
};
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user