fix FAKE_IN_GP2X

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@711 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2009-07-23 21:01:39 +00:00
parent f2cf84723f
commit c18c15aed7
2 changed files with 51 additions and 45 deletions

View file

@ -36,50 +36,9 @@ static const char * const in_gp2x_keys[IN_GP2X_NBUTTONS] = {
[BTN_PUSH] = "PUSH"
};
static int in_gp2x_get_mmsp2_bits(void);
static int in_gp2x_get_wiz_bits(void);
static void in_gp2x_probe(void)
{
gp2x_soc_t soc;
soc = soc_detect();
switch (soc)
{
case SOCID_MMSP2:
in_gp2x_get_bits = in_gp2x_get_mmsp2_bits;
break;
case SOCID_POLLUX:
gpiodev = open("/dev/GPIO", O_RDONLY);
if (gpiodev < 0) {
perror("in_gp2x: couldn't open /dev/GPIO");
return;
}
in_gp2x_get_bits = in_gp2x_get_wiz_bits;
break;
default:
return;
}
in_register(IN_PREFIX "GP2X pad", IN_DRVID_GP2X, -1, (void *)1, 1);
}
static void in_gp2x_free(void *drv_data)
{
if (gpiodev >= 0) {
close(gpiodev);
gpiodev = -1;
}
}
static int in_gp2x_get_bind_count(void)
{
return IN_GP2X_NBUTTONS;
}
static int in_gp2x_get_mmsp2_bits(void)
{
#ifndef FAKE_IN_GP2X
extern volatile unsigned short *gp2x_memregs;
int value;
value = gp2x_memregs[0x1198>>1] & 0xff; // GPIO M
@ -92,10 +51,6 @@ static int in_gp2x_get_mmsp2_bits(void)
value = ~value & 0x08c0ff55;
return value;
#else
extern int current_keys;
return current_keys;
#endif
}
static int in_gp2x_get_wiz_bits(void)
@ -124,6 +79,56 @@ static int in_gp2x_get_wiz_bits(void)
return value;
}
#ifdef FAKE_IN_GP2X
static int in_gp2x_get_fake_bits(void)
{
extern int current_keys;
return current_keys;
}
#endif
static void in_gp2x_probe(void)
{
gp2x_soc_t soc;
soc = soc_detect();
switch (soc)
{
case SOCID_MMSP2:
in_gp2x_get_bits = in_gp2x_get_mmsp2_bits;
break;
case SOCID_POLLUX:
gpiodev = open("/dev/GPIO", O_RDONLY);
if (gpiodev < 0) {
perror("in_gp2x: couldn't open /dev/GPIO");
return;
}
in_gp2x_get_bits = in_gp2x_get_wiz_bits;
break;
default:
#ifdef FAKE_IN_GP2X
in_gp2x_get_bits = in_gp2x_get_fake_bits;
break;
#endif
return;
}
in_register(IN_PREFIX "GP2X pad", IN_DRVID_GP2X, -1, (void *)1, 1);
}
static void in_gp2x_free(void *drv_data)
{
if (gpiodev >= 0) {
close(gpiodev);
gpiodev = -1;
}
}
static int in_gp2x_get_bind_count(void)
{
return IN_GP2X_NBUTTONS;
}
/* returns bitfield of binds of pressed buttons */
int in_gp2x_update(void *drv_data, int *binds)
{

View file

@ -30,6 +30,7 @@ static int scr_changed = 0, scr_w = SCREEN_WIDTH, scr_h = SCREEN_HEIGHT;
int mix_32_to_16l_level;
int crashed_940 = 0;
int default_cpu_clock = 123;
void *gp2x_memregs = NULL;
/* gtk */
struct gtk_global_struct