ARM: socfpga: stratix10: Return valid error code from FPGA driver
This patch prevent the Stratix 10 FPGA driver incorrectly return the transaction ID as the mailbox error code. It should always return the actual mailbox error code from SDM firmware. Signed-off-by: Ang, Chee Hong <chee.hong.ang@intel.com>
This commit is contained in:
parent
7997599e2d
commit
5097ba6177
@ -172,7 +172,7 @@ static int send_reconfig_data(const void *rbf_data, size_t rbf_size,
|
|||||||
u32 resp_windex = 0;
|
u32 resp_windex = 0;
|
||||||
u32 resp_count = 0;
|
u32 resp_count = 0;
|
||||||
u32 xfer_count = 0;
|
u32 xfer_count = 0;
|
||||||
u8 resp_err = 0;
|
int resp_err = 0;
|
||||||
u8 cmd_id = 1;
|
u8 cmd_id = 1;
|
||||||
u32 args[3];
|
u32 args[3];
|
||||||
int ret;
|
int ret;
|
||||||
@ -195,11 +195,9 @@ static int send_reconfig_data(const void *rbf_data, size_t rbf_size,
|
|||||||
rbf_size = 0;
|
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);
|
MBOX_CMD_INDIRECT, 3, args);
|
||||||
if (ret) {
|
if (!resp_err) {
|
||||||
resp_err = 1;
|
|
||||||
} else {
|
|
||||||
xfer_count++;
|
xfer_count++;
|
||||||
cmd_id = add_transfer(xfer_pending,
|
cmd_id = add_transfer(xfer_pending,
|
||||||
MBOX_RESP_BUFFER_SIZE,
|
MBOX_RESP_BUFFER_SIZE,
|
||||||
@ -222,11 +220,8 @@ static int send_reconfig_data(const void *rbf_data, size_t rbf_size,
|
|||||||
|
|
||||||
/* Check for response's status */
|
/* Check for response's status */
|
||||||
if (!resp_err) {
|
if (!resp_err) {
|
||||||
ret = MBOX_RESP_ERR_GET(resp_hdr);
|
resp_err = MBOX_RESP_ERR_GET(resp_hdr);
|
||||||
debug("Response error code: %08x\n", ret);
|
debug("Response error code: %08x\n", resp_err);
|
||||||
/* Error in response */
|
|
||||||
if (ret)
|
|
||||||
resp_err = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = get_and_clr_transfer(xfer_pending,
|
ret = get_and_clr_transfer(xfer_pending,
|
||||||
@ -239,7 +234,7 @@ static int send_reconfig_data(const void *rbf_data, size_t rbf_size,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (resp_err && !xfer_count)
|
if (resp_err && !xfer_count)
|
||||||
return ret;
|
return resp_err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user