mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-19 21:51:31 +00:00
fpga: Add support to load partial bitstreams
Added support to load partial bitstreams. The partial bitstreams can be loaded using the below commands Commands: fpga loadp <dev> <addr> <size> fpga loadbp <dev> <addr> <size> The full bit streams can be loaded using the old commands(fpga load and fpga loadb). Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
7a78bd2679
commit
67193864bc
3 changed files with 43 additions and 0 deletions
9
README
9
README
|
@ -2554,6 +2554,15 @@ CBFS (Coreboot Filesystem) support
|
||||||
|
|
||||||
Enable support for fpga loadmk command
|
Enable support for fpga loadmk command
|
||||||
|
|
||||||
|
CONFIG_CMD_FPGA_LOADP
|
||||||
|
|
||||||
|
Enable support for fpga loadp command - load partial bitstream
|
||||||
|
|
||||||
|
CONFIG_CMD_FPGA_LOADBP
|
||||||
|
|
||||||
|
Enable support for fpga loadbp command - load partial bitstream
|
||||||
|
(Xilinx only)
|
||||||
|
|
||||||
CONFIG_SYS_FPGA_PROG_FEEDBACK
|
CONFIG_SYS_FPGA_PROG_FEEDBACK
|
||||||
|
|
||||||
Enable printing of hash marks during FPGA configuration.
|
Enable printing of hash marks during FPGA configuration.
|
||||||
|
|
|
@ -23,6 +23,8 @@ static int fpga_get_op(char *opstr);
|
||||||
#define FPGA_LOADB 2
|
#define FPGA_LOADB 2
|
||||||
#define FPGA_DUMP 3
|
#define FPGA_DUMP 3
|
||||||
#define FPGA_LOADMK 4
|
#define FPGA_LOADMK 4
|
||||||
|
#define FPGA_LOADP 5
|
||||||
|
#define FPGA_LOADBP 6
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
/* command form:
|
/* command form:
|
||||||
|
@ -121,7 +123,9 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
||||||
case FPGA_INFO:
|
case FPGA_INFO:
|
||||||
break;
|
break;
|
||||||
case FPGA_LOAD:
|
case FPGA_LOAD:
|
||||||
|
case FPGA_LOADP:
|
||||||
case FPGA_LOADB:
|
case FPGA_LOADB:
|
||||||
|
case FPGA_LOADBP:
|
||||||
case FPGA_DUMP:
|
case FPGA_DUMP:
|
||||||
if (!fpga_data || !data_size)
|
if (!fpga_data || !data_size)
|
||||||
wrong_parms = 1;
|
wrong_parms = 1;
|
||||||
|
@ -151,10 +155,22 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
||||||
rc = fpga_load(dev, fpga_data, data_size, BIT_FULL);
|
rc = fpga_load(dev, fpga_data, data_size, BIT_FULL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#if defined(CONFIG_CMD_FPGA_LOADP)
|
||||||
|
case FPGA_LOADP:
|
||||||
|
rc = fpga_load(dev, fpga_data, data_size, BIT_PARTIAL);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case FPGA_LOADB:
|
case FPGA_LOADB:
|
||||||
rc = fpga_loadbitstream(dev, fpga_data, data_size, BIT_FULL);
|
rc = fpga_loadbitstream(dev, fpga_data, data_size, BIT_FULL);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#if defined(CONFIG_CMD_FPGA_LOADBP)
|
||||||
|
case FPGA_LOADBP:
|
||||||
|
rc = fpga_loadbitstream(dev, fpga_data, data_size, BIT_PARTIAL);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_FPGA_LOADMK)
|
#if defined(CONFIG_CMD_FPGA_LOADMK)
|
||||||
case FPGA_LOADMK:
|
case FPGA_LOADMK:
|
||||||
switch (genimg_get_format(fpga_data)) {
|
switch (genimg_get_format(fpga_data)) {
|
||||||
|
@ -263,6 +279,14 @@ static int fpga_get_op(char *opstr)
|
||||||
op = FPGA_LOADB;
|
op = FPGA_LOADB;
|
||||||
else if (!strcmp("load", opstr))
|
else if (!strcmp("load", opstr))
|
||||||
op = FPGA_LOAD;
|
op = FPGA_LOAD;
|
||||||
|
#if defined(CONFIG_CMD_FPGA_LOADP)
|
||||||
|
else if (!strcmp("loadp", opstr))
|
||||||
|
op = FPGA_LOADP;
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_CMD_FPGA_LOADBP)
|
||||||
|
else if (!strcmp("loadbp", opstr))
|
||||||
|
op = FPGA_LOADBP;
|
||||||
|
#endif
|
||||||
#if defined(CONFIG_CMD_FPGA_LOADMK)
|
#if defined(CONFIG_CMD_FPGA_LOADMK)
|
||||||
else if (!strcmp("loadmk", opstr))
|
else if (!strcmp("loadmk", opstr))
|
||||||
op = FPGA_LOADMK;
|
op = FPGA_LOADMK;
|
||||||
|
@ -283,8 +307,17 @@ U_BOOT_CMD(fpga, 6, 1, do_fpga,
|
||||||
" dump\t[dev]\t\t\tLoad device to memory buffer\n"
|
" dump\t[dev]\t\t\tLoad device to memory buffer\n"
|
||||||
" info\t[dev]\t\t\tlist known device information\n"
|
" info\t[dev]\t\t\tlist known device information\n"
|
||||||
" load\t[dev] [address] [size]\tLoad device from memory buffer\n"
|
" load\t[dev] [address] [size]\tLoad device from memory buffer\n"
|
||||||
|
#if defined(CONFIG_CMD_FPGA_LOADP)
|
||||||
|
" loadp\t[dev] [address] [size]\t"
|
||||||
|
"Load device from memory buffer with partial bitstream\n"
|
||||||
|
#endif
|
||||||
" loadb\t[dev] [address] [size]\t"
|
" loadb\t[dev] [address] [size]\t"
|
||||||
"Load device from bitstream buffer (Xilinx only)\n"
|
"Load device from bitstream buffer (Xilinx only)\n"
|
||||||
|
#if defined(CONFIG_CMD_FPGA_LOADBP)
|
||||||
|
" loadbp\t[dev] [address] [size]\t"
|
||||||
|
"Load device from bitstream buffer with partial bitstream"
|
||||||
|
"(Xilinx only)\n"
|
||||||
|
#endif
|
||||||
#if defined(CONFIG_CMD_FPGA_LOADMK)
|
#if defined(CONFIG_CMD_FPGA_LOADMK)
|
||||||
" loadmk [dev] [address]\tLoad device generated with mkimage"
|
" loadmk [dev] [address]\tLoad device generated with mkimage"
|
||||||
#if defined(CONFIG_FIT)
|
#if defined(CONFIG_FIT)
|
||||||
|
|
|
@ -38,6 +38,7 @@ typedef struct { /* typedef fpga_desc */
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
BIT_FULL = 0,
|
BIT_FULL = 0,
|
||||||
|
BIT_PARTIAL,
|
||||||
} bitstream_type;
|
} bitstream_type;
|
||||||
|
|
||||||
/* root function definitions */
|
/* root function definitions */
|
||||||
|
|
Loading…
Add table
Reference in a new issue