2cab0f576e6a5b0145f3f2e345b492e90255d314
[openocd.git] / src / jtag / minidummy / minidummy.c
1 /***************************************************************************
2 * Copyright (C) 2007-2008 by √ėyvind Harboe *
3 * *
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. *
8 * *
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. *
13 * *
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 ***************************************************************************/
19 #ifdef HAVE_CONFIG_H
20 #include "config.h"
21 #endif
22
23 #include "embeddedice.h"
24 #include "minidriver.h"
25 #include "interface.h"
26
27
28
29
30 jtag_interface_t minidummy_interface =
31 {
32 .name = "minidummy",
33 .execute_queue = NULL,
34 .speed = NULL,
35 .register_commands = NULL,
36 .init = NULL,
37 .quit = NULL,
38 .khz = NULL,
39 .speed_div = NULL,
40 .power_dropout = NULL,
41 .srst_asserted = NULL,
42 };
43
44
45
46
47
48
49 int interface_jtag_execute_queue(void)
50 {
51 /* synchronously do the operation here */
52
53 return ERROR_OK;
54 }
55
56
57
58
59
60 extern int jtag_check_value(uint8_t *captured, void *priv);
61
62 int interface_jtag_add_ir_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
63 {
64 /* synchronously do the operation here */
65
66 return ERROR_OK;
67
68 }
69
70
71
72
73
74 int interface_jtag_add_plain_ir_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
75 {
76 /* synchronously do the operation here */
77
78 return ERROR_OK;
79 }
80
81 /*extern jtag_command_t **jtag_get_last_command_p(void);*/
82
83 int interface_jtag_add_dr_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
84 {
85 /* synchronously do the operation here */
86
87 return ERROR_OK;
88 }
89
90 int interface_jtag_add_plain_dr_scan(int num_fields, const scan_field_t *fields, tap_state_t state)
91 {
92 /* synchronously do the operation here */
93
94 return ERROR_OK;
95 }
96
97
98 int interface_jtag_add_tlr()
99 {
100 /* synchronously do the operation here */
101
102 return ERROR_OK;
103 }
104
105
106
107 int interface_jtag_add_reset(int req_trst, int req_srst)
108 {
109 /* synchronously do the operation here */
110
111 return ERROR_OK;
112 }
113
114
115 int interface_jtag_add_runtest(int num_cycles, tap_state_t state)
116 {
117 /* synchronously do the operation here */
118
119 return ERROR_OK;
120 }
121
122 int interface_jtag_add_clocks(int num_cycles)
123 {
124 /* synchronously do the operation here */
125
126 return ERROR_OK;
127 }
128
129 int interface_jtag_add_sleep(uint32_t us)
130 {
131 jtag_sleep(us);
132 return ERROR_OK;
133 }
134
135 int interface_jtag_add_pathmove(int num_states, const tap_state_t *path)
136 {
137 int state_count;
138 int tms = 0;
139
140 state_count = 0;
141
142 tap_state_t cur_state = cmd_queue_cur_state;
143
144 while (num_states)
145 {
146 if (tap_state_transition(cur_state, false) == path[state_count])
147 {
148 tms = 0;
149 }
150 else if (tap_state_transition(cur_state, true) == path[state_count])
151 {
152 tms = 1;
153 }
154 else
155 {
156 LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_name(cur_state), tap_state_name(path[state_count]));
157 exit(-1);
158 }
159
160 /* synchronously do the operation here */
161
162 cur_state = path[state_count];
163 state_count++;
164 num_states--;
165 }
166
167
168 /* synchronously do the operation here */
169
170 return ERROR_OK;
171 }
172
173
174
175 void embeddedice_write_dcc(jtag_tap_t *tap, int reg_addr, uint8_t *buffer, int little, int count)
176 {
177 int i;
178 for (i = 0; i < count; i++)
179 {
180 embeddedice_write_reg_inner(tap, reg_addr, fast_target_buffer_get_u32(buffer, little));
181 buffer += 4;
182 }
183 }
184