[U-Boot] [PATCH 4/6] fpga: Add support to load partial bitstreams
Michal Simek
michal.simek at xilinx.com
Fri May 2 15:34:44 CEST 2014
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 at xilinx.com>
Signed-off-by: Michal Simek <michal.simek at xilinx.com>
---
README | 9 +++++++++
common/cmd_fpga.c | 33 +++++++++++++++++++++++++++++++++
include/fpga.h | 1 +
3 files changed, 43 insertions(+)
diff --git a/README b/README
index ca33bdc..4f0c4ae 100644
--- a/README
+++ b/README
@@ -2512,6 +2512,15 @@ CBFS (Coreboot Filesystem) support
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
Enable printing of hash marks during FPGA configuration.
diff --git a/common/cmd_fpga.c b/common/cmd_fpga.c
index 4fafed9..802f3ec 100644
--- a/common/cmd_fpga.c
+++ b/common/cmd_fpga.c
@@ -23,6 +23,8 @@ static int fpga_get_op(char *opstr);
#define FPGA_LOADB 2
#define FPGA_DUMP 3
#define FPGA_LOADMK 4
+#define FPGA_LOADP 5
+#define FPGA_LOADBP 6
/* ------------------------------------------------------------------------- */
/* command form:
@@ -121,7 +123,9 @@ int do_fpga(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
case FPGA_INFO:
break;
case FPGA_LOAD:
+ case FPGA_LOADP:
case FPGA_LOADB:
+ case FPGA_LOADBP:
case FPGA_DUMP:
if (!fpga_data || !data_size)
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);
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:
rc = fpga_loadbitstream(dev, fpga_data, data_size, BIT_FULL);
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)
case FPGA_LOADMK:
switch (genimg_get_format(fpga_data)) {
@@ -263,6 +279,14 @@ static int fpga_get_op(char *opstr)
op = FPGA_LOADB;
else if (!strcmp("load", opstr))
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)
else if (!strcmp("loadmk", opstr))
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"
" info\t[dev]\t\t\tlist known device information\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"
"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)
" loadmk [dev] [address]\tLoad device generated with mkimage"
#if defined(CONFIG_FIT)
diff --git a/include/fpga.h b/include/fpga.h
index a55e49f..49efd37 100644
--- a/include/fpga.h
+++ b/include/fpga.h
@@ -38,6 +38,7 @@ typedef struct { /* typedef fpga_desc */
typedef enum {
BIT_FULL = 0,
+ BIT_PARTIAL,
} bitstream_type;
/* root function definitions */
--
1.8.2.3
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140502/d7af9d94/attachment.pgp>
More information about the U-Boot
mailing list