mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
scsi: pm80xx: Fix chip initialization failure
commit65df7d1986upstream. Inbound and outbound queues were not properly configured and that lead to MPI configuration failure. Fixes:05c6c029a4("scsi: pm80xx: Increase number of supported queues") Cc: stable@vger.kernel.org # 5.10+ Link: https://lore.kernel.org/r/20210402054212.17834-1-Viswas.G@microchip.com.com Reported-and-tested-by: Ash Izat <ash@ai0.uk> Signed-off-by: Viswas G <Viswas.G@microchip.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0c47d8a55f
commit
d8e7fa8509
@@ -223,7 +223,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha)
|
||||
PM8001_EVENT_LOG_SIZE;
|
||||
pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_option = 0x01;
|
||||
pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_interrupt = 0x01;
|
||||
for (i = 0; i < PM8001_MAX_INB_NUM; i++) {
|
||||
for (i = 0; i < pm8001_ha->max_q_num; i++) {
|
||||
pm8001_ha->inbnd_q_tbl[i].element_pri_size_cnt =
|
||||
PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x00<<30);
|
||||
pm8001_ha->inbnd_q_tbl[i].upper_base_addr =
|
||||
@@ -249,7 +249,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha)
|
||||
pm8001_ha->inbnd_q_tbl[i].producer_idx = 0;
|
||||
pm8001_ha->inbnd_q_tbl[i].consumer_index = 0;
|
||||
}
|
||||
for (i = 0; i < PM8001_MAX_OUTB_NUM; i++) {
|
||||
for (i = 0; i < pm8001_ha->max_q_num; i++) {
|
||||
pm8001_ha->outbnd_q_tbl[i].element_size_cnt =
|
||||
PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x01<<30);
|
||||
pm8001_ha->outbnd_q_tbl[i].upper_base_addr =
|
||||
@@ -671,9 +671,9 @@ static int pm8001_chip_init(struct pm8001_hba_info *pm8001_ha)
|
||||
read_outbnd_queue_table(pm8001_ha);
|
||||
/* update main config table ,inbound table and outbound table */
|
||||
update_main_config_table(pm8001_ha);
|
||||
for (i = 0; i < PM8001_MAX_INB_NUM; i++)
|
||||
for (i = 0; i < pm8001_ha->max_q_num; i++)
|
||||
update_inbnd_queue_table(pm8001_ha, i);
|
||||
for (i = 0; i < PM8001_MAX_OUTB_NUM; i++)
|
||||
for (i = 0; i < pm8001_ha->max_q_num; i++)
|
||||
update_outbnd_queue_table(pm8001_ha, i);
|
||||
/* 8081 controller donot require these operations */
|
||||
if (deviceid != 0x8081 && deviceid != 0x0042) {
|
||||
|
||||
Reference in New Issue
Block a user