aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla4xxx/ql4_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_init.c')
-rw-r--r--drivers/scsi/qla4xxx/ql4_init.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/scsi/qla4xxx/ql4_init.c b/drivers/scsi/qla4xxx/ql4_init.c
index 21f6f4bacd9d..b0bffe15c287 100644
--- a/drivers/scsi/qla4xxx/ql4_init.c
+++ b/drivers/scsi/qla4xxx/ql4_init.c
@@ -446,6 +446,21 @@ static int qla4xxx_init_firmware(struct scsi_qla_host *ha)
446 return qla4xxx_get_firmware_status(ha); 446 return qla4xxx_get_firmware_status(ha);
447} 447}
448 448
449static void qla4xxx_set_model_info(struct scsi_qla_host *ha)
450{
451 uint16_t board_id_string[8];
452 int i;
453 int size = sizeof(ha->nvram->isp4022.boardIdStr);
454 int offset = offsetof(struct eeprom_data, isp4022.boardIdStr) / 2;
455
456 for (i = 0; i < (size / 2) ; i++) {
457 board_id_string[i] = rd_nvram_word(ha, offset);
458 offset += 1;
459 }
460
461 memcpy(ha->model_name, board_id_string, size);
462}
463
449static int qla4xxx_config_nvram(struct scsi_qla_host *ha) 464static int qla4xxx_config_nvram(struct scsi_qla_host *ha)
450{ 465{
451 unsigned long flags; 466 unsigned long flags;
@@ -481,6 +496,12 @@ static int qla4xxx_config_nvram(struct scsi_qla_host *ha)
481 else 496 else
482 return QLA_ERROR; 497 return QLA_ERROR;
483 } 498 }
499
500 if (is_qla4022(ha) || is_qla4032(ha))
501 qla4xxx_set_model_info(ha);
502 else
503 strcpy(ha->model_name, "QLA4010");
504
484 DEBUG(printk("scsi%ld: %s: Setting extHwConfig to 0xFFFF%04x\n", 505 DEBUG(printk("scsi%ld: %s: Setting extHwConfig to 0xFFFF%04x\n",
485 ha->host_no, __func__, extHwConfig.Asuint32_t)); 506 ha->host_no, __func__, extHwConfig.Asuint32_t));
486 507