diff options
author | Michael Chan <mchan@broadcom.com> | 2009-04-04 19:51:14 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-04-04 19:51:14 -0400 |
commit | 57579f7629a3d46c307405fbd2ea6bdb650d692f (patch) | |
tree | c407da542bfa50989bfc4f41daf7c1a181207d93 /drivers/net/bnx2.h | |
parent | 5d4d9e8ad6c646c4811bf0049df761dee6affc3d (diff) |
bnx2: Use request_firmware()
Based on original patch by Ben Hutchings <ben@decadent.org.uk> and
Bastian Blank <waldi@debian.org>, with the following main changes:
Separated the mips firmware and rv2p firmware into different files
to make it easier to update them separately.
Added some code to fixup the rv2p code with run-time information
such as PAGE_SIZE.
Update version to 2.0.0.
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2.h')
-rw-r--r-- | drivers/net/bnx2.h | 71 |
1 files changed, 35 insertions, 36 deletions
diff --git a/drivers/net/bnx2.h b/drivers/net/bnx2.h index 704cbbcbf97a..5b570e17c839 100644 --- a/drivers/net/bnx2.h +++ b/drivers/net/bnx2.h | |||
@@ -6885,6 +6885,8 @@ struct bnx2 { | |||
6885 | 6885 | ||
6886 | u32 idle_chk_status_idx; | 6886 | u32 idle_chk_status_idx; |
6887 | 6887 | ||
6888 | const struct firmware *mips_firmware; | ||
6889 | const struct firmware *rv2p_firmware; | ||
6888 | }; | 6890 | }; |
6889 | 6891 | ||
6890 | #define REG_RD(bp, offset) \ | 6892 | #define REG_RD(bp, offset) \ |
@@ -6915,44 +6917,41 @@ struct cpu_reg { | |||
6915 | u32 mips_view_base; | 6917 | u32 mips_view_base; |
6916 | }; | 6918 | }; |
6917 | 6919 | ||
6918 | struct fw_info { | 6920 | struct bnx2_fw_file_section { |
6919 | const u32 ver_major; | 6921 | __be32 addr; |
6920 | const u32 ver_minor; | 6922 | __be32 len; |
6921 | const u32 ver_fix; | 6923 | __be32 offset; |
6922 | |||
6923 | const u32 start_addr; | ||
6924 | |||
6925 | /* Text section. */ | ||
6926 | const u32 text_addr; | ||
6927 | const u32 text_len; | ||
6928 | const u32 text_index; | ||
6929 | __le32 *text; | ||
6930 | u8 *gz_text; | ||
6931 | const u32 gz_text_len; | ||
6932 | |||
6933 | /* Data section. */ | ||
6934 | const u32 data_addr; | ||
6935 | const u32 data_len; | ||
6936 | const u32 data_index; | ||
6937 | const u32 *data; | ||
6938 | |||
6939 | /* SBSS section. */ | ||
6940 | const u32 sbss_addr; | ||
6941 | const u32 sbss_len; | ||
6942 | const u32 sbss_index; | ||
6943 | |||
6944 | /* BSS section. */ | ||
6945 | const u32 bss_addr; | ||
6946 | const u32 bss_len; | ||
6947 | const u32 bss_index; | ||
6948 | |||
6949 | /* Read-only section. */ | ||
6950 | const u32 rodata_addr; | ||
6951 | const u32 rodata_len; | ||
6952 | const u32 rodata_index; | ||
6953 | const u32 *rodata; | ||
6954 | }; | 6924 | }; |
6955 | 6925 | ||
6926 | struct bnx2_mips_fw_file_entry { | ||
6927 | __be32 start_addr; | ||
6928 | struct bnx2_fw_file_section text; | ||
6929 | struct bnx2_fw_file_section data; | ||
6930 | struct bnx2_fw_file_section rodata; | ||
6931 | }; | ||
6932 | |||
6933 | struct bnx2_rv2p_fw_file_entry { | ||
6934 | struct bnx2_fw_file_section rv2p; | ||
6935 | __be32 fixup[8]; | ||
6936 | }; | ||
6937 | |||
6938 | struct bnx2_mips_fw_file { | ||
6939 | struct bnx2_mips_fw_file_entry com; | ||
6940 | struct bnx2_mips_fw_file_entry cp; | ||
6941 | struct bnx2_mips_fw_file_entry rxp; | ||
6942 | struct bnx2_mips_fw_file_entry tpat; | ||
6943 | struct bnx2_mips_fw_file_entry txp; | ||
6944 | }; | ||
6945 | |||
6946 | struct bnx2_rv2p_fw_file { | ||
6947 | struct bnx2_rv2p_fw_file_entry proc1; | ||
6948 | struct bnx2_rv2p_fw_file_entry proc2; | ||
6949 | }; | ||
6950 | |||
6951 | #define RV2P_P1_FIXUP_PAGE_SIZE_IDX 0 | ||
6952 | #define RV2P_BD_PAGE_SIZE_MSK 0xffff | ||
6953 | #define RV2P_BD_PAGE_SIZE ((BCM_PAGE_SIZE / 16) - 1) | ||
6954 | |||
6956 | #define RV2P_PROC1 0 | 6955 | #define RV2P_PROC1 0 |
6957 | #define RV2P_PROC2 1 | 6956 | #define RV2P_PROC2 1 |
6958 | 6957 | ||