From d79351ea5e1188b9d65be485afa8d35543e0fb21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Tue, 10 Aug 2010 10:01:54 +0000 Subject: [PATCH] Attempt to use the framebuffer already set up by U-Boot... doesn't work yet though. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37999 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/boot/arch/arm/arch_video_920.cpp | 29 +++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/system/boot/arch/arm/arch_video_920.cpp b/src/system/boot/arch/arm/arch_video_920.cpp index d87bd524b2..4be91e36c1 100644 --- a/src/system/boot/arch/arm/arch_video_920.cpp +++ b/src/system/boot/arch/arm/arch_video_920.cpp @@ -41,18 +41,43 @@ extern "C" addr_t mmu_map_physical_memory(addr_t physicalAddress, size_t size, u #if BOARD_CPU_ARM920T // #pragma mark - +extern void *gFrameBufferBase; status_t arch_probe_video_mode(void) { - return B_ERROR; + gKernelArgs.frame_buffer.depth = 16; + gKernelArgs.frame_buffer.width = 1024; + gKernelArgs.frame_buffer.height = 768; + gKernelArgs.frame_buffer.bytes_per_row = gKernelArgs.frame_buffer.width * 2; + gKernelArgs.frame_buffer.physical_buffer.size = gKernelArgs.frame_buffer.width + * gKernelArgs.frame_buffer.height + * gKernelArgs.frame_buffer.depth / 8; + +#if 0 + if (!gFrameBufferBase) { + int err = platform_allocate_region(&gFrameBufferBase, gKernelArgs.frame_buffer.physical_buffer.size, 0, false); + if (err < B_OK) return err; + gKernelArgs.frame_buffer.physical_buffer.start = (addr_t)gFrameBufferBase; + dprintf("video framebuffer: %p\n", gFrameBufferBase); + } +#else + gFrameBufferBase = (void *)0x88000000; + gKernelArgs.frame_buffer.physical_buffer.start = (addr_t)gFrameBufferBase; +#endif + + dprintf("video mode: %ux%ux%u\n", gKernelArgs.frame_buffer.width, + gKernelArgs.frame_buffer.height, gKernelArgs.frame_buffer.depth); + + gKernelArgs.frame_buffer.enabled = true; + return B_OK; } status_t arch_set_video_mode(int width, int height, int depth) { - return B_ERROR; + return B_OK; }