diff options
author | Madhukar Pappireddy <madhukar.pappireddy@arm.com> | 2021-08-10 15:58:11 +0200 |
---|---|---|
committer | TrustedFirmware Code Review <review@review.trustedfirmware.org> | 2021-08-10 15:58:11 +0200 |
commit | e5c7a92b5066c4456a4f748ac9a75edfe3fe25c8 (patch) | |
tree | 935feccb295eb7ff6ba7737208e27473f2c00364 | |
parent | abde216dc8ac95c43ad4b477a669b1249be6e289 (diff) | |
parent | 62f9134de08041322c8e970b19b7bd3d4f176275 (diff) | |
download | arm-trusted-firmware-e5c7a92b5066c4456a4f748ac9a75edfe3fe25c8.tar.gz |
Merge "revert(plat/xilinx): add timeout while waiting for IPI Ack" into integration
-rw-r--r-- | plat/xilinx/common/include/ipi.h | 2 | ||||
-rw-r--r-- | plat/xilinx/common/ipi.c | 15 | ||||
-rw-r--r-- | plat/xilinx/common/ipi_mailbox_service/ipi_mailbox_svc.c | 4 | ||||
-rw-r--r-- | plat/xilinx/common/pm_service/pm_ipi.c | 8 |
4 files changed, 6 insertions, 23 deletions
diff --git a/plat/xilinx/common/include/ipi.h b/plat/xilinx/common/include/ipi.h index 9c1d0f267..483902e0e 100644 --- a/plat/xilinx/common/include/ipi.h +++ b/plat/xilinx/common/include/ipi.h @@ -63,7 +63,7 @@ void ipi_mb_release(uint32_t local, uint32_t remote); int ipi_mb_enquire_status(uint32_t local, uint32_t remote); /* Trigger notification on the IPI mailbox */ -int ipi_mb_notify(uint32_t local, uint32_t remote, uint32_t is_blocking); +void ipi_mb_notify(uint32_t local, uint32_t remote, uint32_t is_blocking); /* Ack IPI mailbox notification */ void ipi_mb_ack(uint32_t local, uint32_t remote); diff --git a/plat/xilinx/common/ipi.c b/plat/xilinx/common/ipi.c index ca4146e2a..0b8020b40 100644 --- a/plat/xilinx/common/ipi.c +++ b/plat/xilinx/common/ipi.c @@ -13,7 +13,6 @@ #include <common/debug.h> #include <common/runtime_svc.h> -#include <drivers/delay_timer.h> #include <lib/bakery_lock.h> #include <lib/mmio.h> @@ -39,9 +38,6 @@ /* IPI register bit mask */ #define IPI_BIT_MASK(I) (ipi_table[(I)].ipi_bit_mask) -/* IPI Timeout */ -#define TIMEOUT_COUNT_US U(0x4000) - /* IPI configuration table */ const static struct ipi_config *ipi_table; @@ -160,30 +156,21 @@ int ipi_mb_enquire_status(uint32_t local, uint32_t remote) * @remote - remote IPI ID * @is_blocking - if to trigger the notification in blocking mode or not. * - * return - 0 - Success or Error incase of timeout * It sets the remote bit in the IPI agent trigger register. * */ -int ipi_mb_notify(uint32_t local, uint32_t remote, uint32_t is_blocking) +void ipi_mb_notify(uint32_t local, uint32_t remote, uint32_t is_blocking) { uint32_t status; - const unsigned int timeout_count = TIMEOUT_COUNT_US; - uint64_t timeout; mmio_write_32(IPI_REG_BASE(local) + IPI_TRIG_OFFSET, IPI_BIT_MASK(remote)); if (is_blocking) { - timeout = timeout_init_us(timeout_count); do { status = mmio_read_32(IPI_REG_BASE(local) + IPI_OBR_OFFSET); - if (timeout_elapsed(timeout)) { - return -ETIMEDOUT; - } } while (status & IPI_BIT_MASK(remote)); } - - return 0; } /* ipi_mb_ack() - Ack IPI mailbox notification from the other end diff --git a/plat/xilinx/common/ipi_mailbox_service/ipi_mailbox_svc.c b/plat/xilinx/common/ipi_mailbox_service/ipi_mailbox_svc.c index cd5d8303d..f53115885 100644 --- a/plat/xilinx/common/ipi_mailbox_service/ipi_mailbox_svc.c +++ b/plat/xilinx/common/ipi_mailbox_service/ipi_mailbox_svc.c @@ -107,8 +107,8 @@ uint64_t ipi_smc_handler(uint32_t smc_fid, uint64_t x1, uint64_t x2, uint32_t is_blocking; is_blocking = (x3 & IPI_SMC_NOTIFY_BLOCK_MASK) ? 1 : 0; - ret = ipi_mb_notify(ipi_local_id, ipi_remote_id, is_blocking); - SMC_RET1(handle, ret); + ipi_mb_notify(ipi_local_id, ipi_remote_id, is_blocking); + SMC_RET1(handle, 0); } case IPI_MAILBOX_ACK: { diff --git a/plat/xilinx/common/pm_service/pm_ipi.c b/plat/xilinx/common/pm_service/pm_ipi.c index 7b5bd0280..7b2c8ecb1 100644 --- a/plat/xilinx/common/pm_service/pm_ipi.c +++ b/plat/xilinx/common/pm_service/pm_ipi.c @@ -55,7 +55,6 @@ static enum pm_ret_status pm_ipi_send_common(const struct pm_proc *proc, uint32_t payload[PAYLOAD_ARG_CNT], uint32_t is_blocking) { - int status; unsigned int offset = 0; uintptr_t buffer_base = proc->ipi->buffer_base + IPI_BUFFER_TARGET_REMOTE_OFFSET + @@ -71,13 +70,10 @@ static enum pm_ret_status pm_ipi_send_common(const struct pm_proc *proc, } /* Generate IPI to remote processor */ - status = ipi_mb_notify(proc->ipi->local_ipi_id, proc->ipi->remote_ipi_id, + ipi_mb_notify(proc->ipi->local_ipi_id, proc->ipi->remote_ipi_id, is_blocking); - if (status == 0) { - return PM_RET_SUCCESS; - } - return PM_RET_ERROR_TIMEOUT; + return PM_RET_SUCCESS; } /** |