summaryrefslogtreecommitdiff
path: root/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0049-DSS2-VRAM-clear-allocated-area-with-DMA.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0049-DSS2-VRAM-clear-allocated-area-with-DMA.patch')
-rw-r--r--meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0049-DSS2-VRAM-clear-allocated-area-with-DMA.patch101
1 files changed, 0 insertions, 101 deletions
diff --git a/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0049-DSS2-VRAM-clear-allocated-area-with-DMA.patch b/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0049-DSS2-VRAM-clear-allocated-area-with-DMA.patch
deleted file mode 100644
index e9fc76ce1..000000000
--- a/meta/recipes-kernel/linux/linux-omap-2.6.29/dss2/0049-DSS2-VRAM-clear-allocated-area-with-DMA.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 02034cc79f69512a6037f03ad1243c28f59fdd8a Mon Sep 17 00:00:00 2001
-From: Tomi Valkeinen <tomi.valkeinen@nokia.com>
-Date: Wed, 22 Apr 2009 10:25:20 +0300
-Subject: [PATCH] DSS2: VRAM: clear allocated area with DMA
-
-Use DMA constant fill feature to clear VRAM area when
-someone allocates it.
----
- arch/arm/plat-omap/vram.c | 57 +++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 57 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/plat-omap/vram.c b/arch/arm/plat-omap/vram.c
-index 8e9fe77..90276ac 100644
---- a/arch/arm/plat-omap/vram.c
-+++ b/arch/arm/plat-omap/vram.c
-@@ -31,11 +31,13 @@
- #include <linux/seq_file.h>
- #include <linux/bootmem.h>
- #include <linux/omapfb.h>
-+#include <linux/completion.h>
-
- #include <asm/setup.h>
-
- #include <mach/sram.h>
- #include <mach/vram.h>
-+#include <mach/dma.h>
-
- #ifdef DEBUG
- #define DBG(format, ...) printk(KERN_DEBUG "VRAM: " format, ## __VA_ARGS__)
-@@ -276,6 +278,59 @@ int omap_vram_reserve(unsigned long paddr, size_t size)
- }
- EXPORT_SYMBOL(omap_vram_reserve);
-
-+static void _omap_vram_dma_cb(int lch, u16 ch_status, void *data)
-+{
-+ struct completion *compl = data;
-+ complete(compl);
-+}
-+
-+static int _omap_vram_clear(u32 paddr, unsigned pages)
-+{
-+ struct completion compl;
-+ unsigned elem_count;
-+ unsigned frame_count;
-+ int r;
-+ int lch;
-+
-+ init_completion(&compl);
-+
-+ r = omap_request_dma(OMAP_DMA_NO_DEVICE, "VRAM DMA",
-+ _omap_vram_dma_cb,
-+ &compl, &lch);
-+ if (r) {
-+ pr_err("VRAM: request_dma failed for memory clear\n");
-+ return -EBUSY;
-+ }
-+
-+ elem_count = pages * PAGE_SIZE / 4;
-+ frame_count = 1;
-+
-+ omap_set_dma_transfer_params(lch, OMAP_DMA_DATA_TYPE_S32,
-+ elem_count, frame_count,
-+ OMAP_DMA_SYNC_ELEMENT,
-+ 0, 0);
-+
-+ omap_set_dma_dest_params(lch, 0, OMAP_DMA_AMODE_POST_INC,
-+ paddr, 0, 0);
-+
-+ omap_set_dma_color_mode(lch, OMAP_DMA_CONSTANT_FILL, 0x000000);
-+
-+ omap_start_dma(lch);
-+
-+ if (wait_for_completion_timeout(&compl, msecs_to_jiffies(1000)) == 0) {
-+ omap_stop_dma(lch);
-+ pr_err("VRAM: dma timeout while clearing memory\n");
-+ r = -EIO;
-+ goto err;
-+ }
-+
-+ r = 0;
-+err:
-+ omap_free_dma(lch);
-+
-+ return r;
-+}
-+
- static int _omap_vram_alloc(int mtype, unsigned pages, unsigned long *paddr)
- {
- struct vram_region *rm;
-@@ -313,6 +368,8 @@ found:
-
- *paddr = start;
-
-+ _omap_vram_clear(start, pages);
-+
- return 0;
- }
-
---
-1.5.6.5
-