92047c289ca0e1062e9408b81c18481c46a76d08
[libpicofe.git] / pandora / pandora.c
1 #include <stdio.h>\r
2 #include <stdlib.h>\r
3 #include <stdarg.h>\r
4 #include <string.h>\r
5 #include <unistd.h>\r
6 #include <sys/mman.h>\r
7 #include <sys/types.h>\r
8 #include <sys/stat.h>\r
9 #include <linux/fb.h>\r
10 #include <fcntl.h>\r
11 #include <errno.h>\r
12 \r
13 #include "../linux/sndout_oss.h"\r
14 #include "../common/arm_linux.h"\r
15 #include "../common/emu.h"\r
16 \r
17 static int fbdev = -1;\r
18 \r
19 #define SCREEN_MAP_SIZE (800*480*2)\r
20 static void *screen = MAP_FAILED;\r
21 \r
22 void plat_early_init(void)\r
23 {\r
24 }\r
25 \r
26 void plat_init(void)\r
27 {\r
28         printf("entering init()\n"); fflush(stdout);\r
29 \r
30         fbdev = open("/dev/fb0", O_RDWR);\r
31         if (fbdev == -1)\r
32         {\r
33                 perror("open(\"/dev/fb0\")");\r
34                 exit(1);\r
35         }\r
36 \r
37         screen = mmap(0, SCREEN_MAP_SIZE, PROT_WRITE|PROT_READ, MAP_SHARED, fbdev, 0);\r
38         if (screen == MAP_FAILED)\r
39         {\r
40                 perror("mmap(fbptr)");\r
41                 exit(1);\r
42         }\r
43         printf("fbptr %p\n", screen);\r
44         g_screen_ptr = screen;\r
45 \r
46         // snd\r
47         sndout_oss_init();\r
48 \r
49         printf("exitting init()\n"); fflush(stdout);\r
50 }\r
51 \r
52 void plat_finish(void)\r
53 {\r
54         if (screen != MAP_FAILED)\r
55                 munmap(screen, SCREEN_MAP_SIZE);\r
56         if (fbdev >= 0)\r
57                 close(fbdev);\r
58 \r
59         sndout_oss_exit();\r
60 \r
61         printf("all done");\r
62 }\r
63 \r
64 /* lprintf */\r
65 void lprintf(const char *fmt, ...)\r
66 {\r
67         va_list vl;\r
68 \r
69         va_start(vl, fmt);\r
70         vprintf(fmt, vl);\r
71         va_end(vl);\r
72 }\r
73 \r