diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2009-08-09 22:53:15 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-08-10 03:35:00 -0400 |
commit | c2c07dbd8742a26ab3f1ee8b82237a060a0d9f61 (patch) | |
tree | 63bfb1f03d625e6baefd19f0d52d99f98c539742 /arch/sparc | |
parent | 595cc8560783ea31ed1208dc1f97282a2a5606b7 (diff) |
sparc: Replace sbus_map_single and sbus_unmap_single with sbus_map_page and sbus_unmap_page
This is a preparation for using asm-generic/pci-dma-compat.h;
SPARC32 has two dma_map_ops structures for pci and sbus
(removing arch/sparc/kernel/dma.c, PCI and SBUS DMA accessor).
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Tested-by: Robert Reif <reif@earthlink.net>
Acked-by: David S. Miller <davem@davemloft.net>
Cc: tony.luck@intel.com
Cc: fenghua.yu@intel.com
LKML-Reference: <1249872797-1314-7-git-send-email-fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/kernel/dma.c | 5 | ||||
-rw-r--r-- | arch/sparc/kernel/dma.h | 6 | ||||
-rw-r--r-- | arch/sparc/kernel/ioport.c | 7 |
3 files changed, 10 insertions, 8 deletions
diff --git a/arch/sparc/kernel/dma.c b/arch/sparc/kernel/dma.c index 15820a918171..a5d50dac735c 100644 --- a/arch/sparc/kernel/dma.c +++ b/arch/sparc/kernel/dma.c | |||
@@ -68,8 +68,7 @@ static dma_addr_t dma32_map_page(struct device *dev, struct page *page, | |||
68 | return pci_map_page(to_pci_dev(dev), page, offset, | 68 | return pci_map_page(to_pci_dev(dev), page, offset, |
69 | size, (int)direction); | 69 | size, (int)direction); |
70 | #endif | 70 | #endif |
71 | return sbus_map_single(dev, page_address(page) + offset, | 71 | return sbus_map_page(dev, page, offset, size, (int)direction); |
72 | size, (int)direction); | ||
73 | } | 72 | } |
74 | 73 | ||
75 | static void dma32_unmap_page(struct device *dev, dma_addr_t dma_address, | 74 | static void dma32_unmap_page(struct device *dev, dma_addr_t dma_address, |
@@ -83,7 +82,7 @@ static void dma32_unmap_page(struct device *dev, dma_addr_t dma_address, | |||
83 | return; | 82 | return; |
84 | } | 83 | } |
85 | #endif | 84 | #endif |
86 | sbus_unmap_single(dev, dma_address, size, (int)direction); | 85 | sbus_unmap_page(dev, dma_address, size, (int)direction); |
87 | } | 86 | } |
88 | 87 | ||
89 | static int dma32_map_sg(struct device *dev, struct scatterlist *sg, | 88 | static int dma32_map_sg(struct device *dev, struct scatterlist *sg, |
diff --git a/arch/sparc/kernel/dma.h b/arch/sparc/kernel/dma.h index f8d8951adb53..680351ee0d40 100644 --- a/arch/sparc/kernel/dma.h +++ b/arch/sparc/kernel/dma.h | |||
@@ -1,8 +1,8 @@ | |||
1 | void *sbus_alloc_consistent(struct device *dev, long len, u32 *dma_addrp); | 1 | void *sbus_alloc_consistent(struct device *dev, long len, u32 *dma_addrp); |
2 | void sbus_free_consistent(struct device *dev, long n, void *p, u32 ba); | 2 | void sbus_free_consistent(struct device *dev, long n, void *p, u32 ba); |
3 | dma_addr_t sbus_map_single(struct device *dev, void *va, | 3 | dma_addr_t sbus_map_page(struct device *dev, struct page *page, |
4 | size_t len, int direction); | 4 | unsigned long offset, size_t len, int direction); |
5 | void sbus_unmap_single(struct device *dev, dma_addr_t ba, | 5 | void sbus_unmap_page(struct device *dev, dma_addr_t ba, |
6 | size_t n, int direction); | 6 | size_t n, int direction); |
7 | int sbus_map_sg(struct device *dev, struct scatterlist *sg, | 7 | int sbus_map_sg(struct device *dev, struct scatterlist *sg, |
8 | int n, int direction); | 8 | int n, int direction); |
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c index 87ea0d03d975..39ff1e0c5183 100644 --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c | |||
@@ -337,8 +337,11 @@ void sbus_free_consistent(struct device *dev, long n, void *p, u32 ba) | |||
337 | * CPU view of this memory may be inconsistent with | 337 | * CPU view of this memory may be inconsistent with |
338 | * a device view and explicit flushing is necessary. | 338 | * a device view and explicit flushing is necessary. |
339 | */ | 339 | */ |
340 | dma_addr_t sbus_map_single(struct device *dev, void *va, size_t len, int direction) | 340 | dma_addr_t sbus_map_page(struct device *dev, struct page *page, |
341 | unsigned long offset, size_t len, int direction) | ||
341 | { | 342 | { |
343 | void *va = page_address(page) + offset; | ||
344 | |||
342 | /* XXX why are some lengths signed, others unsigned? */ | 345 | /* XXX why are some lengths signed, others unsigned? */ |
343 | if (len <= 0) { | 346 | if (len <= 0) { |
344 | return 0; | 347 | return 0; |
@@ -350,7 +353,7 @@ dma_addr_t sbus_map_single(struct device *dev, void *va, size_t len, int directi | |||
350 | return mmu_get_scsi_one(dev, va, len); | 353 | return mmu_get_scsi_one(dev, va, len); |
351 | } | 354 | } |
352 | 355 | ||
353 | void sbus_unmap_single(struct device *dev, dma_addr_t ba, size_t n, int direction) | 356 | void sbus_unmap_page(struct device *dev, dma_addr_t ba, size_t n, int direction) |
354 | { | 357 | { |
355 | mmu_release_scsi_one(dev, ba, n); | 358 | mmu_release_scsi_one(dev, ba, n); |
356 | } | 359 | } |