diff options
Diffstat (limited to 'drivers/net/benet/be_cmds.c')
-rw-r--r-- | drivers/net/benet/be_cmds.c | 29 |
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 | |||
1255 | int 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 | } | ||