- split fileio handling into fileio part and image handling
[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 #include "etb.h"\r
29 #include "etm.h"\r
30 \r
31 /* ETB registers */\r
32 enum\r
33 {\r
34     ETB_ID = 0x00,\r
35     ETB_RAM_DEPTH = 0x01,\r
36     ETB_RAM_WIDTH = 0x02,\r
37     ETB_STATUS = 0x03,\r
38     ETB_RAM_DATA = 0x04,\r
39     ETB_RAM_READ_POINTER = 0x05,\r
40     ETB_RAM_WRITE_POINTER = 0x06,\r
41     ETB_TRIGGER_COUNTER = 0x07,\r
42     ETB_CTRL = 0x08,\r
43 };\r
44 \r
45 typedef struct etb_s\r
46 {\r
47         etm_context_t *etm_ctx;\r
48         int chain_pos;\r
49         int cur_scan_chain;\r
50         reg_cache_t *reg_cache;\r
51         \r
52         /* ETB parameters */\r
53         int ram_depth;\r
54         int ram_width;\r
55 } etb_t;\r
56 \r
57 typedef struct etb_reg_s\r
58 {\r
59         int addr;\r
60         etb_t *etb;\r
61 } etb_reg_t;\r
62 \r
63 extern etm_capture_driver_t etb_capture_driver;\r
64 \r
65 extern reg_cache_t* etb_build_reg_cache(etb_t *etb);\r
66 extern int etb_read_reg(reg_t *reg);\r
67 extern int etb_write_reg(reg_t *reg, u32 value);\r
68 extern int etb_read_reg_w_check(reg_t *reg, u8* check_value, u8* check_mask);\r
69 extern int etb_store_reg(reg_t *reg);\r
70 extern int etb_set_reg(reg_t *reg, u32 value);\r
71 extern int etb_set_reg_w_exec(reg_t *reg, u8 *buf);\r
72 \r
73 extern int etb_register_commands(struct command_context_s *cmd_ctx);\r
74 \r
75 #endif /* ETB_H */\r