[SCSI] qla2xxx: set idc version if function is first one to come.
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com> Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Родитель
45980cc22e
Коммит
0251ce8cf2
|
@ -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)
|
||||||
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 @@ dev_initialize:
|
||||||
"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)
|
||||||
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;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче