adapter speed: require init script setting and centralize activation from drivers...
authorJonas Hörberg <jhorberg@sauer-danfoss.com>
Thu, 28 Apr 2011 07:17:57 +0000 (09:17 +0200)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Sat, 30 Apr 2011 22:38:04 +0000 (00:38 +0200)
Signed-off-by: Jonas Hörberg <jhorberg@sauer-danfoss.com>
src/jtag/core.c
src/jtag/drivers/amt_jtagaccel.c
src/jtag/drivers/ft2232.c
src/jtag/drivers/gw16012.c
src/jtag/drivers/jlink.c
src/jtag/drivers/parport.c
src/jtag/drivers/presto.c
src/jtag/drivers/rlink.c
src/jtag/drivers/usb_blaster.c
src/jtag/zy1000/zy1000.c

index 4c5d37a749b0e7f25e8480f47dc00088d394ebef..0a9d72a846953f52a0361c60f426d47540dd645c 100644 (file)
@@ -124,7 +124,7 @@ static struct jtag_event_callback *jtag_event_callbacks;
 static int speed_khz = 0;
 /* speed to fallback to when RCLK is requested but not supported */
 static int rclk_fallback_speed_khz = 0;
-static enum {CLOCK_MODE_SPEED, CLOCK_MODE_KHZ, CLOCK_MODE_RCLK} clock_mode;
+static enum {CLOCK_MODE_UNSELECTED, CLOCK_MODE_KHZ, CLOCK_MODE_RCLK} clock_mode;
 static int jtag_speed = 0;
 
 static struct jtag_interface *jtag = NULL;
@@ -1389,10 +1389,20 @@ int adapter_init(struct command_context *cmd_ctx)
                        return retval;
        }
 
+       if (CLOCK_MODE_UNSELECTED == clock_mode)
+       {
+               LOG_ERROR("An adapter speed is not selected in the init script."
+                       " Insert a call to adapter_khz or jtag_rclk to proceed.");
+               return ERROR_JTAG_INIT_FAILED;
+       }
+
        int requested_khz = jtag_get_speed_khz();
        int actual_khz = requested_khz;
        int jtag_speed_var;
        retval = jtag_get_speed(&jtag_speed_var);
+       if (retval != ERROR_OK)
+               return retval;
+       retval = jtag->speed(jtag_speed_var);
        if (retval != ERROR_OK)
                return retval;
        retval = jtag_get_speed_readable(&actual_khz);
