Update documentationf or jtag_interface structure members.

git-svn-id: svn://svn.berlios.de/openocd/trunk@2018 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
zwelch 2009-06-03 01:39:04 +00:00
parent 0d5da4bccb
commit 41018ff44b

View File

@ -189,49 +189,89 @@ static inline tap_state_t jtag_debug_state_machine(const void *tms_buf,
typedef struct jtag_interface_s typedef struct jtag_interface_s
{ {
/// The name of the JTAG interface driver.
char* name; char* name;
/* queued command execution /**
* Execute queued commands.
* @returns ERROR_OK on success, or an error code on failure.
*/ */
int (*execute_queue)(void); int (*execute_queue)(void);
/* interface initalization /**
* Set the interface speed.
* @param speed The new interface speed setting.
* @returns ERROR_OK on success, or an error code on failure.
*/ */
int (*speed)(int speed); int (*speed)(int speed);
/**
* The interface driver may register additional commands to expose
* additional features not covered by the standard command set.
* @param cmd_ctx The context in which commands should be registered.
* @returns ERROR_OK on success, or an error code on failure.
*/
int (*register_commands)(struct command_context_s* cmd_ctx); int (*register_commands)(struct command_context_s* cmd_ctx);
/**
* Interface driver must initalize any resources and connect to a
* JTAG device.
* @returns ERROR_OK on success, or an error code on failure.
*/
int (*init)(void); int (*init)(void);
/**
* Interface driver must tear down all resources and disconnect from
* the JTAG device.
* @returns ERROR_OK on success, or an error code on failure.
*/
int (*quit)(void); int (*quit)(void);
/* returns JTAG maxium speed for KHz. 0=RTCK. The function returns /**
* Returns JTAG maxium speed for KHz. 0=RTCK. The function returns
* a failure if it can't support the KHz/RTCK. * a failure if it can't support the KHz/RTCK.
* *
* WARNING!!!! if RTCK is *slow* then think carefully about * WARNING!!!! if RTCK is *slow* then think carefully about
* whether you actually want to support this in the driver. * whether you actually want to support this in the driver.
* Many target scripts are written to handle the absence of RTCK * Many target scripts are written to handle the absence of RTCK
* and use a fallback kHz TCK. * and use a fallback kHz TCK.
* @returns ERROR_OK on success, or an error code on failure.
*/ */
int (*khz)(int khz, int* jtag_speed); int (*khz)(int khz, int* jtag_speed);
/* returns the KHz for the provided JTAG speed. 0=RTCK. The function returns /**
* a failure if it can't support the KHz/RTCK. */ * Calculate the clock frequency (in KHz) for the given @a speed.
* @param speed The desired interface speed setting.
* @param khz On return, contains the speed in KHz (0 for RTCK).
* @returns ERROR_OK on success, or an error code if the
* interface cannot support the specified speed (KHz or RTCK).
*/
int (*speed_div)(int speed, int* khz); int (*speed_div)(int speed, int* khz);
/* Read and clear the power dropout flag. Note that a power dropout /**
* can be transitionary, easily much less than a ms. * Read and clear the power dropout flag. Note that a power dropout
* can be transitionary, easily much less than a ms.
* *
* So to find out if the power is *currently* on, you must invoke * To find out if the power is *currently* on, one must invoke this
* this method twice. Once to clear the power dropout flag and a * method twice. Once to clear the power dropout flag and a second
* second time to read the current state. * time to read the current state. The default implementation
* never reports power dropouts.
* *
* Currently the default implementation is never to detect power dropout. * @returns ERROR_OK on success, or an error code on failure.
*/ */
int (*power_dropout)(int* power_dropout); int (*power_dropout)(int* power_dropout);
/* Read and clear the srst asserted detection flag. /**
* Read and clear the srst asserted detection flag.
* *
* NB!!!! like power_dropout this does *not* read the current * Like power_dropout this does *not* read the current
* state. srst assertion is transitionary and *can* be much * state. SRST assertion is transitionary and may be much
* less than 1ms. * less than 1ms, so the interface driver must watch for these
* events until this routine is called.
*
* @param srst_asserted On return, indicates whether SRST has
* been asserted.
* @returns ERROR_OK on success, or an error code on failure.
*/ */
int (*srst_asserted)(int* srst_asserted); int (*srst_asserted)(int* srst_asserted);
} jtag_interface_t; } jtag_interface_t;