This is an automated email from Gerrit.

Antonio Borneo ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/4849

-- gerrit

commit 8c4b275b6c8925adf67b7cb796617b7b33a2f724
Author: Antonio Borneo <[email protected]>
Date:   Tue Aug 28 16:26:30 2018 +0200

    [RFC] target/arm_adi_v5: remove sequence declaration from include file
    
    A static array declared in an include file will cause a new
    instance of the array each time the file is included (then it's
    up to the linker to eventually remove the unused symbols).
    E.g. check with command: "nm openocd | grep swd_seq_jtag_to_swd"
    
    Move the declaration of Arm ADIv5 bit sequences from swd.h to
    the proper file arm_adi_v5.c and put the extern declarations in
    arm_adi_v5.h
    Change the names to the variables since they are not swd only.
    
    Note 1: I have labeled this change as [RFC] and I'm not going to
    give my +1 to it as is.
    This change creates a dependency of libocdjtagdrivers from
    libtarget and it will be probably considered as a layering
    violation. Is this change ok for you?
    Would it be better if I move the bit sequences in the existing
    file src/jtag/drivers/driver.c?
    Or is it needed a new file, e.g. src/jtag/drivers/arm_adi_v5.c?
    
    Note 2: another duplicate of two of these bit sequences is in
    - src/target/adi_v5_jtag.c: swd2jtag_bitseq[]
    - src/target/adi_v5_swd.c:  jtag2swd_bitseq[]
    I will rework them once this change is finalized, but we can start
    considering them in this RFC.
    
    Change-Id: I58b43bdaff929640295776b1b7cc0714c43bb578
    Signed-off-by: Antonio Borneo <[email protected]>

