Add support for the ATMEL SAM G55 Xplained Pro board and CPU.
[fw/openocd] / src / target / adi_v5_swd.c
index d1a4870334ad9770e74323be5cfebd1f9781ca3d..41ddbd7895698aae256955a04993d1702c30a2e3 100644 (file)
@@ -13,9 +13,7 @@
  *   GNU General Public License for more details.
  *
  *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the
- *   Free Software Foundation, Inc.,
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  ***************************************************************************/
 
 /**
@@ -109,6 +107,18 @@ static int swd_connect(struct adiv5_dap *dap)
         * MUST READ DPIDR
         */
 
+       /* Check if we should reset srst already when connecting, but not if reconnecting. */
+       if (!dap->do_reconnect) {
+               enum reset_types jtag_reset_config = jtag_get_reset_config();
+
+               if (jtag_reset_config & RESET_CNCT_UNDER_SRST) {
+                       if (jtag_reset_config & RESET_SRST_NO_GATING)
+                               swd_add_reset(1);
+                       else
+                               LOG_WARNING("\'srst_nogate\' reset_config option is required");
+               }
+       }
+
        /* Note, debugport_init() does setup too */
        jtag_interface->swd->switch_seq(JTAG_TO_SWD);
 
@@ -414,6 +424,8 @@ static int swd_init(struct command_context *ctx)
        /* Force the DAP's ops vector for SWD mode.
         * messy - is there a better way? */
        arm->dap->ops = &swd_dap_ops;
+       /* First connect after init is not reconnecting. */
+       dap->do_reconnect = false;
 
        return swd_connect(dap);
 }