Skip to content

Commit

Permalink
Merge changes I3c25c715,I6d30b081 into integration
Browse files Browse the repository at this point in the history
* changes:
  plat: xilinx: versal: Add the IPI CRC checksum macro support
  plat: xilinx: common: Rename the IPI CRC checksum macro
  • Loading branch information
manish-pandey-arm authored and TrustedFirmware Code Review committed Apr 21, 2021
2 parents 745df30 + 654bd99 commit 617632b
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 23 deletions.
12 changes: 12 additions & 0 deletions plat/xilinx/common/include/pm_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,18 @@
#include <stdint.h>
#include <plat_pm_common.h>

#if IPI_CRC_CHECK
#define PAYLOAD_ARG_CNT 8U
#define IPI_W0_TO_W6_SIZE 28U
#define PAYLOAD_CRC_POS 7U
#define CRC_INIT_VALUE 0x4F4EU
#define CRC_ORDER 16U
#define CRC_POLYNOM 0x8005U
#else
#define PAYLOAD_ARG_CNT 6U
#endif
#define PAYLOAD_ARG_SIZE 4U /* size in bytes */

/**
* pm_ipi - struct for capturing IPI-channel specific info
* @local_ipi_id Local IPI agent ID
Expand Down
2 changes: 1 addition & 1 deletion plat/xilinx/common/include/pm_ipi.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ void pm_ipi_buff_read_callb(unsigned int *value, size_t count);
void pm_ipi_irq_enable(const struct pm_proc *proc);
void pm_ipi_irq_clear(const struct pm_proc *proc);
uint32_t pm_ipi_irq_status(const struct pm_proc *proc);
#if ZYNQMP_IPI_CRC_CHECK
#if IPI_CRC_CHECK
uint32_t calculate_crc(uint32_t payload[PAYLOAD_ARG_CNT], uint32_t buffersize);
#endif

Expand Down
12 changes: 6 additions & 6 deletions plat/xilinx/common/pm_service/pm_ipi.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ static enum pm_ret_status pm_ipi_send_common(const struct pm_proc *proc,
uintptr_t buffer_base = proc->ipi->buffer_base +
IPI_BUFFER_TARGET_REMOTE_OFFSET +
IPI_BUFFER_REQ_OFFSET;
#if ZYNQMP_IPI_CRC_CHECK
#if IPI_CRC_CHECK
payload[PAYLOAD_CRC_POS] = calculate_crc(payload, IPI_W0_TO_W6_SIZE);
#endif

Expand Down Expand Up @@ -141,7 +141,7 @@ static enum pm_ret_status pm_ipi_buff_read(const struct pm_proc *proc,
unsigned int *value, size_t count)
{
size_t i;
#if ZYNQMP_IPI_CRC_CHECK
#if IPI_CRC_CHECK
size_t j;
unsigned int response_payload[PAYLOAD_ARG_CNT];
#endif
Expand All @@ -160,7 +160,7 @@ static enum pm_ret_status pm_ipi_buff_read(const struct pm_proc *proc,
*value = mmio_read_32(buffer_base + (i * PAYLOAD_ARG_SIZE));
value++;
}
#if ZYNQMP_IPI_CRC_CHECK
#if IPI_CRC_CHECK
for (j = 0; j < PAYLOAD_ARG_CNT; j++)
response_payload[j] = mmio_read_32(buffer_base +
(j * PAYLOAD_ARG_SIZE));
Expand All @@ -185,7 +185,7 @@ static enum pm_ret_status pm_ipi_buff_read(const struct pm_proc *proc,
void pm_ipi_buff_read_callb(unsigned int *value, size_t count)
{
size_t i;
#if ZYNQMP_IPI_CRC_CHECK
#if IPI_CRC_CHECK
size_t j;
unsigned int response_payload[PAYLOAD_ARG_CNT];
#endif
Expand All @@ -200,7 +200,7 @@ void pm_ipi_buff_read_callb(unsigned int *value, size_t count)
*value = mmio_read_32(buffer_base + (i * PAYLOAD_ARG_SIZE));
value++;
}
#if ZYNQMP_IPI_CRC_CHECK
#if IPI_CRC_CHECK
for (j = 0; j < PAYLOAD_ARG_CNT; j++)
response_payload[j] = mmio_read_32(buffer_base +
(j * PAYLOAD_ARG_SIZE));
Expand Down Expand Up @@ -266,7 +266,7 @@ uint32_t pm_ipi_irq_status(const struct pm_proc *proc)
return 0;
}

#if ZYNQMP_IPI_CRC_CHECK
#if IPI_CRC_CHECK
uint32_t calculate_crc(uint32_t *payload, uint32_t bufsize)
{
uint32_t crcinit = CRC_INIT_VALUE;
Expand Down
3 changes: 0 additions & 3 deletions plat/xilinx/versal/include/plat_pm_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@
#include <stdint.h>
#include "pm_defs.h"

#define PAYLOAD_ARG_CNT 6U
#define PAYLOAD_ARG_SIZE 4U /* size in bytes */

