arm_tpiu_swo: fix autodetection of SWO pin frequency
While the documentation reports that SWO pin frequency can be
omitted to let the adapter autodetect the value, the code wrongly
drops an error when pin frequency is not specified.
Don't require the pin frequency to be set at "enable", but verify
that the adapter has properly changes it to a valid value.
Change-Id: I3dfbe3256e8887ef4f03512769b06381cdc9db0d
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reported-by: Karl Palsson <karlp@tweak.net.au>
Fixes: 184724d14e
("arm_tpiu_swo: add support for independent TPIU and SWO")
Reviewed-on: https://review.openocd.org/c/openocd/+/6310
Tested-by: jenkins
Reviewed-by: zapb <dev@zapb.de>
This commit is contained in:
parent
1b716b9d0d
commit
00d4699d0b
|
@ -625,10 +625,8 @@ static int jim_arm_tpiu_swo_enable(Jim_Interp *interp, int argc, Jim_Obj *const
|
||||||
}
|
}
|
||||||
|
|
||||||
if (obj->pin_protocol == TPIU_SPPR_PROTOCOL_MANCHESTER || obj->pin_protocol == TPIU_SPPR_PROTOCOL_UART)
|
if (obj->pin_protocol == TPIU_SPPR_PROTOCOL_MANCHESTER || obj->pin_protocol == TPIU_SPPR_PROTOCOL_UART)
|
||||||
if (!obj->swo_pin_freq) {
|
if (!obj->swo_pin_freq)
|
||||||
LOG_ERROR("SWO pin frequency not set");
|
LOG_DEBUG("SWO pin frequency not set, will be autodetected by the adapter");
|
||||||
return JIM_ERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct target *target = get_current_target(cmd_ctx);
|
struct target *target = get_current_target(cmd_ctx);
|
||||||
|
|
||||||
|
@ -731,6 +729,17 @@ static int jim_arm_tpiu_swo_enable(Jim_Interp *interp, int argc, Jim_Obj *const
|
||||||
return JIM_ERR;
|
return JIM_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (obj->pin_protocol == TPIU_SPPR_PROTOCOL_MANCHESTER || obj->pin_protocol == TPIU_SPPR_PROTOCOL_UART)
|
||||||
|
if (!swo_pin_freq) {
|
||||||
|
if (obj->swo_pin_freq)
|
||||||
|
LOG_ERROR("Adapter rejected SWO pin frequency %d Hz", obj->swo_pin_freq);
|
||||||
|
else
|
||||||
|
LOG_ERROR("Adapter does not support auto-detection of SWO pin frequency nor a default value");
|
||||||
|
|
||||||
|
arm_tpiu_swo_close_output(obj);
|
||||||
|
return JIM_ERR;
|
||||||
|
}
|
||||||
|
|
||||||
if (obj->swo_pin_freq != swo_pin_freq)
|
if (obj->swo_pin_freq != swo_pin_freq)
|
||||||
LOG_INFO("SWO pin data rate adjusted by adapter to %d Hz", swo_pin_freq);
|
LOG_INFO("SWO pin data rate adjusted by adapter to %d Hz", swo_pin_freq);
|
||||||
obj->swo_pin_freq = swo_pin_freq;
|
obj->swo_pin_freq = swo_pin_freq;
|
||||||
|
|
Loading…
Reference in New Issue