jtag: clarify jtag->init() and jtag->quit() definitions
only set jtag global pointer if jtag->init() succeeds. Less code, more clear what the rules are. Fix nit that error value from init() was not propagated unmodified. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
This commit is contained in:
parent
b69119668e
commit
e984dc1f16
|
@ -1368,12 +1368,13 @@ int adapter_init(struct command_context *cmd_ctx)
|
||||||
return ERROR_JTAG_INVALID_INTERFACE;
|
return ERROR_JTAG_INVALID_INTERFACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
jtag = jtag_interface;
|
int retval;
|
||||||
if (jtag_interface->init() != ERROR_OK)
|
retval = jtag_interface->init();
|
||||||
|
if (retval != ERROR_OK)
|
||||||
{
|
{
|
||||||
jtag = NULL;
|
return retval;
|
||||||
return ERROR_JTAG_INIT_FAILED;
|
|
||||||
}
|
}
|
||||||
|
jtag = jtag_interface;
|
||||||
|
|
||||||
/* LEGACY SUPPORT ... adapter drivers must declare what
|
/* LEGACY SUPPORT ... adapter drivers must declare what
|
||||||
* transports they allow. Until they all do so, assume
|
* transports they allow. Until they all do so, assume
|
||||||
|
@ -1383,7 +1384,7 @@ int adapter_init(struct command_context *cmd_ctx)
|
||||||
LOG_ERROR("Adapter driver '%s' did not declare "
|
LOG_ERROR("Adapter driver '%s' did not declare "
|
||||||
"which transports it allows; assuming "
|
"which transports it allows; assuming "
|
||||||
"JTAG-only", jtag->name);
|
"JTAG-only", jtag->name);
|
||||||
int retval = allow_transports(cmd_ctx, jtag_only);
|
retval = allow_transports(cmd_ctx, jtag_only);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
@ -1391,7 +1392,7 @@ int adapter_init(struct command_context *cmd_ctx)
|
||||||
int requested_khz = jtag_get_speed_khz();
|
int requested_khz = jtag_get_speed_khz();
|
||||||
int actual_khz = requested_khz;
|
int actual_khz = requested_khz;
|
||||||
int jtag_speed_var;
|
int jtag_speed_var;
|
||||||
int retval = jtag_get_speed(&jtag_speed_var);
|
retval = jtag_get_speed(&jtag_speed_var);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
retval = jtag_get_speed_readable(&actual_khz);
|
retval = jtag_get_speed_readable(&actual_khz);
|
||||||
|
|
|
@ -231,8 +231,14 @@ struct jtag_interface {
|
||||||
const struct command_registration *commands;
|
const struct command_registration *commands;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface driver must initalize any resources and connect to a
|
* Interface driver must initialize any resources and connect to a
|
||||||
* JTAG device.
|
* JTAG device.
|
||||||
|
*
|
||||||
|
* quit() is invoked if and only if init() succeeds. quit() is always
|
||||||
|
* invoked if init() succeeds. Same as malloc() + free(). Always
|
||||||
|
* invoke free() if malloc() succeeds and do not invoke free()
|
||||||
|
* otherwise.
|
||||||
|
*
|
||||||
* @returns ERROR_OK on success, or an error code on failure.
|
* @returns ERROR_OK on success, or an error code on failure.
|
||||||
*/
|
*/
|
||||||
int (*init)(void);
|
int (*init)(void);
|
||||||
|
@ -240,6 +246,7 @@ struct jtag_interface {
|
||||||
/**
|
/**
|
||||||
* Interface driver must tear down all resources and disconnect from
|
* Interface driver must tear down all resources and disconnect from
|
||||||
* the JTAG device.
|
* the JTAG device.
|
||||||
|
*
|
||||||
* @returns ERROR_OK on success, or an error code on failure.
|
* @returns ERROR_OK on success, or an error code on failure.
|
||||||
*/
|
*/
|
||||||
int (*quit)(void);
|
int (*quit)(void);
|
||||||
|
|
Loading…
Reference in New Issue