summaryrefslogtreecommitdiffstats
path: root/sys/arm/samsung
diff options
context:
space:
mode:
authorbr <br@FreeBSD.org>2014-03-30 14:42:53 +0000
committerbr <br@FreeBSD.org>2014-03-30 14:42:53 +0000
commit43d65a89f4b7f27484516ae8fdc5865f64bb5ddd (patch)
treea2f10c3f14f6fda8fddd593663cf43f47c01612f /sys/arm/samsung
parent4e18604f88eefd45e7a055113a4f0576be3c110a (diff)
downloadFreeBSD-src-43d65a89f4b7f27484516ae8fdc5865f64bb5ddd.zip
FreeBSD-src-43d65a89f4b7f27484516ae8fdc5865f64bb5ddd.tar.gz
Directly call kmem_alloc_contig to allocate framebuffer memory
and pass VM_MEMATTR_UNCACHEABLE (no-cache, no-buffer). This fixes screen refreshing problem when data is updated too slowly. Discussed with: ian
Diffstat (limited to 'sys/arm/samsung')
-rw-r--r--sys/arm/samsung/exynos/exynos5_fimd.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/arm/samsung/exynos/exynos5_fimd.c b/sys/arm/samsung/exynos/exynos5_fimd.c
index e56f477..d26330f 100644
--- a/sys/arm/samsung/exynos/exynos5_fimd.c
+++ b/sys/arm/samsung/exynos/exynos5_fimd.c
@@ -47,6 +47,10 @@ __FBSDID("$FreeBSD$");
#include <sys/eventhandler.h>
#include <sys/gpio.h>
+#include <vm/vm.h>
+#include <vm/vm_extern.h>
+#include <vm/vm_kern.h>
+
#include <dev/fdt/fdt_common.h>
#include <dev/ofw/openfirm.h>
#include <dev/ofw/ofw_bus.h>
@@ -351,8 +355,8 @@ fimd_attach(device_t dev)
sc->sc_info.fb_stride = sc->sc_info.fb_width * 2;
sc->sc_info.fb_bpp = sc->sc_info.fb_depth = 16;
sc->sc_info.fb_size = sc->sc_info.fb_height * sc->sc_info.fb_stride;
- sc->sc_info.fb_vbase = (intptr_t)contigmalloc(sc->sc_info.fb_size,
- M_DEVBUF, M_ZERO, 0, ~0, PAGE_SIZE, 0);
+ sc->sc_info.fb_vbase = (intptr_t)kmem_alloc_contig(kernel_arena,
+ sc->sc_info.fb_size, M_ZERO, 0, ~0, PAGE_SIZE, 0, VM_MEMATTR_UNCACHEABLE);
sc->sc_info.fb_pbase = (intptr_t)vtophys(sc->sc_info.fb_vbase);
#if 0
OpenPOWER on IntegriCloud