mirror of
https://xff.cz/git/u-boot/
synced 2025-09-26 04:51:17 +02:00
fpga: zynqmppl: Reuse invoke_smc routine
Reuse invoke_smc() routine which is already defined instead of duplicating same at multiple places. Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
committed by
Michal Simek
parent
e0752bc184
commit
7033ae272e
@@ -10,6 +10,7 @@
|
|||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <zynqmppl.h>
|
#include <zynqmppl.h>
|
||||||
#include <linux/sizes.h>
|
#include <linux/sizes.h>
|
||||||
|
#include <asm/arch/sys_proto.h>
|
||||||
|
|
||||||
#define DUMMY_WORD 0xffffffff
|
#define DUMMY_WORD 0xffffffff
|
||||||
|
|
||||||
@@ -191,25 +192,14 @@ static int zynqmp_validate_bitstream(xilinx_desc *desc, const void *buf,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int invoke_smc(ulong id, ulong reg0, ulong reg1, ulong reg2)
|
|
||||||
{
|
|
||||||
struct pt_regs regs;
|
|
||||||
regs.regs[0] = id;
|
|
||||||
regs.regs[1] = reg0;
|
|
||||||
regs.regs[2] = reg1;
|
|
||||||
regs.regs[3] = reg2;
|
|
||||||
|
|
||||||
smc_call(®s);
|
|
||||||
|
|
||||||
return regs.regs[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize,
|
static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize,
|
||||||
bitstream_type bstype)
|
bitstream_type bstype)
|
||||||
{
|
{
|
||||||
u32 swap;
|
u32 swap;
|
||||||
ulong bin_buf, flags;
|
ulong bin_buf;
|
||||||
int ret;
|
int ret;
|
||||||
|
u32 buf_lo, buf_hi;
|
||||||
|
u32 ret_payload[PAYLOAD_ARG_CNT];
|
||||||
|
|
||||||
if (zynqmp_validate_bitstream(desc, buf, bsize, bsize, &swap))
|
if (zynqmp_validate_bitstream(desc, buf, bsize, bsize, &swap))
|
||||||
return FPGA_FAIL;
|
return FPGA_FAIL;
|
||||||
@@ -224,9 +214,10 @@ static int zynqmp_load(xilinx_desc *desc, const void *buf, size_t bsize,
|
|||||||
else
|
else
|
||||||
bsize = bsize / 4;
|
bsize = bsize / 4;
|
||||||
|
|
||||||
flags = (u32)bsize | ((u64)bstype << 32);
|
buf_lo = (u32)bin_buf;
|
||||||
|
buf_hi = upper_32_bits(bin_buf);
|
||||||
ret = invoke_smc(ZYNQMP_SIP_SVC_PM_FPGA_LOAD, bin_buf, flags, 0);
|
ret = invoke_smc(ZYNQMP_SIP_SVC_PM_FPGA_LOAD, buf_lo, buf_hi, bsize,
|
||||||
|
bstype, ret_payload);
|
||||||
if (ret)
|
if (ret)
|
||||||
debug("PL FPGA LOAD fail\n");
|
debug("PL FPGA LOAD fail\n");
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user