aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/benet/be_cmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/benet/be_cmds.c')
-rw-r--r--drivers/net/benet/be_cmds.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/net/benet/be_cmds.c b/drivers/net/benet/be_cmds.c
index cc75dd0df0d8..808ad0dd4115 100644
--- a/drivers/net/benet/be_cmds.c
+++ b/drivers/net/benet/be_cmds.c
@@ -1251,3 +1251,32 @@ int be_cmd_write_flashrom(struct be_adapter *adapter, struct be_dma_mem *cmd,
1251 spin_unlock_bh(&adapter->mcc_lock); 1251 spin_unlock_bh(&adapter->mcc_lock);
1252 return status; 1252 return status;
1253} 1253}
1254
1255int be_cmd_get_flash_crc(struct be_adapter *adapter, u8 *flashed_crc)
1256{
1257 struct be_mcc_wrb *wrb;
1258 struct be_cmd_write_flashrom *req;
1259 int status;
1260
1261 spin_lock_bh(&adapter->mcc_lock);
1262
1263 wrb = wrb_from_mccq(adapter);
1264 req = embedded_payload(wrb);
1265
1266 be_wrb_hdr_prepare(wrb, sizeof(*req)+4, true, 0);
1267
1268 be_cmd_hdr_prepare(&req->hdr, CMD_SUBSYSTEM_COMMON,
1269 OPCODE_COMMON_READ_FLASHROM, sizeof(*req)+4);
1270
1271 req->params.op_type = cpu_to_le32(FLASHROM_TYPE_REDBOOT);
1272 req->params.op_code = cpu_to_le32(FLASHROM_OPER_REPORT);
1273 req->params.offset = 0x3FFFC;
1274 req->params.data_buf_size = 0x4;
1275
1276 status = be_mcc_notify_wait(adapter);
1277 if (!status)
1278 memcpy(flashed_crc, req->params.data_buf, 4);
1279
1280 spin_unlock_bh(&adapter->mcc_lock);
1281 return status;
1282}