]> git.sur5r.net Git - openocd/blob - src/target/arm_cti.h
armv8: valgrind memleak fixes
[openocd] / src / target / arm_cti.h
1 /***************************************************************************
2  *   Copyright (C) 2016 by Matthias Welwarsky                              *
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  *                                                                         *
18  ***************************************************************************/
19
20 #ifndef OPENOCD_TARGET_ARM_CTI_H
21 #define OPENOCD_TARGET_ARM_CTI_H
22
23 /*define CTI(cross trigger interface)*/
24 #define CTI_CTR                         0x0
25 #define CTI_INACK                       0x10
26 #define CTI_APPSET                      0x14
27 #define CTI_APPCLEAR            0x18
28 #define CTI_APPPULSE            0x1C
29 #define CTI_INEN0                       0x20
30 #define CTI_INEN1                       0x24
31 #define CTI_INEN2                       0x28
32 #define CTI_INEN3                       0x2C
33 #define CTI_INEN4                       0x30
34 #define CTI_INEN5                       0x34
35 #define CTI_INEN6                       0x38
36 #define CTI_INEN7                       0x3C
37 #define CTI_INEN8                       0x40
38 #define CTI_INEN(n)                     (0x20 + 4 * n)
39 #define CTI_OUTEN0                      0xA0
40 #define CTI_OUTEN1                      0xA4
41 #define CTI_OUTEN2                      0xA8
42 #define CTI_OUTEN3                      0xAC
43 #define CTI_OUTEN4                      0xB0
44 #define CTI_OUTEN5                      0xB4
45 #define CTI_OUTEN6                      0xB8
46 #define CTI_OUTEN7                      0xBC
47 #define CTI_OUTEN8                      0xC0
48 #define CTI_OUTEN(n)            (0xA0 + 4 * n)
49 #define CTI_TRIN_STATUS         0x130
50 #define CTI_TROUT_STATUS        0x134
51 #define CTI_CHIN_STATUS         0x138
52 #define CTI_CHOU_STATUS         0x13C
53 #define CTI_GATE                        0x140
54 #define CTI_UNLOCK                      0xFB0
55
56 #define CTI_CHNL(x)                     (1 << x)
57 #define CTI_TRIG_HALT           0
58 #define CTI_TRIG_RESUME         1
59 #define CTI_TRIG(n)                     (1 << CTI_TRIG_##n)
60
61 /* forward-declare arm_cti struct */
62 struct arm_cti;
63 struct adiv5_ap;
64
65 extern const char *arm_cti_name(struct arm_cti *self);
66 extern struct arm_cti *cti_instance_by_jim_obj(Jim_Interp *interp, Jim_Obj *o);
67 extern int arm_cti_enable(struct arm_cti *self, bool enable);
68 extern int arm_cti_ack_events(struct arm_cti *self, uint32_t event);
69 extern int arm_cti_gate_channel(struct arm_cti *self, uint32_t channel);
70 extern int arm_cti_ungate_channel(struct arm_cti *self, uint32_t channel);
71 extern int arm_cti_write_reg(struct arm_cti *self, unsigned int reg, uint32_t value);
72 extern int arm_cti_read_reg(struct arm_cti *self, unsigned int reg, uint32_t *value);
73 extern int arm_cti_pulse_channel(struct arm_cti *self, uint32_t channel);
74 extern int arm_cti_set_channel(struct arm_cti *self, uint32_t channel);
75 extern int arm_cti_clear_channel(struct arm_cti *self, uint32_t channel);
76 extern int arm_cti_cleanup_all(void);
77 extern int cti_register_commands(struct command_context *cmd_ctx);
78
79 #endif /* OPENOCD_TARGET_ARM_CTI_H */