diff options
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.patch | 101 |
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 - |