scsi: mpt3sas: Replace readl with ioc->base_readl
authorSuganath Prabu <suganath-prabu.subramani@broadcom.com>
Fri, 7 Dec 2018 07:28:34 +0000 (12:58 +0530)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 13 Dec 2018 02:29:07 +0000 (21:29 -0500)
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>
drivers/scsi/mpt3sas/mpt3sas_base.c

index d371c8e344d5900b5858f8235c45ed2318399b0e..8a0851ed0c39a158581808cd91c887216234a998 100644 (file)
@@ -742,7 +742,7 @@ mpt3sas_halt_firmware(struct MPT3SAS_ADAPTER *ioc)
 
        dump_stack();
 
-       doorbell = readl(&ioc->chip->Doorbell);
+       doorbell = ioc->base_readl(&ioc->chip->Doorbell);
        if ((doorbell & MPI2_IOC_STATE_MASK) == MPI2_IOC_STATE_FAULT)
                mpt3sas_base_fault_info(ioc , doorbell);
        else {
@@ -1351,10 +1351,10 @@ _base_mask_interrupts(struct MPT3SAS_ADAPTER *ioc)
        u32 him_register;
 
        ioc->mask_interrupts = 1;
-       him_register = readl(&ioc->chip->HostInterruptMask);
+       him_register = ioc->base_readl(&ioc->chip->HostInterruptMask);
        him_register |= MPI2_HIM_DIM + MPI2_HIM_RIM + MPI2_HIM_RESET_IRQ_MASK;
        writel(him_register, &ioc->chip->HostInterruptMask);
-       readl(&ioc->chip->HostInterruptMask);
+       ioc->base_readl(&ioc->chip->HostInterruptMask);
 }
 
 /**
@@ -1368,7 +1368,7 @@ _base_unmask_interrupts(struct MPT3SAS_ADAPTER *ioc)
 {
        u32 him_register;
 
-       him_register = readl(&ioc->chip->HostInterruptMask);
+       him_register = ioc->base_readl(&ioc->chip->HostInterruptMask);
        him_register &= ~MPI2_HIM_RIM;
        writel(him_register, &ioc->chip->HostInterruptMask);
        ioc->mask_interrupts = 0;
@@ -4880,7 +4880,7 @@ mpt3sas_base_get_iocstate(struct MPT3SAS_ADAPTER *ioc, int cooked)
 {
        u32 s, sc;
 
-       s = readl(&ioc->chip->Doorbell);
+       s = ioc->base_readl(&ioc->chip->Doorbell);
        sc = s & MPI2_IOC_STATE_MASK;
        return cooked ? sc : s;
 }
@@ -4936,7 +4936,7 @@ _base_wait_for_doorbell_int(struct MPT3SAS_ADAPTER *ioc, int timeout)
        count = 0;
        cntdn = 1000 * timeout;
        do {
-               int_status = readl(&ioc->chip->HostInterruptStatus);
+               int_status = ioc->base_readl(&ioc->chip->HostInterruptStatus);
                if (int_status & MPI2_HIS_IOC2SYS_DB_STATUS) {
                        dhsprintk(ioc,
                                  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)
        count = 0;
        cntdn = 2000 * timeout;
        do {
-               int_status = readl(&ioc->chip->HostInterruptStatus);
+               int_status = ioc->base_readl(&ioc->chip->HostInterruptStatus);
                if (int_status & MPI2_HIS_IOC2SYS_DB_STATUS) {
                        dhsprintk(ioc,
                                  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)
        count = 0;
        cntdn = 1000 * timeout;
        do {
-               int_status = readl(&ioc->chip->HostInterruptStatus);
+               int_status = ioc->base_readl(&ioc->chip->HostInterruptStatus);
                if (!(int_status & MPI2_HIS_SYS2IOC_DB_STATUS)) {
                        dhsprintk(ioc,
                                  ioc_info(ioc, "%s: successful count(%d), timeout(%d)\n",
                                           __func__, count, timeout));
                        return 0;
                } else if (int_status & MPI2_HIS_IOC2SYS_DB_STATUS) {
-                       doorbell = readl(&ioc->chip->Doorbell);
+                       doorbell = ioc->base_readl(&ioc->chip->Doorbell);
                        if ((doorbell & MPI2_IOC_STATE_MASK) ==
                            MPI2_IOC_STATE_FAULT) {
                                mpt3sas_base_fault_info(ioc , doorbell);
@@ -5042,7 +5042,7 @@ _base_wait_for_doorbell_not_used(struct MPT3SAS_ADAPTER *ioc, int timeout)
        count = 0;
        cntdn = 1000 * timeout;
        do {
-               doorbell_reg = readl(&ioc->chip->Doorbell);
+               doorbell_reg = ioc->base_readl(&ioc->chip->Doorbell);
                if (!(doorbell_reg & MPI2_DOORBELL_USED)) {
                        dhsprintk(ioc,
                                  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,
        __le32 *mfp;
 
        /* make sure doorbell is not in use */
-       if ((readl(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) {
+       if ((ioc->base_readl(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) {
                ioc_err(ioc, "doorbell is in use (line=%d)\n", __LINE__);
                return -EFAULT;
        }
 
        /* clear pending doorbell interrupts from previous state changes */
-       if (readl(&ioc->chip->HostInterruptStatus) &
+       if (ioc->base_readl(&ioc->chip->HostInterruptStatus) &
            MPI2_HIS_IOC2SYS_DB_STATUS)
                writel(0, &ioc->chip->HostInterruptStatus);
 
@@ -5206,7 +5206,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
        }
 
        /* read the first two 16-bits, it gives the total length of the reply */
-       reply[0] = le16_to_cpu(readl(&ioc->chip->Doorbell)
+       reply[0] = le16_to_cpu(ioc->base_readl(&ioc->chip->Doorbell)
            & MPI2_DOORBELL_DATA_MASK);
        writel(0, &ioc->chip->HostInterruptStatus);
        if ((_base_wait_for_doorbell_int(ioc, 5))) {
@@ -5214,7 +5214,7 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
                        __LINE__);
                return -EFAULT;
        }
-       reply[1] = le16_to_cpu(readl(&ioc->chip->Doorbell)
+       reply[1] = le16_to_cpu(ioc->base_readl(&ioc->chip->Doorbell)
            & MPI2_DOORBELL_DATA_MASK);
        writel(0, &ioc->chip->HostInterruptStatus);
 
@@ -5225,9 +5225,10 @@ _base_handshake_req_reply_wait(struct MPT3SAS_ADAPTER *ioc, int request_bytes,
                        return -EFAULT;
                }
                if (i >=  reply_bytes/2) /* overflow case */
-                       readl(&ioc->chip->Doorbell);
+                       ioc->base_readl(&ioc->chip->Doorbell);
                else
-                       reply[i] = le16_to_cpu(readl(&ioc->chip->Doorbell)
+                       reply[i] = le16_to_cpu(
+                           ioc->base_readl(&ioc->chip->Doorbell)
                            & MPI2_DOORBELL_DATA_MASK);
                writel(0, &ioc->chip->HostInterruptStatus);
        }
@@ -6053,14 +6054,14 @@ _base_diag_reset(struct MPT3SAS_ADAPTER *ioc)
                if (count++ > 20)
                        goto out;
 
-               host_diagnostic = readl(&ioc->chip->HostDiagnostic);
+               host_diagnostic = ioc->base_readl(&ioc->chip->HostDiagnostic);
                drsprintk(ioc,
                          ioc_info(ioc, "wrote magic sequence: count(%d), host_diagnostic(0x%08x)\n",
                                   count, host_diagnostic));
 
        } while ((host_diagnostic & MPI2_DIAG_DIAG_WRITE_ENABLE) == 0);
 
-       hcb_size = readl(&ioc->chip->HCBSize);
+       hcb_size = ioc->base_readl(&ioc->chip->HCBSize);
 
        drsprintk(ioc, ioc_info(ioc, "diag reset: issued\n"));
        writel(host_diagnostic | MPI2_DIAG_RESET_ADAPTER,
@@ -6073,7 +6074,7 @@ _base_diag_reset(struct MPT3SAS_ADAPTER *ioc)
        for (count = 0; count < (300000000 /
                MPI2_HARD_RESET_PCIE_SECOND_READ_DELAY_MICRO_SEC); count++) {
 
-               host_diagnostic = readl(&ioc->chip->HostDiagnostic);
+               host_diagnostic = ioc->base_readl(&ioc->chip->HostDiagnostic);
 
                if (host_diagnostic == 0xFFFFFFFF)
                        goto out;