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"
30 jtag_interface_t minidummy_interface
=
33 .execute_queue
= NULL
,
35 .register_commands
= NULL
,
40 .power_dropout
= NULL
,
41 .srst_asserted
= NULL
,
49 int interface_jtag_execute_queue(void)
51 /* synchronously do the operation here */
60 extern int jtag_check_value(uint8_t *captured
, void *priv
);
62 int interface_jtag_set_end_state(tap_state_t state
)
68 int interface_jtag_add_ir_scan(int num_fields
, const scan_field_t
*fields
, tap_state_t state
)
70 /* synchronously do the operation here */
80 int interface_jtag_add_plain_ir_scan(int num_fields
, const scan_field_t
*fields
, tap_state_t state
)
82 /* synchronously do the operation here */
87 /*extern jtag_command_t **jtag_get_last_command_p(void);*/
89 int interface_jtag_add_dr_scan(int num_fields
, const scan_field_t
*fields
, tap_state_t state
)
91 /* synchronously do the operation here */
96 int interface_jtag_add_plain_dr_scan(int num_fields
, const scan_field_t
*fields
, tap_state_t state
)
98 /* synchronously do the operation here */
104 int interface_jtag_add_tlr()
106 /* synchronously do the operation here */
113 int interface_jtag_add_reset(int req_trst
, int req_srst
)
115 /* synchronously do the operation here */
121 int interface_jtag_add_runtest(int num_cycles
, tap_state_t state
)
123 /* synchronously do the operation here */
128 int interface_jtag_add_clocks(int num_cycles
)
130 /* synchronously do the operation here */
135 int interface_jtag_add_sleep(u32 us
)
141 int interface_jtag_add_pathmove(int num_states
, const tap_state_t
*path
)
148 tap_state_t cur_state
=cmd_queue_cur_state
;
152 if (tap_state_transition(cur_state
, false) == path
[state_count
])
156 else if (tap_state_transition(cur_state
, true) == path
[state_count
])
162 LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_name(cur_state
), tap_state_name(path
[state_count
]));
166 /* synchronously do the operation here */
168 cur_state
= path
[state_count
];
174 /* synchronously do the operation here */
181 void embeddedice_write_dcc(jtag_tap_t
*tap
, int reg_addr
, uint8_t *buffer
, int little
, int count
)
184 for (i
= 0; i
< count
; i
++)
186 embeddedice_write_reg_inner(tap
, reg_addr
, fast_target_buffer_get_u32(buffer
, little
));