tcl/interface: add linuxgpiod cfg for Aspeed AST2600
[fw/openocd] / src / target / embeddedice.c
index 61ee8bbd92f0d5e63128043f1eaf23c4604db57d..9bfee81941c81450935da4862868d10e49c7e6d8 100644 (file)
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
 /***************************************************************************
  *   Copyright (C) 2005 by Dominic Rath                                    *
  *   Dominic.Rath@gmx.de                                                   *
@@ -7,19 +9,6 @@
  *                                                                         *
  *   Copyright (C) 2008 by Spencer Oliver                                  *
  *   spen@spen-soft.co.uk                                                  *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   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, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -303,6 +292,22 @@ struct reg_cache *embeddedice_build_reg_cache(struct target *target,
        return reg_cache;
 }
 
+/**
+ * Free all memory allocated for EmbeddedICE register cache
+ */
+void embeddedice_free_reg_cache(struct reg_cache *reg_cache)
+{
+       if (!reg_cache)
+               return;
+
+       for (unsigned int i = 0; i < reg_cache->num_regs; i++)
+               free(reg_cache->reg_list[i].value);
+
+       free(reg_cache->reg_list[0].arch_info);
+       free(reg_cache->reg_list);
+       free(reg_cache);
+}
+
 /**
  * Initialize EmbeddedICE module, if needed.
  */
@@ -629,7 +634,6 @@ int embeddedice_handshake(struct arm_jtag *jtag_info, int hsbit, uint32_t timeou
        return ERROR_TARGET_TIMEOUT;
 }
 
-#ifndef HAVE_JTAG_MINIDRIVER_H
 /**
  * This is an inner loop of the open loop DCC write of data to target
  */
@@ -644,6 +648,3 @@ void embeddedice_write_dcc(struct jtag_tap *tap,
                buffer += 4;
        }
 }
-#else
-/* provided by minidriver */
-#endif