drivers/ftdi: warn the user if he tries to use undefined reset signals
authorPaul Fertser <fercerpav@gmail.com>
Sat, 15 Feb 2014 18:43:38 +0000 (22:43 +0400)
committerSpencer Oliver <spen@spen-soft.co.uk>
Mon, 24 Feb 2014 11:57:07 +0000 (11:57 +0000)
It is really an error to try to use a reset_config that doesn't match
adapter's capabilities, however OpenOCD has no way to specify them.

Using wrong reset_config might lead to very confusing behaviour, so I
think LOG_ERROR is justified here.

Change-Id: I1c6dcfa7c0d78829229a850189cad646b565dd66
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/1948
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
src/jtag/drivers/ftdi.c

index a6070b1120dbafc76892b8cafafd6f1f9d07a468..81b27c26f1bd27ff62e8c2453f7929d068ea084a 100644 (file)
@@ -472,8 +472,11 @@ static void ftdi_execute_reset(struct jtag_command *cmd)
                tap_set_state(TAP_RESET);
 
        struct signal *trst = find_signal_by_name("nTRST");
-       if (trst && cmd->cmd.reset->trst == 1) {
-               ftdi_set_signal(trst, '0');
+       if (cmd->cmd.reset->trst == 1) {
+               if (trst)
+                       ftdi_set_signal(trst, '0');
+               else
+                       LOG_ERROR("Can't assert TRST: nTRST signal is not defined");
        } else if (trst && cmd->cmd.reset->trst == 0) {
                if (jtag_get_reset_config() & RESET_TRST_OPEN_DRAIN)
                        ftdi_set_signal(trst, 'z');
@@ -482,8 +485,11 @@ static void ftdi_execute_reset(struct jtag_command *cmd)
        }
 
        struct signal *srst = find_signal_by_name("nSRST");
-       if (srst && cmd->cmd.reset->srst == 1) {
-               ftdi_set_signal(srst, '0');
+       if (cmd->cmd.reset->srst == 1) {
+               if (srst)
+                       ftdi_set_signal(srst, '0');
+               else
+                       LOG_ERROR("Can't assert SRST: nSRST signal is not defined");
        } else if (srst && cmd->cmd.reset->srst == 0) {
                if (jtag_get_reset_config() & RESET_SRST_PUSH_PULL)
                        ftdi_set_signal(srst, '1');