Commit 0251ce8c authored by Saurav Kashyap's avatar Saurav Kashyap Committed by James Bottomley

[SCSI] qla2xxx: set idc version if function is first one to come.

Signed-off-by: default avatarSaurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: default avatarChad Dupuis <chad.dupuis@qlogic.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 45980cc2
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
* | AER/EEH | 0x9011 | | * | AER/EEH | 0x9011 | |
* | Virtual Port | 0xa007 | | * | Virtual Port | 0xa007 | |
* | ISP82XX Specific | 0xb084 | 0xb002,0xb024 | * | ISP82XX Specific | 0xb084 | 0xb002,0xb024 |
* | | | 0xb082,0xb083 |
* | MultiQ | 0xc00c | | * | MultiQ | 0xc00c | |
* | Misc | 0xd010 | | * | Misc | 0xd010 | |
* | Target Mode | 0xe06f | | * | Target Mode | 0xe06f | |
......
...@@ -2302,6 +2302,29 @@ void qla82xx_init_flags(struct qla_hw_data *ha) ...@@ -2302,6 +2302,29 @@ void qla82xx_init_flags(struct qla_hw_data *ha)
ha->nx_legacy_intr.pci_int_reg = nx_legacy_intr->pci_int_reg; ha->nx_legacy_intr.pci_int_reg = nx_legacy_intr->pci_int_reg;
} }
inline void
qla82xx_set_idc_version(scsi_qla_host_t *vha)
{
int idc_ver;
uint32_t drv_active;
struct qla_hw_data *ha = vha->hw;
drv_active = qla82xx_rd_32(ha, QLA82XX_CRB_DRV_ACTIVE);
if (drv_active == (QLA82XX_DRV_ACTIVE << (ha->portnum * 4))) {
qla82xx_wr_32(ha, QLA82XX_CRB_DRV_IDC_VERSION,
QLA82XX_IDC_VERSION);
ql_log(ql_log_info, vha, 0xb082,
"IDC version updated to %d\n", QLA82XX_IDC_VERSION);
} else {
idc_ver = qla82xx_rd_32(ha, QLA82XX_CRB_DRV_IDC_VERSION);
if (idc_ver != QLA82XX_IDC_VERSION)
ql_log(ql_log_info, vha, 0xb083,
"qla2xxx driver IDC version %d is not compatible "
"with IDC version %d of the other drivers\n",
QLA82XX_IDC_VERSION, idc_ver);
}
}
inline void inline void
qla82xx_set_drv_active(scsi_qla_host_t *vha) qla82xx_set_drv_active(scsi_qla_host_t *vha)
{ {
...@@ -2878,9 +2901,6 @@ qla82xx_device_bootstrap(scsi_qla_host_t *vha) ...@@ -2878,9 +2901,6 @@ qla82xx_device_bootstrap(scsi_qla_host_t *vha)
"HW State: INITIALIZING.\n"); "HW State: INITIALIZING.\n");
qla82xx_wr_32(ha, QLA82XX_CRB_DEV_STATE, QLA8XXX_DEV_INITIALIZING); qla82xx_wr_32(ha, QLA82XX_CRB_DEV_STATE, QLA8XXX_DEV_INITIALIZING);
/* Driver that sets device state to initializating sets IDC version */
qla82xx_wr_32(ha, QLA82XX_CRB_DRV_IDC_VERSION, QLA82XX_IDC_VERSION);
qla82xx_idc_unlock(ha); qla82xx_idc_unlock(ha);
rval = qla82xx_start_firmware(vha); rval = qla82xx_start_firmware(vha);
qla82xx_idc_lock(ha); qla82xx_idc_lock(ha);
...@@ -3210,8 +3230,10 @@ qla82xx_device_state_handler(scsi_qla_host_t *vha) ...@@ -3210,8 +3230,10 @@ qla82xx_device_state_handler(scsi_qla_host_t *vha)
int loopcount = 0; int loopcount = 0;
qla82xx_idc_lock(ha); qla82xx_idc_lock(ha);
if (!vha->flags.init_done) if (!vha->flags.init_done) {
qla82xx_set_drv_active(vha); qla82xx_set_drv_active(vha);
qla82xx_set_idc_version(vha);
}
dev_state = qla82xx_rd_32(ha, QLA82XX_CRB_DEV_STATE); dev_state = qla82xx_rd_32(ha, QLA82XX_CRB_DEV_STATE);
old_dev_state = dev_state; old_dev_state = dev_state;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment