]> git.sur5r.net Git - openocd/blob - src/jtag/minidummy/minidummy.c
minidriver: fix inline capability of minidriver
[openocd] / 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 <jtag/jtag.h>
24 #include <target/embeddedice.h>
25 #include <jtag/minidriver.h>
26 #include <jtag/interface.h>
27
28 struct jtag_interface minidummy_interface =
29 {
30         .name = "minidummy",
31         .execute_queue = NULL,
32         .speed = NULL,
33         .commands = NULL,
34         .init = NULL,
35         .quit = NULL,
36         .khz = NULL,
37         .speed_div = NULL,
38         .power_dropout = NULL,
39         .srst_asserted = NULL,
40 };
41
42 int interface_jtag_execute_queue(void)
43 {
44         /* synchronously do the operation here */
45
46         return ERROR_OK;
47 }
48
49 int interface_jtag_add_ir_scan(int num_fields, const struct scan_field *fields, tap_state_t state)
50 {
51         /* synchronously do the operation here */
52
53         return ERROR_OK;
54
55 }
56
57 int interface_jtag_add_plain_ir_scan(int num_fields, const struct scan_field *fields, tap_state_t state)
58 {
59         /* synchronously do the operation here */
60
61         return ERROR_OK;
62 }
63
64 int interface_jtag_add_dr_scan(int num_fields, const struct scan_field *fields, tap_state_t state)
65 {
66         /* synchronously do the operation here */
67
68         return ERROR_OK;
69 }
70
71 int interface_jtag_add_plain_dr_scan(int num_fields, const struct scan_field *fields, tap_state_t state)
72 {
73         /* synchronously do the operation here */
74
75         return ERROR_OK;
76 }
77
78 int interface_jtag_add_tlr()
79 {
80         /* synchronously do the operation here */
81
82         return ERROR_OK;
83 }
84
85 int interface_jtag_add_reset(int req_trst, int req_srst)
86 {
87         /* synchronously do the operation here */
88
89         return ERROR_OK;
90 }
91
92 int interface_jtag_add_runtest(int num_cycles, tap_state_t state)
93 {
94         /* synchronously do the operation here */
95
96         return ERROR_OK;
97 }
98
99 int interface_jtag_add_clocks(int num_cycles)
100 {
101         /* synchronously do the operation here */
102
103         return ERROR_OK;
104 }
105
106 int interface_jtag_add_sleep(uint32_t us)
107 {
108         jtag_sleep(us);
109         return ERROR_OK;
110 }
111
112 int interface_jtag_add_pathmove(int num_states, const tap_state_t *path)
113 {
114         int state_count;
115         int tms = 0;
116
117         state_count = 0;
118
119         tap_state_t cur_state = cmd_queue_cur_state;
120
121         while (num_states)
122         {
123                 if (tap_state_transition(cur_state, false) == path[state_count])
124                 {
125                         tms = 0;
126                 }
127                 else if (tap_state_transition(cur_state, true) == path[state_count])
128                 {
129                         tms = 1;
130                 }
131                 else
132                 {
133                         LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_name(cur_state), tap_state_name(path[state_count]));
134                         exit(-1);
135                 }
136
137                 /* synchronously do the operation here */
138
139                 cur_state = path[state_count];
140                 state_count++;
141                 num_states--;
142         }
143
144
145         /* synchronously do the operation here */
146
147         return ERROR_OK;
148 }
149
150 void embeddedice_write_dcc(struct jtag_tap *tap, int reg_addr, uint8_t *buffer, int little, int count)
151 {
152         int i;
153         for (i = 0; i < count; i++)
154         {
155                 embeddedice_write_reg_inner(tap, reg_addr, fast_target_buffer_get_u32(buffer, little));
156                 buffer += 4;
157         }
158 }