
On 08/17/2018 10:22 AM, Ley Foon Tan wrote:
According to mailbox spec, software should send urgent command with urgent register instead of COUT location. This patch write urgent command index to urgent register.
Signed-off-by: Ley Foon Tan ley.foon.tan@intel.com
arch/arm/mach-socfpga/mailbox_s10.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/arch/arm/mach-socfpga/mailbox_s10.c b/arch/arm/mach-socfpga/mailbox_s10.c index cccd1a4..0d906c3 100644 --- a/arch/arm/mach-socfpga/mailbox_s10.c +++ b/arch/arm/mach-socfpga/mailbox_s10.c @@ -160,15 +160,15 @@ static __always_inline int mbox_send_cmd_common(u8 id, u32 cmd, u8 is_indirect, u32 buf_len; int ret;
- ret = mbox_prepare_cmd_only(id, cmd, is_indirect, len, arg);
- if (ret)
return ret;
- if (urgent) { /* Read status because it is toggled */ status = MBOX_READL(MBOX_STATUS) & MBOX_STATUS_UA_MSK;
/* Send command as urgent command */
MBOX_WRITEL(1, MBOX_URG);
/* Write urgent command to urgent register */
MBOX_WRITEL(cmd, MBOX_URG);
} else {
ret = mbox_prepare_cmd_only(id, cmd, is_indirect, len, arg);
if (ret)
return ret;
}
/* write doorbell */
@@ -188,8 +188,7 @@ static __always_inline int mbox_send_cmd_common(u8 id, u32 cmd, u8 is_indirect,
if (urgent) { u32 new_status = MBOX_READL(MBOX_STATUS);
/* urgent command doesn't have response */
MBOX_WRITEL(0, MBOX_URG);
/* Urgent ACK is toggled */ if ((new_status & MBOX_STATUS_UA_MSK) ^ status) return 0;
Applied, thanks.