#include <unistd.h>
#include "soc.h"
-#include "../common/emu.h"
-gp2x_soc_t gp2x_soc = -1;
+void (*gp2x_video_flip)(void);
+void (*gp2x_video_flip2)(void);
+void (*gp2x_video_changemode_ll)(int bpp);
+void (*gp2x_video_setpalette)(int *pal, int len);
+void (*gp2x_video_RGB_setscaling)(int ln_offs, int W, int H);
+void (*gp2x_video_wait_vsync)(void);
+
+void (*gp2x_set_cpuclk)(unsigned int mhz);
+
+void (*set_lcd_custom_rate)(int is_pal);
+void (*unset_lcd_custom_rate)(void);
+void (*set_lcd_gamma)(int g100, int A_SNs_curve);
+
+void (*set_ram_timings)(void);
+void (*unset_ram_timings)(void);
+int (*gp2x_read_battery)(void);
+
+unsigned int (*gp2x_get_ticks_ms)(void);
+unsigned int (*gp2x_get_ticks_us)(void);
+
gp2x_soc_t soc_detect(void)
{
volatile unsigned short *memregs;
volatile unsigned int *memregl;
+ static gp2x_soc_t ret = -2;
int pollux_chipname[0x30/4 + 1];
char *pollux_chipname_c = (char *)pollux_chipname;
- gp2x_soc_t ret = -1;
int memdev;
int i;
+ if ((int)ret != -2)
+ /* already detected */
+ return ret;
+
memdev = open("/dev/mem", O_RDONLY);
if (memdev == -1)
{
perror("open(/dev/mem)");
+ ret = -1;
return -1;
}
{
perror("mmap(memregs)");
close(memdev);
+ ret = -1;
return -1;
}
memregl = (volatile void *)memregs;
out:
munmap((void *)memregs, 0x20000);
close(memdev);
- gp2x_soc = ret;
return ret;
}