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 */ 80