提交 110d0ef9 编写于 作者: M Michael Chan 提交者: David S. Miller

[BNX2]: Update firmware to support S/G RX buffers.

Signed-off-by: NMichael Chan <mchan@broadcom.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 5d5d0015
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
#include "bnx2_fw.h" #include "bnx2_fw.h"
#include "bnx2_fw2.h" #include "bnx2_fw2.h"
#define FW_BUF_SIZE 0x8000 #define FW_BUF_SIZE 0x10000
#define DRV_MODULE_NAME "bnx2" #define DRV_MODULE_NAME "bnx2"
#define PFX DRV_MODULE_NAME ": " #define PFX DRV_MODULE_NAME ": "
...@@ -2900,20 +2900,34 @@ bnx2_init_cpus(struct bnx2 *bp) ...@@ -2900,20 +2900,34 @@ bnx2_init_cpus(struct bnx2 *bp)
{ {
struct cpu_reg cpu_reg; struct cpu_reg cpu_reg;
struct fw_info *fw; struct fw_info *fw;
int rc; int rc, rv2p_len;
void *text; void *text, *rv2p;
/* Initialize the RV2P processor. */ /* Initialize the RV2P processor. */
text = vmalloc(FW_BUF_SIZE); text = vmalloc(FW_BUF_SIZE);
if (!text) if (!text)
return -ENOMEM; return -ENOMEM;
rc = zlib_inflate_blob(text, FW_BUF_SIZE, bnx2_rv2p_proc1, sizeof(bnx2_rv2p_proc1)); if (CHIP_NUM(bp) == CHIP_NUM_5709) {
rv2p = bnx2_xi_rv2p_proc1;
rv2p_len = sizeof(bnx2_xi_rv2p_proc1);
} else {
rv2p = bnx2_rv2p_proc1;
rv2p_len = sizeof(bnx2_rv2p_proc1);
}
rc = zlib_inflate_blob(text, FW_BUF_SIZE, rv2p, rv2p_len);
if (rc < 0) if (rc < 0)
goto init_cpu_err; goto init_cpu_err;
load_rv2p_fw(bp, text, rc /* == len */, RV2P_PROC1); load_rv2p_fw(bp, text, rc /* == len */, RV2P_PROC1);
rc = zlib_inflate_blob(text, FW_BUF_SIZE, bnx2_rv2p_proc2, sizeof(bnx2_rv2p_proc2)); if (CHIP_NUM(bp) == CHIP_NUM_5709) {
rv2p = bnx2_xi_rv2p_proc2;
rv2p_len = sizeof(bnx2_xi_rv2p_proc2);
} else {
rv2p = bnx2_rv2p_proc2;
rv2p_len = sizeof(bnx2_rv2p_proc2);
}
rc = zlib_inflate_blob(text, FW_BUF_SIZE, rv2p, rv2p_len);
if (rc < 0) if (rc < 0)
goto init_cpu_err; goto init_cpu_err;
...@@ -3029,14 +3043,14 @@ bnx2_init_cpus(struct bnx2 *bp) ...@@ -3029,14 +3043,14 @@ bnx2_init_cpus(struct bnx2 *bp)
cpu_reg.spad_base = BNX2_CP_SCRATCH; cpu_reg.spad_base = BNX2_CP_SCRATCH;
cpu_reg.mips_view_base = 0x8000000; cpu_reg.mips_view_base = 0x8000000;
if (CHIP_NUM(bp) == CHIP_NUM_5709) { if (CHIP_NUM(bp) == CHIP_NUM_5709)
fw = &bnx2_cp_fw_09; fw = &bnx2_cp_fw_09;
else
fw = &bnx2_cp_fw_06;
fw->text = text;
rc = load_cpu_fw(bp, &cpu_reg, fw);
fw->text = text;
rc = load_cpu_fw(bp, &cpu_reg, fw);
if (rc)
goto init_cpu_err;
}
init_cpu_err: init_cpu_err:
vfree(text); vfree(text);
return rc; return rc;
......
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册