|
From: openocd-gerrit <ope...@us...> - 2023-07-08 18:03:50
|
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Main OpenOCD repository".
The branch, master has been updated
via 373d7eaa706b4895cb94e5f563526aec865c8814 (commit)
from e95f8e2b25c36fd290c29b4b553da5d16dfc620f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 373d7eaa706b4895cb94e5f563526aec865c8814
Author: Daniel Anselmi <dan...@gm...>
Date: Sat Apr 15 01:13:12 2023 +0200
pld/virtex2: add program/refresh command
Change-Id: If6d237a6f27c4232849f73d08e7ca74276e6d464
Signed-off-by: Daniel Anselmi <dan...@gm...>
Reviewed-on: https://review.openocd.org/c/openocd/+/7714
Reviewed-by: Antonio Borneo <bor...@gm...>
Tested-by: jenkins
diff --git a/doc/openocd.texi b/doc/openocd.texi
index cab30c6af..ee67e7582 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -8638,6 +8638,10 @@ SSI devices are using different values.
Change values for boundary scan instructions selecting the registers USER1 to USER4.
Description of the arguments can be found at command @command{virtex2 set_instr_codes}.
@end deffn
+
+@deffn {Command} {virtex2 program} pld_name
+Load the bitstream from external memory for FPGA @var{pld_name}. A.k.a. refresh.
+@end deffn
@end deffn
diff --git a/src/pld/virtex2.c b/src/pld/virtex2.c
index dfcf4cf34..9007a55d2 100644
--- a/src/pld/virtex2.c
+++ b/src/pld/virtex2.c
@@ -143,6 +143,35 @@ static int virtex2_read_stat(struct pld_device *pld_device, uint32_t *status)
return retval;
}
+static int virtex2_program(struct pld_device *pld_device)
+{
+ struct virtex2_pld_device *virtex2_info = pld_device->driver_priv;
+ if (!virtex2_info)
+ return ERROR_FAIL;
+
+ int retval = virtex2_set_instr(virtex2_info->tap, virtex2_info->command_set.jshutdown);
+ if (retval != ERROR_OK)
+ return retval;
+
+ retval = virtex2_set_instr(virtex2_info->tap, virtex2_info->command_set.jprog_b);
+ if (retval != ERROR_OK)
+ return retval;
+
+ jtag_add_runtest(62000, TAP_IDLE);
+ if (!(virtex2_info->no_jstart)) {
+ retval = virtex2_set_instr(virtex2_info->tap, virtex2_info->command_set.jstart);
+ if (retval != ERROR_OK)
+ return retval;
+ }
+
+ retval = virtex2_set_instr(virtex2_info->tap, virtex2_info->command_set.bypass);
+ if (retval != ERROR_OK)
+ return retval;
+ jtag_add_runtest(2000, TAP_IDLE);
+
+ return jtag_execute_queue();
+}
+
static int virtex2_load_prepare(struct pld_device *pld_device)
{
struct virtex2_pld_device *virtex2_info = pld_device->driver_priv;
@@ -236,6 +265,22 @@ static int virtex2_load(struct pld_device *pld_device, const char *filename)
return retval;
}
+COMMAND_HANDLER(virtex2_handle_program_command)
+{
+ struct pld_device *device;
+
+ if (CMD_ARGC != 1)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ device = get_pld_device_by_name_or_numstr(CMD_ARGV[0]);
+ if (!device) {
+ command_print(CMD, "pld device '#%s' is out of bounds or unknown", CMD_ARGV[0]);
+ return ERROR_FAIL;
+ }
+
+ return virtex2_program(device);
+}
+
COMMAND_HANDLER(virtex2_handle_read_stat_command)
{
struct pld_device *device;
@@ -368,6 +413,12 @@ static const struct command_registration virtex2_exec_command_handlers[] = {
.handler = virtex2_handle_set_user_codes_command,
.help = "set instructions codes used for jtag-hub",
.usage = "pld_name user1 [user2 [user3 [user4]]]",
+ }, {
+ .name = "program",
+ .mode = COMMAND_EXEC,
+ .handler = virtex2_handle_program_command,
+ .help = "start loading of configuration (refresh)",
+ .usage = "pld_name",
},
COMMAND_REGISTRATION_DONE
};
diff --git a/tcl/cpld/xilinx-xc6s.cfg b/tcl/cpld/xilinx-xc6s.cfg
index 7e32094d4..92b260577 100644
--- a/tcl/cpld/xilinx-xc6s.cfg
+++ b/tcl/cpld/xilinx-xc6s.cfg
@@ -35,6 +35,7 @@ set XC6S_JSTART 0x0c
set XC6S_BYPASS 0x3f
proc xc6s_program {tap} {
+ echo "DEPRECATED! use 'virtex2 program ...' not 'xc6s_program'"
global XC6S_JSHUTDOWN XC6S_JPROGRAM XC6S_JSTART XC6S_BYPASS
irscan $tap $XC6S_JSHUTDOWN
irscan $tap $XC6S_JPROGRAM
@@ -44,6 +45,7 @@ proc xc6s_program {tap} {
#xtp038 and xc3sprog approach
proc xc6s_program_iprog {tap} {
+ echo "DEPRECATED! use 'virtex2 program ...' not 'xc6s_program_iprog'"
global XC6S_JSHUTDOWN XC6S_JSTART XC6S_BYPASS XC6S_CFG_IN
irscan $tap $XC6S_JSHUTDOWN
runtest 16
diff --git a/tcl/cpld/xilinx-xc7.cfg b/tcl/cpld/xilinx-xc7.cfg
index 93ec04990..ebd76ff6b 100644
--- a/tcl/cpld/xilinx-xc7.cfg
+++ b/tcl/cpld/xilinx-xc7.cfg
@@ -58,6 +58,7 @@ set XC7_JSTART 0x0c
set XC7_BYPASS 0x3f
proc xc7_program {tap} {
+ echo "DEPRECATED! use 'virtex2 program ...' not 'xc7_program'"
global XC7_JSHUTDOWN XC7_JPROGRAM XC7_JSTART XC7_BYPASS
irscan $tap $XC7_JSHUTDOWN
irscan $tap $XC7_JPROGRAM
diff --git a/tcl/cpld/xilinx-xcu.cfg b/tcl/cpld/xilinx-xcu.cfg
index 8518e96d7..2d74695ed 100644
--- a/tcl/cpld/xilinx-xcu.cfg
+++ b/tcl/cpld/xilinx-xcu.cfg
@@ -62,6 +62,7 @@ set XCU_JSTART 0x0c
set XCU_BYPASS 0x3f
proc xcu_program {tap} {
+ echo "DEPRECATED! use 'virtex2 program ...' not 'xcu_program'"
global XCU_JSHUTDOWN XCU_JPROGRAM XCU_JSTART XCU_BYPASS
irscan $tap $XCU_JSHUTDOWN
irscan $tap $XCU_JPROGRAM
diff --git a/tcl/target/zynq_7000.cfg b/tcl/target/zynq_7000.cfg
index 593abd792..f5b4478ff 100644
--- a/tcl/target/zynq_7000.cfg
+++ b/tcl/target/zynq_7000.cfg
@@ -55,6 +55,7 @@ set XC7_JSTART 0x0c
set XC7_BYPASS 0x3f
proc zynqpl_program {tap} {
+ echo "DEPRECATED! use 'virtex2 program ...' not 'zynqpl_program'"
global XC7_JSHUTDOWN XC7_JPROGRAM XC7_JSTART XC7_BYPASS
irscan $tap $XC7_JSHUTDOWN
irscan $tap $XC7_JPROGRAM
-----------------------------------------------------------------------
Summary of changes:
doc/openocd.texi | 4 ++++
src/pld/virtex2.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++
tcl/cpld/xilinx-xc6s.cfg | 2 ++
tcl/cpld/xilinx-xc7.cfg | 1 +
tcl/cpld/xilinx-xcu.cfg | 1 +
tcl/target/zynq_7000.cfg | 1 +
6 files changed, 60 insertions(+)
hooks/post-receive
--
Main OpenOCD repository
|