
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