Re: [uClinux-dev] [PATCH 2/2] m68k: merge the MMU and non-MMU versions of the arch dma code

2012-05-20 Thread Geert Uytterhoeven
On Fri, May 4, 2012 at 8:50 AM,   wrote:
> From: Greg Ungerer 
>
> The majority of the m68k architecture dma code is the same, so merge the
> current separated files dma_no.c and dma_mm.c back into a single dma.c
>
> The main alloc and free routines are a little different, so we keep a
> single #ifdef based on CONFIG_MMU for them. All the other support functions
> are now identical.
>
> Signed-off-by: Greg Ungerer 

Acked-by: Geert Uytterhoeven 

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
___
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev

[uClinux-dev] [PATCH 2/2] m68k: merge the MMU and non-MMU versions of the arch dma code

2012-05-03 Thread gerg
From: Greg Ungerer 

The majority of the m68k architecture dma code is the same, so merge the
current separated files dma_no.c and dma_mm.c back into a single dma.c

The main alloc and free routines are a little different, so we keep a
single #ifdef based on CONFIG_MMU for them. All the other support functions
are now identical.

Signed-off-by: Greg Ungerer 
---
 arch/m68k/kernel/{dma_mm.c => dma.c} |   35 +++-
 arch/m68k/kernel/dma_no.c|   75 --
 2 files changed, 34 insertions(+), 76 deletions(-)
 rename arch/m68k/kernel/{dma_mm.c => dma.c} (83%)
 delete mode 100644 arch/m68k/kernel/dma_no.c

diff --git a/arch/m68k/kernel/dma_mm.c b/arch/m68k/kernel/dma.c
similarity index 83%
rename from arch/m68k/kernel/dma_mm.c
rename to arch/m68k/kernel/dma.c
index a3c471b..f6daf6e 100644
--- a/arch/m68k/kernel/dma_mm.c
+++ b/arch/m68k/kernel/dma.c
@@ -16,6 +16,8 @@
 
 #include 
 
+#ifdef CONFIG_MMU
+
 void *dma_alloc_coherent(struct device *dev, size_t size,
 dma_addr_t *handle, gfp_t flag)
 {
@@ -58,7 +60,6 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
 
return addr;
 }
-EXPORT_SYMBOL(dma_alloc_coherent);
 
 void dma_free_coherent(struct device *dev, size_t size,
   void *addr, dma_addr_t handle)
@@ -66,6 +67,38 @@ void dma_free_coherent(struct device *dev, size_t size,
pr_debug("dma_free_coherent: %p, %x\n", addr, handle);
vfree(addr);
 }
+
+#else
+
+#include 
+
+void *dma_alloc_coherent(struct device *dev, size_t size,
+  dma_addr_t *dma_handle, gfp_t gfp)
+{
+   void *ret;
+   /* ignore region specifiers */
+   gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);
+
+   if (dev == NULL || (*dev->dma_mask < 0x))
+   gfp |= GFP_DMA;
+   ret = (void *)__get_free_pages(gfp, get_order(size));
+
+   if (ret != NULL) {
+   memset(ret, 0, size);
+   *dma_handle = virt_to_phys(ret);
+   }
+   return ret;
+}
+
+void dma_free_coherent(struct device *dev, size_t size,
+void *vaddr, dma_addr_t dma_handle)
+{
+   free_pages((unsigned long)vaddr, get_order(size));
+}
+
+#endif /* CONFIG_MMU */
+
+EXPORT_SYMBOL(dma_alloc_coherent);
 EXPORT_SYMBOL(dma_free_coherent);
 
 void dma_sync_single_for_device(struct device *dev, dma_addr_t handle,
diff --git a/arch/m68k/kernel/dma_no.c b/arch/m68k/kernel/dma_no.c
deleted file mode 100644
index f1dc3fc..000
--- a/arch/m68k/kernel/dma_no.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Dynamic DMA mapping support.
- *
- * We never have any address translations to worry about, so this
- * is just alloc/free.
- */
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-void *dma_alloc_coherent(struct device *dev, size_t size,
-  dma_addr_t *dma_handle, gfp_t gfp)
-{
-   void *ret;
-   /* ignore region specifiers */
-   gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);
-
-   if (dev == NULL || (*dev->dma_mask < 0x))
-   gfp |= GFP_DMA;
-   ret = (void *)__get_free_pages(gfp, get_order(size));
-
-   if (ret != NULL) {
-   memset(ret, 0, size);
-   *dma_handle = virt_to_phys(ret);
-   }
-   return ret;
-}
-
-void dma_free_coherent(struct device *dev, size_t size,
-void *vaddr, dma_addr_t dma_handle)
-{
-   free_pages((unsigned long)vaddr, get_order(size));
-}
-
-void dma_sync_single_for_device(struct device *dev, dma_addr_t handle,
-   size_t size, enum dma_data_direction dir)
-{
-   switch (dir) {
-   case DMA_TO_DEVICE:
-   flush_dcache_range(handle, size);
-   break;
-   case DMA_FROM_DEVICE:
-   /* Should be clear already */
-   break;
-   default:
-   if (printk_ratelimit())
-   printk("dma_sync_single_for_device: unsupported dir 
%u\n", dir);
-   break;
-   }
-}
-
-EXPORT_SYMBOL(dma_sync_single_for_device);
-dma_addr_t dma_map_single(struct device *dev, void *addr, size_t size,
- enum dma_data_direction dir)
-{
-   dma_addr_t handle = virt_to_phys(addr);
-   flush_dcache_range(handle, size);
-   return handle;
-}
-EXPORT_SYMBOL(dma_map_single);
-
-dma_addr_t dma_map_page(struct device *dev, struct page *page,
-   unsigned long offset, size_t size,
-   enum dma_data_direction dir)
-{
-   dma_addr_t handle = page_to_phys(page) + offset;
-   dma_sync_single_for_device(dev, handle, size, dir);
-   return handle;
-}
-EXPORT_SYMBOL(dma_map_page);
-- 
1.7.0.4

___
uClinux-dev mailing list
uClinux-dev@uclinux.org
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by uclinux-dev@uclinux.org
To unsubscribe see:
http://mailma