diff options
author | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2015-11-13 23:48:46 +0100 |
---|---|---|
committer | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2015-12-29 20:26:45 +0000 |
commit | a6c4eb03455f6e97fc25183aae249d6ccdcbfb0f (patch) | |
tree | a994a27efca2f7b081747ff7ee82d78b2c98b534 /src/jtag/swd.h | |
parent | bf4cf766310768198cfa766467d47bdb180f9b27 (diff) | |
download | riscv-openocd-a6c4eb03455f6e97fc25183aae249d6ccdcbfb0f.zip riscv-openocd-a6c4eb03455f6e97fc25183aae249d6ccdcbfb0f.tar.gz riscv-openocd-a6c4eb03455f6e97fc25183aae249d6ccdcbfb0f.tar.bz2 |
swd: Remove DAP from parameter list
Making the SWD driver aware of the DAP that controls it is a layering
violation.
The only usage for the DAP pointer is to store the number of idle cycles
the AP may need to avoid WAITs. Replace the DAP pointer with a cycle
count hint instead to avoid future misuse.
Change-Id: I3e64e11a43ba2396bd646a4cf8f9bc331805d802
Signed-off-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/3141
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Diffstat (limited to 'src/jtag/swd.h')
-rw-r--r-- | src/jtag/swd.h | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/src/jtag/swd.h b/src/jtag/swd.h index 41baec1..d208f39 100644 --- a/src/jtag/swd.h +++ b/src/jtag/swd.h @@ -153,48 +153,47 @@ struct swd_driver { * queued transactions are executed. If the frequency is lowered, it may * apply immediately. * - * @param dap The DAP controlled by the SWD link. * @param hz The desired frequency in Hz. * @return The actual resulting frequency after rounding. */ - int_least32_t (*frequency)(struct adiv5_dap *dap, int_least32_t hz); + int_least32_t (*frequency)(int_least32_t hz); /** * Queue a special SWDIO sequence. * - * @param dap The DAP controlled by the SWD link. * @param seq The special sequence to generate. * @return ERROR_OK if the sequence was queued, negative error if the * sequence is unsupported. */ - int (*switch_seq)(struct adiv5_dap *dap, enum swd_special_seq seq); + int (*switch_seq)(enum swd_special_seq seq); /** * Queued read of an AP or DP register. * - * @param dap The DAP controlled by the SWD link. * @param Command byte with APnDP/RnW/addr/parity bits * @param Where to store value to read from register + * @param ap_delay_hint Number of idle cycles that may be + * needed after an AP access to avoid WAITs */ - void (*read_reg)(struct adiv5_dap *dap, uint8_t cmd, uint32_t *value); + void (*read_reg)(uint8_t cmd, uint32_t *value, uint32_t ap_delay_hint); /** * Queued write of an AP or DP register. * - * @param dap The DAP controlled by the SWD link. * @param Command byte with APnDP/RnW/addr/parity bits * @param Value to be written to the register + * @param ap_delay_hint Number of idle cycles that may be + * needed after an AP access to avoid WAITs */ - void (*write_reg)(struct adiv5_dap *dap, uint8_t cmd, uint32_t value); + void (*write_reg)(uint8_t cmd, uint32_t value, uint32_t ap_delay_hint); /** * Execute any queued transactions and collect the result. * - * @param dap The DAP controlled by the SWD link. * @return ERROR_OK on success, Ack response code on WAIT/FAULT * or negative error code on other kinds of failure. */ - int (*run)(struct adiv5_dap *dap); + int (*run)(void); /** * Configures data collection from the Single-wire @@ -208,7 +207,7 @@ struct swd_driver { * * @return ERROR_OK on success, else a negative fault code. */ - int *(*trace)(struct adiv5_dap *dap, bool swo); + int *(*trace)(bool swo); }; int swd_init_reset(struct command_context *cmd_ctx); |