[U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset

Anatolij Gustschin
2011-03-12T13:15:39Z

On Thu, 10 Mar 2011 16:07:49 +0100
Stefano Babic <sbabic@denx.de> wrote:

> On 03/10/2011 11:53 AM, Anatolij Gustschin wrote:
> > Add output of the WRSR register content while booting so that
> > we can see the source of the last reset.
> >
> > Signed-off-by: Anatolij Gustschin <agust@denx.de>
>
> Hi Antolij,

Hi Stefano,

...
> > + printf("CPU: Freescale i.MX31 at %d MHz (WRSR=0x%04x)\n",
> > + mx31_get_mcu_main_clk() / 1000000, wdog->wrsr);
>
> Why is it better to use the wrsr register instead of the rcsr register ?
> We are actually using the rcsr register for other i.MX processors
> (MX51/MX53/MX35). And if we want to print the reset cause, I think it
> should be better to write directly the cause as string instead of the
> register value.

The reason for using wrsr register is that when reading this register,
we can also recognize the software reset cause (SWFT, bit 0 is set).
In our use case we have this requirement. U-Boot and Linux for iMX31
assert system reset by clearing SRS bit in wcr. This software reset
is reported by SWFT in the wrsr register. When I read rcsr after a
software reset, I always get watchdog timeout reset cause (probably
because the reset was performed by writing to the watchdog module
register wcr). But actually this reset was a software reset.

I'm fine with using strings for reset cause if there is no objection.

> I do not think printing the reset cause should be implemented in
> print_cpuinfo(), because it manages a different issue (reset cause
> against CPU information). The print_cpuinfo() should have only CPU
> related values, as clock values, and so on, as it is implemented now for
> this and other processors. Better to add a different function for the
> reset cause.

Were should we call this different function? Should be put it
into init_sequence[]?

Best regards,
Anatolij