superiotool: Add support for function to dump superio chip data registers
Add new function dump_data() to dump a bank of superio data registers. Change-Id: I13a58d87c14d319cfcdea1ec1d54c2b110d90f9f Signed-off-by: Guenter Roeck <linux@roeck-us.net> Reviewed-on: http://review.coreboot.org/1149 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
This commit is contained in:
parent
975ffc2e0f
commit
a89da0969e
|
@ -34,6 +34,18 @@ int dump = 0, verbose = 0, extra_dump = 0;
|
||||||
/* Global flag which indicates whether a chip was detected at all. */
|
/* Global flag which indicates whether a chip was detected at all. */
|
||||||
int chip_found = 0;
|
int chip_found = 0;
|
||||||
|
|
||||||
|
static void set_bank(uint16_t port, uint8_t bank)
|
||||||
|
{
|
||||||
|
OUTB(0x4E, port);
|
||||||
|
OUTB(bank, port + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t datareg(uint16_t port, uint8_t reg)
|
||||||
|
{
|
||||||
|
OUTB(reg, port);
|
||||||
|
return INB(port + 1);
|
||||||
|
}
|
||||||
|
|
||||||
uint8_t regval(uint16_t port, uint8_t reg)
|
uint8_t regval(uint16_t port, uint8_t reg)
|
||||||
{
|
{
|
||||||
OUTB(reg, port);
|
OUTB(reg, port);
|
||||||
|
@ -186,6 +198,23 @@ void dump_io(uint16_t iobase, uint16_t length)
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dump_data(uint16_t iobase, int bank)
|
||||||
|
{
|
||||||
|
uint16_t i;
|
||||||
|
|
||||||
|
printf("Bank %d:\n", bank);
|
||||||
|
printf(" ");
|
||||||
|
for (i = 0; i < 16; i++)
|
||||||
|
printf("%02x ", i);
|
||||||
|
set_bank(iobase, bank);
|
||||||
|
for (i = 0; i < 256; i++) {
|
||||||
|
if (i % 16 == 0)
|
||||||
|
printf("\n%02x: ", i / 16);
|
||||||
|
printf("%02x ", datareg(iobase, i));
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
void probing_for(const char *vendor, const char *info, uint16_t port)
|
void probing_for(const char *vendor, const char *info, uint16_t port)
|
||||||
{
|
{
|
||||||
if (!verbose)
|
if (!verbose)
|
||||||
|
|
|
@ -174,6 +174,7 @@ const char *get_superio_name(const struct superio_registers reg_table[],
|
||||||
void dump_superio(const char *name, const struct superio_registers reg_table[],
|
void dump_superio(const char *name, const struct superio_registers reg_table[],
|
||||||
uint16_t port, uint16_t id, uint8_t ldn_sel);
|
uint16_t port, uint16_t id, uint8_t ldn_sel);
|
||||||
void dump_io(uint16_t iobase, uint16_t length);
|
void dump_io(uint16_t iobase, uint16_t length);
|
||||||
|
void dump_data(uint16_t iobase, int bank);
|
||||||
void probing_for(const char *vendor, const char *info, uint16_t port);
|
void probing_for(const char *vendor, const char *info, uint16_t port);
|
||||||
void print_vendor_chips(const char *vendor,
|
void print_vendor_chips(const char *vendor,
|
||||||
const struct superio_registers reg_table[]);
|
const struct superio_registers reg_table[]);
|
||||||
|
|
Loading…
Reference in New Issue