diff --git a/os/src/drivers/framebuffer/fiasco_ux/framebuffer.cc b/os/src/drivers/framebuffer/fiasco_ux/framebuffer.cc deleted file mode 100644 index 39ad99103..000000000 --- a/os/src/drivers/framebuffer/fiasco_ux/framebuffer.cc +++ /dev/null @@ -1,129 +0,0 @@ -/** - * \brief Fiasco-UX Framebuffer driver - * \author Christian Helmuth - * \date 2006-08-30 - */ - -/* - * Copyright (C) 2006-2013 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU General Public License version 2. - */ - -#include -#include -#include -#include - -#include -#include - -namespace Fiasco { -#include -} - -#include "framebuffer.h" - -using namespace Genode; - - -/** - * Framebuffer area - */ -static Dataspace_capability io_mem_cap; - - -/**************** - ** Driver API ** - ****************/ - -Dataspace_capability Framebuffer_drv::hw_framebuffer() -{ - return io_mem_cap; -} - - -/******************** - ** Driver startup ** - ********************/ - -/** - * Configure Fiasco kernel info page - */ -static void *map_kip() -{ - /* request KIP dataspace */ - Rom_connection rom("l4v2_kip"); - rom.on_destruction(Rom_connection::KEEP_OPEN); - - /* attach KIP dataspace */ - return env()->rm_session()->attach(rom.dataspace()); -} - - -/** - * Read virtual hardware descriptor from kernel info page - */ -static int init_framebuffer_vhw(void *kip, addr_t *base, size_t *size) -{ - Fiasco::l4_kernel_info_t *kip_ptr = (Fiasco::l4_kernel_info_t *)kip; - struct Fiasco::l4_vhw_descriptor *vhw = Fiasco::l4_vhw_get(kip_ptr); - if (!vhw) return -1; - - struct Fiasco::l4_vhw_entry *e = Fiasco::l4_vhw_get_entry_type(vhw, Fiasco::L4_TYPE_VHW_FRAMEBUFFER); - if (!e) return -2; - - *base = e->mem_start; - *size = e->mem_size; - - return 0; -} - - -/** - * Configure io_mem area containing Fiasco-UX framebuffer - */ -Dataspace_capability map_framebuffer_area(addr_t base, size_t size, void **framebuffer) -{ - /* request io_mem dataspace */ - Io_mem_connection io_mem(base, size); - io_mem.on_destruction(Io_mem_connection::KEEP_OPEN); - Io_mem_dataspace_capability io_mem_ds = io_mem.dataspace(); - if (!io_mem_ds.valid()) return Dataspace_capability(); - - /* attach io_mem dataspace */ - *framebuffer = env()->rm_session()->attach(io_mem_ds); - return io_mem_ds; -} - - -int Framebuffer_drv::init() -{ - using namespace Genode; - - void *kip = 0; - try { kip = map_kip(); } - catch (...) { - PERR("KIP mapping failed"); - return 1; - } - - addr_t base; size_t size; - if (init_framebuffer_vhw(kip, &base, &size)) { - PERR("VHW framebuffer init failed"); - return 2; - } - - PDBG("--- framebuffer area is [%lx,%lx) ---", base, base + size); - - void *framebuffer = 0; - io_mem_cap = map_framebuffer_area(base, size, &framebuffer); - if (!io_mem_cap.valid()) { - PERR("VHW framebuffer area mapping failed"); - return 3; - } - - return 0; -} - diff --git a/os/src/drivers/framebuffer/fiasco_ux/framebuffer.h b/os/src/drivers/framebuffer/fiasco_ux/framebuffer.h deleted file mode 100644 index a55b91b2e..000000000 --- a/os/src/drivers/framebuffer/fiasco_ux/framebuffer.h +++ /dev/null @@ -1,32 +0,0 @@ -/** - * \brief Framebuffer driver interface - * \author Christian Helmuth - * \date 2006-08-30 - */ - -/* - * Copyright (C) 2006-2013 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU General Public License version 2. - */ - -#ifndef _FRAMEBUFFER_H -#define _FRAMEBUFFER_H - -#include - -namespace Framebuffer_drv { - - /** - * Return capability for h/w framebuffer dataspace - */ - Genode::Dataspace_capability hw_framebuffer(); - - /** - * Initialize driver - */ - int init(); -} - -#endif diff --git a/os/src/drivers/framebuffer/fiasco_ux/main.cc b/os/src/drivers/framebuffer/fiasco_ux/main.cc deleted file mode 100644 index 97aab33f8..000000000 --- a/os/src/drivers/framebuffer/fiasco_ux/main.cc +++ /dev/null @@ -1,126 +0,0 @@ -/** - * \brief Framebuffer driver front-end - * \author Norman Feske - * \author Christian Helmuth - * \date 2006-08-30 - */ - -/* - * Copyright (C) 2006-2013 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU General Public License version 2. - */ - -/* Genode */ -#include -#include -#include -#include -#include -#include - -/* Local */ -#include "framebuffer.h" - -using namespace Genode; - - -/*********************************************** - ** Implementation of the framebuffer service ** - ***********************************************/ - -/* - * Screen configuration - * - * FIXME currently it's 640x480@16 and not configurable - */ -static int scr_width = 640, scr_height = 480, scr_mode = 16; - -namespace Framebuffer { - - class Session_component : public Genode::Rpc_object - { - public: - - Dataspace_capability dataspace() { return Framebuffer_drv::hw_framebuffer(); } - - void release() { } - - Mode mode() const - { - if (scr_mode != 16) - return Mode(); /* invalid mode */ - - return Mode(scr_width, scr_height, Mode::RGB565); - } - - void mode_sigh(Genode::Signal_context_capability sigh) { } - - void refresh(int x, int y, int w, int h) - { -#if 0 - /* clip refresh area to screen boundaries */ - int x1 = max(x, 0); - int y1 = max(y, 0); - int x2 = min(x + w - 1, scr_width - 1); - int y2 = min(y + h - 1, scr_height - 1); - - if (x1 > x2 || y1 > y2) return; - - /* copy pixels from shared dataspace to sdl surface */ - const int start_offset = bytes_per_pixel()*(y1*scr_width + x1); - const int line_len = bytes_per_pixel()*(x2 - x1 + 1); - const int pitch = bytes_per_pixel()*scr_width; - - char *src = (char *)fb_ds_addr + start_offset; - char *dst = (char *)screen->pixels + start_offset; - - for (int i = y1; i <= y2; i++, src += pitch, dst += pitch) - Genode::memcpy(dst, src, line_len); - - /* flush pixels in sdl window */ - SDL_UpdateRect(screen, x1, y1, x2 - x1 + 1, y2 - y1 + 1); -#endif - } - }; - - - class Root : public Root_component - { - protected: - - Session_component *_create_session(const char *args) { - return new (md_alloc()) Session_component(); } - - public: - - Root(Rpc_entrypoint *session_ep, Allocator *md_alloc) - : Root_component(session_ep, md_alloc) { } - }; -} - - -int main(int argc, char **argv) -{ - /* initialize server entry point */ - enum { STACK_SIZE = 4096 }; - static Cap_connection cap; - static Rpc_entrypoint ep(&cap, STACK_SIZE, "fb_ep"); - - /* init driver back-end */ - if (Framebuffer_drv::init()) { - PERR("H/W driver init failed"); - return 3; - } - - static Framebuffer::Root fb_root(&ep, env()->heap()); - - /* tell parent about the service */ - env()->parent()->announce(ep.manage(&fb_root)); - - /* main's done - go to sleep */ - - sleep_forever(); - return 0; -} diff --git a/os/src/drivers/framebuffer/fiasco_ux/target.mk b/os/src/drivers/framebuffer/fiasco_ux/target.mk deleted file mode 100644 index 88f1e9525..000000000 --- a/os/src/drivers/framebuffer/fiasco_ux/target.mk +++ /dev/null @@ -1,4 +0,0 @@ -TARGET = framebuffer_ux_drv -REQUIRES = fiasco x86 -SRC_CC = main.cc framebuffer.cc -LIBS = base