mmc: fsl_esdhc: workaround for hardware 3.3v IO reliability issue
[oweals/u-boot.git] / drivers / fpga / stratix10.c
index aae052130e0de52de6c1e202b7d4ffc2d8f7e305..da8fa315e36622bfdb3f6e36629d95adf14e654b 100644 (file)
@@ -5,7 +5,9 @@
 
 #include <common.h>
 #include <altera.h>
+#include <log.h>
 #include <asm/arch/mailbox_s10.h>
+#include <linux/delay.h>
 
 #define RECONFIG_STATUS_POLL_RESP_TIMEOUT_MS           60000
 #define RECONFIG_STATUS_INTERVAL_DELAY_US              1000000
@@ -172,7 +174,7 @@ static int send_reconfig_data(const void *rbf_data, size_t rbf_size,
        u32 resp_windex = 0;
        u32 resp_count = 0;
        u32 xfer_count = 0;
-       u8 resp_err = 0;
+       int resp_err = 0;
        u8 cmd_id = 1;
        u32 args[3];
        int ret;
@@ -195,11 +197,9 @@ static int send_reconfig_data(const void *rbf_data, size_t rbf_size,
                                rbf_size = 0;
                        }
 
-                       ret = mbox_send_cmd_only(cmd_id, MBOX_RECONFIG_DATA,
+                       resp_err = mbox_send_cmd_only(cmd_id, MBOX_RECONFIG_DATA,
                                                 MBOX_CMD_INDIRECT, 3, args);
-                       if (ret) {
-                               resp_err = 1;
-                       } else {
+                       if (!resp_err) {
                                xfer_count++;
                                cmd_id = add_transfer(xfer_pending,
                                                      MBOX_RESP_BUFFER_SIZE,
@@ -222,11 +222,8 @@ static int send_reconfig_data(const void *rbf_data, size_t rbf_size,
 
                        /* Check for response's status */
                        if (!resp_err) {
-                               ret = MBOX_RESP_ERR_GET(resp_hdr);
-                               debug("Response error code: %08x\n", ret);
-                               /* Error in response */
-                               if (ret)
-                                       resp_err = 1;
+                               resp_err = MBOX_RESP_ERR_GET(resp_hdr);
+                               debug("Response error code: %08x\n", resp_err);
                        }
 
                        ret = get_and_clr_transfer(xfer_pending,
@@ -239,7 +236,7 @@ static int send_reconfig_data(const void *rbf_data, size_t rbf_size,
                        }
 
                        if (resp_err && !xfer_count)
-                               return ret;
+                               return resp_err;
                }
        }