[PATCH] use enum dma_data_direction for vio_ routines

Stephen Rothwell sfr at canb.auug.org.au
Thu Apr 1 12:57:25 EST 2004


Hi Anton,

This patch uses enum dam_data_direction for the vio DMA api routines.
This allows us to remove some include of linux/pci.h.

Also missed some pci_dam_mapping_error uses.

Relative to my previous patch.  Please apply to Ameslab (and maybe
upstream).

More to come ...

--
Cheers,
Stephen Rothwell                    sfr at canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
-------------- next part --------------
diff -ruN ppc64-2.5-iseries.dma.1/arch/ppc64/kernel/dma.c ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/dma.c
--- ppc64-2.5-iseries.dma.1/arch/ppc64/kernel/dma.c	2004-02-26 16:04:36.000000000 +1100
+++ ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/dma.c	2004-04-01 11:54:07.000000000 +1000
@@ -77,7 +77,7 @@
 		return pci_map_single(to_pci_dev(dev), cpu_addr, size, (int)direction);
 #ifdef CONFIG_PPC_PSERIES
 	if (dev->bus == &vio_bus_type)
-		return vio_map_single(to_vio_dev(dev), cpu_addr, size, (int)direction);
+		return vio_map_single(to_vio_dev(dev), cpu_addr, size, direction);
 #endif
 	BUG();
 	return (dma_addr_t)0;
@@ -91,7 +91,7 @@
 		pci_unmap_single(to_pci_dev(dev), dma_addr, size, (int)direction);
 #ifdef CONFIG_PPC_PSERIES
 	else if (dev->bus == &vio_bus_type)
-		vio_unmap_single(to_vio_dev(dev), dma_addr, size, (int)direction);
+		vio_unmap_single(to_vio_dev(dev), dma_addr, size, direction);
 #endif
 	else
 		BUG();
@@ -106,7 +106,7 @@
 		return pci_map_page(to_pci_dev(dev), page, offset, size, (int)direction);
 #ifdef CONFIG_PPC_PSERIES
 	if (dev->bus == &vio_bus_type)
-		return vio_map_page(to_vio_dev(dev), page, offset, size, (int)direction);
+		return vio_map_page(to_vio_dev(dev), page, offset, size, direction);
 #endif
 	BUG();
 	return (dma_addr_t)0;
@@ -120,7 +120,7 @@
 		pci_unmap_page(to_pci_dev(dev), dma_address, size, (int)direction);
 #ifdef CONFIG_PPC_PSERIES
 	else if (dev->bus == &vio_bus_type)
-		vio_unmap_page(to_vio_dev(dev), dma_address, size, (int)direction);
+		vio_unmap_page(to_vio_dev(dev), dma_address, size, direction);
 #endif
 	else
 		BUG();
@@ -134,7 +134,7 @@
 		return pci_map_sg(to_pci_dev(dev), sg, nents, (int)direction);
 #ifdef CONFIG_PPC_PSERIES
 	if (dev->bus == &vio_bus_type)
-		return vio_map_sg(to_vio_dev(dev), sg, nents, (int)direction);
+		return vio_map_sg(to_vio_dev(dev), sg, nents, direction);
 #endif
 	BUG();
 	return 0;
@@ -148,7 +148,7 @@
 		pci_unmap_sg(to_pci_dev(dev), sg, nhwentries, (int)direction);
 #ifdef CONFIG_PPC_PSERIES
 	else if (dev->bus == &vio_bus_type)
-		vio_unmap_sg(to_vio_dev(dev), sg, nhwentries, (int)direction);
+		vio_unmap_sg(to_vio_dev(dev), sg, nhwentries, direction);
 #endif
 	else
 		BUG();
@@ -162,7 +162,7 @@
 		pci_dma_sync_single(to_pci_dev(dev), dma_handle, size, (int)direction);
 #ifdef CONFIG_PPC_PSERIES
 	else if (dev->bus == &vio_bus_type)
-		vio_dma_sync_single(to_vio_dev(dev), dma_handle, size, (int)direction);
+		vio_dma_sync_single(to_vio_dev(dev), dma_handle, size, direction);
 #endif
 	else
 		BUG();
