On 30.06.2010 14:51, Michael Karcher wrote: > Am Mittwoch, den 30.06.2010, 14:35 +0200 schrieb Carl-Daniel Hailfinger: > >> This patch is the first step towards libsuperiodetect, and more will >> have to follow. >> > I don't like the millions of ifdefs here. Would it be possible to > approach it like the B() macro for the board URLs in flashrom instead? >
Sure. It doesn't look pretty, though. And it confuses vim syntax highlighting to no end. An alternative (which might look cleaner or not) would be to wrap the whole struct superio_registers in REGDEF() instead of wrapping only the LDN part. Comments welcome. Signed-off-by: Carl-Daniel Hailfinger <[email protected]> Index: superiotool_libsuperiodetect/via.c =================================================================== --- superiotool_libsuperiodetect/via.c (Revision 5651) +++ superiotool_libsuperiodetect/via.c (Arbeitskopie) @@ -24,8 +24,9 @@ #define DEVICE_REV_VT82C686_REG 0xe1 static const struct superio_registers reg_table[] = { - {0x3c, "VT82C686A/VT82C686B", { - {EOT}}}, + {0x3c, "VT82C686A/VT82C686B", + LDNDEF({ + {EOT}})}, {EOT} }; Index: superiotool_libsuperiodetect/fintek.c =================================================================== --- superiotool_libsuperiodetect/fintek.c (Revision 5651) +++ superiotool_libsuperiodetect/fintek.c (Arbeitskopie) @@ -30,8 +30,9 @@ #define FINTEK_VENDOR_ID 0x3419 static const struct superio_registers reg_table[] = { - {0x0106, "F71862FG / F71863FG", { /* Same ID? Datasheet typo? */ + {0x0106, "F71862FG / F71863FG", /* Same ID? Datasheet typo? */ /* We assume reserved bits are read as 0. */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a, 0x2b,0x2c,0x2d,EOT}, @@ -75,11 +76,13 @@ {0xa, "PME, ACPI", {0x30,0xf0,0xf1,0xf4,0xf5,0xf7,EOT}, {0x00,0x00,NANA,0x06,0x1c,0x01,EOT}}, - {EOT}}}, - {0x4103, "F71872F/FG / F71806F/FG", { /* Same ID? Datasheet typo? */ - {EOT}}}, - {0x4105, "F71882FG/F71883FG", { /* Same ID? Datasheet typo? */ + {EOT}})}, + {0x4103, "F71872F/FG / F71806F/FG", /* Same ID? Datasheet typo? */ + LDNDEF({ + {EOT}})}, + {0x4105, "F71882FG/F71883FG", /* Same ID? Datasheet typo? */ /* We assume reserved bits are read as 0. */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a, 0x2b,0x2c,0x2d,EOT}, @@ -121,9 +124,10 @@ {0xa, "PME, ACPI", {0x30,0xf0,0xf1,0xf4,0xf5,EOT}, {0x00,0x00,0x01,0x06,0x1c,EOT}}, - {EOT}}}, - {0x0604, "F71805F/FG", { + {EOT}})}, + {0x0604, "F71805F/FG", /* We assume reserved bits are read as 0. */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x23,0x24,0x25,0x26,0x27,0x28,0x29,EOT}, {0x04,0x06,0x19,0x34,0x00,0x00,0x3f,0x08,0x00,EOT}}, @@ -150,9 +154,10 @@ {0xa, "PME", {0x30,0xf0,0xf1,EOT}, {0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0x0581, "F8000", { /* Fintek/ASUS F8000 */ - {EOT}}}, + {EOT}})}, + {0x0581, "F8000", /* Fintek/ASUS F8000 */ + LDNDEF({ + {EOT}})}, {EOT} }; @@ -181,7 +186,9 @@ get_superio_name(reg_table, did), vid, did, port); chip_found = 1; +#ifndef LIBSUPERIODETECT dump_superio("Fintek", reg_table, port, did, LDN_SEL); +#endif /* ! LIBSUPERIODETECT */ exit_conf_mode_winbond_fintek_ite_8787(port); } Index: superiotool_libsuperiodetect/winbond.c =================================================================== --- superiotool_libsuperiodetect/winbond.c (Revision 5651) +++ superiotool_libsuperiodetect/winbond.c (Arbeitskopie) @@ -37,9 +37,11 @@ */ static const struct superio_registers reg_table[] = { /* ID and rev[3..0] */ - {0x527, "W83977CTF", { /* TODO: Not yet in sensors-detect */ - {EOT}}}, - {0x52f, "W83977EF/EG", { + {0x527, "W83977CTF", /* TODO: Not yet in sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x52f, "W83977EF/EG", + LDNDEF({ {NOLDN, NULL, {0x02,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x2a, 0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -78,10 +80,12 @@ 0xf0,0xf1,0xf3,0xf4,0xf6,0xf7,0xf9,0xfe,0xff,EOT}, {0x00,0x00,0x00,0x00,MISC,MISC,MISC,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,RSVD,RSVD,EOT}}, - {EOT}}}, - {0x595, "W83627SF", { /* TODO: Not yet in sensors-detect */ - {EOT}}}, - {0x601, "W83697HF/F/HG", { /* No G version? */ + {EOT}})}, + {0x595, "W83627SF", /* TODO: Not yet in sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x601, "W83697HF/F/HG", /* No G version? */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29, 0x2a,EOT}, @@ -126,12 +130,15 @@ {0xb, "Hardware monitor", {0x30,0x60,0x61,0x70,EOT}, {0x00,0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0x610, "W83L517D/D-F", { - {EOT}}}, - {0x708, "W83637HF/HG", { - {EOT}}}, - {0x828, "W83627THF/THG", { /* We assume rev is bits 3..0 of 0x21. */ + {EOT}})}, + {0x610, "W83L517D/D-F", + LDNDEF({ + {EOT}})}, + {0x708, "W83637HF/HG", + LDNDEF({ + {EOT}})}, + {0x828, "W83627THF/THG", /* We assume rev is bits 3..0 of 0x21. */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29,0x2a, 0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -175,12 +182,14 @@ {0xb, "Hardware monitor", {0x30,0x60,0x61,0x70,EOT}, {0x00,0x00,0x00,0x00,EOT}}, - {EOT}}}, + {EOT}})}, #if 0 - {0x85x, "W83687THF", { /* TODO: sensors-detect: 0x85 */ - {EOT}}}, + {0x85x, "W83687THF", /* TODO: sensors-detect: 0x85 */ + LDNDEF({ + {EOT}})}, #endif - {0xa02, "W83627DHG", { + {0xa02, "W83627DHG", + LDNDEF({ {NOLDN, NULL, {0x02,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -232,24 +241,29 @@ EOT}, {0x00,0x48,0x48,0x48,0x48,0x00,0x00,0x48,0x00,0x00, EOT}}, - {EOT}}}, - {0xa23, "W83627UHG", {/* TODO: Not yet in sensors-detect */ - {EOT}}}, - {0xa51, "W83667HG", { + {EOT}})}, + {0xa23, "W83627UHG", /* TODO: Not yet in sensors-detect */ + LDNDEF({ + {EOT}})}, + {0xa51, "W83667HG", /* See also: http://lists.lm-sensors.org/pipermail/lm-sensors/2008-July/023683.html */ - {EOT}}}, + LDNDEF({ + {EOT}})}, /* ID and rev */ - {0x9771, "W83977F-A/G-A/AF-A/AG-A", { - {EOT}}}, - {0x9777, "W83977AF", { + {0x9771, "W83977F-A/G-A/AF-A/AG-A", + LDNDEF({ + {EOT}})}, + {0x9777, "W83977AF", /* * W83977AF as found on the Advantech PCM-5820. We weren't able * to find a datasheet (so far) which lists the 0x77 revision, * but the hardware is there in the wild, so detect it... */ - {EOT}}}, - {0x9773, "W83977TF", { + LDNDEF({ + {EOT}})}, + {0x9773, "W83977TF", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x2a,0x2b, 0x2c,0x2d,0x2e,0x2f,EOT}, @@ -294,12 +308,14 @@ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, NANA,MISC,RSVD,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,RSVD,RSVD,EOT}}, - {EOT}}}, - {0x9774, "W83977ATF", { - {EOT}}}, + {EOT}})}, + {0x9774, "W83977ATF", + LDNDEF({ + {EOT}})}, /* ID only */ - {0x52, "W83627HF/F/HG/G", { + {0x52, "W83627HF/F/HG/G", + LDNDEF({ {NOLDN, NULL, {0x02,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29, 0x2a,0x2b,0x2c,0x2e,0x2f,EOT}, @@ -342,13 +358,14 @@ {0xb, "Hardware monitor", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x00,0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0x68, "W83697SF/UF/UG", { + {EOT}})}, + {0x68, "W83697SF/UF/UG", /* ID: 0x68 (for W83697SF/UF/UG) * Rev: 0x1X (for W83697SF) * 0x0X (for W83697SF) -- sic! * 0x1X (for W83697UF/UG) */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x28,0x29,0x2a, 0x2b,0x2c,EOT}, @@ -405,8 +422,8 @@ {0xf, "GPIO 8", {0x30,0x60,0x61,0xf0,0xf1,0xf2,EOT}, {0x00,0x00,0x00,0xff,0x00,0x00,EOT}}, - {EOT}}}, - {0x88, "W83627EHF/EF/EHG/EG", { + {EOT}})}, + {0x88, "W83627EHF/EF/EHG/EG", /* * As per datasheet the ID should be 0x886? here. * Not mentioned in the datasheet, but sensors-detect says @@ -414,6 +431,7 @@ * (W83627EHF) has an ID of 0x8854 (verified on hardware). * So we now assume all 0x88?? IDs to mean W83627EHF/EF/EHG/EG. */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -460,12 +478,14 @@ {0xb, "Hardware monitor", {0x30,0x60,0x61,0x70,0xf0,0xf1,EOT}, {0x00,0x00,0x00,0x00,0xc1,0x00,EOT}}, - {EOT}}}, + {EOT}})}, /* ID[3..0] */ - {0xa, "W83877F", { - {EOT}}}, - {0xb, "W83877AF", { + {0xa, "W83877F", + LDNDEF({ + {EOT}})}, + {0xb, "W83877AF", + LDNDEF({ {NOLDN, NULL, {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13, @@ -475,14 +495,17 @@ 0x1f,0x0c,0x28,0xa3,RSVD,RSVD,0x00,0x00,0x00,0x00, 0x00,0x00,0x0e,0x00,MISC,MISC,MISC,MISC,MISC,MISC, MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,MISC,EOT}}, - {EOT}}}, - {0xc, "W83877TF", { - {EOT}}}, - {0xd, "W83877ATF/ATG", { - {EOT}}}, + {EOT}})}, + {0xc, "W83877TF", + LDNDEF({ + {EOT}})}, + {0xd, "W83877ATF/ATG", + LDNDEF({ + {EOT}})}, {EOT} }; +#ifndef LIBSUPERIODETECT static const struct superio_registers hwm_table[] = { {0x828, "W83627THF/THG", { {NOLDN, NULL, @@ -531,6 +554,7 @@ {EOT}}}, {EOT} }; +#endif /* ! LIBSUPERIODETECT */ static void enter_conf_mode_winbond_88(uint16_t port) { @@ -550,7 +574,10 @@ static void probe_idregs_winbond_helper(const char *init, uint16_t port) { - uint16_t id, hwmport; + uint16_t id; +#ifndef LIBSUPERIODETECT + uint16_t hwmport; +#endif /* LIBSUPERIODETECT */ uint8_t devid, rev, olddevid; probing_for("Winbond", init, port); @@ -586,6 +613,7 @@ get_superio_name(reg_table, id), devid, rev, port); chip_found = 1; +#ifndef LIBSUPERIODETECT dump_superio("Winbond", reg_table, port, id, LDN_SEL); if (extra_dump) { @@ -607,6 +635,7 @@ dump_superio("Winbond-HWM", hwm_table, hwmport, id, WINBOND_HWM_SEL); } +#endif /* ! LIBSUPERIODETECT */ } void probe_idregs_winbond(uint16_t port) @@ -631,5 +660,7 @@ void print_winbond_chips(void) { print_vendor_chips("Winbond", reg_table); +#ifndef LIBSUPERIODETECT print_vendor_chips("Winbond-HWM", hwm_table); +#endif /* ! LIBSUPERIODETECT */ } Index: superiotool_libsuperiodetect/ite.c =================================================================== --- superiotool_libsuperiodetect/ite.c (Revision 5651) +++ superiotool_libsuperiodetect/ite.c (Arbeitskopie) @@ -27,9 +27,11 @@ #define ISA_PNP_ADDR 0x279 static const struct superio_registers reg_table[] = { - {0x8228, "IT8228E", { - {EOT}}}, - {0x8502, "IT8502E/TE/G", { + {0x8228, "IT8228E", + LDNDEF({ + {EOT}})}, + {0x8502, "IT8502E/TE/G", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29, 0x2A,0x2B,0x2C,0x2D,0x2E,EOT}, @@ -67,10 +69,12 @@ {0x17, "Power Channel 3", {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT}, {0x00,0x00,0x6a,0x00,0x6e,0x01,0x01,EOT}}, - {EOT}}}, - {0x8510, "IT8510E/TE/G", { - {EOT}}}, - {0x8511, "IT8511E/TE/G", { + {EOT}})}, + {0x8510, "IT8510E/TE/G", + LDNDEF({ + {EOT}})}, + {0x8511, "IT8511E/TE/G", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29, 0x2A,0x2B,0x2C,0x2D,0x2E,EOT}, @@ -101,8 +105,9 @@ {0x12, "Power Channel 2", {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT}, {0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}}, - {EOT}}}, - {0x8512, "IT8512E/F/G", { + {EOT}})}, + {0x8512, "IT8512E/F/G", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29, 0x2A,0x2B,0x2C,0x2D,0x2E,EOT}, @@ -133,10 +138,12 @@ {0x12, "Power Channel 2", {0x30,0x60,0x61,0x62,0x63,0x70,0x71,EOT}, {0x00,0x00,0x68,0x00,0x6c,0x01,0x03,EOT}}, - {EOT}}}, - {0x8513, "IT8513E/F/G", { - {EOT}}}, - {0x8661, "IT8661F/IT8770F", { + {EOT}})}, + {0x8513, "IT8513E/F/G", + LDNDEF({ + {EOT}})}, + {0x8661, "IT8661F/IT8770F", + LDNDEF({ {NOLDN, NULL, {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x20,0x21,0x22, 0x23,0x24,EOT}, @@ -168,10 +175,12 @@ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0x8673, "IT8673F", { - {EOT}}}, - {0x8681, "IT8671F/IT8687R", { + {EOT}})}, + {0x8673, "IT8673F", + LDNDEF({ + {EOT}})}, + {0x8681, "IT8671F/IT8687R", + LDNDEF({ {NOLDN, NULL, {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x20,0x21,0x22, 0x23,0x24,0x25,0x26,0x2e,0x2f,EOT}, @@ -211,8 +220,9 @@ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0x8701, "IT8703F", { + {EOT}})}, + {0x8701, "IT8703F", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x23,0x24,0x26,0x29,0x2a,0x2b,EOT}, {0x87,0x00,0x00,0x80,0x00,0x00,0x7c,0xc0,EOT}}, @@ -253,10 +263,12 @@ {0xc, "GPIO set 5, 6 and 7", {0x30,0x60,0x61,0xf0,0xf3,0xf6,EOT}, {0x00,0x03,0x70,0x00,0xff,0xff,EOT}}, - {EOT}}}, - {0x8702, "IT8702F", { - {EOT}}}, - {0x8705, "IT8705F/AF / IT8700F", { + {EOT}})}, + {0x8702, "IT8702F", + LDNDEF({ + {EOT}})}, + {0x8705, "IT8705F/AF / IT8700F", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,EOT}, {0x87,0x05,0x00,0x00,NANA,EOT}}, @@ -303,11 +315,13 @@ {0x8, "MIDI port", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x03,0x00,0x0a,0x00,EOT}}, - {EOT}}}, - {0x8706, "IT8706R", { /* TODO: Not yet in sensors-detect */ + {EOT}})}, + {0x8706, "IT8706R", /* TODO: Not yet in sensors-detect */ /* This is a "Special General Purpose I/O chip". */ - {EOT}}}, - {0x8708, "IT8708F", { + LDNDEF({ + {EOT}})}, + {0x8708, "IT8708F", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29, 0x2a,0x2e,0x2f,EOT}, @@ -361,12 +375,15 @@ {0xa, "MIDI port", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x03,0x00,0x0a,0x00,EOT}}, - {EOT}}}, - {0x8710, "IT8710F", { /* TODO: Not yet in sensors-detect */ - {EOT}}}, - {0x8711, "IT8711F", { /* 0x8711 is a guess, not found in datasheet. */ - {EOT}}}, - {0x8712, "IT8712F", { + {EOT}})}, + {0x8710, "IT8710F", /* TODO: Not yet in sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x8711, "IT8711F", /* 0x8711 is a guess, not found in datasheet. */ + LDNDEF({ + {EOT}})}, + {0x8712, "IT8712F", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x2b,EOT}, {0x87,0x12,0x08,0x00,0x00,0x00,EOT}}, @@ -416,8 +433,9 @@ {0xa, "Consumer IR", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x03,0x10,0x0b,0x00,EOT}}, - {EOT}}}, - {0x8716, "IT8716F", { + {EOT}})}, + {0x8716, "IT8716F", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x2b,EOT}, {0x87,0x16,0x01,0x00,0x00,0x00,EOT}}, @@ -466,8 +484,9 @@ {0xa, "Consumer IR", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x03,0x10,0x0b,0x00,EOT}}, - {EOT}}}, - {0x8718, "IT8718F", { + {EOT}})}, + {0x8718, "IT8718F", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x2b,EOT}, {0x87,0x18,0x01,0x00,0x00,0x00,EOT}}, @@ -514,13 +533,16 @@ {0xa, "Consumer IR", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x03,0x10,0x0b,0x00,EOT}}, - {EOT}}}, - {0x8720, "IT8720F", { /* From sensors-detect */ - {EOT}}}, - {0x8722, "IT8722F", { - {EOT}}}, - {0x8726, "IT8726F", { + {EOT}})}, + {0x8720, "IT8720F", /* From sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x8722, "IT8722F", + LDNDEF({ + {EOT}})}, + {0x8726, "IT8726F", /* Datasheet wrongly says that the ID is 0x8716. */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x2b,EOT}, {0x87,0x26,0x01,0x00,MISC,0x00,EOT}}, @@ -571,14 +593,17 @@ {0xa, "Consumer IR", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x03,0x10,0x0b,0x00,EOT}}, - {EOT}}}, - {0x8761, "IT8761E", { - {EOT}}}, - {0x8780, "IT8780F", { - {EOT}}}, + {EOT}})}, + {0x8761, "IT8761E", + LDNDEF({ + {EOT}})}, + {0x8780, "IT8780F", + LDNDEF({ + {EOT}})}, {EOT} }; +#ifndef LIBSUPERIODETECT static const struct superio_registers ec_table[] = { {0x8716, "IT8716F", { {NOLDN, NULL, @@ -636,6 +661,7 @@ {EOT}}}, {EOT} }; +#endif /* ! LIBSUPERIODETECT */ /* Works for: IT8661F/IT8770F */ static const uint8_t initkey_it8661f[][4] = { @@ -712,7 +738,10 @@ static void probe_idregs_ite_helper(const char *init, uint16_t port) { - uint16_t id, chipver, ecport; + uint16_t id, chipver; +#ifndef LIBSUPERIODETECT + uint16_t ecport; +#endif /* ! LIBSUPERIODETECT */ probing_for("ITE", init, port); @@ -730,6 +759,7 @@ get_superio_name(reg_table, id), id, chipver, port); chip_found = 1; +#ifndef LIBSUPERIODETECT dump_superio("ITE", reg_table, port, id, LDN_SEL); if (extra_dump) { @@ -745,6 +775,7 @@ printf("Environment controller (0x%04x)\n", ecport); dump_superio("ITE-EC", ec_table, ecport, id, LDN_SEL); } +#endif /* ! LIBSUPERIODETECT */ } void probe_idregs_ite(uint16_t port) @@ -783,5 +814,7 @@ void print_ite_chips(void) { print_vendor_chips("ITE", reg_table); +#ifndef LIBSUPERIODETECT print_vendor_chips("ITE-EC", ec_table); +#endif /* ! LIBSUPERIODETECT */ } Index: superiotool_libsuperiodetect/nsc.c =================================================================== --- superiotool_libsuperiodetect/nsc.c (Revision 5651) +++ superiotool_libsuperiodetect/nsc.c (Arbeitskopie) @@ -25,7 +25,8 @@ #define CHIP_REV_REG 0x27 /* Super I/O revision ID (SRID) */ static const struct superio_registers reg_table[] = { - {0xcf, "PC97307", { + {0xcf, "PC97307", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x27,EOT}, {0xcf,MISC,MISC,0x00,0x00,NANA,EOT}}, @@ -60,8 +61,9 @@ {0x8, "Power management", {0x30,0x31,0x60,0x61,0x74,0x75,EOT}, {0x00,0x00,0x00,0x00,0x04,0x04,EOT}}, - {EOT}}}, - {0xd0, "PC87317", { + {EOT}})}, + {0xd0, "PC87317", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,EOT}, {0xd0,MISC,MISC,0x00,0x00,0x00,EOT}}, @@ -96,8 +98,9 @@ {0x8, "Power management", {0x30,0x31,0x60,0x61,0x74,0x75,EOT}, {0x00,0x00,0x00,0x00,0x04,0x04,EOT}}, - {EOT}}}, - {0xdf, "PC97317", { + {EOT}})}, + {0xdf, "PC97317", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x27,EOT}, {0xdf,MISC,MISC,0x00,0x00,0x00,NANA,EOT}}, @@ -132,8 +135,9 @@ {0x8, "Power management", {0x30,0x31,0x60,0x61,0x74,0x75,EOT}, {0x00,0x00,0x00,0x00,0x04,0x04,EOT}}, - {EOT}}}, - {0xe0, "PC87309", { + {EOT}})}, + {0xe0, "PC87309", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x27,0x2e,EOT}, {0xe0,MISC,0x00,NANA,RSVD,EOT}}, @@ -162,8 +166,9 @@ 0xf0,EOT}, {0x01,0x00,0x00,0x60,0x00,0x64,0x01,0x02,0x04,0x04, 0x40,EOT}}, - {EOT}}}, - {0xe1, "PC87360", { + {EOT}})}, + {0xe1, "PC87360", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x2a, 0x2b,0x2c,0x2d,0x2e,EOT}, @@ -206,8 +211,9 @@ {0xa, "Watchdog timer", {0x30,0x60,0x61,0x70,0x71,0x74,0x75,0xf0,EOT}, {0x00,0x00,0x00,0x00,0x03,0x04,0x04,0x02,EOT}}, - {EOT}}}, - {0xe2, "PC87351", { + {EOT}})}, + {0xe2, "PC87351", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x27,0x2e,EOT}, {0xe2,0x11,0xa1,0x00,MISC,NANA,RSVD,EOT}}, @@ -240,14 +246,18 @@ {0x8, "Fan speed control", {0x30,0x60,0x61,0x70,0x71,0x74,0x75,0xf0,EOT}, {0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x00,EOT}}, - {EOT}}}, - {0xe4, "PC87364", { - {EOT}}}, - {0xe5, "PC87365", { /* SRID[7..0] == chip revision */ - {EOT}}}, - {0xe8, "PC87363", { - {EOT}}}, - {0xe9, "PC87366", { + {EOT}})}, + {0xe4, "PC87364", + LDNDEF({ + {EOT}})}, + {0xe5, "PC87365", /* SRID[7..0] == chip revision */ + LDNDEF({ + {EOT}})}, + {0xe8, "PC87363", + LDNDEF({ + {EOT}})}, + {0xe9, "PC87366", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x27,0x28,0x2a,0x2b, 0x2c,0x2d,0x2e,EOT}, @@ -304,10 +314,11 @@ {0xe, "Temperature sensor (TMS)", {0x30,0x60,0x61,0x70,0x71,0x74,0x75,EOT}, {0x00,0x00,0x00,0x00,0x03,0x04,0x04,EOT}}, - {EOT}}}, + {EOT}})}, /* SID[7..0]: family, SRID[7..5]: ID, SRID[4..0]: rev. */ - {0xea, "PC8739x", { + {0xea, "PC8739x", + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29, 0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -344,12 +355,14 @@ 0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,EOT}, {0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0xec, "PC87591x", { + {EOT}})}, + {0xec, "PC87591x", /* SRID[7..5]: 000=PC87591E, 001=PC87591S, 100=PC87591L */ - {EOT}}}, - {0xee, "PC8741x", { + LDNDEF({ + {EOT}})}, + {0xee, "PC8741x", /* SRID[7..5] is marked as "not applicable for the PC8741x". */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29, 0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -397,10 +410,12 @@ 0xf1,0xf2,0xf3,EOT}, {0x00,0x00,0x70,0x00,0x72,0x08,0x00,0x04,0x04,0x00, 0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0xf0, "PC87372", { - {EOT}}}, - {0x0f1, "PC8374L", { + {EOT}})}, + {0xf0, "PC87372", + LDNDEF({ + {EOT}})}, + {0x0f1, "PC8374L", + LDNDEF({ {NOLDN, NULL, {0x10,0x12,0x13,0x20,0x21,0x22,0x23,0x24,0x25,0x26, 0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -441,8 +456,9 @@ {0x8, "Health management", {0x30,0x50,0x60,0x61,0x70,0x71,0x74,0x75,0xf0,EOT}, {0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x04,0x05,EOT}}, - {EOT}}}, - {0x8f1, "WPCD376I", { + {EOT}})}, + {0x8f1, "WPCD376I", + LDNDEF({ {NOLDN, NULL, {0x10,0x12,0x13,0x20,0x21,0x22,0x23,0x24,0x25,0x26, 0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -480,9 +496,10 @@ 0xf2,0xf3,0xf8,EOT}, {0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x04,0x00,MISC, 0x00,MISC,0x01,EOT}}, - {EOT}}}, - {0xf2, "PC87427", { + {EOT}})}, + {0xf2, "PC87427", /* SRID[7..5] is marked as "not applicable for the PC87427". */ + LDNDEF({ {NOLDN, NULL, {0x10,0x12,0x13,0x1d,0x20,0x21,0x22,0x23,0x24,0x25, 0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f, @@ -542,9 +559,10 @@ 0xf0,EOT}, {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x04, 0x05,EOT}}, - {EOT}}}, - {0xf3, "PC87373", { - {EOT}}}, + {EOT}})}, + {0xf3, "PC87373", + LDNDEF({ + {EOT}})}, {EOT} }; @@ -592,8 +610,10 @@ get_superio_name(reg_table, magic), id, rev, port); chip_found = 1; +#ifndef LIBSUPERIODETECT dump_superio(magic == 0x8f1 ? "Winbond" : "NSC", reg_table, port, magic, LDN_SEL); +#endif /* ! LIBSUPERIODETECT */ } void print_nsc_chips(void) Index: superiotool_libsuperiodetect/superiotool.c =================================================================== --- superiotool_libsuperiodetect/superiotool.c (Revision 5651) +++ superiotool_libsuperiodetect/superiotool.c (Arbeitskopie) @@ -81,6 +81,7 @@ return "<unknown>"; } +#ifndef LIBSUPERIODETECT static void dump_regs(const struct superio_registers reg_table[], int i, int j, uint16_t port, uint8_t ldn_sel) { @@ -170,6 +171,7 @@ printf("%02x ", INB(iobase + i)); printf("\n"); } +#endif /* ! LIBSUPERIODETECT */ void probing_for(const char *vendor, const char *info, uint16_t port) { @@ -189,9 +191,11 @@ for (i = 0; reg_table[i].superio_id != EOT; i++) { printf("%s %s", vendor, reg_table[i].name); +#ifndef LIBSUPERIODETECT /* Unless the ldn is empty, assume this chip has a dump. */ if (reg_table[i].ldn[0].ldn != EOT) printf(" (dump available)"); +#endif /* ! LIBSUPERIODETECT */ printf("\n"); } Index: superiotool_libsuperiodetect/ali.c =================================================================== --- superiotool_libsuperiodetect/ali.c (Revision 5651) +++ superiotool_libsuperiodetect/ali.c (Arbeitskopie) @@ -27,7 +27,8 @@ static const struct superio_registers reg_table[] = { /* TODO: M5113 doesn't seem to have ID registers? */ - {0x5315, "M1535/M1535D/M1535+/M1535D+", { + {0x5315, "M1535/M1535D/M1535+/M1535D+", + LDNDEF({ {NOLDN, NULL, {0x1f,0x20,0x21,0x22,0x23,0x2c,0x2d,0x2e,EOT}, {NANA,0x53,0x15,0x00,0x00,RSVD,RSVD,RSVD,EOT}}, @@ -52,9 +53,10 @@ {0xc, "Hotkey", {0x30,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,EOT}, {0x00,0x35,0x14,0x11,0x71,RSVD,0x05,EOT}}, - {EOT}}}, - {0x2351, "M512x", { - {EOT}}}, + {EOT}})}, + {0x2351, "M512x", + LDNDEF({ + {EOT}})}, {EOT} }; @@ -95,7 +97,9 @@ get_superio_name(reg_table, id), id, rev, port); chip_found = 1; +#ifndef LIBSUPERIODETECT dump_superio("ALi", reg_table, port, id, LDN_SEL); +#endif /* ! LIBSUPERIODETECT */ exit_conf_mode_ali(port); } Index: superiotool_libsuperiodetect/smsc.c =================================================================== --- superiotool_libsuperiodetect/smsc.c (Revision 5651) +++ superiotool_libsuperiodetect/smsc.c (Arbeitskopie) @@ -29,7 +29,8 @@ static const struct superio_registers reg_table[] = { /* The following Super I/Os use the 0x20/0x21 ID registers. */ - {0x02, "FDC37C932", { + {0x02, "FDC37C932", + LDNDEF({ {NOLDN, NULL, {0x02,0x03,0x20,0x21,0x22,0x23,0x24,0x2d,0x2e, 0x2f,EOT}, @@ -68,11 +69,13 @@ {0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01, 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00, 0x00,0x00,0x00,MISC,EOT}}, - {EOT}}}, - {0x03, "FDC37C93xFR", { + {EOT}})}, + {0x03, "FDC37C93xFR", /* FIXME: There's another 0x03 but found on port 0x0d/0x0e! */ - {EOT}}}, - {0x0a, "FDC37N971", { + LDNDEF({ + {EOT}})}, + {0x0a, "FDC37N971", + LDNDEF({ {NOLDN, NULL, {0x02,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -109,8 +112,9 @@ {0x9, "Mailbox", {0x30,0x60,0x61,EOT}, {0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0x0b, "FDC37N972", { + {EOT}})}, + {0x0b, "FDC37N972", + LDNDEF({ {NOLDN, NULL, {0x02,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -147,8 +151,9 @@ {0x9, "Mailbox", {0x30,0x60,0x61,EOT}, {0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0x0e, "LPC47N252", { /* From sensors-detect */ + {EOT}})}, + {0x0e, "LPC47N252", /* From sensors-detect */ + LDNDEF({ {NOLDN, NULL, {0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28, 0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -188,12 +193,15 @@ {0xa, "LPC/8051 addressable GPIO (LGPIO)", {0x30,0x60,0x61,EOT}, {0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0x14, "LPC47M172", { - {EOT}}}, - {0x30, "FDC37C93xAPM", { - {EOT}}}, - {0x40, "FDC37C67x", { /* E.g. FDC37C672. Chiprev: 0x01 */ + {EOT}})}, + {0x14, "LPC47M172", + LDNDEF({ + {EOT}})}, + {0x30, "FDC37C93xAPM", + LDNDEF({ + {EOT}})}, + {0x40, "FDC37C67x", /* E.g. FDC37C672. Chiprev: 0x01 */ + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x2b,0x2c, 0x2d,0x2e,0x2f,EOT}, @@ -225,10 +233,12 @@ {0x00,NANA,NANA,NANA,NANA,0x06,0x03,NANA,NANA,NANA, 0x00,0x00,0x00,MISC,RSVD,RSVD,RSVD,RSVD,RSVD,RSVD, EOT}}, - {EOT}}}, - {0x42, "FDC37B80x/FDC37M707", { - {EOT}}}, - {0x09, "FDC37N958FR", { /* Found in e.g. Dell Latitude CPi A366XT. */ + {EOT}})}, + {0x42, "FDC37B80x/FDC37M707", + LDNDEF({ + {EOT}})}, + {0x09, "FDC37N958FR", /* Found in e.g. Dell Latitude CPi A366XT. */ + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x28,0x2b, 0x2c,0x2d,0x2e,0x2f,EOT}, @@ -270,10 +280,12 @@ {0xa, "ACPI", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x00,0x00,NANA,NANA,EOT}}, - {EOT}}}, - {0x43, "FDC37B77x", { - {EOT}}}, - {0x44, "FDC37B78x", { + {EOT}})}, + {0x43, "FDC37B77x", + LDNDEF({ + {EOT}})}, + {0x44, "FDC37B78x", + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x28,0x2b, 0x2c,0x2d,0x2e,0x2f,EOT}, @@ -315,12 +327,15 @@ {0xa, "ACPI", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x00,0x00,NANA,NANA,EOT}}, - {EOT}}}, - {0x46, "FDC37M602", { /* Found in Biostar M6TLD. */ - {EOT}}}, - {0x47, "FDC37M60x", { /* TODO: Not yet in sensors-detect */ - {EOT}}}, - {0x4c, "FDC37B72x", { + {EOT}})}, + {0x46, "FDC37M602", /* Found in Biostar M6TLD. */ + LDNDEF({ + {EOT}})}, + {0x47, "FDC37M60x", /* TODO: Not yet in sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x4c, "FDC37B72x", + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x28,0x2b, 0x2c,0x2d,0x2e,0x2f,EOT}, @@ -357,8 +372,9 @@ {0xa, "ACPI", {0x30,0x60,0x61,0x70,0xf0,EOT}, {0x00,0x00,0x00,NANA,NANA,EOT}}, - {EOT}}}, - {0x4d, "FDC37M81x", { + {EOT}})}, + {0x4d, "FDC37M81x", + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x2b,0x2c, 0x2d,0x2e,0x2f,EOT}, @@ -389,8 +405,9 @@ {0x00,NANA,NANA,NANA,NANA,0x02,0x01,NANA,NANA,NANA, NANA,NANA,NANA,NANA,0x00,0x00,0x00,0x00,RSVD,RSVD, RSVD,RSVD,RSVD,RSVD,EOT}}, - {EOT}}}, - {0x51, "LPC47B27x", { + {EOT}})}, + {0x51, "LPC47B27x", + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x28, 0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -424,10 +441,12 @@ {0xb, "MIDI port (MPU-401)", {0x30,0x60,0x61,0x70,EOT}, {0x00,0x03,0x30,0x05,EOT}}, - {EOT}}}, - {0x52, "LPC47B37x", { - {EOT}}}, - {0x54, "LPC47U33x", { + {EOT}})}, + {0x52, "LPC47B37x", + LDNDEF({ + {EOT}})}, + {0x54, "LPC47U33x", + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x2a,0x2b, 0x2c,0x2d,0x2e,0x2f,EOT}, @@ -459,12 +478,15 @@ {0xb, "SMBus", {0x30,0x60,0x61,0x70,EOT}, {0x00,0x00,0x00,0x00,EOT}}, - {EOT}}}, - {0x56, "LPC47B34x", { - {EOT}}}, - {0x57, "LPC47S42x", { - {EOT}}}, - {0x59, "LPC47M10x/112/13x", { + {EOT}})}, + {0x56, "LPC47B34x", + LDNDEF({ + {EOT}})}, + {0x57, "LPC47S42x", + LDNDEF({ + {EOT}})}, + {0x59, "LPC47M10x/112/13x", + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x28,0x2a, 0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -498,12 +520,15 @@ {0xb, "MPU-401", {0x30,0x60,0x61,0x70,EOT}, {0x00,0x03,0x30,0x05,EOT}}, - {EOT}}}, - {0x5d, "LPC47B357", { /* From sensors-detect (no datasheet) */ - {EOT}}}, - {0x5f, "LPC47M14x", { - {EOT}}}, - {0x60, "LPC47M15x/192/997", { + {EOT}})}, + {0x5d, "LPC47B357", /* From sensors-detect (no datasheet) */ + LDNDEF({ + {EOT}})}, + {0x5f, "LPC47M14x", + LDNDEF({ + {EOT}})}, + {0x60, "LPC47M15x/192/997", + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x28,0x2a, 0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -535,21 +560,27 @@ {0xb, "MPU-401", {0x30,0x60,0x61,0x70,EOT}, {0x00,0x03,0x30,0x05,EOT}}, - {EOT}}}, - {0x62, "LPC47S45x", { - {EOT}}}, - {0x67, "EMC2700LPC", { /* From sensors-detect */ - {EOT}}}, - {0x6b, "LPC47M292", { /* From sensors-detect */ - {EOT}}}, - {0x6e, "LPC47B387", { /* TODO: Not yet in sensors-detect */ + {EOT}})}, + {0x62, "LPC47S45x", + LDNDEF({ + {EOT}})}, + {0x67, "EMC2700LPC", /* From sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x6b, "LPC47M292", /* From sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x6e, "LPC47B387", /* TODO: Not yet in sensors-detect */ /* Found in the HP Compaq Business Desktop d530 Series */ /* http://article.gmane.org/gmane.linux.bios/27192 */ /* We cannot find a public datasheet for this Super I/O. */ - {EOT}}}, - {0x6f, "LPC47B397", { - {EOT}}}, - {0x74, "LPC47M182", { /* Only for LD_NUM = 0 */ + LDNDEF({ + {EOT}})}, + {0x6f, "LPC47B397", + LDNDEF({ + {EOT}})}, + {0x74, "LPC47M182", /* Only for LD_NUM = 0 */ + LDNDEF({ {NOLDN, NULL, {0x02,0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27, 0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -584,10 +615,12 @@ {0xa, "Runtime registers", {0x30,0x60,0x61,0x62,0x63,0xf0,0xf1,0xf2,EOT}, {0x00,0x00,0x00,0x00,0x00,NANA,RSVD,0x04,EOT}}, - {EOT}}}, - {0x76, "LPC47M584", { /* From sensors-detect (no datasheet) */ - {EOT}}}, - {0x77, "A8000", { /* ASUS A8000, a rebranded DME1737(?) */ + {EOT}})}, + {0x76, "LPC47M584", /* From sensors-detect (no datasheet) */ + LDNDEF({ + {EOT}})}, + {0x77, "A8000", /* ASUS A8000, a rebranded DME1737(?) */ + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x28,0x2a, 0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -613,8 +646,9 @@ {0xa, "Runtime registers", {0x30,0x60,0x61,0x62,0x63,0xf0,0xf1,0xf2,EOT}, {0x00,0x00,0x00,0x00,0x00,NANA,RSVD,0x04,EOT}}, - {EOT}}}, - {0x78, "DME1737", { + {EOT}})}, + {0x78, "DME1737", + LDNDEF({ {NOLDN, NULL, {0x03,0x20,0x21,0x22,0x23,0x24,0x26,0x27,0x28,0x2a, 0x2b,0x2c,0x2d,0x2e,0x2f,EOT}, @@ -640,48 +674,64 @@ {0xa, "Runtime registers", {0x30,0x60,0x61,0x62,0x63,0xf0,0xf1,0xf2,EOT}, {0x00,0x00,0x00,0x00,0x00,NANA,RSVD,0x04,EOT}}, - {EOT}}}, - {0x79, "SCH5504", { /* From sensors-detect (no datasheet) */ - {EOT}}}, - {0x7a, "LPC47N217", { /* Found in Toshiba Satellite A80-117. */ - {EOT}}}, - {0x7c, "SCH3112", { - {EOT}}}, - {0x7d, "SCH3114", { - {EOT}}}, - {0x7f, "SCH3116", { - {EOT}}}, - {0x81, "SCH5307", { - {EOT}}}, - {0x83, "SCH5514D", { /* From sensors-detect */ - {EOT}}}, - {0x85, "SCH5317", { /* From sensors-detect */ + {EOT}})}, + {0x79, "SCH5504", /* From sensors-detect (no datasheet) */ + LDNDEF({ + {EOT}})}, + {0x7a, "LPC47N217", /* Found in Toshiba Satellite A80-117. */ + LDNDEF({ + {EOT}})}, + {0x7c, "SCH3112", + LDNDEF({ + {EOT}})}, + {0x7d, "SCH3114", + LDNDEF({ + {EOT}})}, + {0x7f, "SCH3116", + LDNDEF({ + {EOT}})}, + {0x81, "SCH5307", + LDNDEF({ + {EOT}})}, + {0x83, "SCH5514D", /* From sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x85, "SCH5317", /* From sensors-detect */ /* The SCH5317 can have either 0x85 or 0x8c as device ID. */ - {EOT}}}, - {0x86, "SCH5127", { /* From sensors-detect */ - {EOT}}}, - {0x89, "SCH5027", { /* From sensors-detect (no public datasheet) */ - {EOT}}}, - {0x8c, "SCH5317", { /* From sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x86, "SCH5127", /* From sensors-detect */ + LDNDEF({ + {EOT}})}, + {0x89, "SCH5027", /* From sensors-detect (no public datasheet) */ + LDNDEF({ + {EOT}})}, + {0x8c, "SCH5317", /* From sensors-detect */ /* The SCH5317 can have either 0x85 or 0x8c as device ID. */ - {EOT}}}, - {0x90, "SCH4307", { /* From sensors-detect */ - {EOT}}}, + LDNDEF({ + {EOT}})}, + {0x90, "SCH4307", /* From sensors-detect */ + LDNDEF({ + {EOT}})}, /* The following Super I/Os use the 0x0d/0x0e ID registers. */ - {0x03, "FDC37C669", { + {0x03, "FDC37C669", /* Init: 0x55, 0x55. Exit: 0xaa. Ports: 0x3f0/0x370. */ /* Chiprev: 0x02. */ /* FIXME: There's another 0x03 but found on port 0x20/0x21! */ - {EOT}}}, - {0x04, "FDC37C669FR", { /* TODO: Not yet in sensors-detect. */ + LDNDEF({ + {EOT}})}, + {0x04, "FDC37C669FR", /* TODO: Not yet in sensors-detect. */ /* Init: 0x55, 0x55. Exit: 0xaa. Ports: 0x3f0/0x370. */ - {EOT}}}, - {0x13, "LPC47N237", { + LDNDEF({ + {EOT}})}, + {0x13, "LPC47N237", /* Init: 0x55. Exit: 0xaa. Ports: 0x2e/0x4e. */ - {EOT}}}, - {0x28, "FDC37N769", { + LDNDEF({ + {EOT}})}, + {0x28, "FDC37N769", /* Init: 0x55. Exit: 0xaa. Ports: 0x3f0/0x370. */ + LDNDEF({ {NOLDN, NULL, {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13, @@ -693,12 +743,14 @@ NANA,NANA,NANA,0x03,RSVD,RSVD,RSVD,RSVD,RSVD,RSVD, 0x80,0x00,0x3c,RSVD,RSVD,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,RSVD,0x00,0x00,0x03,0x00,0x00,EOT}}, - {EOT}}}, - {0x29, "FDC37N3869/FDC37N869", { + {EOT}})}, + {0x29, "FDC37N3869/FDC37N869", /* Init: 0x55. Exit: 0xaa. Ports: 0x3f0/0x370. */ - {EOT}}}, - {0x5a, "LPC47N227", { + LDNDEF({ + {EOT}})}, + {0x5a, "LPC47N227", /* Init: 0x55. Exit: 0xaa. Ports: 0x2e/0x4e. */ + LDNDEF({ {NOLDN, NULL, {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13, @@ -712,9 +764,10 @@ RSVD,0x00,0x3c,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,EOT}}, - {EOT}}}, - {0x5b, "SIO10N268", { + {EOT}})}, + {0x5b, "SIO10N268", /* Init: 0x55. Exit: 0xaa. Ports: 0x2e/0x4e. */ + LDNDEF({ {NOLDN, NULL, {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13, @@ -734,14 +787,16 @@ 0x00,0x00,0x00,0x00,NANA,NANA,NANA,NANA,NANA,0x50, NANA,0x00,NANA,NANA,NANA,NANA,NANA,NANA,0x00,0x01, 0x00,0x01,0x00,0x8c,MISC,EOT}}, - {EOT}}}, - {0x65, "FDC37C665GT/IR", { + {EOT}})}, + {0x65, "FDC37C665GT/IR", /* Init: 0x55, 0x55. Exit: 0xaa. Port: 0x3f0. */ /* Chiprev: 0x02 = FDC37C665GT, 0x82 = FDC37C665IR */ - {EOT}}}, - {0x66, "FDC37C666GT", { + LDNDEF({ + {EOT}})}, + {0x66, "FDC37C666GT", /* Init: 0x55, 0x55. Exit: 0xaa. Port: 0x3f0. Chiprev: 0x02. */ - {EOT}}}, + LDNDEF({ + {EOT}})}, {EOT} }; @@ -765,7 +820,9 @@ uint8_t revreg) { uint8_t id, rev; +#ifndef LIBSUPERIODETECT uint16_t runtime_base; +#endif /* ! LIBSUPERIODETECT */ const char *info = (idreg == 0x20) ? "(idregs=0x20/0x21) " : "(idregs=0x0d/0x0e) "; @@ -788,6 +845,7 @@ id, rev, port); chip_found = 1; +#ifndef LIBSUPERIODETECT dump_superio((id == 0x77 ? "ASUS" : "SMSC"), reg_table, port, id, LDN_SEL); @@ -804,6 +862,7 @@ printf("No extra registers known for this chip.\n"); } } +#endif /* ! LIBSUPERIODETECT */ exit_conf_mode_smsc(port); } Index: superiotool_libsuperiodetect/superiotool.h =================================================================== --- superiotool_libsuperiodetect/superiotool.h (Revision 5651) +++ superiotool_libsuperiodetect/superiotool.h (Arbeitskopie) @@ -98,14 +98,22 @@ struct superio_registers { int32_t superio_id; /* Signed, as we need EOT. */ const char *name; /* Super I/O name */ +#ifndef LIBSUPERIODETECT struct { int8_t ldn; const char *name; /* LDN name */ int16_t idx[IDXSIZE]; int16_t def[IDXSIZE]; } ldn[LDNSIZE]; +#endif /* ! LIBSUPERIODETECT */ }; +#ifdef LIBSUPERIODETECT +#define LDNDEF(...) +#else /* ! LIBSUPERIODETECT */ +#define LDNDEF(...) __VA_ARGS__ +#endif + /* pci.c */ #ifdef PCI_SUPPORT extern struct pci_access *pacc; Index: superiotool_libsuperiodetect/Makefile =================================================================== --- superiotool_libsuperiodetect/Makefile (Revision 5651) +++ superiotool_libsuperiodetect/Makefile (Arbeitskopie) @@ -30,8 +30,12 @@ | sed -e "s/.*://" -e "s/\([0-9]*\).*/\1/")"' CFLAGS = -O2 -Wall -Werror -Wstrict-prototypes -Wundef -Wstrict-aliasing \ - -Werror-implicit-function-declaration -ansi -pedantic $(SVNDEF) + -Werror-implicit-function-declaration -std=c99 -pedantic $(SVNDEF) +ifeq ($(CONFIG_LIB), yes) +CFLAGS += -D'LIBSUPERIODETECT=1' +endif + OBJS = superiotool.o ali.o fintek.o ite.o nsc.o smsc.o winbond.o OS_ARCH = $(shell uname) @@ -44,7 +48,7 @@ ifeq ($(CONFIG_PCI), yes) CFLAGS += -DPCI_SUPPORT -LIBS += -lpci +LIBS += -lpci -lz OBJS += pci.o via.o endif -- http://www.hailfinger.org/ _______________________________________________ flashrom mailing list [email protected] http://www.flashrom.org/mailman/listinfo/flashrom