#define NON_SECURE_FLAG 1U
#define SECURE_FLAG 0U

Expand Down
5 changes: 5 additions & 0 deletions plat/xilinx/versal/platform.mk
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ A53_DISABLE_NON_TEMPORAL_HINT := 0
SEPARATE_CODE_AND_RODATA := 1
override RESET_TO_BL31 := 1
PL011_GENERIC_UART := 1
IPI_CRC_CHECK := 0

ifdef VERSAL_ATF_MEM_BASE
$(eval $(call add_define,VERSAL_ATF_MEM_BASE))
Expand All @@ -31,6 +32,10 @@ ifdef VERSAL_BL32_MEM_BASE
$(eval $(call add_define,VERSAL_BL32_MEM_SIZE))
endif

ifdef IPI_CRC_CHECK
$(eval $(call add_define,IPI_CRC_CHECK))
endif

VERSAL_PLATFORM ?= silicon
$(eval $(call add_define_val,VERSAL_PLATFORM,VERSAL_PLATFORM_ID_${VERSAL_PLATFORM}))

Expand Down
11 changes: 0 additions & 11 deletions plat/xilinx/zynqmp/include/plat_pm_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,6 @@
#include <common/debug.h>
#include "pm_defs.h"

#if ZYNQMP_IPI_CRC_CHECK
#define PAYLOAD_ARG_CNT 8U
#define IPI_W0_TO_W6_SIZE 28U
#define PAYLOAD_CRC_POS 7U
#define CRC_INIT_VALUE 0x4F4EU
#define CRC_ORDER 16U
#define CRC_POLYNOM 0x8005U
#else
#define PAYLOAD_ARG_CNT 6U
#endif
#define PAYLOAD_ARG_SIZE 4U /* size in bytes */

#define ZYNQMP_TZ_VERSION_MAJOR 1
#define ZYNQMP_TZ_VERSION_MINOR 0
Expand Down
8 changes: 6 additions & 2 deletions plat/xilinx/zynqmp/platform.mk
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ PSCI_EXTENDED_STATE_ID := 1
A53_DISABLE_NON_TEMPORAL_HINT := 0
SEPARATE_CODE_AND_RODATA := 1
ZYNQMP_WDT_RESTART := 0
ZYNQMP_IPI_CRC_CHECK := 0
IPI_CRC_CHECK := 0
override RESET_TO_BL31 := 1
override GICV2_G0_FOR_EL3 := 1
override WARMBOOT_ENABLE_DCACHE_EARLY := 1
Expand Down Expand Up @@ -47,7 +47,11 @@ $(eval $(call add_define,ZYNQMP_WDT_RESTART))
endif

ifdef ZYNQMP_IPI_CRC_CHECK
$(eval $(call add_define,ZYNQMP_IPI_CRC_CHECK))
$(warning "ZYNQMP_IPI_CRC_CHECK macro is deprecated...instead please use IPI_CRC_CHECK.")
endif

ifdef IPI_CRC_CHECK
$(eval $(call add_define,IPI_CRC_CHECK))
endif

PLAT_INCLUDES := -Iinclude/plat/arm/common/ \
Expand Down

0 comments on commit 617632b

Please sign in to comment.