target/dsp5680xx: remove err_check()
Improve readability by dropping macros containing `return` Change-Id: Iccba4196d1d40405b596957aa53f18c106db1dc7 Signed-off-by: Mark O'Donovan <shiftee@posteo.net> Reviewed-on: https://review.openocd.org/c/openocd/+/9547 Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Tested-by: jenkins
This commit is contained in:
committed by
Antonio Borneo
parent
4c072f0d0a
commit
4894527eec
@@ -20,7 +20,6 @@ static struct dsp5680xx_common dsp5680xx_context;
|
|||||||
|
|
||||||
#define _E "DSP5680XX_ERROR:%d\nAt:%s:%d:%s"
|
#define _E "DSP5680XX_ERROR:%d\nAt:%s:%d:%s"
|
||||||
#define err_log(c, m) LOG_ERROR(_E, c, __func__, __LINE__, m)
|
#define err_log(c, m) LOG_ERROR(_E, c, __func__, __LINE__, m)
|
||||||
#define err_check(r, c, m) if (r != ERROR_OK) {LOG_ERROR(_E, c, __func__, __LINE__, m); return r; }
|
|
||||||
#define DEBUG_MSG "Debug mode be enabled to read mem."
|
#define DEBUG_MSG "Debug mode be enabled to read mem."
|
||||||
#define HALT_MSG "Target must be halted."
|
#define HALT_MSG "Target must be halted."
|
||||||
|
|
||||||
@@ -72,14 +71,13 @@ static int dsp5680xx_drscan(struct target *target, uint8_t *d_in,
|
|||||||
int retval = ERROR_OK;
|
int retval = ERROR_OK;
|
||||||
|
|
||||||
if (!target->tap) {
|
if (!target->tap) {
|
||||||
retval = ERROR_FAIL;
|
err_log(DSP5680XX_ERROR_JTAG_INVALID_TAP, "Invalid tap");
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_INVALID_TAP,
|
return ERROR_FAIL;
|
||||||
"Invalid tap");
|
|
||||||
}
|
}
|
||||||
if (len > 32) {
|
if (len > 32) {
|
||||||
retval = ERROR_FAIL;
|
err_log(DSP5680XX_ERROR_JTAG_DR_LEN_OVERFLOW,
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_DR_LEN_OVERFLOW,
|
|
||||||
"dr_len overflow, maximum is 32");
|
"dr_len overflow, maximum is 32");
|
||||||
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
/* TODO what values of len are valid for jtag_add_plain_dr_scan? */
|
/* TODO what values of len are valid for jtag_add_plain_dr_scan? */
|
||||||
/* can i send as many bits as i want? */
|
/* can i send as many bits as i want? */
|
||||||
@@ -87,8 +85,10 @@ static int dsp5680xx_drscan(struct target *target, uint8_t *d_in,
|
|||||||
jtag_add_plain_dr_scan(len, d_in, d_out, TAP_IDLE);
|
jtag_add_plain_dr_scan(len, d_in, d_out, TAP_IDLE);
|
||||||
if (dsp5680xx_context.flush) {
|
if (dsp5680xx_context.flush) {
|
||||||
retval = dsp5680xx_execute_queue();
|
retval = dsp5680xx_execute_queue();
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_DRSCAN,
|
if (retval != ERROR_OK) {
|
||||||
"drscan failed!");
|
err_log(DSP5680XX_ERROR_JTAG_DRSCAN, "drscan failed!");
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (d_out)
|
if (d_out)
|
||||||
LOG_DEBUG("Data read (%d bits): 0x%04X", len, *d_out);
|
LOG_DEBUG("Data read (%d bits): 0x%04X", len, *d_out);
|
||||||
@@ -119,18 +119,15 @@ static int dsp5680xx_irscan(struct target *target, uint32_t *d_in,
|
|||||||
}
|
}
|
||||||
if (ir_len != target->tap->ir_length) {
|
if (ir_len != target->tap->ir_length) {
|
||||||
if (target->tap->enabled) {
|
if (target->tap->enabled) {
|
||||||
retval = ERROR_FAIL;
|
err_log(DSP5680XX_ERROR_INVALID_IR_LEN, "Invalid irlen");
|
||||||
err_check(retval, DSP5680XX_ERROR_INVALID_IR_LEN,
|
return ERROR_FAIL;
|
||||||
"Invalid irlen");
|
|
||||||
} else {
|
} else {
|
||||||
struct jtag_tap *t =
|
struct jtag_tap *t =
|
||||||
jtag_tap_by_string("dsp568013.chp");
|
jtag_tap_by_string("dsp568013.chp");
|
||||||
if ((!t)
|
if ((!t)
|
||||||
|| ((t->enabled) && (ir_len != tap_ir_len))) {
|
|| ((t->enabled) && (ir_len != tap_ir_len))) {
|
||||||
retval = ERROR_FAIL;
|
err_log(DSP5680XX_ERROR_INVALID_IR_LEN, "Invalid irlen");
|
||||||
err_check(retval,
|
return ERROR_FAIL;
|
||||||
DSP5680XX_ERROR_INVALID_IR_LEN,
|
|
||||||
"Invalid irlen");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -138,8 +135,10 @@ static int dsp5680xx_irscan(struct target *target, uint32_t *d_in,
|
|||||||
TAP_IDLE);
|
TAP_IDLE);
|
||||||
if (dsp5680xx_context.flush) {
|
if (dsp5680xx_context.flush) {
|
||||||
retval = dsp5680xx_execute_queue();
|
retval = dsp5680xx_execute_queue();
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_IRSCAN,
|
if (retval != ERROR_OK) {
|
||||||
"irscan failed!");
|
err_log(DSP5680XX_ERROR_JTAG_IRSCAN, "irscan failed!");
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
@@ -485,10 +484,14 @@ static int core_rx_lower_data(struct target *target, uint8_t *data_read)
|
|||||||
|
|
||||||
static int core_move_value_to_pc(struct target *target, uint32_t value)
|
static int core_move_value_to_pc(struct target *target, uint32_t value)
|
||||||
{
|
{
|
||||||
if (target->state != TARGET_HALTED)
|
if (target->state != TARGET_HALTED) {
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG)
|
err_log(DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG);
|
||||||
if (!dsp5680xx_context.debug_mode_enabled)
|
return ERROR_FAIL;
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG)
|
}
|
||||||
|
if (!dsp5680xx_context.debug_mode_enabled) {
|
||||||
|
err_log(DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG);
|
||||||
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
retval =
|
retval =
|
||||||
@@ -576,11 +579,10 @@ static int switch_tap(struct target *target, struct jtag_tap *master_tap,
|
|||||||
if (!master_tap) {
|
if (!master_tap) {
|
||||||
master_tap = jtag_tap_by_string("dsp568013.chp");
|
master_tap = jtag_tap_by_string("dsp568013.chp");
|
||||||
if (!master_tap) {
|
if (!master_tap) {
|
||||||
retval = ERROR_FAIL;
|
|
||||||
const char *msg = "Failed to get master tap.";
|
const char *msg = "Failed to get master tap.";
|
||||||
|
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_TAP_FIND_MASTER,
|
err_log(DSP5680XX_ERROR_JTAG_TAP_FIND_MASTER, msg);
|
||||||
msg);
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!core_tap) {
|
if (!core_tap) {
|
||||||
@@ -734,9 +736,9 @@ static int eonce_enter_debug_mode(struct target *target,
|
|||||||
|
|
||||||
tap_chp = jtag_tap_by_string("dsp568013.chp");
|
tap_chp = jtag_tap_by_string("dsp568013.chp");
|
||||||
if (!tap_chp) {
|
if (!tap_chp) {
|
||||||
retval = ERROR_FAIL;
|
err_log(DSP5680XX_ERROR_JTAG_TAP_FIND_MASTER,
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_TAP_FIND_MASTER,
|
|
||||||
"Failed to get master tap.");
|
"Failed to get master tap.");
|
||||||
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
tap_cpu = jtag_tap_by_string("dsp568013.cpu");
|
tap_cpu = jtag_tap_by_string("dsp568013.cpu");
|
||||||
if (!tap_cpu) {
|
if (!tap_cpu) {
|
||||||
@@ -814,9 +816,8 @@ static int eonce_enter_debug_mode(struct target *target,
|
|||||||
if ((ir_out & JTAG_STATUS_MASK) == JTAG_STATUS_DEBUG)
|
if ((ir_out & JTAG_STATUS_MASK) == JTAG_STATUS_DEBUG)
|
||||||
target->state = TARGET_HALTED;
|
target->state = TARGET_HALTED;
|
||||||
else {
|
else {
|
||||||
retval = ERROR_FAIL;
|
err_log(DSP5680XX_ERROR_HALT, "Failed to halt target.");
|
||||||
err_check(retval, DSP5680XX_ERROR_HALT,
|
return ERROR_FAIL;
|
||||||
"Failed to halt target.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
@@ -841,8 +842,8 @@ static int eonce_enter_debug_mode(struct target *target,
|
|||||||
} else {
|
} else {
|
||||||
const char *msg = "Failed to set EOnCE module to debug mode";
|
const char *msg = "Failed to set EOnCE module to debug mode";
|
||||||
|
|
||||||
retval = ERROR_TARGET_FAILURE;
|
err_log(DSP5680XX_ERROR_ENTER_DEBUG_MODE, msg);
|
||||||
err_check(retval, DSP5680XX_ERROR_ENTER_DEBUG_MODE, msg);
|
return ERROR_TARGET_FAILURE;
|
||||||
}
|
}
|
||||||
if (eonce_status)
|
if (eonce_status)
|
||||||
*eonce_status = data_read_from_dr;
|
*eonce_status = data_read_from_dr;
|
||||||
@@ -1056,9 +1057,9 @@ static int dsp5680xx_resume(struct target *target, bool current,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (retry == 0) {
|
if (retry == 0) {
|
||||||
retval = ERROR_TARGET_FAILURE;
|
err_log(DSP5680XX_ERROR_EXIT_DEBUG_MODE,
|
||||||
err_check(retval, DSP5680XX_ERROR_EXIT_DEBUG_MODE,
|
|
||||||
"Failed to exit debug mode...");
|
"Failed to exit debug mode...");
|
||||||
|
return ERROR_TARGET_FAILURE;
|
||||||
} else {
|
} else {
|
||||||
target->state = TARGET_RUNNING;
|
target->state = TARGET_RUNNING;
|
||||||
dsp5680xx_context.debug_mode_enabled = false;
|
dsp5680xx_context.debug_mode_enabled = false;
|
||||||
@@ -1074,8 +1075,11 @@ static int dsp5680xx_resume(struct target *target, bool current,
|
|||||||
jtag_add_sleep(TIME_DIV_FREESCALE * 200 * 1000);
|
jtag_add_sleep(TIME_DIV_FREESCALE * 200 * 1000);
|
||||||
|
|
||||||
retval = reset_jtag();
|
retval = reset_jtag();
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_RESET,
|
if (retval != ERROR_OK) {
|
||||||
|
err_log(DSP5680XX_ERROR_JTAG_RESET,
|
||||||
"Failed to reset JTAG state machine");
|
"Failed to reset JTAG state machine");
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
jtag_add_sleep(TIME_DIV_FREESCALE * 100 * 1000);
|
jtag_add_sleep(TIME_DIV_FREESCALE * 100 * 1000);
|
||||||
jtag_add_reset(0, 0);
|
jtag_add_reset(0, 0);
|
||||||
jtag_add_sleep(TIME_DIV_FREESCALE * 300 * 1000);
|
jtag_add_sleep(TIME_DIV_FREESCALE * 300 * 1000);
|
||||||
@@ -1086,9 +1090,8 @@ static int dsp5680xx_resume(struct target *target, bool current,
|
|||||||
target->state = TARGET_RUNNING;
|
target->state = TARGET_RUNNING;
|
||||||
dsp5680xx_context.debug_mode_enabled = false;
|
dsp5680xx_context.debug_mode_enabled = false;
|
||||||
} else {
|
} else {
|
||||||
retval = ERROR_TARGET_FAILURE;
|
err_log(DSP5680XX_ERROR_RESUME, "Failed to resume target");
|
||||||
err_check(retval, DSP5680XX_ERROR_RESUME,
|
return ERROR_TARGET_FAILURE;
|
||||||
"Failed to resume target");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
@@ -1209,10 +1212,14 @@ static int dsp5680xx_read(struct target *t, target_addr_t a, uint32_t size,
|
|||||||
|
|
||||||
uint8_t *buffer = buf;
|
uint8_t *buffer = buf;
|
||||||
|
|
||||||
if (target->state != TARGET_HALTED)
|
if (target->state != TARGET_HALTED) {
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG)
|
err_log(DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG);
|
||||||
if (!dsp5680xx_context.debug_mode_enabled)
|
return ERROR_FAIL;
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG)
|
}
|
||||||
|
if (!dsp5680xx_context.debug_mode_enabled) {
|
||||||
|
err_log(DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG);
|
||||||
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
int retval = ERROR_OK;
|
int retval = ERROR_OK;
|
||||||
|
|
||||||
@@ -1473,10 +1480,14 @@ static int dsp5680xx_write(struct target *target, target_addr_t a, uint32_t size
|
|||||||
|
|
||||||
uint8_t const *buffer = b;
|
uint8_t const *buffer = b;
|
||||||
|
|
||||||
if (target->state != TARGET_HALTED)
|
if (target->state != TARGET_HALTED) {
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG)
|
err_log(DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG);
|
||||||
if (!dsp5680xx_context.debug_mode_enabled)
|
return ERROR_FAIL;
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG)
|
}
|
||||||
|
if (!dsp5680xx_context.debug_mode_enabled) {
|
||||||
|
err_log(DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG);
|
||||||
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
|
|
||||||
@@ -1500,10 +1511,8 @@ static int dsp5680xx_write(struct target *target, target_addr_t a, uint32_t size
|
|||||||
dsp5680xx_write_32(target, address, count, buffer, p_mem);
|
dsp5680xx_write_32(target, address, count, buffer, p_mem);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
retval = ERROR_TARGET_DATA_ABORT;
|
err_log(DSP5680XX_ERROR_INVALID_DATA_SIZE_UNIT, "Invalid data size.");
|
||||||
err_check(retval, DSP5680XX_ERROR_INVALID_DATA_SIZE_UNIT,
|
return ERROR_TARGET_DATA_ABORT;
|
||||||
"Invalid data size.");
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
@@ -1511,10 +1520,14 @@ static int dsp5680xx_write(struct target *target, target_addr_t a, uint32_t size
|
|||||||
static int dsp5680xx_write_buffer(struct target *t, target_addr_t a, uint32_t size,
|
static int dsp5680xx_write_buffer(struct target *t, target_addr_t a, uint32_t size,
|
||||||
const uint8_t *b)
|
const uint8_t *b)
|
||||||
{
|
{
|
||||||
if (t->state != TARGET_HALTED)
|
if (t->state != TARGET_HALTED) {
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG)
|
err_log(DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG);
|
||||||
if (!dsp5680xx_context.debug_mode_enabled)
|
return ERROR_FAIL;
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG)
|
}
|
||||||
|
if (!dsp5680xx_context.debug_mode_enabled) {
|
||||||
|
err_log(DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG);
|
||||||
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
return dsp5680xx_write(t, a, 1, size, b);
|
return dsp5680xx_write(t, a, 1, size, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1531,10 +1544,14 @@ static int dsp5680xx_write_buffer(struct target *t, target_addr_t a, uint32_t si
|
|||||||
static int dsp5680xx_read_buffer(struct target *target, target_addr_t address, uint32_t size,
|
static int dsp5680xx_read_buffer(struct target *target, target_addr_t address, uint32_t size,
|
||||||
uint8_t *buffer)
|
uint8_t *buffer)
|
||||||
{
|
{
|
||||||
if (target->state != TARGET_HALTED)
|
if (target->state != TARGET_HALTED) {
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG)
|
err_log(DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG);
|
||||||
if (!dsp5680xx_context.debug_mode_enabled)
|
return ERROR_FAIL;
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG)
|
}
|
||||||
|
if (!dsp5680xx_context.debug_mode_enabled) {
|
||||||
|
err_log(DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG);
|
||||||
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
/* The "/2" solves the byte/word addressing issue.*/
|
/* The "/2" solves the byte/word addressing issue.*/
|
||||||
return dsp5680xx_read(target, address, 2, size / 2, buffer);
|
return dsp5680xx_read(target, address, 2, size / 2, buffer);
|
||||||
@@ -1644,15 +1661,19 @@ int dsp5680xx_f_protect_check(struct target *target, uint16_t *protected)
|
|||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
|
|
||||||
if (target->state != TARGET_HALTED)
|
if (target->state != TARGET_HALTED) {
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG)
|
err_log(DSP5680XX_ERROR_TARGET_RUNNING, HALT_MSG);
|
||||||
if (!dsp5680xx_context.debug_mode_enabled)
|
return ERROR_FAIL;
|
||||||
err_check(ERROR_FAIL, DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG)
|
}
|
||||||
|
if (!dsp5680xx_context.debug_mode_enabled) {
|
||||||
|
err_log(DSP5680XX_ERROR_NOT_IN_DEBUG, DEBUG_MSG);
|
||||||
|
return ERROR_FAIL;
|
||||||
|
}
|
||||||
if (!protected) {
|
if (!protected) {
|
||||||
const char *msg = "NULL pointer not valid.";
|
const char *msg = "NULL pointer not valid.";
|
||||||
|
|
||||||
err_check(ERROR_FAIL,
|
err_log(DSP5680XX_ERROR_PROTECT_CHECK_INVALID_ARGS, msg);
|
||||||
DSP5680XX_ERROR_PROTECT_CHECK_INVALID_ARGS, msg);
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
retval =
|
retval =
|
||||||
dsp5680xx_read_16_single(target, HFM_BASE_ADDR | HFM_PROT,
|
dsp5680xx_read_16_single(target, HFM_BASE_ADDR | HFM_PROT,
|
||||||
@@ -1700,10 +1721,10 @@ static int dsp5680xx_f_ex(struct target *target, uint16_t c, uint32_t address, u
|
|||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
if ((watchdog--) == 1) {
|
if ((watchdog--) == 1) {
|
||||||
retval = ERROR_TARGET_FAILURE;
|
|
||||||
const char *msg =
|
const char *msg =
|
||||||
"Timed out waiting for FM to finish old command.";
|
"Timed out waiting for FM to finish old command.";
|
||||||
err_check(retval, DSP5680XX_ERROR_FM_BUSY, msg);
|
err_log(DSP5680XX_ERROR_FM_BUSY, msg);
|
||||||
|
return ERROR_TARGET_FAILURE;
|
||||||
}
|
}
|
||||||
} while (!(i[0] & 0x40)); /* wait until current command is complete */
|
} while (!(i[0] & 0x40)); /* wait until current command is complete */
|
||||||
|
|
||||||
@@ -1773,17 +1794,17 @@ static int dsp5680xx_f_ex(struct target *target, uint16_t c, uint32_t address, u
|
|||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
if ((watchdog--) == 1) {
|
if ((watchdog--) == 1) {
|
||||||
retval = ERROR_TARGET_FAILURE;
|
err_log(DSP5680XX_ERROR_FM_CMD_TIMED_OUT,
|
||||||
err_check(retval, DSP5680XX_ERROR_FM_CMD_TIMED_OUT,
|
|
||||||
"FM execution did not finish.");
|
"FM execution did not finish.");
|
||||||
|
return ERROR_TARGET_FAILURE;
|
||||||
}
|
}
|
||||||
} while (!(i[0] & 0x40)); /* wait until the command is complete */
|
} while (!(i[0] & 0x40)); /* wait until the command is complete */
|
||||||
*hfm_ustat = ((i[0] << 8) | (i[1]));
|
*hfm_ustat = ((i[0] << 8) | (i[1]));
|
||||||
if (i[0] & HFM_USTAT_MASK_PVIOL_ACCER) {
|
if (i[0] & HFM_USTAT_MASK_PVIOL_ACCER) {
|
||||||
retval = ERROR_TARGET_FAILURE;
|
|
||||||
const char *msg =
|
const char *msg =
|
||||||
"pviol and/or accer bits set. HFM command execution error";
|
"pviol and/or accer bits set. HFM command execution error";
|
||||||
err_check(retval, DSP5680XX_ERROR_FM_EXEC, msg);
|
err_log(DSP5680XX_ERROR_FM_EXEC, msg);
|
||||||
|
return ERROR_TARGET_FAILURE;
|
||||||
}
|
}
|
||||||
return ERROR_OK;
|
return ERROR_OK;
|
||||||
}
|
}
|
||||||
@@ -1849,9 +1870,8 @@ static int set_fm_ck_div(struct target *target)
|
|||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
if (i[0] != (0x80 | (HFM_CLK_DEFAULT & 0x7f))) {
|
if (i[0] != (0x80 | (HFM_CLK_DEFAULT & 0x7f))) {
|
||||||
retval = ERROR_TARGET_FAILURE;
|
err_log(DSP5680XX_ERROR_FM_SET_CLK, "Unable to set HFM CLK divisor.");
|
||||||
err_check(retval, DSP5680XX_ERROR_FM_SET_CLK,
|
return ERROR_TARGET_FAILURE;
|
||||||
"Unable to set HFM CLK divisor.");
|
|
||||||
}
|
}
|
||||||
if (hfm_at_wrong_value)
|
if (hfm_at_wrong_value)
|
||||||
LOG_DEBUG("HFM CLK divisor set to 0x%02x.", i[0] & 0x7f);
|
LOG_DEBUG("HFM CLK divisor set to 0x%02x.", i[0] & 0x7f);
|
||||||
@@ -1884,8 +1904,10 @@ static int dsp5680xx_f_signature(struct target *target, uint32_t address, uint32
|
|||||||
/*
|
/*
|
||||||
* Generate error here, since it is not done in eonce_enter_debug_mode_without_reset
|
* Generate error here, since it is not done in eonce_enter_debug_mode_without_reset
|
||||||
*/
|
*/
|
||||||
err_check(retval, DSP5680XX_ERROR_HALT,
|
if (retval != ERROR_OK) {
|
||||||
"Failed to halt target.");
|
err_log(DSP5680XX_ERROR_HALT, "Failed to halt target.");
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
retval =
|
retval =
|
||||||
dsp5680xx_f_ex(target, HFM_CALCULATE_DATA_SIGNATURE, address, words,
|
dsp5680xx_f_ex(target, HFM_CALCULATE_DATA_SIGNATURE, address, words,
|
||||||
@@ -2152,11 +2174,10 @@ int dsp5680xx_f_wr(struct target *t, const uint8_t *b, uint32_t a, uint32_t coun
|
|||||||
return retval;
|
return retval;
|
||||||
if (count % 2) {
|
if (count % 2) {
|
||||||
/* TODO implement handling of odd number of words. */
|
/* TODO implement handling of odd number of words. */
|
||||||
retval = ERROR_FAIL;
|
|
||||||
const char *msg = "Cannot handle odd number of words.";
|
const char *msg = "Cannot handle odd number of words.";
|
||||||
|
|
||||||
err_check(retval, DSP5680XX_ERROR_FLASHING_INVALID_WORD_COUNT,
|
err_log(DSP5680XX_ERROR_FLASHING_INVALID_WORD_COUNT, msg);
|
||||||
msg);
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
dsp5680xx_context.flush = 1;
|
dsp5680xx_context.flush = 1;
|
||||||
@@ -2209,10 +2230,10 @@ int dsp5680xx_f_wr(struct target *t, const uint8_t *b, uint32_t a, uint32_t coun
|
|||||||
return retval;
|
return retval;
|
||||||
pc_crc = perl_crc(buffer, i);
|
pc_crc = perl_crc(buffer, i);
|
||||||
if (pc_crc != signature) {
|
if (pc_crc != signature) {
|
||||||
retval = ERROR_FAIL;
|
|
||||||
const char *msg =
|
const char *msg =
|
||||||
"Flashed data failed CRC check, flash again!";
|
"Flashed data failed CRC check, flash again!";
|
||||||
err_check(retval, DSP5680XX_ERROR_FLASHING_CRC, msg);
|
err_log(DSP5680XX_ERROR_FLASHING_CRC, msg);
|
||||||
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
@@ -2234,15 +2255,15 @@ int dsp5680xx_f_unlock(struct target *target)
|
|||||||
|
|
||||||
tap_chp = jtag_tap_by_string("dsp568013.chp");
|
tap_chp = jtag_tap_by_string("dsp568013.chp");
|
||||||
if (!tap_chp) {
|
if (!tap_chp) {
|
||||||
retval = ERROR_FAIL;
|
err_log(DSP5680XX_ERROR_JTAG_TAP_ENABLE_MASTER,
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_TAP_ENABLE_MASTER,
|
|
||||||
"Failed to get master tap.");
|
"Failed to get master tap.");
|
||||||
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
tap_cpu = jtag_tap_by_string("dsp568013.cpu");
|
tap_cpu = jtag_tap_by_string("dsp568013.cpu");
|
||||||
if (!tap_cpu) {
|
if (!tap_cpu) {
|
||||||
retval = ERROR_FAIL;
|
err_log(DSP5680XX_ERROR_JTAG_TAP_ENABLE_CORE,
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_TAP_ENABLE_CORE,
|
|
||||||
"Failed to get master tap.");
|
"Failed to get master tap.");
|
||||||
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
retval = eonce_enter_debug_mode_without_reset(target, &eonce_status);
|
retval = eonce_enter_debug_mode_without_reset(target, &eonce_status);
|
||||||
@@ -2253,8 +2274,11 @@ int dsp5680xx_f_unlock(struct target *target)
|
|||||||
jtag_add_sleep(TIME_DIV_FREESCALE * 200 * 1000);
|
jtag_add_sleep(TIME_DIV_FREESCALE * 200 * 1000);
|
||||||
|
|
||||||
retval = reset_jtag();
|
retval = reset_jtag();
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_RESET,
|
if (retval != ERROR_OK) {
|
||||||
|
err_log(DSP5680XX_ERROR_JTAG_RESET,
|
||||||
"Failed to reset JTAG state machine");
|
"Failed to reset JTAG state machine");
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
jtag_add_sleep(150);
|
jtag_add_sleep(150);
|
||||||
|
|
||||||
/* Enable core tap */
|
/* Enable core tap */
|
||||||
@@ -2297,8 +2321,11 @@ int dsp5680xx_f_unlock(struct target *target)
|
|||||||
jtag_add_sleep(TIME_DIV_FREESCALE * 200 * 1000);
|
jtag_add_sleep(TIME_DIV_FREESCALE * 200 * 1000);
|
||||||
|
|
||||||
retval = reset_jtag();
|
retval = reset_jtag();
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_RESET,
|
if (retval != ERROR_OK) {
|
||||||
|
err_log(DSP5680XX_ERROR_JTAG_RESET,
|
||||||
"Failed to reset JTAG state machine");
|
"Failed to reset JTAG state machine");
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
jtag_add_sleep(150);
|
jtag_add_sleep(150);
|
||||||
|
|
||||||
instr = 0x0606ffff;
|
instr = 0x0606ffff;
|
||||||
@@ -2343,17 +2370,20 @@ int dsp5680xx_f_lock(struct target *target)
|
|||||||
jtag_add_sleep(TIME_DIV_FREESCALE * 200 * 1000);
|
jtag_add_sleep(TIME_DIV_FREESCALE * 200 * 1000);
|
||||||
|
|
||||||
retval = reset_jtag();
|
retval = reset_jtag();
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_RESET,
|
if (retval != ERROR_OK) {
|
||||||
|
err_log(DSP5680XX_ERROR_JTAG_RESET,
|
||||||
"Failed to reset JTAG state machine");
|
"Failed to reset JTAG state machine");
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
jtag_add_sleep(TIME_DIV_FREESCALE * 100 * 1000);
|
jtag_add_sleep(TIME_DIV_FREESCALE * 100 * 1000);
|
||||||
jtag_add_reset(0, 0);
|
jtag_add_reset(0, 0);
|
||||||
jtag_add_sleep(TIME_DIV_FREESCALE * 300 * 1000);
|
jtag_add_sleep(TIME_DIV_FREESCALE * 300 * 1000);
|
||||||
|
|
||||||
tap_chp = jtag_tap_by_string("dsp568013.chp");
|
tap_chp = jtag_tap_by_string("dsp568013.chp");
|
||||||
if (!tap_chp) {
|
if (!tap_chp) {
|
||||||
retval = ERROR_FAIL;
|
err_log(DSP5680XX_ERROR_JTAG_TAP_ENABLE_MASTER,
|
||||||
err_check(retval, DSP5680XX_ERROR_JTAG_TAP_ENABLE_MASTER,
|
|
||||||
"Failed to get master tap.");
|
"Failed to get master tap.");
|
||||||
|
return ERROR_FAIL;
|
||||||
}
|
}
|
||||||
tap_cpu = jtag_tap_by_string("dsp568013.cpu");
|
tap_cpu = jtag_tap_by_string("dsp568013.cpu");
|
||||||
if (!tap_cpu) {
|
if (!tap_cpu) {
|
||||||
|
|||||||
Reference in New Issue
Block a user