diff options
Diffstat (limited to 'arch/arm/mach-socfpga/mailbox_s10.c')
-rw-r--r-- | arch/arm/mach-socfpga/mailbox_s10.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/arch/arm/mach-socfpga/mailbox_s10.c b/arch/arm/mach-socfpga/mailbox_s10.c index eb972edb2f..ca4b95dbf8 100644 --- a/arch/arm/mach-socfpga/mailbox_s10.c +++ b/arch/arm/mach-socfpga/mailbox_s10.c @@ -93,6 +93,8 @@ static __always_inline int mbox_write_cmd_buffer(u32 *cin, u32 data, MBOX_WRITE_CMD_BUF(data, (*cin)++); *cin %= MBOX_CMD_BUFFER_SIZE; MBOX_WRITEL(*cin, MBOX_CIN); + if (is_cmdbuf_overflow) + *is_cmdbuf_overflow = 0; break; } timeout--; @@ -101,10 +103,6 @@ static __always_inline int mbox_write_cmd_buffer(u32 *cin, u32 data, if (!timeout) return -ETIMEDOUT; - /* Wait for the SDM to drain the FIFO command buffer */ - if (is_cmdbuf_overflow && *is_cmdbuf_overflow) - return mbox_wait_for_cmdbuf_empty(*cin); - return 0; } @@ -130,13 +128,10 @@ static __always_inline int mbox_fill_cmd_circular_buff(u32 header, u32 len, return ret; } - /* If SDM doorbell is not triggered after the last data is - * written into mailbox FIFO command buffer, trigger the - * SDM doorbell again to ensure SDM able to read the remaining - * data. + /* Always trigger the SDM doorbell at the end to ensure SDM able to read + * the remaining data. */ - if (!is_cmdbuf_overflow) - MBOX_WRITEL(1, MBOX_DOORBELL_TO_SDM); + MBOX_WRITEL(1, MBOX_DOORBELL_TO_SDM); return 0; } |