- added support for error handlers to JTAG scan commands (jtag_[plain_][ir|dr]_scan)
[fw/openocd] / src / target / etb.h
1 /***************************************************************************\r
2  *   Copyright (C) 2007 by Dominic Rath                                    *\r
3  *   Dominic.Rath@gmx.de                                                   *\r
4  *                                                                         *\r
5  *   This program is free software; you can redistribute it and/or modify  *\r
6  *   it under the terms of the GNU General Public License as published by  *\r
7  *   the Free Software Foundation; either version 2 of the License, or     *\r
8  *   (at your option) any later version.                                   *\r
9  *                                                                         *\r
10  *   This program is distributed in the hope that it will be useful,       *\r
11  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *\r
12  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *\r
13  *   GNU General Public License for more details.                          *\r
14  *                                                                         *\r
15  *   You should have received a copy of the GNU General Public License     *\r
16  *   along with this program; if not, write to the                         *\r
17  *   Free Software Foundation, Inc.,                                       *\r
18  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *\r
19  ***************************************************************************/\r
20 #ifndef ETB_H\r
21 #define ETB_H\r
22 \r
23 #include "command.h"\r
24 #include "target.h"\r
25 #include "register.h"\r
26 #include "arm_jtag.h"\r
27 \r
28 /* ETB registers */\r
29 enum\r
30 {\r
31     ETB_ID = 0x00,\r
32     ETB_RAM_DEPTH = 0x01,\r
33     ETB_RAM_WIDTH = 0x02,\r
34     ETB_STATUS = 0x03,\r
35     ETB_RAM_DATA = 0x04,\r
36     ETB_RAM_READ_POINTER = 0x05,\r
37     ETB_RAM_WRITE_POINTER = 0x06,\r
38     ETB_TRIGGER_COUNTER = 0x07,\r
39     ETB_CTRL = 0x08,\r
40 };\r
41 \r
42 typedef struct etb_s\r
43 {\r
44         int chain_pos;\r
45         int cur_scan_chain;\r
46         reg_cache_t *reg_cache;\r
47         \r
48         /* ETB parameters */\r
49         int RAM_depth;\r
50         int RAM_width;\r
51 } etb_t;\r
52 \r
53 typedef struct etb_reg_s\r
54 {\r
55         int addr;\r
56         etb_t *etb;\r
57 } etb_reg_t;\r
58 \r
59 extern reg_cache_t* etb_build_reg_cache(etb_t *etb);\r
60 extern int etb_read_reg(reg_t *reg);\r
61 extern int etb_write_reg(reg_t *reg, u32 value);\r
62 extern int etb_read_reg_w_check(reg_t *reg, u8* check_value, u8* check_mask);\r
63 extern int etb_store_reg(reg_t *reg);\r
64 extern int etb_set_reg(reg_t *reg, u32 value);\r
65 extern int etb_set_reg_w_exec(reg_t *reg, u8 *buf);\r
66 \r
67 extern int etb_register_commands(struct command_context_s *cmd_ctx, command_t *arm7_9_cmd);\r
68 \r
69 #endif /* ETB_H */\r