diff --git a/src/jtag/drivers/bitbang.c b/src/jtag/drivers/bitbang.c
index 722a5f2..dc3d76a 100644
--- a/src/jtag/drivers/bitbang.c
+++ b/src/jtag/drivers/bitbang.c
@@ -449,15 +449,15 @@ int bitbang_swd_switch_seq(enum swd_special_seq seq)
        switch (seq) {
        case LINE_RESET:
                LOG_DEBUG("SWD line reset");
-               bitbang_exchange(false, (uint8_t *)swd_seq_line_reset, 0, 
swd_seq_line_reset_len);
+               bitbang_exchange(false, (uint8_t *)adiv5_seq_swd_line_reset, 0, 
adiv5_seq_swd_line_reset_len);
                break;
        case JTAG_TO_SWD:
                LOG_DEBUG("JTAG-to-SWD");
-               bitbang_exchange(false, (uint8_t *)swd_seq_jtag_to_swd, 0, 
swd_seq_jtag_to_swd_len);
+               bitbang_exchange(false, (uint8_t *)adiv5_seq_jtag_to_swd, 0, 
adiv5_seq_jtag_to_swd_len);
                break;
        case SWD_TO_JTAG:
                LOG_DEBUG("SWD-to-JTAG");
-               bitbang_exchange(false, (uint8_t *)swd_seq_swd_to_jtag, 0, 
swd_seq_swd_to_jtag_len);
+               bitbang_exchange(false, (uint8_t *)adiv5_seq_swd_to_jtag, 0, 
adiv5_seq_swd_to_jtag_len);
                break;
        default:
                LOG_ERROR("Sequence %d not supported", seq);
@@ -470,7 +470,7 @@ int bitbang_swd_switch_seq(enum swd_special_seq seq)
 void bitbang_switch_to_swd(void)
 {
        LOG_DEBUG("bitbang_switch_to_swd");
-       bitbang_exchange(false, (uint8_t *)swd_seq_jtag_to_swd, 0, 
swd_seq_jtag_to_swd_len);
+       bitbang_exchange(false, (uint8_t *)adiv5_seq_jtag_to_swd, 0, 
adiv5_seq_jtag_to_swd_len);
 }
 
 static void swd_clear_sticky_errors(void)
diff --git a/src/jtag/drivers/buspirate.c b/src/jtag/drivers/buspirate.c
index 35649c2..b56475a 100644
--- a/src/jtag/drivers/buspirate.c
+++ b/src/jtag/drivers/buspirate.c
@@ -1316,18 +1316,18 @@ static int buspirate_swd_switch_seq(enum 
swd_special_seq seq)
        switch (seq) {
        case LINE_RESET:
                LOG_DEBUG("SWD line reset");
-               sequence = swd_seq_line_reset;
-               sequence_len = DIV_ROUND_UP(swd_seq_line_reset_len, 8);
+               sequence = adiv5_seq_swd_line_reset;
+               sequence_len = DIV_ROUND_UP(adiv5_seq_swd_line_reset_len, 8);
                break;
        case JTAG_TO_SWD:
                LOG_DEBUG("JTAG-to-SWD");
-               sequence = swd_seq_jtag_to_swd;
-               sequence_len = DIV_ROUND_UP(swd_seq_jtag_to_swd_len, 8);
+               sequence = adiv5_seq_jtag_to_swd;
+               sequence_len = DIV_ROUND_UP(adiv5_seq_jtag_to_swd_len, 8);
                break;
        case SWD_TO_JTAG:
                LOG_DEBUG("SWD-to-JTAG");
-               sequence = swd_seq_swd_to_jtag;
-               sequence_len = DIV_ROUND_UP(swd_seq_swd_to_jtag_len, 8);
+               sequence = adiv5_seq_swd_to_jtag;
+               sequence_len = DIV_ROUND_UP(adiv5_seq_swd_to_jtag_len, 8);
                break;
        default:
                LOG_ERROR("Sequence %d not supported", seq);
diff --git a/src/jtag/drivers/cmsis_dap_usb.c b/src/jtag/drivers/cmsis_dap_usb.c
index 9d6bf7f..bdda727 100644
--- a/src/jtag/drivers/cmsis_dap_usb.c
+++ b/src/jtag/drivers/cmsis_dap_usb.c
@@ -922,18 +922,18 @@ static int cmsis_dap_swd_switch_seq(enum swd_special_seq 
seq)
        switch (seq) {
        case LINE_RESET:
                LOG_DEBUG("SWD line reset");
-               s = swd_seq_line_reset;
-               s_len = swd_seq_line_reset_len;
+               s = adiv5_seq_swd_line_reset;
+               s_len = adiv5_seq_swd_line_reset_len;
                break;
        case JTAG_TO_SWD:
                LOG_DEBUG("JTAG-to-SWD");
-               s = swd_seq_jtag_to_swd;
-               s_len = swd_seq_jtag_to_swd_len;
+               s = adiv5_seq_jtag_to_swd;
+               s_len = adiv5_seq_jtag_to_swd_len;
                break;
        case SWD_TO_JTAG:
                LOG_DEBUG("SWD-to-JTAG");
-               s = swd_seq_swd_to_jtag;
-               s_len = swd_seq_swd_to_jtag_len;
+               s = adiv5_seq_swd_to_jtag;
+               s_len = adiv5_seq_swd_to_jtag_len;
                break;
        default:
                LOG_ERROR("Sequence %d not supported", seq);
diff --git a/src/jtag/drivers/ftdi.c b/src/jtag/drivers/ftdi.c
index 1afedd1..3951a07 100644
--- a/src/jtag/drivers/ftdi.c
+++ b/src/jtag/drivers/ftdi.c
@@ -1242,17 +1242,17 @@ static int ftdi_swd_switch_seq(enum swd_special_seq seq)
        case LINE_RESET:
                LOG_DEBUG("SWD line reset");
                ftdi_swd_swdio_en(true);
-               mpsse_clock_data_out(mpsse_ctx, swd_seq_line_reset, 0, 
swd_seq_line_reset_len, SWD_MODE);
+               mpsse_clock_data_out(mpsse_ctx, adiv5_seq_swd_line_reset, 0, 
adiv5_seq_swd_line_reset_len, SWD_MODE);
                break;
        case JTAG_TO_SWD:
                LOG_DEBUG("JTAG-to-SWD");
                ftdi_swd_swdio_en(true);
-               mpsse_clock_data_out(mpsse_ctx, swd_seq_jtag_to_swd, 0, 
swd_seq_jtag_to_swd_len, SWD_MODE);
+               mpsse_clock_data_out(mpsse_ctx, adiv5_seq_jtag_to_swd, 0, 
adiv5_seq_jtag_to_swd_len, SWD_MODE);
                break;
        case SWD_TO_JTAG:
                LOG_DEBUG("SWD-to-JTAG");
                ftdi_swd_swdio_en(true);
-               mpsse_clock_data_out(mpsse_ctx, swd_seq_swd_to_jtag, 0, 
swd_seq_swd_to_jtag_len, SWD_MODE);
+               mpsse_clock_data_out(mpsse_ctx, adiv5_seq_swd_to_jtag, 0, 
adiv5_seq_swd_to_jtag_len, SWD_MODE);
                break;
        default:
                LOG_ERROR("Sequence %d not supported", seq);
diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c
index e74965e..95dd719 100644
--- a/src/jtag/drivers/jlink.c
+++ b/src/jtag/drivers/jlink.c
@@ -2048,18 +2048,18 @@ static int jlink_swd_switch_seq(enum swd_special_seq 
seq)
        switch (seq) {
                case LINE_RESET:
                        LOG_DEBUG("SWD line reset");
-                       s = swd_seq_line_reset;
-                       s_len = swd_seq_line_reset_len;
+                       s = adiv5_seq_swd_line_reset;
+                       s_len = adiv5_seq_swd_line_reset_len;
                        break;
                case JTAG_TO_SWD:
                        LOG_DEBUG("JTAG-to-SWD");
-                       s = swd_seq_jtag_to_swd;
-                       s_len = swd_seq_jtag_to_swd_len;
+                       s = adiv5_seq_jtag_to_swd;
+                       s_len = adiv5_seq_jtag_to_swd_len;
                        break;
                case SWD_TO_JTAG:
                        LOG_DEBUG("SWD-to-JTAG");
-                       s = swd_seq_swd_to_jtag;
-                       s_len = swd_seq_swd_to_jtag_len;
+                       s = adiv5_seq_swd_to_jtag;
+                       s_len = adiv5_seq_swd_to_jtag_len;
                        break;
                default:
                        LOG_ERROR("Sequence %d not supported.", seq);
diff --git a/src/jtag/drivers/vsllink.c b/src/jtag/drivers/vsllink.c
index 6f7e9ca..2910dcf 100644
--- a/src/jtag/drivers/vsllink.c
+++ b/src/jtag/drivers/vsllink.c
@@ -764,18 +764,18 @@ static int vsllink_swd_switch_seq(enum swd_special_seq 
seq)
        switch (seq) {
        case LINE_RESET:
                LOG_DEBUG("SWD line reset");
-               versaloon_interface.adaptors.swd.seqout(0, swd_seq_line_reset,
-                               swd_seq_line_reset_len);
+               versaloon_interface.adaptors.swd.seqout(0, 
adiv5_seq_swd_line_reset,
+                               adiv5_seq_swd_line_reset_len);
                break;
        case JTAG_TO_SWD:
                LOG_DEBUG("JTAG-to-SWD");
-               versaloon_interface.adaptors.swd.seqout(0, swd_seq_jtag_to_swd,
-                               swd_seq_jtag_to_swd_len);
+               versaloon_interface.adaptors.swd.seqout(0, 
adiv5_seq_jtag_to_swd,
+                               adiv5_seq_jtag_to_swd_len);
                break;
        case SWD_TO_JTAG:
                LOG_DEBUG("SWD-to-JTAG");
-               versaloon_interface.adaptors.swd.seqout(0, swd_seq_swd_to_jtag,
-                               swd_seq_swd_to_jtag_len);
+               versaloon_interface.adaptors.swd.seqout(0, 
adiv5_seq_swd_to_jtag,
+                               adiv5_seq_swd_to_jtag_len);
                break;
        default:
                LOG_ERROR("Sequence %d not supported", seq);
diff --git a/src/jtag/swd.h b/src/jtag/swd.h
index 52f41d5..602b5c6 100644
--- a/src/jtag/swd.h
+++ b/src/jtag/swd.h
@@ -53,72 +53,6 @@ static inline uint8_t swd_cmd(bool is_read, bool is_ap, 
uint8_t regnum)
 
 /* SWD_ACK_* bits are defined in <target/arm_adi_v5.h> */
 
-/**
- * Line reset.
- *
- * Line reset is at least 50 SWCLK cycles with SWDIO driven high, followed
- * by at least one idle (low) cycle.
- */
-static const uint8_t swd_seq_line_reset[] = {
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03
-};
-static const unsigned swd_seq_line_reset_len = 51;
-
-/**
- * JTAG-to-SWD sequence.
- *
- * The JTAG-to-SWD sequence is at least 50 TCK/SWCLK cycles with TMS/SWDIO
- * high, putting either interface logic into reset state, followed by a
- * specific 16-bit sequence and finally a line reset in case the SWJ-DP was
- * already in SWD mode.
- */
-static const uint8_t swd_seq_jtag_to_swd[] = {
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x9e,
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
-};
-static const unsigned swd_seq_jtag_to_swd_len = 118;
-
-/**
- * SWD-to-JTAG sequence.
- *
- * The SWD-to-JTAG sequence is at least 50 TCK/SWCLK cycles with TMS/SWDIO
- * high, putting either interface logic into reset state, followed by a
- * specific 16-bit sequence and finally at least 5 TCK cycles to put the
- * JTAG TAP in TLR.
- */
-static const uint8_t swd_seq_swd_to_jtag[] = {
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x9c, 0xff
-};
-static const unsigned swd_seq_swd_to_jtag_len = 71;
-
-/**
- * SWD-to-dormant sequence.
- *
- * This is at least 50 SWCLK cycles with SWDIO high to put the interface
- * in reset state, followed by a specific 16-bit sequence.
- */
-static const uint8_t swd_seq_swd_to_dormant[] = {
-       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x8e, 0x03
-};
-static const unsigned swd_seq_swd_to_dormant_len = 66;
-
-/**
- * Dormant-to-SWD sequence.
- *
- * This is at least 8 TCK/SWCLK cycles with TMS/SWDIO high to abort any ongoing
- * selection alert sequence, followed by a specific 128-bit selection alert
- * sequence, followed by 4 TCK/SWCLK cycles with TMS/SWDIO low, followed by
- * a specific protocol-dependent activation code. For SWD the activation code
- * is an 8-bit sequence. The sequence ends with a line reset.
- */
-static const uint8_t swd_seq_dormant_to_swd[] = {
-       0xff,
-       0x92, 0xf3, 0x09, 0x62, 0x95, 0x2d, 0x85, 0x86,
-       0xe9, 0xaf, 0xdd, 0xe3, 0xa2, 0x0e, 0xbc, 0x19,
-       0x10, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f
-};
-static const unsigned swd_seq_dormant_to_swd_len = 199;
-
 enum swd_special_seq {
        LINE_RESET,
        JTAG_TO_SWD,
diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
index 03e642b..3c96625 100644
--- a/src/target/arm_adi_v5.c
+++ b/src/target/arm_adi_v5.c
@@ -78,6 +78,72 @@
 #include <helper/list.h>
 #include <helper/jim-nvp.h>
 
+/**
+ * SWD Line reset.
+ *
+ * SWD Line reset is at least 50 SWCLK cycles with SWDIO driven high,
+ * followed by at least one idle (low) cycle.
+ */
+const uint8_t adiv5_seq_swd_line_reset[] = {
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03
+};
+const unsigned adiv5_seq_swd_line_reset_len = 51;
+
+/**
+ * JTAG-to-SWD sequence.
+ *
+ * The JTAG-to-SWD sequence is at least 50 TCK/SWCLK cycles with TMS/SWDIO
+ * high, putting either interface logic into reset state, followed by a
+ * specific 16-bit sequence and finally a line reset in case the SWJ-DP was
+ * already in SWD mode.
+ */
+const uint8_t adiv5_seq_jtag_to_swd[] = {
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x9e,
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
+};
+const unsigned adiv5_seq_jtag_to_swd_len = 118;
+
+/**
+ * SWD-to-JTAG sequence.
+ *
+ * The SWD-to-JTAG sequence is at least 50 TCK/SWCLK cycles with TMS/SWDIO
+ * high, putting either interface logic into reset state, followed by a
+ * specific 16-bit sequence and finally at least 5 TCK cycles to put the
+ * JTAG TAP in TLR.
+ */
+const uint8_t adiv5_seq_swd_to_jtag[] = {
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x9c, 0xff
+};
+const unsigned adiv5_seq_swd_to_jtag_len = 71;
+
+/**
+ * SWD-to-dormant sequence.
+ *
+ * This is at least 50 SWCLK cycles with SWDIO high to put the interface
+ * in reset state, followed by a specific 16-bit sequence.
+ */
+const uint8_t adiv5_seq_swd_to_dormant[] = {
+       0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x8e, 0x03
+};
+const unsigned adiv5_seq_swd_to_dormant_len = 66;
+
+/**
+ * Dormant-to-SWD sequence.
+ *
+ * This is at least 8 TCK/SWCLK cycles with TMS/SWDIO high to abort any ongoing
+ * selection alert sequence, followed by a specific 128-bit selection alert
+ * sequence, followed by 4 TCK/SWCLK cycles with TMS/SWDIO low, followed by
+ * a specific protocol-dependent activation code. For SWD the activation code
+ * is an 8-bit sequence. The sequence ends with a line reset.
+ */
+const uint8_t adiv5_seq_dormant_to_swd[] = {
+       0xff,
+       0x92, 0xf3, 0x09, 0x62, 0x95, 0x2d, 0x85, 0x86,
+       0xe9, 0xaf, 0xdd, 0xe3, 0xa2, 0x0e, 0xbc, 0x19,
+       0x10, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f
+};
+const unsigned adiv5_seq_dormant_to_swd_len = 199;
+
 /* ARM ADI Specification requires at least 10 bits used for TAR autoincrement  
*/
 
 /*
diff --git a/src/target/arm_adi_v5.h b/src/target/arm_adi_v5.h
index a340b76..e9b44b3 100644
--- a/src/target/arm_adi_v5.h
+++ b/src/target/arm_adi_v5.h
@@ -295,6 +295,20 @@ struct dap_ops {
 };
 
 /*
+ * Bit sequences
+ */
+extern const uint8_t  adiv5_seq_swd_line_reset[];
+extern const unsigned adiv5_seq_swd_line_reset_len;
+extern const uint8_t  adiv5_seq_jtag_to_swd[];
+extern const unsigned adiv5_seq_jtag_to_swd_len;
+extern const uint8_t  adiv5_seq_swd_to_jtag[];
+extern const unsigned adiv5_seq_swd_to_jtag_len;
+extern const uint8_t  adiv5_seq_swd_to_dormant[];
+extern const unsigned adiv5_seq_swd_to_dormant_len;
+extern const uint8_t  adiv5_seq_dormant_to_swd[];
+extern const unsigned adiv5_seq_dormant_to_swd_len;
+
+/*
  * Access Port classes
  */
 enum ap_class {

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to