Message ID | 1534494123-9257-2-git-send-email-ley.foon.tan@intel.com |
---|---|
State | Accepted |
Commit | 8497cb9b25302e75a4422502c9d13d310ffbcfd2 |
Delegated to: | Marek Vasut |
Headers | show |
Series | [U-Boot] arm: socfpga: stratix10: Fix mailbox urgent command with urgent register | expand |
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.
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;
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(-)