|
@@ -3850,6 +3850,10 @@ qla24xx_load_risc_flash(scsi_qla_host_t *vha, uint32_t *srisc_addr)
|
|
|
uint32_t i;
|
|
|
struct qla_hw_data *ha = vha->hw;
|
|
|
struct req_que *req = ha->req_q_map[0];
|
|
|
+
|
|
|
+ qla_printk(KERN_INFO, ha,
|
|
|
+ "FW: Loading from flash (%x)...\n", ha->flt_region_fw);
|
|
|
+
|
|
|
rval = QLA_SUCCESS;
|
|
|
|
|
|
segments = FA_RISC_CODE_SEGMENTS;
|
|
@@ -4025,8 +4029,8 @@ fail_fw_integrity:
|
|
|
return QLA_FUNCTION_FAILED;
|
|
|
}
|
|
|
|
|
|
-int
|
|
|
-qla24xx_load_risc(scsi_qla_host_t *vha, uint32_t *srisc_addr)
|
|
|
+static int
|
|
|
+qla24xx_load_risc_blob(scsi_qla_host_t *vha, uint32_t *srisc_addr)
|
|
|
{
|
|
|
int rval;
|
|
|
int segments, fragment;
|
|
@@ -4046,12 +4050,12 @@ qla24xx_load_risc(scsi_qla_host_t *vha, uint32_t *srisc_addr)
|
|
|
qla_printk(KERN_ERR, ha, "Firmware images can be retrieved "
|
|
|
"from: " QLA_FW_URL ".\n");
|
|
|
|
|
|
- /* Try to load RISC code from flash. */
|
|
|
- qla_printk(KERN_ERR, ha, "Attempting to load (potentially "
|
|
|
- "outdated) firmware from flash.\n");
|
|
|
- return qla24xx_load_risc_flash(vha, srisc_addr);
|
|
|
+ return QLA_FUNCTION_FAILED;
|
|
|
}
|
|
|
|
|
|
+ qla_printk(KERN_INFO, ha,
|
|
|
+ "FW: Loading via request-firmware...\n");
|
|
|
+
|
|
|
rval = QLA_SUCCESS;
|
|
|
|
|
|
segments = FA_RISC_CODE_SEGMENTS;
|
|
@@ -4136,6 +4140,40 @@ fail_fw_integrity:
|
|
|
return QLA_FUNCTION_FAILED;
|
|
|
}
|
|
|
|
|
|
+int
|
|
|
+qla24xx_load_risc(scsi_qla_host_t *vha, uint32_t *srisc_addr)
|
|
|
+{
|
|
|
+ int rval;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * FW Load priority:
|
|
|
+ * 1) Firmware via request-firmware interface (.bin file).
|
|
|
+ * 2) Firmware residing in flash.
|
|
|
+ */
|
|
|
+ rval = qla24xx_load_risc_blob(vha, srisc_addr);
|
|
|
+ if (rval == QLA_SUCCESS)
|
|
|
+ return rval;
|
|
|
+
|
|
|
+ return qla24xx_load_risc_flash(vha, srisc_addr);
|
|
|
+}
|
|
|
+
|
|
|
+int
|
|
|
+qla81xx_load_risc(scsi_qla_host_t *vha, uint32_t *srisc_addr)
|
|
|
+{
|
|
|
+ int rval;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * FW Load priority:
|
|
|
+ * 1) Firmware residing in flash.
|
|
|
+ * 2) Firmware via request-firmware interface (.bin file).
|
|
|
+ */
|
|
|
+ rval = qla24xx_load_risc_flash(vha, srisc_addr);
|
|
|
+ if (rval == QLA_SUCCESS)
|
|
|
+ return rval;
|
|
|
+
|
|
|
+ return qla24xx_load_risc_blob(vha, srisc_addr);
|
|
|
+}
|
|
|
+
|
|
|
void
|
|
|
qla2x00_try_to_stop_firmware(scsi_qla_host_t *vha)
|
|
|
{
|