diff options
author | Matt Carlson <mcarlson@broadcom.com> | 2009-02-25 09:27:43 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-02-27 02:16:40 -0500 |
commit | a6f6cb1cf8ba54efdbbbf61b5b4345b0246da42f (patch) | |
tree | 18822cf6cea61ce7b46bc07b0621946e7454ba85 | |
parent | 7fd764455a13f4d9b37c9b908f07d0758f11d3c5 (diff) |
tg3: Add version reporting for hardware selfboot
This patch adds version reporting for hardware selfboot.
Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Signed-off-by: Benjamin Li <benli@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/tg3.c | 18 | ||||
-rw-r--r-- | drivers/net/tg3.h | 6 |
2 files changed, 24 insertions, 0 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index bbf5fe3db3c8..d12338f86798 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -11509,6 +11509,22 @@ static void __devinit tg3_read_bc_ver(struct tg3 *tp) | |||
11509 | } | 11509 | } |
11510 | } | 11510 | } |
11511 | 11511 | ||
11512 | static void __devinit tg3_read_hwsb_ver(struct tg3 *tp) | ||
11513 | { | ||
11514 | u32 val, major, minor; | ||
11515 | |||
11516 | /* Use native endian representation */ | ||
11517 | if (tg3_nvram_read(tp, TG3_NVM_HWSB_CFG1, &val)) | ||
11518 | return; | ||
11519 | |||
11520 | major = (val & TG3_NVM_HWSB_CFG1_MAJMSK) >> | ||
11521 | TG3_NVM_HWSB_CFG1_MAJSFT; | ||
11522 | minor = (val & TG3_NVM_HWSB_CFG1_MINMSK) >> | ||
11523 | TG3_NVM_HWSB_CFG1_MINSFT; | ||
11524 | |||
11525 | snprintf(&tp->fw_ver[0], 32, "sb v%d.%02d", major, minor); | ||
11526 | } | ||
11527 | |||
11512 | static void __devinit tg3_read_sb_ver(struct tg3 *tp, u32 val) | 11528 | static void __devinit tg3_read_sb_ver(struct tg3 *tp, u32 val) |
11513 | { | 11529 | { |
11514 | u32 offset, major, minor, build; | 11530 | u32 offset, major, minor, build; |
@@ -11645,6 +11661,8 @@ static void __devinit tg3_read_fw_ver(struct tg3 *tp) | |||
11645 | tg3_read_bc_ver(tp); | 11661 | tg3_read_bc_ver(tp); |
11646 | else if ((val & TG3_EEPROM_MAGIC_FW_MSK) == TG3_EEPROM_MAGIC_FW) | 11662 | else if ((val & TG3_EEPROM_MAGIC_FW_MSK) == TG3_EEPROM_MAGIC_FW) |
11647 | tg3_read_sb_ver(tp, val); | 11663 | tg3_read_sb_ver(tp, val); |
11664 | else if ((val & TG3_EEPROM_MAGIC_HW_MSK) == TG3_EEPROM_MAGIC_HW) | ||
11665 | tg3_read_hwsb_ver(tp); | ||
11648 | else | 11666 | else |
11649 | return; | 11667 | return; |
11650 | 11668 | ||
diff --git a/drivers/net/tg3.h b/drivers/net/tg3.h index 2a75a60a6f1f..cb4c62abdd21 100644 --- a/drivers/net/tg3.h +++ b/drivers/net/tg3.h | |||
@@ -1719,6 +1719,12 @@ | |||
1719 | 1719 | ||
1720 | #define TG3_OTP_DEFAULT 0x286c1640 | 1720 | #define TG3_OTP_DEFAULT 0x286c1640 |
1721 | 1721 | ||
1722 | /* Hardware Selfboot NVRAM layout */ | ||
1723 | #define TG3_NVM_HWSB_CFG1 0x00000004 | ||
1724 | #define TG3_NVM_HWSB_CFG1_MAJMSK 0xf8000000 | ||
1725 | #define TG3_NVM_HWSB_CFG1_MAJSFT 27 | ||
1726 | #define TG3_NVM_HWSB_CFG1_MINMSK 0x07c00000 | ||
1727 | #define TG3_NVM_HWSB_CFG1_MINSFT 22 | ||
1722 | 1728 | ||
1723 | #define TG3_EEPROM_MAGIC 0x669955aa | 1729 | #define TG3_EEPROM_MAGIC 0x669955aa |
1724 | #define TG3_EEPROM_MAGIC_FW 0xa5000000 | 1730 | #define TG3_EEPROM_MAGIC_FW 0xa5000000 |