]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/fb-drv/server/src/fb.h
update
[l4.git] / l4 / pkg / fb-drv / server / src / fb.h
1 /*
2  * (c) 2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
3  *          Alexander Warg <warg@os.inf.tu-dresden.de>
4  *     economic rights: Technische Universität Dresden (Germany)
5  *
6  * This file is part of TUD:OS and distributed under the terms of the
7  * GNU General Public License 2.
8  * Please see the COPYING-GPL-2 file for details.
9  */
10 #pragma once
11
12 #include <l4/re/util/video/goos_svr>
13 #include <l4/re/util/object_registry>
14 #include <l4/re/util/dataspace_svr>
15
16 class Prog_args
17 {
18 public:
19   Prog_args(int argc, char *argv[]);
20
21   int vbemode;
22   bool do_dummy;
23   char *config_str;
24 };
25
26
27 class Phys_fb : public L4Re::Util::Video::Goos_svr,
28                 public L4Re::Util::Dataspace_svr,
29                 public L4::Server_object
30 {
31 public:
32   Phys_fb() : _vidmem_start(0), _map_done(0) {}
33
34   ~Phys_fb() throw() {}
35   virtual bool setup_drv(Prog_args *pa) = 0;
36   void setup_ds(char const *name);
37   int dispatch(l4_umword_t obj, L4::Ipc_iostream &ios);
38   int map_hook(l4_addr_t offs, unsigned long flags,
39                l4_addr_t min, l4_addr_t max);
40
41   bool running() { return _vidmem_start; };
42
43 protected:
44   l4_addr_t _vidmem_start;
45   l4_addr_t _vidmem_end;
46   l4_addr_t _vidmem_size;
47
48 private:
49   bool _map_done;
50 };
51
52
53 class Vesa_fb : public Phys_fb
54 {
55 public:
56   bool setup_drv(Prog_args *pa);
57 };
58
59
60 class Lcd_drv_fb : public Phys_fb
61 {
62 public:
63   bool setup_drv(Prog_args *pa);
64 };
65
66 class Dummy_fb : public Phys_fb
67 {
68 public:
69   bool setup_drv(Prog_args *pa);
70 };