mirror of
https://github.com/proski/madwifi
synced 2024-11-24 23:40:00 +03:00
add dump eeprom option (-d) to ath_info to dump the entire contents
of the eeprom to the screen and to a file git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@2750 0192ed92-7a03-0410-a25b-9323aeb14dbd
This commit is contained in:
parent
66c5993fc6
commit
ab34867986
@ -691,13 +691,14 @@ usage(const char *n)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
fprintf(stderr, "%s [-w [-g N:M]] [-v] [-f] <base_address> "
|
fprintf(stderr, "%s [-w [-g N:M]] [-v] [-f] [-d] <base_address> "
|
||||||
"[<name1> <val1> [<name2> <val2> ...]]\n\n", n);
|
"[<name1> <val1> [<name2> <val2> ...]]\n\n", n);
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"-w write values into EEPROM\n"
|
"-w write values into EEPROM\n"
|
||||||
"-g N:M set GPIO N to level M (only used with -w)\n"
|
"-g N:M set GPIO N to level M (only used with -w)\n"
|
||||||
"-v verbose output\n"
|
"-v verbose output\n"
|
||||||
"-f force; suppress question before writing\n"
|
"-f force; suppress question before writing\n"
|
||||||
|
"-d dump eeprom (file 'ath-eeprom-dump.bin' and screen)\n"
|
||||||
"<base_address> device base address (see lspci output)\n\n");
|
"<base_address> device base address (see lspci output)\n\n");
|
||||||
|
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
@ -728,10 +729,13 @@ main(int argc, char *argv[])
|
|||||||
u_int16_t eeprom_header, srev, phy_rev_5ghz, phy_rev_2ghz;
|
u_int16_t eeprom_header, srev, phy_rev_5ghz, phy_rev_2ghz;
|
||||||
u_int16_t eeprom_version, mac_version, regdomain, has_crystal, ee_magic;
|
u_int16_t eeprom_version, mac_version, regdomain, has_crystal, ee_magic;
|
||||||
u_int8_t error, has_a, has_b, has_g, has_rfkill, eeprom_size;
|
u_int8_t error, has_a, has_b, has_g, has_rfkill, eeprom_size;
|
||||||
|
int byte_size=0;
|
||||||
void *mem;
|
void *mem;
|
||||||
int fd;
|
int fd;
|
||||||
int i, anr=1;
|
int i, anr=1;
|
||||||
int do_write=0; /* default: read only */
|
int do_write=0; /* default: read only */
|
||||||
|
int do_dump=0;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
int valid;
|
int valid;
|
||||||
int value;
|
int value;
|
||||||
@ -773,6 +777,10 @@ main(int argc, char *argv[])
|
|||||||
verbose=1;
|
verbose=1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'd':
|
||||||
|
do_dump=1;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'h':
|
case 'h':
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
return 0;
|
return 0;
|
||||||
@ -949,12 +957,18 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
printf("EEPROM Size: ");
|
printf("EEPROM Size: ");
|
||||||
|
|
||||||
if (eeprom_size == 0)
|
if (eeprom_size == 0) {
|
||||||
printf(" 4K\n");
|
printf(" 4K\n");
|
||||||
else if (eeprom_size == 1)
|
byte_size = 4096;
|
||||||
|
}
|
||||||
|
else if (eeprom_size == 1) {
|
||||||
printf(" 8K\n");
|
printf(" 8K\n");
|
||||||
else if (eeprom_size == 2)
|
byte_size = 8192;
|
||||||
|
}
|
||||||
|
else if (eeprom_size == 2) {
|
||||||
printf(" 16K\n");
|
printf(" 16K\n");
|
||||||
|
byte_size = 16384;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
printf(" ??\n");
|
printf(" ??\n");
|
||||||
|
|
||||||
@ -1000,6 +1014,26 @@ main(int argc, char *argv[])
|
|||||||
AR5K_REG_READ(AR5K_GPIOCR), AR5K_REG_READ(AR5K_GPIODO),
|
AR5K_REG_READ(AR5K_GPIOCR), AR5K_REG_READ(AR5K_GPIODO),
|
||||||
AR5K_REG_READ(AR5K_GPIODI));
|
AR5K_REG_READ(AR5K_GPIODI));
|
||||||
|
|
||||||
|
if (do_dump) {
|
||||||
|
printf("\nEEPROM dump (%d byte)\n", byte_size);
|
||||||
|
printf("==============================================");
|
||||||
|
u_int16_t data;
|
||||||
|
FILE* dumpfile = fopen("ath-eeprom-dump.bin", "w");
|
||||||
|
for (i=1; i<=(byte_size/2); i++) {
|
||||||
|
error = ath5k_hw_eeprom_read(mem, i, &data, mac_version);
|
||||||
|
if (error) {
|
||||||
|
printf("\nUnable to read at %04x !\n", i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!((i-1)%8))
|
||||||
|
printf("\n%04x: ",i);
|
||||||
|
printf("%04x ", data);
|
||||||
|
fwrite(&data, 2, 1, dumpfile);
|
||||||
|
}
|
||||||
|
printf("\n==============================================\n");
|
||||||
|
fclose(dumpfile);
|
||||||
|
}
|
||||||
|
|
||||||
if (do_write) {
|
if (do_write) {
|
||||||
unsigned long int rcr=AR5K_REG_READ(AR5K_GPIOCR),
|
unsigned long int rcr=AR5K_REG_READ(AR5K_GPIOCR),
|
||||||
rdo=AR5K_REG_READ(AR5K_GPIODO);
|
rdo=AR5K_REG_READ(AR5K_GPIODO);
|
||||||
|
Loading…
Reference in New Issue
Block a user