[PATCH] use enum dma_data_direction for everything except generic pci_dma routines
Stephen Rothwell
sfr at canb.auug.org.au
Thu Apr 1 14:02:15 EST 2004
Hi Anton,
This is just a clenaup to use enum dma_data_direction for all APIs
except the pci_dma_ ones (since they are defined generically).
Also make most of the functions in arch/ppc64/kernel/pci_iommu.c
static.
Relative to previous patches.
Built and booted on iSeries, build for default pSeries config, not
tested for pmac.
Let me know when I go to far ... :-)
--
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.2/arch/ppc64/kernel/iSeries_iommu.c ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/iSeries_iommu.c
--- ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/iSeries_iommu.c 2004-03-30 12:04:37.000000000 +1000
+++ ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/iSeries_iommu.c 2004-04-01 13:25:10.000000000 +1000
@@ -33,6 +33,7 @@
#include <linux/spinlock.h>
#include <linux/string.h>
#include <linux/pci.h>
+#include <linux/dma-mapping.h>
#include <asm/io.h>
#include <asm/prom.h>
#include <asm/rtas.h>
@@ -69,7 +70,7 @@
static void tce_build_iSeries(struct iommu_table *tbl, long index, long npages,
- unsigned long uaddr, int direction)
+ unsigned long uaddr, enum dma_data_direction direction)
{
u64 rc;
union tce_entry tce;
@@ -82,12 +83,12 @@
/* Virtual Bus */
tce.te_bits.tb_valid = 1;
tce.te_bits.tb_allio = 1;
- if (direction != PCI_DMA_TODEVICE)
+ if (direction != DMA_TO_DEVICE)
tce.te_bits.tb_rdwr = 1;
} else {
/* PCI Bus */
tce.te_bits.tb_rdwr = 1; /* Read allowed */
- if (direction != PCI_DMA_TODEVICE)
+ if (direction != DMA_TO_DEVICE)
tce.te_bits.tb_pciwr = 1;
}
diff -ruN ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/iommu.c ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/iommu.c
--- ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/iommu.c 2004-04-01 10:35:44.000000000 +1000
+++ ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/iommu.c 2004-04-01 13:19:08.000000000 +1000
@@ -31,7 +31,6 @@
#include <linux/mm.h>
#include <linux/spinlock.h>
#include <linux/string.h>
-#include <linux/pci.h>
#include <linux/dma-mapping.h>
#include <linux/init.h>
#include <asm/io.h>
@@ -142,7 +141,7 @@
}
dma_addr_t iommu_alloc(struct iommu_table *tbl, void *page,
- unsigned int npages, int direction)
+ unsigned int npages, enum dma_data_direction direction)
{
unsigned long entry, flags;
dma_addr_t ret = DMA_ERROR_CODE;
@@ -227,7 +226,8 @@
}
int iommu_alloc_sg(struct iommu_table *tbl, struct device *dev,
- struct scatterlist *sglist, int nelems, int direction)
+ struct scatterlist *sglist, int nelems,
+ enum dma_data_direction direction)
{
dma_addr_t dma_next, dma_addr;
unsigned long flags;
diff -ruN ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pSeries_iommu.c ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pSeries_iommu.c
--- ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pSeries_iommu.c 2004-03-30 12:04:37.000000000 +1000
+++ ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pSeries_iommu.c 2004-04-01 13:26:11.000000000 +1000
@@ -33,6 +33,7 @@
#include <linux/spinlock.h>
#include <linux/string.h>
#include <linux/pci.h>
+#include <linux/dma-mapping.h>
#include <asm/io.h>
#include <asm/prom.h>
#include <asm/rtas.h>
@@ -46,7 +47,7 @@
static void tce_build_pSeries(struct iommu_table *tbl, long index,
long npages, unsigned long uaddr,
- int direction)
+ enum dma_data_direction direction)
{
union tce_entry t;
union tce_entry *tp;
@@ -54,7 +55,7 @@
t.te_word = 0;
t.te_rdwr = 1; // Read allowed
- if (direction != PCI_DMA_TODEVICE)
+ if (direction != DMA_TO_DEVICE)
t.te_pciwr = 1;
tp = ((union tce_entry *)tbl->it_base) + index;
diff -ruN ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pSeries_lpar.c ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pSeries_lpar.c
--- ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pSeries_lpar.c 2004-03-30 12:04:37.000000000 +1000
+++ ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pSeries_lpar.c 2004-04-01 13:23:32.000000000 +1000
@@ -21,6 +21,7 @@
#include <linux/config.h>
#include <linux/kernel.h>
+#include <linux/dma-mapping.h>
#include <asm/processor.h>
#include <asm/mmu.h>
#include <asm/page.h>
@@ -30,7 +31,6 @@
#include <asm/mmu_context.h>
#include <asm/ppcdebug.h>
#include <asm/iommu.h>
-#include <linux/pci.h>
#include <asm/naca.h>
#include <asm/tlbflush.h>
#include <asm/tlb.h>
@@ -129,8 +129,9 @@
lbuf[1]);
}
-static void tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum, long npages,
- unsigned long uaddr, int direction )
+static void tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum,
+ long npages, unsigned long uaddr,
+ enum dma_data_direction direction)
{
u64 rc;
union tce_entry tce;
@@ -138,7 +139,7 @@
tce.te_word = 0;
tce.te_rpn = (virt_to_abs(uaddr)) >> PAGE_SHIFT;
tce.te_rdwr = 1;
- if (direction != PCI_DMA_TODEVICE)
+ if (direction != DMA_TO_DEVICE)
tce.te_pciwr = 1;
while (npages--) {
diff -ruN ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pci_dma_direct.c ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pci_dma_direct.c
--- ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pci_dma_direct.c 2004-03-30 12:04:37.000000000 +1000
+++ ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pci_dma_direct.c 2004-04-01 13:50:24.000000000 +1000
@@ -18,6 +18,7 @@
#include <linux/init.h>
#include <linux/bootmem.h>
#include <linux/mm.h>
+#include <linux/dma-mapping.h>
#include <asm/sections.h>
#include <asm/io.h>
@@ -49,18 +50,18 @@
}
static dma_addr_t pci_direct_map_single(struct pci_dev *hwdev, void *ptr,
- size_t size, int direction)
+ size_t size, enum dma_data_direction direction)
{
return virt_to_abs(ptr);
}
static void pci_direct_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr,
- size_t size, int direction)
+ size_t size, enum dma_data_direction direction)
{
}
static int pci_direct_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
- int nents, int direction)
+ int nents, enum dma_data_direction direction)
{
int i;
@@ -73,7 +74,7 @@
}
static void pci_direct_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg,
- int nents, int direction)
+ int nents, enum dma_data_direction direction)
{
}
diff -ruN ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pci_iommu.c ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pci_iommu.c
--- ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pci_iommu.c 2004-04-01 10:35:06.000000000 +1000
+++ ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pci_iommu.c 2004-04-01 13:53:18.000000000 +1000
@@ -66,7 +66,7 @@
* Returns the virtual address of the buffer and sets dma_handle
* to the dma address (mapping) of the first page.
*/
-void *pci_iommu_alloc_consistent(struct pci_dev *hwdev, size_t size,
+static void *pci_iommu_alloc_consistent(struct pci_dev *hwdev, size_t size,
dma_addr_t *dma_handle)
{
struct iommu_table *tbl;
@@ -100,7 +100,7 @@
memset(ret, 0, size);
/* Set up tces to cover the allocated range */
- mapping = iommu_alloc(tbl, ret, npages, PCI_DMA_BIDIRECTIONAL);
+ mapping = iommu_alloc(tbl, ret, npages, DMA_BIDIRECTIONAL);
if (mapping == DMA_ERROR_CODE) {
free_pages((unsigned long)ret, order);
@@ -112,7 +112,7 @@
}
-void pci_iommu_free_consistent(struct pci_dev *hwdev, size_t size,
+static void pci_iommu_free_consistent(struct pci_dev *hwdev, size_t size,
void *vaddr, dma_addr_t dma_handle)
{
struct iommu_table *tbl;
@@ -136,15 +136,15 @@
* need not be page aligned, the dma_addr_t returned will point to the same
* byte within the page as vaddr.
*/
-dma_addr_t pci_iommu_map_single(struct pci_dev *hwdev, void *vaddr,
- size_t size, int direction)
+static dma_addr_t pci_iommu_map_single(struct pci_dev *hwdev, void *vaddr,
+ 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);
@@ -167,13 +167,13 @@
}
-void pci_iommu_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_handle,
- size_t size, int direction)
+static void pci_iommu_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_handle,
+ 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))
>> PAGE_SHIFT;
@@ -185,12 +185,12 @@
}
-int pci_iommu_map_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems,
- int direction)
+static int pci_iommu_map_sg(struct pci_dev *pdev, struct scatterlist *sglist,
+ int nelems, 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;
@@ -202,12 +202,12 @@
return iommu_alloc_sg(tbl, &pdev->dev, sglist, nelems, direction);
}
-void pci_iommu_unmap_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems,
- int direction)
+static void pci_iommu_unmap_sg(struct pci_dev *pdev, struct scatterlist *sglist,
+ int nelems, enum dma_data_direction direction)
{
struct iommu_table *tbl;
- BUG_ON(direction == PCI_DMA_NONE);
+ BUG_ON(direction == DMA_NONE);
tbl = devnode_table(pdev);
if (!tbl)
diff -ruN ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pmac_iommu.c ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pmac_iommu.c
--- ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/pmac_iommu.c 2004-03-30 12:04:37.000000000 +1000
+++ ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/pmac_iommu.c 2004-04-01 13:27:45.000000000 +1000
@@ -33,6 +33,7 @@
#include <linux/spinlock.h>
#include <linux/string.h>
#include <linux/pci.h>
+#include <linux/dma-mapping.h>
#include <linux/vmalloc.h>
#include <asm/io.h>
#include <asm/prom.h>
@@ -141,7 +142,7 @@
static void dart_build_pmac(struct iommu_table *tbl, long index,
long npages, unsigned long uaddr,
- int direction)
+ enum dma_data_direction direction)
{
unsigned int *dp;
unsigned int rpn;
diff -ruN ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/vio.c ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/vio.c
--- ppc64-2.5-iseries.dma.2/arch/ppc64/kernel/vio.c 2004-04-01 11:59:33.000000000 +1000
+++ ppc64-2.5-iseries.dma.3/arch/ppc64/kernel/vio.c 2004-04-01 13:13:53.000000000 +1000
@@ -431,7 +431,7 @@
tbl = dev->iommu_table;
if (tbl) {
- dma_handle = iommu_alloc(tbl, vaddr, npages, (int)direction);
+ dma_handle = iommu_alloc(tbl, vaddr, npages, direction);
dma_handle |= (uaddr & ~PAGE_MASK);
}
@@ -470,7 +470,7 @@
if (!tbl)
return 0;
- return iommu_alloc_sg(tbl, &vdev->dev, sglist, nelems, (int)direction);
+ return iommu_alloc_sg(tbl, &vdev->dev, sglist, nelems, direction);
}
EXPORT_SYMBOL(vio_map_sg);
@@ -515,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, (int)DMA_BIDIRECTIONAL);
+ tce = iommu_alloc(tbl, ret, npages, 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.2/include/asm-ppc64/iommu.h ppc64-2.5-iseries.dma.3/include/asm-ppc64/iommu.h
--- ppc64-2.5-iseries.dma.2/include/asm-ppc64/iommu.h 2004-03-23 17:07:56.000000000 +1100
+++ ppc64-2.5-iseries.dma.3/include/asm-ppc64/iommu.h 2004-04-01 13:20:43.000000000 +1000
@@ -25,6 +25,7 @@
#include <asm/types.h>
#include <linux/spinlock.h>
#include <linux/device.h>
+#include <linux/dma-mapping.h>
/*
* IOMAP_MAX_ORDER defines the largest contiguous block
@@ -132,14 +133,15 @@
/* allocates a range of tces and sets them to the pages */
extern dma_addr_t iommu_alloc(struct iommu_table *, void *page,
- unsigned int numPages, int direction);
+ unsigned int numPages,
+ enum dma_data_direction direction);
extern void iommu_free(struct iommu_table *tbl, dma_addr_t dma_addr,
unsigned int npages);
/* same with sg lists */
extern int iommu_alloc_sg(struct iommu_table *table, struct device *dev,
struct scatterlist *sglist, int nelems,
- int direction);
+ enum dma_data_direction direction);
extern void iommu_free_sg(struct iommu_table *tbl, struct scatterlist *sglist,
int nelems);
diff -ruN ppc64-2.5-iseries.dma.2/include/asm-ppc64/machdep.h ppc64-2.5-iseries.dma.3/include/asm-ppc64/machdep.h
--- ppc64-2.5-iseries.dma.2/include/asm-ppc64/machdep.h 2004-03-23 17:07:56.000000000 +1100
+++ ppc64-2.5-iseries.dma.3/include/asm-ppc64/machdep.h 2004-04-01 13:28:36.000000000 +1000
@@ -12,6 +12,7 @@
#include <linux/config.h>
#include <linux/seq_file.h>
#include <linux/irq.h>
+#include <linux/dma-mapping.h>
struct pt_regs;
struct pci_bus;
@@ -58,7 +59,7 @@
long index,
long npages,
unsigned long uaddr,
- int direction);
+ enum dma_data_direction direction);
void (*tce_free)(struct iommu_table *tbl,
long index,
long npages);
diff -ruN ppc64-2.5-iseries.dma.2/include/asm-ppc64/pci-bridge.h ppc64-2.5-iseries.dma.3/include/asm-ppc64/pci-bridge.h
--- ppc64-2.5-iseries.dma.2/include/asm-ppc64/pci-bridge.h 2004-02-12 23:04:44.000000000 +1100
+++ ppc64-2.5-iseries.dma.3/include/asm-ppc64/pci-bridge.h 2004-04-01 13:30:51.000000000 +1000
@@ -2,6 +2,8 @@
#ifndef _ASM_PCI_BRIDGE_H
#define _ASM_PCI_BRIDGE_H
+#include <linux/pci.h>
+
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
diff -ruN ppc64-2.5-iseries.dma.2/include/asm-ppc64/pci.h ppc64-2.5-iseries.dma.3/include/asm-ppc64/pci.h
--- ppc64-2.5-iseries.dma.2/include/asm-ppc64/pci.h 2004-04-01 10:40:07.000000000 +1000
+++ ppc64-2.5-iseries.dma.3/include/asm-ppc64/pci.h 2004-04-01 13:48:08.000000000 +1000
@@ -64,13 +64,13 @@
void *vaddr, dma_addr_t dma_handle);
dma_addr_t (*pci_map_single)(struct pci_dev *hwdev, void *ptr,
- size_t size, int direction);
+ size_t size, enum dma_data_direction direction);
void (*pci_unmap_single)(struct pci_dev *hwdev, dma_addr_t dma_addr,
- size_t size, int direction);
+ size_t size, enum dma_data_direction direction);
int (*pci_map_sg)(struct pci_dev *hwdev, struct scatterlist *sg,
- int nents, int direction);
+ int nents, enum dma_data_direction direction);
void (*pci_unmap_sg)(struct pci_dev *hwdev, struct scatterlist *sg,
- int nents, int direction);
+ int nents, enum dma_data_direction direction);
int (*pci_dma_supported)(struct pci_dev *hwdev, u64 mask);
int (*pci_dac_dma_supported)(struct pci_dev *hwdev, u64 mask);
};
@@ -92,25 +92,29 @@
static inline dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr,
size_t size, int direction)
{
- return pci_dma_ops.pci_map_single(hwdev, ptr, size, direction);
+ return pci_dma_ops.pci_map_single(hwdev, ptr, size,
+ (enum dma_data_direction)direction);
}
static inline void pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr,
size_t size, int direction)
{
- pci_dma_ops.pci_unmap_single(hwdev, dma_addr, size, direction);
+ pci_dma_ops.pci_unmap_single(hwdev, dma_addr, size,
+ (enum dma_data_direction)direction);
}
static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
int nents, int direction)
{
- return pci_dma_ops.pci_map_sg(hwdev, sg, nents, direction);
+ return pci_dma_ops.pci_map_sg(hwdev, sg, nents,
+ (enum dma_data_direction)direction);
}
static inline void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg,
int nents, int direction)
{
- pci_dma_ops.pci_unmap_sg(hwdev, sg, nents, direction);
+ pci_dma_ops.pci_unmap_sg(hwdev, sg, nents,
+ (enum dma_data_direction)direction);
}
static inline void pci_dma_sync_single_for_cpu(struct pci_dev *hwdev,
More information about the Linuxppc64-dev
mailing list