summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-01-09 03:03:23 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2015-01-09 03:03:23 +0100
commit35ad5c91361681246105801d42b5e97c59d0d28c (patch)
treef073054e8ce231cd673131d12b2a0492e02e206c
parentce8db466ba402ddb877495f66a7bddf156569fdf (diff)
downloadplan9front-35ad5c91361681246105801d42b5e97c59d0d28c.tar.xz
igfx: aaaand the kernel part :(
-rw-r--r--sys/src/9/pc/vgaigfx.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/sys/src/9/pc/vgaigfx.c b/sys/src/9/pc/vgaigfx.c
new file mode 100644
index 000000000..a8184041a
--- /dev/null
+++ b/sys/src/9/pc/vgaigfx.c
@@ -0,0 +1,38 @@
+#include "u.h"
+#include "../port/lib.h"
+#include "mem.h"
+#include "dat.h"
+#include "fns.h"
+#include "io.h"
+#include "../port/error.h"
+
+#define Image IMAGE
+#include <draw.h>
+#include <memdraw.h>
+#include <cursor.h>
+#include "screen.h"
+
+static void
+igfxenable(VGAscr* scr)
+{
+ Pcidev *p;
+
+ if(scr->mmio != nil)
+ return;
+ p = scr->pci;
+ if(p == nil)
+ return;
+ scr->mmio = vmap(p->mem[0].bar&~0x0F, p->mem[0].size);
+ if(scr->mmio == nil)
+ return;
+ addvgaseg("igfxmmio", p->mem[0].bar&~0x0F, p->mem[1].size);
+ if(scr->paddr == 0)
+ vgalinearpci(scr);
+ if(scr->apsize)
+ addvgaseg("igfxscreen", scr->paddr, scr->apsize);
+}
+
+VGAdev vgaigfxdev = {
+ "igfx",
+ igfxenable,
+};