From 049aa166b112beab77b9a2f8d9caa03b74843eab Mon Sep 17 00:00:00 2001 From: Paul Mundt Date: Mon, 1 Oct 2007 17:43:11 +0900 Subject: sh64: Move consistent DMA routines to arch/sh64/mm/. The consistent DMA stuff was evolved from the old PCI DMA mapping functions. As this has been overhauled, it's something that is used by the generic DMA mapping code, and thus, has no intrinsic PCI dependence. Move the routines somewhere more sensible (same place as sh), and fix up the build for CONFIG_PCI=n in the process. Signed-off-by: Paul Mundt --- arch/sh64/kernel/Makefile | 2 +- arch/sh64/kernel/pci-dma.c | 52 ---------------------------------------------- arch/sh64/mm/Makefile | 4 ++-- arch/sh64/mm/consistent.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 55 deletions(-) delete mode 100644 arch/sh64/kernel/pci-dma.c create mode 100644 arch/sh64/mm/consistent.c (limited to 'arch/sh64') diff --git a/arch/sh64/kernel/Makefile b/arch/sh64/kernel/Makefile index 5816657c079..e3467bda616 100644 --- a/arch/sh64/kernel/Makefile +++ b/arch/sh64/kernel/Makefile @@ -25,7 +25,7 @@ obj-$(CONFIG_SH_DMA) += dma.o obj-$(CONFIG_SH_FPU) += fpu.o obj-$(CONFIG_EARLY_PRINTK) += early_printk.o obj-$(CONFIG_KALLSYMS) += unwind.o -obj-$(CONFIG_PCI) += pci-dma.o pcibios.o +obj-$(CONFIG_PCI) += pcibios.o obj-$(CONFIG_MODULES) += module.o ifeq ($(CONFIG_PCI),y) diff --git a/arch/sh64/kernel/pci-dma.c b/arch/sh64/kernel/pci-dma.c deleted file mode 100644 index 8875a2a40da..00000000000 --- a/arch/sh64/kernel/pci-dma.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (C) 2001 David J. Mckay (david.mckay@st.com) - * Copyright (C) 2003 Paul Mundt (lethal@linux-sh.org) - * - * May be copied or modified under the terms of the GNU General Public - * License. See linux/COPYING for more information. - * - * Dynamic DMA mapping support. - */ -#include -#include -#include -#include -#include -#include - -void *consistent_alloc(struct pci_dev *hwdev, size_t size, - dma_addr_t *dma_handle) -{ - void *ret; - int gfp = GFP_ATOMIC; - void *vp; - - if (hwdev == NULL || hwdev->dma_mask != 0xffffffff) - gfp |= GFP_DMA; - - ret = (void *)__get_free_pages(gfp, get_order(size)); - - /* now call our friend ioremap_nocache to give us an uncached area */ - vp = ioremap_nocache(virt_to_phys(ret), size); - - if (vp != NULL) { - memset(vp, 0, size); - *dma_handle = virt_to_phys(ret); - dma_cache_wback_inv((unsigned long)ret, size); - } - - return vp; -} -EXPORT_SYMBOL(consistent_alloc); - -void consistent_free(struct pci_dev *hwdev, size_t size, - void *vaddr, dma_addr_t dma_handle) -{ - void *alloc; - - alloc = phys_to_virt((unsigned long)dma_handle); - free_pages((unsigned long)alloc, get_order(size)); - - iounmap(vaddr); -} -EXPORT_SYMBOL(consistent_free); diff --git a/arch/sh64/mm/Makefile b/arch/sh64/mm/Makefile index ff19378ac90..d0e81363248 100644 --- a/arch/sh64/mm/Makefile +++ b/arch/sh64/mm/Makefile @@ -13,7 +13,8 @@ # unless it's something special (ie not a .c file). # -obj-y := init.o fault.o ioremap.o extable.o cache.o tlbmiss.o tlb.o +obj-y := cache.o consistent.o extable.o fault.o init.o ioremap.o \ + tlbmiss.o tlb.o obj-$(CONFIG_HUGETLB_PAGE) += hugetlbpage.o @@ -41,4 +42,3 @@ CFLAGS_tlbmiss.o += -ffixed-r7 \ -ffixed-r41 -ffixed-r42 -ffixed-r43 \ -ffixed-r60 -ffixed-r61 -ffixed-r62 \ -fomit-frame-pointer - diff --git a/arch/sh64/mm/consistent.c b/arch/sh64/mm/consistent.c new file mode 100644 index 00000000000..8875a2a40da --- /dev/null +++ b/arch/sh64/mm/consistent.c @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2001 David J. Mckay (david.mckay@st.com) + * Copyright (C) 2003 Paul Mundt (lethal@linux-sh.org) + * + * May be copied or modified under the terms of the GNU General Public + * License. See linux/COPYING for more information. + * + * Dynamic DMA mapping support. + */ +#include +#include +#include +#include +#include +#include + +void *consistent_alloc(struct pci_dev *hwdev, size_t size, + dma_addr_t *dma_handle) +{ + void *ret; + int gfp = GFP_ATOMIC; + void *vp; + + if (hwdev == NULL || hwdev->dma_mask != 0xffffffff) + gfp |= GFP_DMA; + + ret = (void *)__get_free_pages(gfp, get_order(size)); + + /* now call our friend ioremap_nocache to give us an uncached area */ + vp = ioremap_nocache(virt_to_phys(ret), size); + + if (vp != NULL) { + memset(vp, 0, size); + *dma_handle = virt_to_phys(ret); + dma_cache_wback_inv((unsigned long)ret, size); + } + + return vp; +} +EXPORT_SYMBOL(consistent_alloc); + +void consistent_free(struct pci_dev *hwdev, size_t size, + void *vaddr, dma_addr_t dma_handle) +{ + void *alloc; + + alloc = phys_to_virt((unsigned long)dma_handle); + free_pages((unsigned long)alloc, get_order(size)); + + iounmap(vaddr); +} +EXPORT_SYMBOL(consistent_free); -- cgit v1.2.3