diff options
Diffstat (limited to 'drivers/scsi/qla4xxx/ql4_init.c')
-rw-r--r-- | drivers/scsi/qla4xxx/ql4_init.c | 21 |
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 | ||
449 | static 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 | |||
449 | static int qla4xxx_config_nvram(struct scsi_qla_host *ha) | 464 | static 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 | ||