@@ -176,7 +176,7 @@
 		pci_dma_sync_sg(to_pci_dev(dev), sg, nelems, (int)direction);
 #ifdef CONFIG_PPC_PSERIES
 	else if (dev->bus == &vio_bus_type)
-		vio_dma_sync_sg(to_vio_dev(dev), sg, nelems, (int)direction);
+		vio_dma_sync_sg(to_vio_dev(dev), sg, nelems, direction);
 #endif
 	else
 		BUG();
diff -ruN ppc64-2.5-iseries.dma.1/arch/ppc64/kernel/vio.c ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/vio.c
--- ppc64-2.5-iseries.dma.1/arch/ppc64/kernel/vio.c	2004-04-01 10:34:40.000000000 +1000
+++ ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/vio.c	2004-04-01 11:59:33.000000000 +1000
@@ -14,7 +14,6 @@

 #include <linux/init.h>
 #include <linux/console.h>
-#include <linux/pci.h>
 #include <linux/version.h>
 #include <linux/module.h>
 #include <linux/kobject.h>
@@ -416,14 +415,14 @@


 dma_addr_t vio_map_single(struct vio_dev *dev, void *vaddr,
-			  size_t size, int direction )
+			  size_t size, enum dma_data_direction direction)
 {
 	struct iommu_table *tbl;
 	dma_addr_t dma_handle = DMA_ERROR_CODE;
 	unsigned long uaddr;
 	unsigned int npages;

-	BUG_ON(direction == PCI_DMA_NONE);
+	BUG_ON(direction == DMA_NONE);

 	uaddr = (unsigned long)vaddr;
 	npages = PAGE_ALIGN( uaddr + size ) - ( uaddr & PAGE_MASK );
@@ -432,7 +431,7 @@
 	tbl = dev->iommu_table;

 	if (tbl) {
-		dma_handle = iommu_alloc(tbl, vaddr, npages, direction);
+		dma_handle = iommu_alloc(tbl, vaddr, npages, (int)direction);
 		dma_handle |= (uaddr & ~PAGE_MASK);
 	}

@@ -441,12 +440,12 @@
 EXPORT_SYMBOL(vio_map_single);

 void vio_unmap_single(struct vio_dev *dev, dma_addr_t dma_handle,
-		      size_t size, int direction)
+		      size_t size, enum dma_data_direction direction)
 {
 	struct iommu_table * tbl;
 	unsigned int npages;

-	BUG_ON(direction == PCI_DMA_NONE);
+	BUG_ON(direction == DMA_NONE);

 	npages = PAGE_ALIGN( dma_handle + size ) - ( dma_handle & PAGE_MASK );
 	npages >>= PAGE_SHIFT;
@@ -458,11 +457,11 @@
 EXPORT_SYMBOL(vio_unmap_single);

 int vio_map_sg(struct vio_dev *vdev, struct scatterlist *sglist, int nelems,
-	       int direction)
+	       enum dma_data_direction direction)
 {
 	struct iommu_table *tbl;

-	BUG_ON(direction == PCI_DMA_NONE);
+	BUG_ON(direction == DMA_NONE);

 	if (nelems == 0)
 		return 0;
@@ -471,16 +470,16 @@
 	if (!tbl)
 		return 0;

-	return iommu_alloc_sg(tbl, &vdev->dev, sglist, nelems, direction);
+	return iommu_alloc_sg(tbl, &vdev->dev, sglist, nelems, (int)direction);
 }
 EXPORT_SYMBOL(vio_map_sg);

 void vio_unmap_sg(struct vio_dev *vdev, struct scatterlist *sglist, int nelems,
-		  int direction)
+		  enum dma_data_direction direction)
 {
 	struct iommu_table *tbl;

-	BUG_ON(direction == PCI_DMA_NONE);
+	BUG_ON(direction == DMA_NONE);

 	tbl = vdev->iommu_table;
 	if (tbl)
@@ -516,7 +515,7 @@
 			/* Page allocation succeeded */
 			memset(ret, 0, npages << PAGE_SHIFT);
 			/* Set up tces to cover the allocated range */
-			tce = iommu_alloc(tbl, ret, npages, PCI_DMA_BIDIRECTIONAL);
+			tce = iommu_alloc(tbl, ret, npages, (int)DMA_BIDIRECTIONAL);
 			if (tce == DMA_ERROR_CODE) {
 				PPCDBG(PPCDBG_TCE, "vio_alloc_consistent: iommu_alloc failed\n" );
 				free_pages((unsigned long)ret, order);
diff -ruN ppc64-2.5-iseries.dma.1/drivers/net/ibmveth.c ppc64-2.5-iseries.dma.2/drivers/net/ibmveth.c
--- ppc64-2.5-iseries.dma.1/drivers/net/ibmveth.c	2004-04-01 10:37:06.000000000 +1000
+++ ppc64-2.5-iseries.dma.2/drivers/net/ibmveth.c	2004-04-01 12:03:13.000000000 +1000
@@ -39,7 +39,6 @@
 #include <linux/types.h>
 #include <linux/errno.h>
 #include <linux/ioport.h>
-#include <linux/pci.h>
 #include <linux/dma-mapping.h>
 #include <linux/kernel.h>
 #include <linux/netdevice.h>
@@ -218,7 +217,7 @@
 		ibmveth_assert(index != 0xffff);
 		ibmveth_assert(pool->skbuff[index] == NULL);

-		dma_addr = vio_map_single(adapter->vdev, skb->data, pool->buff_size, PCI_DMA_FROMDEVICE);
+		dma_addr = vio_map_single(adapter->vdev, skb->data, pool->buff_size, DMA_FROM_DEVICE);

 		pool->dma_addr[index] = dma_addr;
 		pool->skbuff[index] = skb;
@@ -236,7 +235,7 @@
 		if(lpar_rc != H_Success) {
 			pool->skbuff[index] = NULL;
 			pool->consumer_index--;
-			vio_unmap_single(adapter->vdev, pool->dma_addr[index], pool->buff_size, PCI_DMA_FROMDEVICE);
+			vio_unmap_single(adapter->vdev, pool->dma_addr[index], pool->buff_size, DMA_FROM_DEVICE);
 			dev_kfree_skb_any(skb);
 			adapter->replenish_add_buff_failure++;
 			break;
@@ -300,7 +299,7 @@
 				vio_unmap_single(adapter->vdev,
 						 pool->dma_addr[i],
 						 pool->buff_size,
-						 PCI_DMA_FROMDEVICE);
+						 DMA_FROM_DEVICE);
 				dev_kfree_skb_any(skb);
 				pool->skbuff[i] = NULL;
 			}
@@ -338,7 +337,7 @@
 	vio_unmap_single(adapter->vdev,
 			 adapter->rx_buff_pool[pool].dma_addr[index],
 			 adapter->rx_buff_pool[pool].buff_size,
-			 PCI_DMA_FROMDEVICE);
+			 DMA_FROM_DEVICE);

 	free_index = adapter->rx_buff_pool[pool].producer_index++ % adapter->rx_buff_pool[pool].size;
 	adapter->rx_buff_pool[pool].free_map[free_index] = index;
