xserver-multidpi/hw/xfree86/os-support/linux/lnx_axp.c
Matt Turner fb95090730 Use glibc's in/out routines
Let's let glibc do the right thing for dense/sparse selection.

The _alpha_iobase code has been unused since the switch to libpciaccess. It
really should have been killed by fba700f1f6.

Signed-off-by: Matt Turner <mattst88@gmail.com>
Tested-by: Michael Cree <mcree@orcon.net.nz>
Signed-off-by: Keith Packard <keithp@keithp.com>
2009-11-16 20:17:29 -08:00

102 lines
2.2 KiB
C

#ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h>
#endif
#include <stdio.h>
#include "xf86.h"
#include "shared/xf86Axp.h"
axpDevice lnxGetAXP(void);
typedef struct
{ char* sysName;
char* sysVari;
char* cpu;
axpDevice sys; }
AXP;
static AXP axpList[] = {
{ "Tsunami", NULL, NULL, TSUNAMI },
{ "Eiger", NULL, NULL, TSUNAMI },
{"Noname", NULL, NULL, LCA },
{ "AlphaBook1", NULL, NULL, LCA },
{"EB66", NULL, NULL, LCA},
{"EB64+",NULL,NULL, APECS},
{"Noritake",NULL,"EV5",CIA},
{"Noritake",NULL,"EV56",CIA},
{"Noritake",NULL,NULL,APECS},
{"XL",NULL,NULL,APECS},
{"Avanti",NULL,NULL,APECS},
{"Mikasa",NULL,"EV5",CIA},
{"Mikasa",NULL,"EV56",CIA},
{"Mikasa",NULL,NULL,APECS},
{"EB164","EB164",NULL,CIA},
{"EB164","PC164", NULL,CIA},
{"EB164","LX164",NULL, PYXIS},
{"EB164","SX164",NULL, PYXIS},
{"EB164","RX164",NULL, POLARIS},
{"Alcor",NULL,NULL,CIA},
{"Takara",NULL,NULL,CIA},
{"Sable",NULL, "EV5",T2_GAMMA},
{"Sable",NULL,"EV56",T2_GAMMA},
{"Sable",NULL,NULL,T2},
{"Rawhide",NULL,NULL,MCPCIA},
{"Jensen",NULL,NULL,JENSEN},
{"Miata",NULL,NULL,PYXIS_CIA},
{"Ruffian",NULL,NULL,PYXIS_CIA},
{"Nautilus",NULL,NULL,IRONGATE},
{NULL,NULL,NULL,SYS_NONE}
};
axpDevice
lnxGetAXP(void)
{
FILE *file;
int count = 0;
char res[256];
char cpu[255];
char systype[255];
char sysvari[255];
if (!(file = fopen("/proc/cpuinfo","r")))
return SYS_NONE;
do {
if (!fgets(res,0xff,file)) return SYS_NONE;
switch (count) {
case 1:
sscanf(res, "cpu model : %s",cpu);
DebugF("CPU %s\n",cpu);
break;
case 5:
sscanf(res, "system type : %s",systype);
DebugF("system type : %s\n",systype);
break;
case 6:
sscanf(res, "system variation : %s",sysvari);
DebugF("system variation: %s\n",sysvari);
break;
}
count++;
} while (count < 8);
fclose(file);
count = 0;
do {
if (!axpList[count].sysName || !strcmp(axpList[count].sysName,systype)) {
if (axpList[count].sysVari && strcmp(axpList[count].sysVari,sysvari)) {
count++;
continue;
};
if (axpList[count].cpu && strcmp(axpList[count].cpu,cpu)) {
count++;
continue;
}
return axpList[count].sys;
}
count++;
} while (1);
}