]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
xilinx: zynqmp: synchronize firmware call return payload
authorIbai Erkiaga <ibai.erkiaga-elorza@xilinx.com>
Tue, 4 Aug 2020 22:17:26 +0000 (23:17 +0100)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 20 Aug 2020 07:49:20 +0000 (09:49 +0200)
Removes duplicated definition of PAYLOAD_ARG_CNT and define it in the
firmware driver. Additionally fixes payload buffer declarations without
macro usage

Signed-off-by: Ibai Erkiaga <ibai.erkiaga-elorza@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
arch/arm/mach-versal/include/mach/sys_proto.h
arch/arm/mach-zynqmp/include/mach/sys_proto.h
board/xilinx/versal/cmds.c
drivers/fpga/versalpl.c
include/zynqmp_firmware.h

index cfd480bec17ee2c560c0af50a31c5c72f0509da7..05934c28d67f9145fcb1dfbf5bb60134ad4e607a 100644 (file)
@@ -8,7 +8,5 @@ enum {
        TCM_SPLIT,
 };
 
-#define PAYLOAD_ARG_CNT        5U
-
 void tcm_init(u8 mode);
 void mem_map_fill(void);
index 2974ffbc2f5632b3376cd1cb95df97d208fe09a8..4078f958fc611a710f948e38cfef2d0c04d3230d 100644 (file)
@@ -7,8 +7,6 @@
 #ifndef _ASM_ARCH_SYS_PROTO_H
 #define _ASM_ARCH_SYS_PROTO_H
 
-#define PAYLOAD_ARG_CNT                5
-
 #define ZYNQMP_CSU_SILICON_VER_MASK    0xF
 #define KEY_PTR_LEN    32
 
index 981c80ee4742ad68010b78ec928b32a3e80cf83e..f5735d0c62c092be02e7d6ca99fa44dab14e4b54 100644 (file)
@@ -16,7 +16,7 @@ static int do_versal_load_pdi(struct cmd_tbl *cmdtp, int flag, int argc,
                              char * const argv[])
 {
        u32 buf_lo, buf_hi;
-       u32 ret_payload[5];
+       u32 ret_payload[PAYLOAD_ARG_CNT];
        ulong addr, *pdi_buf;
        size_t len;
        int ret;
index 8e2ef4f0da99e00d55894b2a78fa1116d0cd1aad..c44a7d3455751257e8913ccbb5453b85649306ba 100644 (file)
@@ -32,7 +32,7 @@ static int versal_load(xilinx_desc *desc, const void *buf, size_t bsize,
        ulong bin_buf;
        int ret;
        u32 buf_lo, buf_hi;
-       u32 ret_payload[5];
+       u32 ret_payload[PAYLOAD_ARG_CNT];
 
        bin_buf = versal_align_dma_buffer((ulong *)buf, bsize);
 
index 93d771ece26a62ba819809f636d18cb272b6ba46..2c44951f86183623c1f4a7b0a74010e5ff2b6a4c 100644 (file)
@@ -77,6 +77,15 @@ enum pm_api_id {
 
 #define PMUFW_V1_0      ((1 << ZYNQMP_PM_VERSION_MAJOR_SHIFT) | 0)
 
+/*
+ * Return payload size
+ * Not every firmware call expects the same amount of return bytes, however the
+ * firmware driver always copies 5 bytes from RX buffer to the ret_payload
+ * buffer. Therefore allocating with this defined value is recommended to avoid
+ * overflows.
+ */
+#define PAYLOAD_ARG_CNT        5U
+
 unsigned int zynqmp_firmware_version(void);
 void zynqmp_pmufw_load_config_object(const void *cfg_obj, size_t size);
 int xilinx_pm_request(u32 api_id, u32 arg0, u32 arg1, u32 arg2,