[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