@@ -1647,9 +1657,6 @@ int jtag_get_speed(int *speed)
 {
        switch(clock_mode)
        {
-               case CLOCK_MODE_SPEED:
-                       *speed = jtag_speed;
-                       break;
                case CLOCK_MODE_KHZ:
                        adapter_khz_to_speed(jtag_get_speed_khz(), speed);
                        break;
index ee44a2b69a73865a3c61976d9a9abf9d5e1dc7a7..a433e81eb6661c30a97888d11d9d325cf53e2a22 100644 (file)
@@ -506,12 +506,6 @@ static int amt_jtagaccel_init(void)
        aw_control_fsm |= 0x04;
        AMT_AW(aw_control_fsm);
 
-       int jtag_speed_var;
-       int retval = jtag_get_speed(&jtag_speed_var);
-       if (retval != ERROR_OK)
-          return retval;
-       amt_jtagaccel_speed(jtag_speed_var);
-
        enum reset_types jtag_reset_config = jtag_get_reset_config();
        if (jtag_reset_config & RESET_TRST_OPEN_DRAIN)
                aw_control_rst &= ~0x8;
index fdabb64eda93a52f040fd870b22cfd048eebb37b..8c2382a15ebb3b5251a1710ea52f31ca811242ae 100644 (file)
@@ -2485,12 +2485,6 @@ static int ft2232_init(void)
                        return ERROR_JTAG_INIT_FAILED;
        }
 
-       int jtag_speed_var;
-       retval = jtag_get_speed(&jtag_speed_var);
-       if (retval != ERROR_OK)
-               return retval;
-       ft2232_speed(jtag_speed_var);
-
        buf[0] = 0x85; /* Disconnect TDI/DO to TDO/DI for Loopback */
        if ((retval = ft2232_write(buf, 1, &bytes_written)) != ERROR_OK)
        {
index 172929943c9d8c5dda14f168cf3a7359f1ea9c64..22a37ac84f20af48c8160972d84b4d26630e3ae3 100644 (file)
@@ -529,11 +529,6 @@ static int gw16012_init(void)
        gw16012_input(&status_port);
        gw16012_msb = (status_port & 0x80) ^ 0x80;
 
-       int jtag_speed_var;
-       int retval = jtag_get_speed(&jtag_speed_var);
-       if (retval != ERROR_OK)
-               return retval;
-       gw16012_speed(jtag_speed_var);
        gw16012_reset(0, 0);
 
        return ERROR_OK;
index 6eb707a1a2282cf307387bc9cee190736a058f75..adaa64090353e53d1ea7aceffd46275d2029e550 100644 (file)
@@ -439,11 +439,6 @@ static int jlink_init(void)
        jlink_reset(0, 0);
        jtag_sleep(3000);
        jlink_tap_init();
-       int jtag_speed_var;
-       int retval = jtag_get_speed(&jtag_speed_var);
-       if (retval != ERROR_OK)
-               return retval;
-       jlink_speed(jtag_speed_var);
 
        /* v5/6 jlink seems to have an issue if the first tap move
         * is not divisible by 8, so we send a TLR on first power up */
index b61f2f15e46c0695b33ec65234b2c2c992b21f2d..ad07791de3dc691ca5365c93208d37576a10ded6 100644 (file)
@@ -384,10 +384,6 @@ static int parport_init(void)
 
        bitbang_interface = &parport_bitbang;
 
-       int retval = jtag_get_speed(&wait_states);
-       if (retval != ERROR_OK)
-               return retval;
-
        return ERROR_OK;
 }
 
index ca6e9d50a169d850406f4cd480ea7bf3620596ee..2328c26b593c4eeb30087023763c864816bd5a7f 100644 (file)
@@ -769,13 +769,6 @@ static int presto_jtag_init(void)
        }
        LOG_INFO("PRESTO open, serial number '%s'", presto->serial);
 
-       /* use JTAG speed setting from configuration file */
-       int jtag_speed_var;
-       int retval = jtag_get_speed(&jtag_speed_var);
-       if (retval != ERROR_OK)
-               return retval;
-       presto_jtag_speed(jtag_speed_var);
-
        bitq_interface = &presto_bitq;
        return ERROR_OK;
 }
index 4b3e2ae8385bae94ee00e47070e0d3ce3045cf80..5f53dbceab3c02887651addfe3a2522e8b698208 100644 (file)
@@ -1771,11 +1771,6 @@ int rlink_init(void)
 
        tap_state_queue_init();
        dtc_queue_init();
-       int jtag_speed_var;
-       int retval = jtag_get_speed(&jtag_speed_var);
-       if (retval != ERROR_OK)
-               return retval;
-       rlink_speed(jtag_speed_var);
        rlink_reset(0, 0);
 
        return ERROR_OK;
index 68867adf9e81da09dcfafb7aafc72ae4405b158b..b046b715cd6a615b8b8a99cd5f396fefe9ad2fc8 100644 (file)
@@ -474,12 +474,6 @@ static int usb_blaster_init(void)
 
        bitbang_interface = &usb_blaster_bitbang;
 
-       int jtag_speed_var;
-       int retval = jtag_get_speed(&jtag_speed_var);
-       if (retval != ERROR_OK)
-               return retval;
-       usb_blaster_speed(jtag_speed_var);
-
 #if 0
 #if BUILD_USB_BLASTER_FTD2XX == 1
        if ((status = FT_Purge(ftdih, FT_PURGE_RX | FT_PURGE_TX)) != FT_OK)
index 8c3766656aaa222075be9611d903856c97b4fd8d..7a3a0f2eacc416a52ca016205b54d13afa21e658 100644 (file)
@@ -1505,11 +1505,6 @@ int zy1000_init(void)
 
         /* deassert resets. Important to avoid infinite loop waiting for SRST to deassert */
        zy1000_reset(0, 0);
-       int jtag_speed_var;
-       int retval = jtag_get_speed(&jtag_speed_var);
-       if (retval != ERROR_OK)
-               return retval;
-       zy1000_speed(jtag_speed_var);
 
 #if BUILD_ZY1000_MASTER
 #if BUILD_ECOSBOARD

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)