target/adi_v5_swd: improve error check while updating DP_SELECT
[fw/openocd] / src / target / embeddedice.h
index 58a5fa9efa6c08dfb85d1f07a0b1f24a7b8b0df5..39902fb3ec920add7511768ceed9f22a7b618e22 100644 (file)
  *   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.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
-#ifndef EMBEDDED_ICE_H
-#define EMBEDDED_ICE_H
+#ifndef OPENOCD_TARGET_EMBEDDEDICE_H
+#define OPENOCD_TARGET_EMBEDDEDICE_H
 
 #include "arm7_9_common.h"
 
@@ -112,16 +110,19 @@ int embeddedice_handshake(struct arm_jtag *jtag_info, int hsbit, uint32_t timeou
  */
 static inline void embeddedice_write_reg_inner(struct jtag_tap *tap, int reg_addr, uint32_t value)
 {
-       static const int embeddedice_num_bits[] = {32, 6};
-       uint32_t values[2];
+       uint8_t out_reg_addr = (1 << 5) | reg_addr;
+       uint8_t out_value[4];
+       buf_set_u32(out_value, 0, 32, value);
 
-       values[0] = value;
-       values[1] = (1 << 5) | reg_addr;
+       struct scan_field fields[2] = {
+                       { .num_bits = 32, .out_value = out_value },
+                       { .num_bits = 6, .out_value = &out_reg_addr },
+       };
 
-       jtag_add_dr_out(tap, 2, embeddedice_num_bits, values, TAP_IDLE);
+       jtag_add_dr_scan(tap, 2, fields, TAP_IDLE);
 }
 
 void embeddedice_write_dcc(struct jtag_tap *tap, int reg_addr, const uint8_t *buffer,
                int little, int count);
 
-#endif /* EMBEDDED_ICE_H */
+#endif /* OPENOCD_TARGET_EMBEDDEDICE_H */