ARM926 Software reset problems
Russell King - ARM Linux
linux at arm.linux.org.uk
Fri Nov 13 09:51:10 EST 2009
On Fri, Nov 13, 2009 at 03:41:17PM +0100, Ricardo Martínez wrote:
> I'm one step further. kernel_restart() uses arch_reset() which is hardware
> dependent.
kernel_restart() is not hardware dependent. The backend of it (arch_reset)
is because platforms reboot in their own specific manner. It is up to the
platform support implementer to make arch_reset() do the right thing on
their platform.
However, none of cpu_*reset nor arch_reset are intended to be called
directly. You _MUST_ call kernel_restart() to initiate a restart. No
other option will do - everything else is not supported and unreliable.
> Most ARM9 make arch_reset() through Watchdog peripheral. But the CPU I'm
> using does not have Watchdog timer.
So why are you trying to make arch_reset() work through a non-existent
watchdog?
Just point arch_reset() at cpu_reset() like this:
static void arch_reset(char mode, const char *cmd)
{
cpu_reset(0);
}
as many other platforms do, and just call kernel_restart().
More information about the linux-arm-kernel
mailing list