arm: socfpga: misc: Fix warm reset
Write necessary magic value into the Warm Boot from ON-Chip RAM group Enable register to enable Warm reset support. Instead of doing this in the reset_cpu() function, we do it in arch early init to avoid breaking old kernel code which expects this magic value to be already written into this register. This magic is originally excavated from common/spl/spl.c in the u-boot port from altera, where this value was written just before the SPL jumped to actual U-Boot in the RAM. Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
066ad14a22
commit
ef84861b7d
|
@ -194,6 +194,16 @@ static uint32_t iswgrp_handoff[8];
|
|||
int arch_early_init_r(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
/*
|
||||
* Write magic value into magic register to unlock support for
|
||||
* issuing warm reset. The ancient kernel code expects this
|
||||
* value to be written into the register by the bootloader, so
|
||||
* to support that old code, we write it here instead of in the
|
||||
* reset_cpu() function just before reseting the CPU.
|
||||
*/
|
||||
writel(0xae9efebc, &sysmgr_regs->romcodegrp_warmramgrp_enable);
|
||||
|
||||
for (i = 0; i < 8; i++) /* Cache initial SW setting regs */
|
||||
iswgrp_handoff[i] = readl(&sysmgr_regs->iswgrp_handoff[i]);
|
||||
|
||||
|
|
Loading…
Reference in New Issue