mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-10-06 14:22:18 +00:00
ppc/85xx: Clean up do_reset
There is no reason to do a run time check for e500 v1 based cores to determine if we have the GUTs RSTCR facility. Only the first generation of PQ3 parts (MPC8540/41/55/60) do not have it. So checking to see if we are e500 v2 would miss future parts (like e500mc). Just change this to be ifdef'd based on CONFIG_MPC85{40,41,55,60}. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
6946086859
commit
5079ae4a20
1 changed files with 9 additions and 16 deletions
|
@ -153,27 +153,15 @@ int checkcpu (void)
|
||||||
|
|
||||||
int do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
|
int do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
uint pvr;
|
/* Everything after the first generation of PQ3 parts has RSTCR */
|
||||||
uint ver;
|
#if defined(CONFIG_MPC8540) || defined(CONFIG_MPC8541) || \
|
||||||
|
defined(CONFIG_MPC8555) || defined(CONFIG_MPC8560)
|
||||||
unsigned long val, msr;
|
unsigned long val, msr;
|
||||||
|
|
||||||
pvr = get_pvr();
|
|
||||||
ver = PVR_VER(pvr);
|
|
||||||
|
|
||||||
if (ver & 1){
|
|
||||||
/* e500 v2 core has reset control register */
|
|
||||||
volatile unsigned int * rstcr;
|
|
||||||
rstcr = (volatile unsigned int *)(CONFIG_SYS_IMMR + 0xE00B0);
|
|
||||||
*rstcr = 0x2; /* HRESET_REQ */
|
|
||||||
udelay(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fallthrough if the code above failed
|
|
||||||
* Initiate hard reset in debug control register DBCR0
|
* Initiate hard reset in debug control register DBCR0
|
||||||
* Make sure MSR[DE] = 1
|
* Make sure MSR[DE] = 1. This only resets the core.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
msr = mfmsr ();
|
msr = mfmsr ();
|
||||||
msr |= MSR_DE;
|
msr |= MSR_DE;
|
||||||
mtmsr (msr);
|
mtmsr (msr);
|
||||||
|
@ -181,6 +169,11 @@ int do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
|
||||||
val = mfspr(DBCR0);
|
val = mfspr(DBCR0);
|
||||||
val |= 0x70000000;
|
val |= 0x70000000;
|
||||||
mtspr(DBCR0,val);
|
mtspr(DBCR0,val);
|
||||||
|
#else
|
||||||
|
volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
|
||||||
|
out_be32(&gur->rstcr, 0x2); /* HRESET_REQ */
|
||||||
|
udelay(100);
|
||||||
|
#endif
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue