Merge tag 'phy-for-5.18' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux...
[linux-2.6-microblaze.git] / drivers / fsi / fsi-scom.c
index da1486b..bcb756d 100644 (file)
@@ -145,7 +145,7 @@ static int put_indirect_scom_form0(struct scom_device *scom, uint64_t value,
                                   uint64_t addr, uint32_t *status)
 {
        uint64_t ind_data, ind_addr;
-       int rc, retries, err = 0;
+       int rc, err;
 
        if (value & ~XSCOM_DATA_IND_DATA)
                return -EINVAL;
@@ -156,19 +156,14 @@ static int put_indirect_scom_form0(struct scom_device *scom, uint64_t value,
        if (rc || (*status & SCOM_STATUS_ANY_ERR))
                return rc;
 
-       for (retries = 0; retries < SCOM_MAX_IND_RETRIES; retries++) {
-               rc = __get_scom(scom, &ind_data, addr, status);
-               if (rc || (*status & SCOM_STATUS_ANY_ERR))
-                       return rc;
+       rc = __get_scom(scom, &ind_data, addr, status);
+       if (rc || (*status & SCOM_STATUS_ANY_ERR))
+               return rc;
 
-               err = (ind_data & XSCOM_DATA_IND_ERR_MASK) >> XSCOM_DATA_IND_ERR_SHIFT;
-               *status = err << SCOM_STATUS_PIB_RESP_SHIFT;
-               if ((ind_data & XSCOM_DATA_IND_COMPLETE) || (err != SCOM_PIB_BLOCKED))
-                       return 0;
+       err = (ind_data & XSCOM_DATA_IND_ERR_MASK) >> XSCOM_DATA_IND_ERR_SHIFT;
+       *status = err << SCOM_STATUS_PIB_RESP_SHIFT;
 
-               msleep(1);
-       }
-       return rc;
+       return 0;
 }
 
 static int put_indirect_scom_form1(struct scom_device *scom, uint64_t value,
@@ -188,7 +183,7 @@ static int get_indirect_scom_form0(struct scom_device *scom, uint64_t *value,
                                   uint64_t addr, uint32_t *status)
 {
        uint64_t ind_data, ind_addr;
-       int rc, retries, err = 0;
+       int rc, err;
 
        ind_addr = addr & XSCOM_ADDR_DIRECT_PART;
        ind_data = (addr & XSCOM_ADDR_INDIRECT_PART) | XSCOM_DATA_IND_READ;
@@ -196,21 +191,15 @@ static int get_indirect_scom_form0(struct scom_device *scom, uint64_t *value,
        if (rc || (*status & SCOM_STATUS_ANY_ERR))
                return rc;
 
-       for (retries = 0; retries < SCOM_MAX_IND_RETRIES; retries++) {
-               rc = __get_scom(scom, &ind_data, addr, status);
-               if (rc || (*status & SCOM_STATUS_ANY_ERR))
-                       return rc;
-
-               err = (ind_data & XSCOM_DATA_IND_ERR_MASK) >> XSCOM_DATA_IND_ERR_SHIFT;
-               *status = err << SCOM_STATUS_PIB_RESP_SHIFT;
-               *value = ind_data & XSCOM_DATA_IND_DATA;
+       rc = __get_scom(scom, &ind_data, addr, status);
+       if (rc || (*status & SCOM_STATUS_ANY_ERR))
+               return rc;
 
-               if ((ind_data & XSCOM_DATA_IND_COMPLETE) || (err != SCOM_PIB_BLOCKED))
-                       return 0;
+       err = (ind_data & XSCOM_DATA_IND_ERR_MASK) >> XSCOM_DATA_IND_ERR_SHIFT;
+       *status = err << SCOM_STATUS_PIB_RESP_SHIFT;
+       *value = ind_data & XSCOM_DATA_IND_DATA;
 
-               msleep(1);
-       }
-       return rc;
+       return 0;
 }
 
 static int raw_put_scom(struct scom_device *scom, uint64_t value,
@@ -289,7 +278,7 @@ static int put_scom(struct scom_device *scom, uint64_t value,
        int rc;
 
        rc = raw_put_scom(scom, value, addr, &status);
-       if (rc == -ENODEV)
+       if (rc)
                return rc;
 
        rc = handle_fsi2pib_status(scom, status);
@@ -308,7 +297,7 @@ static int get_scom(struct scom_device *scom, uint64_t *value,
        int rc;
 
        rc = raw_get_scom(scom, value, addr, &status);
-       if (rc == -ENODEV)
+       if (rc)
                return rc;
 
        rc = handle_fsi2pib_status(scom, status);