1 /***************************************************************************
2 * Copyright (C) 2007-2008 by Øyvind Harboe *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
18 ***************************************************************************/
23 #include "embeddedice.h"
24 #include "minidriver.h"
25 #include "interface.h"
27 struct jtag_interface minidummy_interface =
30 .execute_queue = NULL,
37 .power_dropout = NULL,
38 .srst_asserted = NULL,
41 int interface_jtag_execute_queue(void)
43 /* synchronously do the operation here */
48 int interface_jtag_add_ir_scan(int num_fields, const struct scan_field *fields, tap_state_t state)
50 /* synchronously do the operation here */
56 int interface_jtag_add_plain_ir_scan(int num_fields, const struct scan_field *fields, tap_state_t state)
58 /* synchronously do the operation here */
63 int interface_jtag_add_dr_scan(int num_fields, const struct scan_field *fields, tap_state_t state)
65 /* synchronously do the operation here */
70 int interface_jtag_add_plain_dr_scan(int num_fields, const struct scan_field *fields, tap_state_t state)
72 /* synchronously do the operation here */
77 int interface_jtag_add_tlr()
79 /* synchronously do the operation here */
84 int interface_jtag_add_reset(int req_trst, int req_srst)
86 /* synchronously do the operation here */
91 int interface_jtag_add_runtest(int num_cycles, tap_state_t state)
93 /* synchronously do the operation here */
98 int interface_jtag_add_clocks(int num_cycles)
100 /* synchronously do the operation here */
105 int interface_jtag_add_sleep(uint32_t us)
111 int interface_jtag_add_pathmove(int num_states, const tap_state_t *path)
118 tap_state_t cur_state = cmd_queue_cur_state;
122 if (tap_state_transition(cur_state, false) == path[state_count])
126 else if (tap_state_transition(cur_state, true) == path[state_count])
132 LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_name(cur_state), tap_state_name(path[state_count]));
136 /* synchronously do the operation here */
138 cur_state = path[state_count];
144 /* synchronously do the operation here */
149 void embeddedice_write_dcc(struct jtag_tap *tap, int reg_addr, uint8_t *buffer, int little, int count)
152 for (i = 0; i < count; i++)
154 embeddedice_write_reg_inner(tap, reg_addr, fast_target_buffer_get_u32(buffer, little));