#ifdef HAVE_XORG_CONFIG_H #include #endif #include #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); }