cortexm: Only force halt before probe() if probe was forced.
This commit is contained in:
parent
da75acf015
commit
525b90d4e5
|
@ -337,7 +337,7 @@ static bool adiv5_component_probe(ADIv5_AP_t *ap, uint32_t addr)
|
||||||
switch (pidr_pn_bits[i].arch) {
|
switch (pidr_pn_bits[i].arch) {
|
||||||
case aa_cortexm:
|
case aa_cortexm:
|
||||||
DEBUG("-> cortexm_probe\n");
|
DEBUG("-> cortexm_probe\n");
|
||||||
cortexm_probe(ap);
|
cortexm_probe(ap, false);
|
||||||
break;
|
break;
|
||||||
case aa_cortexa:
|
case aa_cortexa:
|
||||||
DEBUG("-> cortexa_probe\n");
|
DEBUG("-> cortexa_probe\n");
|
||||||
|
@ -473,7 +473,7 @@ void adiv5_dp_init(ADIv5_DP_t *dp)
|
||||||
probed |= adiv5_component_probe(ap, ap->base);
|
probed |= adiv5_component_probe(ap, ap->base);
|
||||||
if (!probed && (dp->idcode & 0xfff) == 0x477) {
|
if (!probed && (dp->idcode & 0xfff) == 0x477) {
|
||||||
DEBUG("-> cortexm_probe forced\n");
|
DEBUG("-> cortexm_probe forced\n");
|
||||||
cortexm_probe(ap);
|
cortexm_probe(ap, true);
|
||||||
probed = true;
|
probed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -264,7 +264,7 @@ static bool cortexm_forced_halt(target *t)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cortexm_probe(ADIv5_AP_t *ap)
|
bool cortexm_probe(ADIv5_AP_t *ap, bool forced)
|
||||||
{
|
{
|
||||||
target *t;
|
target *t;
|
||||||
|
|
||||||
|
@ -323,8 +323,10 @@ bool cortexm_probe(ADIv5_AP_t *ap)
|
||||||
target_check_error(t);
|
target_check_error(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (forced)
|
||||||
if (!cortexm_forced_halt(t))
|
if (!cortexm_forced_halt(t))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#define PROBE(x) \
|
#define PROBE(x) \
|
||||||
do { if ((x)(t)) {target_halt_resume(t, 0); return true;} else target_check_error(t); } while (0)
|
do { if ((x)(t)) {target_halt_resume(t, 0); return true;} else target_check_error(t); } while (0)
|
||||||
|
|
||||||
|
|
|
@ -168,7 +168,7 @@ extern long cortexm_wait_timeout;
|
||||||
|
|
||||||
#define CORTEXM_TOPT_INHIBIT_SRST (1 << 2)
|
#define CORTEXM_TOPT_INHIBIT_SRST (1 << 2)
|
||||||
|
|
||||||
bool cortexm_probe(ADIv5_AP_t *ap);
|
bool cortexm_probe(ADIv5_AP_t *ap, bool forced);
|
||||||
ADIv5_AP_t *cortexm_ap(target *t);
|
ADIv5_AP_t *cortexm_ap(target *t);
|
||||||
|
|
||||||
bool cortexm_attach(target *t);
|
bool cortexm_attach(target *t);
|
||||||
|
|
Loading…
Reference in New Issue