Skip to content

Commit 306eaf2

Browse files
suganathprabu0512martinkpetersen
authored andcommitted
scsi: mpt3sas: Replace readl with ioc->base_readl
Use ioc->base_readl to restrict the readl retries to only Aero controllers. Signed-off-by: Suganath Prabu <suganath-prabu.subramani@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
1 parent b899202 commit 306eaf2

File tree

1 file changed

+20
-19
lines changed

1 file changed

+20
-19
lines changed

drivers/scsi/mpt3sas/mpt3sas_base.c

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ mpt3sas_halt_firmware(struct MPT3SAS_ADAPTER *ioc)
742742

743743
dump_stack();
744744

745-
doorbell = readl(&ioc->chip->Doorbell);
745+
doorbell = ioc->base_readl(&ioc->chip->Doorbell);
746746
if ((doorbell & MPI2_IOC_STATE_MASK) == MPI2_IOC_STATE_FAULT)
747747
mpt3sas_base_fault_info(ioc , doorbell);
748748
else {
@@ -1351,10 +1351,10 @@ _base_mask_interrupts(struct MPT3SAS_ADAPTER *ioc)
13511351
u32 him_register;
13521352

13531353
ioc->mask_interrupts = 1;
1354-
him_register = readl(&ioc->chip->HostInterruptMask);
1354+
him_register = ioc->base_readl(&ioc->chip->HostInterruptMask);
13551355
him_register |= MPI2_HIM_DIM + MPI2_HIM_RIM + MPI2_HIM_RESET_IRQ_MASK;
13561356
writel(him_register, &ioc->chip->HostInterruptMask);
1357-
readl(&ioc->chip->HostInterruptMask);
1357+
ioc->base_readl(&ioc->chip->HostInterruptMask);
13581358
}
13591359

13601360
/**
@@ -1368,7 +1368,7 @@ _base_unmask_interrupts(struct MPT3SAS_ADAPTER *ioc)
13681368
{
13691369
u32 him_register;
13701370

1371-
him_register = readl(&ioc->chip->HostInterruptMask);
1371+
him_register = ioc->base_readl(&ioc->chip->HostInterruptMask);
13721372
him_register &= ~MPI2_HIM_RIM;
13731373
writel(him_register, &ioc->chip->HostInterruptMask);
13741374
ioc->mask_interrupts = 0;
@@ -4880,7 +4880,7 @@ mpt3sas_base_get_iocstate(struct MPT3SAS_ADAPTER *ioc, int cooked)
48804880
{
48814881
u32 s, sc;
48824882

4883-
s = readl(&ioc->chip->Doorbell);
4883+
s = ioc->base_readl(&ioc->chip->Doorbell);
48844884
sc = s & MPI2_IOC_STATE_MASK;
48854885
return cooked ? sc : s;
48864886
}
@@ -4936,7 +4936,7 @@ _base_wait_for_doorbell_int(struct MPT3SAS_ADAPTER *ioc, int timeout)
49364936
count = 0;
49374937
cntdn = 1000 * timeout;
49384938
do {
4939-
int_status = readl(&ioc->chip->HostInterruptStatus);
4939+
int_status = ioc->base_readl(&ioc->chip->HostInterruptStatus);
49404940
if (int_status & MPI2_HIS_IOC2SYS_DB_STATUS) {
49414941
dhsprintk(ioc,
49424942
ioc_info(ioc, "%s: successful count(%d), timeout(%d)\n",
@@ -4962,7 +4962,7 @@ _base_spin_on_doorbell_int(struct MPT3SAS_ADAPTER *ioc, int timeout)
49624962
count = 0;
49634963
cntdn = 2000 * timeout;
49644964
do {
4965-
int_status = readl(&ioc->chip->HostInterruptStatus);
4965+
int_status = ioc->base_readl(&ioc->chip->HostInterruptStatus);
49664966
if (int_status & MPI2_HIS_IOC2SYS_DB_STATUS) {
49674967
dhsprintk(ioc,
49684968
ioc_info(ioc, "%s: successful count(%d), timeout(%d)\n",
@@ -5000,14 +5000,14 @@ _base_wait_for_doorbell_ack(struct MPT3SAS_ADAPTER *ioc, int timeout)
50005000
count = 0;
50015001
cntdn = 1000 * timeout;
50025002
do {
5003-
int_status = readl(&ioc->chip->HostInterruptStatus);
5003+
int_status = ioc->base_readl(&ioc->chip->HostInterruptStatus);
50045004
if (!(int_status & MPI2_HIS_SYS2IOC_DB_STATUS)) {
50055005
dhsprintk(ioc,
50065006
ioc_info(ioc, "%s: successful count(%d), timeout(%d)\n",
50075007
__func__, count, timeout));
50085008
return 0;
50095009
} else if (int_status & MPI2_HIS_IOC2SYS_DB_STATUS) {
5010-
doorbell = readl(&ioc->chip->Doorbell);
5010+
doorbell = ioc->base_readl(&ioc->chip->Doorbell);
50115011
if ((doorbell & MPI2_IOC_STATE_MASK) ==
50125012
MPI2_IOC_STATE_FAULT) {
50135013
mpt3sas_base_fault_info(ioc , doorbell);
@@ -5042,7 +5042,7 @@ _base_wait_for_doorbell_not_used(struct MPT3SAS_ADAPTER *ioc, int timeout)
50425042
count = 0;
50435043
cntdn = 1000 * timeout;
50445044
do {
5045-
doorbell_reg = readl(&ioc->chip->Doorbell);
5045+
doorbell_reg = ioc->base_readl(&ioc->chip->Doorbell);
50465046
if (!(doorbell_reg & MPI2_DOORBELL_USED)) {
50475047
dhsprintk(ioc,
50485048
ioc_info(ioc, "%s: successful count(%d), timeout(%d)\n",
@@ -5157,13 +5157,13 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
51575157
__le32 *mfp;
51585158

51595159
/* make sure doorbell is not in use */
5160-
if ((readl(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) {
5160+
if ((ioc->base_readl(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) {
51615161
ioc_err(ioc, "doorbell is in use (line=%d)\n", __LINE__);
51625162
return -EFAULT;
51635163
}
51645164

51655165
/* clear pending doorbell interrupts from previous state changes */
5166-
if (readl(&ioc->chip->HostInterruptStatus) &
5166+
if (ioc->base_readl(&ioc->chip->HostInterruptStatus) &
51675167
MPI2_HIS_IOC2SYS_DB_STATUS)
51685168
writel(0, &ioc->chip->HostInterruptStatus);
51695169

@@ -5206,15 +5206,15 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
52065206
}
52075207

52085208
/* read the first two 16-bits, it gives the total length of the reply */
5209-
reply[0] = le16_to_cpu(readl(&ioc->chip->Doorbell)
5209+
reply[0] = le16_to_cpu(ioc->base_readl(&ioc->chip->Doorbell)
52105210
& MPI2_DOORBELL_DATA_MASK);
52115211
writel(0, &ioc->chip->HostInterruptStatus);
52125212
if ((_base_wait_for_doorbell_int(ioc, 5))) {
52135213
ioc_err(ioc, "doorbell handshake int failed (line=%d)\n",
52145214
__LINE__);
52155215
return -EFAULT;
52165216
}
5217-
reply[1] = le16_to_cpu(readl(&ioc->chip->Doorbell)
5217+
reply[1] = le16_to_cpu(ioc->base_readl(&ioc->chip->Doorbell)
52185218
& MPI2_DOORBELL_DATA_MASK);
52195219
writel(0, &ioc->chip->HostInterruptStatus);
52205220

@@ -5225,9 +5225,10 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
52255225
return -EFAULT;
52265226
}
52275227
if (i >= reply_bytes/2) /* overflow case */
5228-
readl(&ioc->chip->Doorbell);
5228+
ioc->base_readl(&ioc->chip->Doorbell);
52295229
else
5230-
reply[i] = le16_to_cpu(readl(&ioc->chip->Doorbell)
5230+
reply[i] = le16_to_cpu(
5231+
ioc->base_readl(&ioc->chip->Doorbell)
52315232
& MPI2_DOORBELL_DATA_MASK);
52325233
writel(0, &ioc->chip->HostInterruptStatus);
52335234
}
@@ -6053,14 +6054,14 @@ _base_diag_reset(struct MPT3SAS_ADAPTER *ioc)
60536054
if (count++ > 20)
60546055
goto out;
60556056

6056-
host_diagnostic = readl(&ioc->chip->HostDiagnostic);
6057+
host_diagnostic = ioc->base_readl(&ioc->chip->HostDiagnostic);
60576058
drsprintk(ioc,
60586059
ioc_info(ioc, "wrote magic sequence: count(%d), host_diagnostic(0x%08x)\n",
60596060
count, host_diagnostic));
60606061

60616062
} while ((host_diagnostic & MPI2_DIAG_DIAG_WRITE_ENABLE) == 0);
60626063

6063-
hcb_size = readl(&ioc->chip->HCBSize);
6064+
hcb_size = ioc->base_readl(&ioc->chip->HCBSize);
60646065

60656066
drsprintk(ioc, ioc_info(ioc, "diag reset: issued\n"));
60666067
writel(host_diagnostic | MPI2_DIAG_RESET_ADAPTER,
@@ -6073,7 +6074,7 @@ _base_diag_reset(struct MPT3SAS_ADAPTER *ioc)
60736074
for (count = 0; count < (300000000 /
60746075
MPI2_HARD_RESET_PCIE_SECOND_READ_DELAY_MICRO_SEC); count++) {
60756076

6076-
host_diagnostic = readl(&ioc->chip->HostDiagnostic);
6077+
host_diagnostic = ioc->base_readl(&ioc->chip->HostDiagnostic);
60776078

60786079
if (host_diagnostic == 0xFFFFFFFF)
60796080
goto out;

0 commit comments

Comments
 (0)