X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=gp2x%2Fplat.c;fp=gp2x%2Fplat.c;h=4ae956c4457331a89d9ee68fd10605b7e69e5d53;hb=fa5e045bdc817112c1abf19e65e2d3481d51c48a;hp=01606349fccd2d1f984b6e0249c58b34624f442e;hpb=d572cbad9886a04f8c51edb825dc6aaec9b02e23;p=libpicofe.git diff --git a/gp2x/plat.c b/gp2x/plat.c index 0160634..4ae956c 100644 --- a/gp2x/plat.c +++ b/gp2x/plat.c @@ -3,8 +3,9 @@ #include #include -#include "gp2x.h" +#include "plat_gp2x.h" #include "soc.h" +#include "warm.h" #include "../common/plat.h" #include "../common/readpng.h" #include "../common/menu.h" @@ -12,6 +13,7 @@ #include "../linux/sndout_oss.h" /* GP2X local */ +int default_cpu_clock; void *gp2x_screens[4]; void gp2x_video_changemode(int bpp) @@ -44,6 +46,22 @@ void gp2x_memset_all_buffers(int offset, int byte, int len) memset((char *)gp2x_screens[3] + offset, byte, len); } +void gp2x_make_fb_bufferable(int yes) +{ + int ret = 0; + + yes = yes ? 1 : 0; + ret |= warm_change_cb_range(WCB_B_BIT, yes, gp2x_screens[0], 320*240*2); + ret |= warm_change_cb_range(WCB_B_BIT, yes, gp2x_screens[1], 320*240*2); + ret |= warm_change_cb_range(WCB_B_BIT, yes, gp2x_screens[2], 320*240*2); + ret |= warm_change_cb_range(WCB_B_BIT, yes, gp2x_screens[3], 320*240*2); + + if (ret) + fprintf(stderr, "could not make fb buferable.\n"); + else + printf("made fb buferable.\n"); +} + /* common */ char cpu_clk_name[16] = "GP2X CPU clocks"; @@ -92,16 +110,20 @@ void plat_init(void) { case SOCID_MMSP2: mmsp2_init(); + default_cpu_clock = 200; break; case SOCID_POLLUX: pollux_init(); strcpy(cpu_clk_name, "Wiz CPU clock"); + default_cpu_clock = 533; break; default: fprintf(stderr, "could not recognize SoC, bailing out.\n"); exit(1); } + warm_init(); + gp2x_memset_all_buffers(0, 0, 320*240*2); // snd @@ -110,7 +132,12 @@ void plat_init(void) void plat_finish(void) { - switch (gp2x_soc) + gp2x_soc_t soc; + + warm_finish(); + + soc = soc_detect(); + switch (soc) { case SOCID_MMSP2: mmsp2_finish();