@@ -405,8 +404,8 @@
 static void ibmveth_cleanup(struct ibmveth_adapter *adapter)
 {
 	if(adapter->buffer_list_addr != NULL) {
-		if(!pci_dma_mapping_error(adapter->buffer_list_dma)) {
-			vio_unmap_single(adapter->vdev, adapter->buffer_list_dma, 4096, PCI_DMA_BIDIRECTIONAL);
+		if(!vio_dma_mapping_error(adapter->buffer_list_dma)) {
+			vio_unmap_single(adapter->vdev, adapter->buffer_list_dma, 4096, DMA_BIDIRECTIONAL);
 			adapter->buffer_list_dma = DMA_ERROR_CODE;
 		}
 		free_page((unsigned long)adapter->buffer_list_addr);
@@ -414,8 +413,8 @@
 	}

 	if(adapter->filter_list_addr != NULL) {
-		if(!pci_dma_mapping_error(adapter->filter_list_dma)) {
-			vio_unmap_single(adapter->vdev, adapter->filter_list_dma, 4096, PCI_DMA_BIDIRECTIONAL);
+		if(!vio_dma_mapping_error(adapter->filter_list_dma)) {
+			vio_unmap_single(adapter->vdev, adapter->filter_list_dma, 4096, DMA_BIDIRECTIONAL);
 			adapter->filter_list_dma = DMA_ERROR_CODE;
 		}
 		free_page((unsigned long)adapter->filter_list_addr);
@@ -423,8 +422,8 @@
 	}

 	if(adapter->rx_queue.queue_addr != NULL) {
-		if(!pci_dma_mapping_error(adapter->rx_queue.queue_dma)) {
-			vio_unmap_single(adapter->vdev, adapter->rx_queue.queue_dma, adapter->rx_queue.queue_len, PCI_DMA_BIDIRECTIONAL);
+		if(!vio_dma_mapping_error(adapter->rx_queue.queue_dma)) {
+			vio_unmap_single(adapter->vdev, adapter->rx_queue.queue_dma, adapter->rx_queue.queue_len, DMA_BIDIRECTIONAL);
 			adapter->rx_queue.queue_dma = DMA_ERROR_CODE;
 		}
 		kfree(adapter->rx_queue.queue_addr);
@@ -470,13 +469,13 @@
 		return -ENOMEM;
 	}

-	adapter->buffer_list_dma = vio_map_single(adapter->vdev, adapter->buffer_list_addr, 4096, PCI_DMA_BIDIRECTIONAL);
-	adapter->filter_list_dma = vio_map_single(adapter->vdev, adapter->filter_list_addr, 4096, PCI_DMA_BIDIRECTIONAL);
-	adapter->rx_queue.queue_dma = vio_map_single(adapter->vdev, adapter->rx_queue.queue_addr, adapter->rx_queue.queue_len, PCI_DMA_BIDIRECTIONAL);
-
-	if((pci_dma_mapping_error(adapter->buffer_list_dma) ) ||
-	   (pci_dma_mapping_error(adapter->filter_list_dma)) ||
-	   (pci_dma_mapping_error(adapter->rx_queue.queue_dma))) {
+	adapter->buffer_list_dma = vio_map_single(adapter->vdev, adapter->buffer_list_addr, 4096, DMA_BIDIRECTIONAL);
+	adapter->filter_list_dma = vio_map_single(adapter->vdev, adapter->filter_list_addr, 4096, DMA_BIDIRECTIONAL);
+	adapter->rx_queue.queue_dma = vio_map_single(adapter->vdev, adapter->rx_queue.queue_addr, adapter->rx_queue.queue_len, DMA_BIDIRECTIONAL);
+
+	if((vio_dma_mapping_error(adapter->buffer_list_dma) ) ||
+	   (vio_dma_mapping_error(adapter->filter_list_dma)) ||
+	   (vio_dma_mapping_error(adapter->rx_queue.queue_dma))) {
 		ibmveth_error_printk("unable to map filter or buffer list pages\n");
 		ibmveth_cleanup(adapter);
 		return -ENOMEM;
@@ -642,10 +641,10 @@

 	/* map the initial fragment */
 	desc[0].fields.length  = nfrags ? skb->len - skb->data_len : skb->len;
-	desc[0].fields.address = vio_map_single(adapter->vdev, skb->data, desc[0].fields.length, PCI_DMA_TODEVICE);
+	desc[0].fields.address = vio_map_single(adapter->vdev, skb->data, desc[0].fields.length, DMA_TO_DEVICE);
 	desc[0].fields.valid   = 1;

-	if(pci_dma_mapping_error(desc[0].fields.address)) {
+	if(vio_dma_mapping_error(desc[0].fields.address)) {
 		ibmveth_error_printk("tx: unable to map initial fragment\n");
 		adapter->tx_map_failed++;
 		adapter->stats.tx_dropped++;
@@ -660,11 +659,11 @@
 		skb_frag_t *frag = &skb_shinfo(skb)->frags[curfrag];
 		desc[curfrag+1].fields.address = vio_map_single(adapter->vdev,
 								page_address(frag->page) + frag->page_offset,
-								frag->size, PCI_DMA_TODEVICE);
+								frag->size, DMA_TO_DEVICE);
 		desc[curfrag+1].fields.length = frag->size;
 		desc[curfrag+1].fields.valid  = 1;

-		if(pci_dma_mapping_error(desc[curfrag+1].fields.address)) {
+		if(vio_dma_mapping_error(desc[curfrag+1].fields.address)) {
 			ibmveth_error_printk("tx: unable to map fragment %d\n", curfrag);
 			adapter->tx_map_failed++;
 			adapter->stats.tx_dropped++;
@@ -673,7 +672,7 @@
 				vio_unmap_single(adapter->vdev,
 						 desc[curfrag+1].fields.address,
 						 desc[curfrag+1].fields.length,
-						 PCI_DMA_TODEVICE);
+						 DMA_TO_DEVICE);
 				curfrag++;
 			}
 			dev_kfree_skb(skb);
@@ -710,7 +709,7 @@
 	}

 	do {
-		vio_unmap_single(adapter->vdev, desc[nfrags].fields.address, desc[nfrags].fields.length, PCI_DMA_TODEVICE);
+		vio_unmap_single(adapter->vdev, desc[nfrags].fields.address, desc[nfrags].fields.length, DMA_TO_DEVICE);
 	} while(--nfrags >= 0);

 	dev_kfree_skb(skb);
diff -ruN ppc64-2.5-iseries.dma.1/drivers/scsi/ibmvscsi/ibmvscsis.c ppc64-2.5-iseries.dma.2/drivers/scsi/ibmvscsi/ibmvscsis.c
--- ppc64-2.5-iseries.dma.1/drivers/scsi/ibmvscsi/ibmvscsis.c	2004-04-01 10:49:54.000000000 +1000
+++ ppc64-2.5-iseries.dma.2/drivers/scsi/ibmvscsi/ibmvscsis.c	2004-04-01 11:57:41.000000000 +1000
@@ -39,7 +39,6 @@
 #include <linux/proc_fs.h>
 #include <linux/pagemap.h>
 #include <linux/sched.h>
-#include <linux/pci.h>
 #include <linux/blkdev.h>
 #include <linux/fs.h>
 #include <linux/bio.h>
@@ -1861,7 +1860,7 @@

 	queue->msg_token = vio_map_single(adapter->dma_dev, queue->msgs,
 					  queue->size * sizeof(*queue->msgs),
-					  PCI_DMA_BIDIRECTIONAL);
+					  DMA_BIDIRECTIONAL);

 	if (vio_dma_mapping_error(queue->msg_token))
 		goto map_failed;
@@ -1891,7 +1890,7 @@
  req_irq_failed:
 	plpar_hcall_norets(H_FREE_CRQ, adapter->dma_dev->unit_address);
  reg_crq_failed:
-	vio_unmap_single(adapter->dma_dev, queue->msg_token, queue->size * sizeof(*queue->msgs), PCI_DMA_BIDIRECTIONAL);
+	vio_unmap_single(adapter->dma_dev, queue->msg_token, queue->size * sizeof(*queue->msgs), DMA_BIDIRECTIONAL);
  map_failed:
 	free_page((unsigned long)queue->msgs);
  malloc_failed:
@@ -1906,7 +1905,7 @@
 	info("releasing crq\n");
 	free_irq(adapter->dma_dev->irq, adapter);
 	plpar_hcall_norets(H_FREE_CRQ, adapter->dma_dev->unit_address);
-	vio_unmap_single(adapter->dma_dev, queue->msg_token, queue->size * sizeof(*queue->msgs), PCI_DMA_BIDIRECTIONAL);
+	vio_unmap_single(adapter->dma_dev, queue->msg_token, queue->size * sizeof(*queue->msgs), DMA_BIDIRECTIONAL);
 	free_page((unsigned long)queue->msgs);
 }

diff -ruN ppc64-2.5-iseries.dma.1/drivers/scsi/ibmvscsi/rpa_vscsi.c ppc64-2.5-iseries.dma.2/drivers/scsi/ibmvscsi/rpa_vscsi.c
--- ppc64-2.5-iseries.dma.1/drivers/scsi/ibmvscsi/rpa_vscsi.c	2004-04-01 10:50:43.000000000 +1000
+++ ppc64-2.5-iseries.dma.2/drivers/scsi/ibmvscsi/rpa_vscsi.c	2004-04-01 12:05:10.000000000 +1000
@@ -78,7 +78,7 @@
 	dma_unmap_single(hostdata->dev,
 			 queue->msg_token,
 			 queue->size * sizeof(*queue->msgs),
-			 PCI_DMA_BIDIRECTIONAL);
+			 DMA_BIDIRECTIONAL);
 	free_page((unsigned long)queue->msgs);
 }

@@ -172,7 +172,7 @@

 	queue->msg_token = dma_map_single(hostdata->dev, queue->msgs,
 					  queue->size * sizeof(*queue->msgs),
-					  PCI_DMA_BIDIRECTIONAL);
+					  DMA_BIDIRECTIONAL);

 	if (dma_mapping_error(queue->msg_token))
 		goto map_failed;
@@ -217,7 +217,7 @@
 	dma_unmap_single(hostdata->dev,
 			 queue->msg_token,
 			 queue->size * sizeof(*queue->msgs),
-			 PCI_DMA_BIDIRECTIONAL);
+			 DMA_BIDIRECTIONAL);
       map_failed:
 	free_page((unsigned long)queue->msgs);
       malloc_failed:
diff -ruN ppc64-2.5-iseries.dma.1/include/asm-ppc64/vio.h ppc64-2.5-iseries.dma.2/include/asm-ppc64/vio.h
--- ppc64-2.5-iseries.dma.1/include/asm-ppc64/vio.h	2004-04-01 10:42:25.000000000 +1000
+++ ppc64-2.5-iseries.dma.2/include/asm-ppc64/vio.h	2004-04-01 11:48:29.000000000 +1000
@@ -17,7 +17,6 @@
 #include <linux/init.h>
 #include <linux/errno.h>
 #include <linux/device.h>
-#include <linux/pci.h>
 #include <linux/dma-mapping.h>
 #include <asm/hvcall.h>
 #include <asm/prom.h>
@@ -58,13 +57,13 @@
 int vio_disable_interrupts(struct vio_dev *dev);

 dma_addr_t vio_map_single(struct vio_dev *dev, void *vaddr,
-			  size_t size, int direction);
+			  size_t size, enum dma_data_direction direction);
 void vio_unmap_single(struct vio_dev *dev, dma_addr_t dma_handle,
-		      size_t size, int direction);
+		      size_t size, enum dma_data_direction direction);
 int vio_map_sg(struct vio_dev *vdev, struct scatterlist *sglist,
-	       int nelems, int direction);
+	       int nelems, enum dma_data_direction direction);
 void vio_unmap_sg(struct vio_dev *vdev, struct scatterlist *sglist,
-		  int nelems, int direction);
+		  int nelems, enum dma_data_direction direction);
 void *vio_alloc_consistent(struct vio_dev *dev, size_t size,
 			   dma_addr_t *dma_handle);
 void vio_free_consistent(struct vio_dev *dev, size_t size, void *vaddr,
@@ -81,18 +80,18 @@


 static inline void vio_dma_sync_single(struct vio_dev *hwdev,
-				       dma_addr_t dma_handle,
-				       size_t size, int direction)
+				       dma_addr_t dma_handle, size_t size,
+				       enum dma_data_direction direction)
 {
-	BUG_ON(direction == PCI_DMA_NONE);
+	BUG_ON(direction == DMA_NONE);
 	/* nothing to do */
 }

 static inline void vio_dma_sync_sg(struct vio_dev *hwdev,
-				   struct scatterlist *sg,
-				   int nelems, int direction)
+				   struct scatterlist *sg, int nelems,
+				   enum dma_data_direction direction)
 {
-	BUG_ON(direction == PCI_DMA_NONE);
+	BUG_ON(direction == DMA_NONE);
 	/* nothing to do */
 }
 static inline int vio_set_dma_mask(struct vio_dev *dev, u64 mask) { return -EIO; }



More information about the Linuxppc64-dev mailing list