Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 122047
b: refs/heads/master
c: dfe00d7
h: refs/heads/master
i:
  122045: 24a6257
  122043: c52015a
  122039: 3bc4af6
  122031: eb22dbc
  122015: 531e71a
  121983: 52baa54
v: v3
  • Loading branch information
Matt Carlson authored and David S. Miller committed Nov 22, 2008
1 parent 52cdbf4 commit ad15cc6
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 2 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 6833c043f9fc03696fde623914c4a0277df2a0bc
refs/heads/master: dfe00d7d890134f9cafda49e3e60e6ce27af91ed
51 changes: 50 additions & 1 deletion trunk/drivers/net/tg3.c
Original file line number Diff line number Diff line change
Expand Up @@ -11951,6 +11951,51 @@ static int __devinit tg3_fw_img_is_valid(struct tg3 *tp, u32 offset)
return 1;
}

static void __devinit tg3_read_sb_ver(struct tg3 *tp, u32 val)
{
u32 offset, major, minor, build;

tp->fw_ver[0] = 's';
tp->fw_ver[1] = 'b';
tp->fw_ver[2] = '\0';

if ((val & TG3_EEPROM_SB_FORMAT_MASK) != TG3_EEPROM_SB_FORMAT_1)
return;

switch (val & TG3_EEPROM_SB_REVISION_MASK) {
case TG3_EEPROM_SB_REVISION_0:
offset = TG3_EEPROM_SB_F1R0_EDH_OFF;
break;
case TG3_EEPROM_SB_REVISION_2:
offset = TG3_EEPROM_SB_F1R2_EDH_OFF;
break;
case TG3_EEPROM_SB_REVISION_3:
offset = TG3_EEPROM_SB_F1R3_EDH_OFF;
break;
default:
return;
}

if (tg3_nvram_read_swab(tp, offset, &val))
return;

build = (val & TG3_EEPROM_SB_EDH_BLD_MASK) >>
TG3_EEPROM_SB_EDH_BLD_SHFT;
major = (val & TG3_EEPROM_SB_EDH_MAJ_MASK) >>
TG3_EEPROM_SB_EDH_MAJ_SHFT;
minor = val & TG3_EEPROM_SB_EDH_MIN_MASK;

if (minor > 99 || build > 26)
return;

snprintf(&tp->fw_ver[2], 30, " v%d.%02d", major, minor);

if (build > 0) {
tp->fw_ver[8] = 'a' + build - 1;
tp->fw_ver[9] = '\0';
}
}

static void __devinit tg3_read_fw_ver(struct tg3 *tp)
{
u32 val, offset, start;
Expand All @@ -11960,8 +12005,12 @@ static void __devinit tg3_read_fw_ver(struct tg3 *tp)
if (tg3_nvram_read_swab(tp, 0, &val))
return;

if (val != TG3_EEPROM_MAGIC)
if (val != TG3_EEPROM_MAGIC) {
if ((val & TG3_EEPROM_MAGIC_FW_MSK) == TG3_EEPROM_MAGIC_FW)
tg3_read_sb_ver(tp, val);

return;
}

if (tg3_nvram_read_swab(tp, 0xc, &offset) ||
tg3_nvram_read_swab(tp, 0x4, &start))
Expand Down
11 changes: 11 additions & 0 deletions trunk/drivers/net/tg3.h
Original file line number Diff line number Diff line change
Expand Up @@ -1747,6 +1747,17 @@
#define TG3_NVM_DIRTYPE_SHIFT 24
#define TG3_NVM_DIRTYPE_ASFINI 1

#define TG3_EEPROM_SB_F1R0_EDH_OFF 0x10
#define TG3_EEPROM_SB_F1R2_EDH_OFF 0x14
#define TG3_EEPROM_SB_F1R2_MBA_OFF 0x10
#define TG3_EEPROM_SB_F1R3_EDH_OFF 0x18
#define TG3_EEPROM_SB_EDH_MAJ_MASK 0x00000700
#define TG3_EEPROM_SB_EDH_MAJ_SHFT 8
#define TG3_EEPROM_SB_EDH_MIN_MASK 0x000000ff
#define TG3_EEPROM_SB_EDH_BLD_MASK 0x0000f800
#define TG3_EEPROM_SB_EDH_BLD_SHFT 11


/* 32K Window into NIC internal memory */
#define NIC_SRAM_WIN_BASE 0x00008000

Expand Down

0 comments on commit ad15cc6

Please sign in to comment.