CortexA8: Implement debug base autodetection
Implement autodetection of debug base. Also, implement a function solving various hardware quirks (like iMX51 ROM Table location bug). Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
This commit is contained in:
parent
887cac65b0
commit
1fa91f336a
|
@ -73,7 +73,6 @@ static int cortex_a8_get_ttb(struct target *target, uint32_t *result);
|
||||||
*/
|
*/
|
||||||
#define swjdp_memoryap 0
|
#define swjdp_memoryap 0
|
||||||
#define swjdp_debugap 1
|
#define swjdp_debugap 1
|
||||||
#define OMAP3530_DEBUG_BASE 0x54011000
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cortex-A8 Basic debug access, very low level assumes state is saved
|
* Cortex-A8 Basic debug access, very low level assumes state is saved
|
||||||
|
@ -1714,12 +1713,7 @@ static int cortex_a8_examine_first(struct target *target)
|
||||||
int i;
|
int i;
|
||||||
int retval = ERROR_OK;
|
int retval = ERROR_OK;
|
||||||
uint32_t didr, ctypr, ttypr, cpuid;
|
uint32_t didr, ctypr, ttypr, cpuid;
|
||||||
|
uint32_t dbgbase, apid;
|
||||||
/* stop assuming this is an OMAP! */
|
|
||||||
LOG_DEBUG("TODO - autoconfigure");
|
|
||||||
|
|
||||||
/* Here we shall insert a proper ROM Table scan */
|
|
||||||
armv7a->debug_base = OMAP3530_DEBUG_BASE;
|
|
||||||
|
|
||||||
/* We do one extra read to ensure DAP is configured,
|
/* We do one extra read to ensure DAP is configured,
|
||||||
* we call ahbap_debugport_init(swjdp) instead
|
* we call ahbap_debugport_init(swjdp) instead
|
||||||
|
@ -1728,6 +1722,17 @@ static int cortex_a8_examine_first(struct target *target)
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
|
/* Get ROM Table base */
|
||||||
|
retval = dap_get_debugbase(swjdp, 1, &dbgbase, &apid);
|
||||||
|
if (retval != ERROR_OK)
|
||||||
|
return retval;
|
||||||
|
|
||||||
|
/* Lookup 0x15 -- Processor DAP */
|
||||||
|
retval = dap_lookup_cs_component(swjdp, 1, dbgbase, 0x15,
|
||||||
|
&armv7a->debug_base);
|
||||||
|
if (retval != ERROR_OK)
|
||||||
|
return retval;
|
||||||
|
|
||||||
retval = mem_ap_read_atomic_u32(swjdp, armv7a->debug_base + CPUDBG_CPUID, &cpuid);
|
retval = mem_ap_read_atomic_u32(swjdp, armv7a->debug_base + CPUDBG_CPUID, &cpuid);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
|
|
Loading…
Reference in New Issue