diff options
author | H. Peter Anvin <hpa@zytor.com> | 2008-08-27 22:17:07 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2008-08-27 22:17:07 -0400 |
commit | b30a72a7edfc64c8929104d5c2178aca489aa559 (patch) | |
tree | 2b26c155c318d08d946bd2d70cf815dcdb29a243 /drivers/net/netxen/netxen_nic_hw.c | |
parent | f1c5d30e1d79bbfb60eaf189db862d3cb2bcac92 (diff) | |
parent | c1b362e3b4d331a63915b268a33207311a439d60 (diff) |
Merge branch 'x86/urgent' into x86/cpu
Conflicts:
arch/x86/kernel/cpu/cyrix.c
Diffstat (limited to 'drivers/net/netxen/netxen_nic_hw.c')
-rw-r--r-- | drivers/net/netxen/netxen_nic_hw.c | 59 |
1 files changed, 42 insertions, 17 deletions
diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c index 9aa20f961618..84978f80f396 100644 --- a/drivers/net/netxen/netxen_nic_hw.c +++ b/drivers/net/netxen/netxen_nic_hw.c | |||
@@ -733,31 +733,56 @@ static int netxen_get_flash_block(struct netxen_adapter *adapter, int base, | |||
733 | return 0; | 733 | return 0; |
734 | } | 734 | } |
735 | 735 | ||
736 | int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, __le64 mac[]) | 736 | int netxen_get_flash_mac_addr(struct netxen_adapter *adapter, __le64 *mac) |
737 | { | 737 | { |
738 | __le32 *pmac = (__le32 *) & mac[0]; | 738 | __le32 *pmac = (__le32 *) mac; |
739 | u32 offset; | ||
739 | 740 | ||
740 | if (netxen_get_flash_block(adapter, | 741 | offset = NETXEN_USER_START + |
741 | NETXEN_USER_START + | 742 | offsetof(struct netxen_new_user_info, mac_addr) + |
742 | offsetof(struct netxen_new_user_info, | 743 | adapter->portnum * sizeof(u64); |
743 | mac_addr), | 744 | |
744 | FLASH_NUM_PORTS * sizeof(u64), pmac) == -1) { | 745 | if (netxen_get_flash_block(adapter, offset, sizeof(u64), pmac) == -1) |
745 | return -1; | 746 | return -1; |
746 | } | 747 | |
747 | if (*mac == cpu_to_le64(~0ULL)) { | 748 | if (*mac == cpu_to_le64(~0ULL)) { |
749 | |||
750 | offset = NETXEN_USER_START_OLD + | ||
751 | offsetof(struct netxen_user_old_info, mac_addr) + | ||
752 | adapter->portnum * sizeof(u64); | ||
753 | |||
748 | if (netxen_get_flash_block(adapter, | 754 | if (netxen_get_flash_block(adapter, |
749 | NETXEN_USER_START_OLD + | 755 | offset, sizeof(u64), pmac) == -1) |
750 | offsetof(struct netxen_user_old_info, | ||
751 | mac_addr), | ||
752 | FLASH_NUM_PORTS * sizeof(u64), | ||
753 | pmac) == -1) | ||
754 | return -1; | 756 | return -1; |
757 | |||
755 | if (*mac == cpu_to_le64(~0ULL)) | 758 | if (*mac == cpu_to_le64(~0ULL)) |
756 | return -1; | 759 | return -1; |
757 | } | 760 | } |
758 | return 0; | 761 | return 0; |
759 | } | 762 | } |
760 | 763 | ||
764 | int netxen_p3_get_mac_addr(struct netxen_adapter *adapter, __le64 *mac) | ||
765 | { | ||
766 | uint32_t crbaddr, mac_hi, mac_lo; | ||
767 | int pci_func = adapter->ahw.pci_func; | ||
768 | |||
769 | crbaddr = CRB_MAC_BLOCK_START + | ||
770 | (4 * ((pci_func/2) * 3)) + (4 * (pci_func & 1)); | ||
771 | |||
772 | adapter->hw_read_wx(adapter, crbaddr, &mac_lo, 4); | ||
773 | adapter->hw_read_wx(adapter, crbaddr+4, &mac_hi, 4); | ||
774 | |||
775 | mac_hi = cpu_to_le32(mac_hi); | ||
776 | mac_lo = cpu_to_le32(mac_lo); | ||
777 | |||
778 | if (pci_func & 1) | ||
779 | *mac = ((mac_lo >> 16) | ((u64)mac_hi << 16)); | ||
780 | else | ||
781 | *mac = ((mac_lo) | ((u64)mac_hi << 32)); | ||
782 | |||
783 | return 0; | ||
784 | } | ||
785 | |||
761 | #define CRB_WIN_LOCK_TIMEOUT 100000000 | 786 | #define CRB_WIN_LOCK_TIMEOUT 100000000 |
762 | 787 | ||
763 | static int crb_win_lock(struct netxen_adapter *adapter) | 788 | static int crb_win_lock(struct netxen_adapter *adapter) |
@@ -2183,10 +2208,10 @@ void netxen_nic_flash_print(struct netxen_adapter *adapter) | |||
2183 | if (adapter->portnum == 0) { | 2208 | if (adapter->portnum == 0) { |
2184 | get_brd_name_by_type(board_info->board_type, brd_name); | 2209 | get_brd_name_by_type(board_info->board_type, brd_name); |
2185 | 2210 | ||
2186 | printk("NetXen %s Board S/N %s Chip id 0x%x\n", | 2211 | printk(KERN_INFO "NetXen %s Board S/N %s Chip rev 0x%x\n", |
2187 | brd_name, serial_num, board_info->chip_id); | 2212 | brd_name, serial_num, adapter->ahw.revision_id); |
2188 | printk("NetXen Firmware version %d.%d.%d\n", fw_major, | 2213 | printk(KERN_INFO "NetXen Firmware version %d.%d.%d\n", |
2189 | fw_minor, fw_build); | 2214 | fw_major, fw_minor, fw_build); |
2190 | } | 2215 | } |
2191 | 2216 | ||
2192 | if (NETXEN_VERSION_CODE(fw_major, fw_minor, fw_build) < | 2217 | if (NETXEN_VERSION_CODE(fw_major, fw_minor, fw_build) < |