99724c406a700d22853334cb8436767eaf03882d
[openocd.git] / 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_INEN(n) (0x20 + 4 * n)
38 #define CTI_OUTEN0 0xA0
39 #define CTI_OUTEN1 0xA4
40 #define CTI_OUTEN2 0xA8
41 #define CTI_OUTEN3 0xAC
42 #define CTI_OUTEN4 0xB0
43 #define CTI_OUTEN5 0xB4
44 #define CTI_OUTEN6 0xB8
45 #define CTI_OUTEN7 0xBC
46 #define CTI_OUTEN(n) (0xA0 + 4 * n)
47 #define CTI_TRIN_STATUS 0x130
48 #define CTI_TROUT_STATUS 0x134
49 #define CTI_CHIN_STATUS 0x138
50 #define CTI_CHOU_STATUS 0x13C
51 #define CTI_GATE 0x140
52 #define CTI_UNLOCK 0xFB0
53
54 #define CTI_CHNL(x) (1 << x)
55 #define CTI_TRIG_HALT 0
56 #define CTI_TRIG_RESUME 1
57 #define CTI_TRIG(n) (1 << CTI_TRIG_##n)
58
59 /* forward-declare arm_cti struct */
60 struct arm_cti;
61
62 extern struct arm_cti *arm_cti_create(struct adiv5_ap *ap, uint32_t base);
63 extern int arm_cti_enable(struct arm_cti *self, bool enable);
64 extern int arm_cti_ack_events(struct arm_cti *self, uint32_t event);
65 extern int arm_cti_gate_channel(struct arm_cti *self, uint32_t channel);
66 extern int arm_cti_ungate_channel(struct arm_cti *self, uint32_t channel);
67 extern int arm_cti_write_reg(struct arm_cti *self, unsigned int reg, uint32_t value);
68 extern int arm_cti_read_reg(struct arm_cti *self, unsigned int reg, uint32_t *value);
69 extern int arm_cti_pulse_channel(struct arm_cti *self, uint32_t channel);
70 extern int arm_cti_set_channel(struct arm_cti *self, uint32_t channel);
71 extern int arm_cti_clear_channel(struct arm_cti *self, uint32_t channel);
72
73 #endif /* OPENOCD_TARGET_ARM_CTI_H */