public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset
@ 2011-03-10 10:53 Anatolij Gustschin
  2011-03-10 13:47 ` Fabio Estevam
  2011-03-10 15:07 ` Stefano Babic
  0 siblings, 2 replies; 6+ messages in thread
From: Anatolij Gustschin @ 2011-03-10 10:53 UTC (permalink / raw)
  To: u-boot

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>
---
 arch/arm/cpu/arm1136/mx31/generic.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/arch/arm/cpu/arm1136/mx31/generic.c b/arch/arm/cpu/arm1136/mx31/generic.c
index 1415d6c..788faed 100644
--- a/arch/arm/cpu/arm1136/mx31/generic.c
+++ b/arch/arm/cpu/arm1136/mx31/generic.c
@@ -93,8 +93,10 @@ void mx31_gpio_mux(unsigned long mode)
 #if defined(CONFIG_DISPLAY_CPUINFO)
 int print_cpuinfo (void)
 {
-	printf("CPU:   Freescale i.MX31 at %d MHz\n",
-		mx31_get_mcu_main_clk() / 1000000);
+	struct wdog_regs *wdog = (struct wdog_regs *)WDOG_BASE;
+
+	printf("CPU:   Freescale i.MX31 at %d MHz (WRSR=0x%04x)\n",
+		mx31_get_mcu_main_clk() / 1000000, wdog->wrsr);
 	return 0;
 }
 #endif
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset
  2011-03-10 10:53 [U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset Anatolij Gustschin
@ 2011-03-10 13:47 ` Fabio Estevam
  2011-03-12 13:22   ` Anatolij Gustschin
  2011-03-10 15:07 ` Stefano Babic
  1 sibling, 1 reply; 6+ messages in thread
From: Fabio Estevam @ 2011-03-10 13:47 UTC (permalink / raw)
  To: u-boot

Hi Anatolij,

--- On Thu, 3/10/11, Anatolij Gustschin <agust@denx.de> wrote:
....?? ???
> mx31_get_mcu_main_clk() / 1000000);
> +??? struct wdog_regs *wdog = (struct> wdog_regs *)WDOG_BASE;
> +
> +??? printf("CPU:???Freescale i.MX31 at %d MHz (WRSR=0x%04x)\n",
> +??
> mx31_get_mcu_main_clk() / 1000000, wdog->wrsr);
>  ??? return 0;

Wouldn?t it be better to show a string for the reset source, rather than a pure register value?

I sent a similar patch yesterday for MX31PDK: http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/95615

,but I agree that moving it to the generic code is a better idea.

Regards,

Fabio Estevam



      

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset
  2011-03-10 10:53 [U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset Anatolij Gustschin
  2011-03-10 13:47 ` Fabio Estevam
@ 2011-03-10 15:07 ` Stefano Babic
  2011-03-12 13:15   ` Anatolij Gustschin
  1 sibling, 1 reply; 6+ messages in thread
From: Stefano Babic @ 2011-03-10 15:07 UTC (permalink / raw)
  To: u-boot

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,

> ---
>  arch/arm/cpu/arm1136/mx31/generic.c |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/cpu/arm1136/mx31/generic.c b/arch/arm/cpu/arm1136/mx31/generic.c
> index 1415d6c..788faed 100644
> --- a/arch/arm/cpu/arm1136/mx31/generic.c
> +++ b/arch/arm/cpu/arm1136/mx31/generic.c
> @@ -93,8 +93,10 @@ void mx31_gpio_mux(unsigned long mode)
>  #if defined(CONFIG_DISPLAY_CPUINFO)
>  int print_cpuinfo (void)
>  {
> -	printf("CPU:   Freescale i.MX31 at %d MHz\n",
> -		mx31_get_mcu_main_clk() / 1000000);
> +	struct wdog_regs *wdog = (struct wdog_regs *)WDOG_BASE;
> +
> +	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.

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.

Best regards,
Stefano Babic

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset
  2011-03-10 15:07 ` Stefano Babic
@ 2011-03-12 13:15   ` Anatolij Gustschin
  2011-03-14 11:55     ` Stefano Babic
  0 siblings, 1 reply; 6+ messages in thread
From: Anatolij Gustschin @ 2011-03-12 13:15 UTC (permalink / raw)
  To: u-boot

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

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset
  2011-03-10 13:47 ` Fabio Estevam
@ 2011-03-12 13:22   ` Anatolij Gustschin
  0 siblings, 0 replies; 6+ messages in thread
From: Anatolij Gustschin @ 2011-03-12 13:22 UTC (permalink / raw)
  To: u-boot

Hi Fabio,

On Thu, 10 Mar 2011 05:47:15 -0800 (PST)
Fabio Estevam <fabioestevam@yahoo.com> wrote:

> Hi Anatolij,
> 
> --- On Thu, 3/10/11, Anatolij Gustschin <agust@denx.de> wrote:
> ....?? ???
> > mx31_get_mcu_main_clk() / 1000000);
> > +??? struct wdog_regs *wdog = (struct> wdog_regs *)WDOG_BASE;
> > +
> > +??? printf("CPU:???Freescale i.MX31 at %d MHz (WRSR=0x%04x)\n",
> > +??
> > mx31_get_mcu_main_clk() / 1000000, wdog->wrsr);
> >  ??? return 0;
> 
> Wouldn?t it be better to show a string for the reset source, rather than a pure register value?

I'm fine with using a string.

Viele Gr??e,
Anatolij

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset
  2011-03-12 13:15   ` Anatolij Gustschin
@ 2011-03-14 11:55     ` Stefano Babic
  0 siblings, 0 replies; 6+ messages in thread
From: Stefano Babic @ 2011-03-14 11:55 UTC (permalink / raw)
  To: u-boot

On 03/12/2011 02:15 PM, Anatolij Gustschin wrote:

> 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.

Ok, understood.

>> 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[]?

Well, I have not thought as a general function to be inserted in the
init_sequence, I do not know if other ARM processor can export this
function. On other i.MX processors, the reset cause is printed inside
the checkboard function, if CONFIG_DISPLAY_BOARDINFO is set, and not
inside print_cpuinfo(). I understand that the cpuinfo reports only how
to identify the CPU, and the reset cause should be handled separately.

IMHO should be enough to have a mxc_get_reset_cause() (or something like
this) that the board maintainer can call if for some reason he must
perform different actions according to the last reset cause. As name, I
would prefer to identify not static functions starting with mxc_, as I
am trying to uniform all i.MX exponing the same set of functions.

Best regards,
Stefano

-- 
=====================================================================
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
=====================================================================

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2011-03-14 11:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-10 10:53 [U-Boot] [PATCH 1/2] ARM: MX31: print WRSR to indicate the source of the last reset Anatolij Gustschin
2011-03-10 13:47 ` Fabio Estevam
2011-03-12 13:22   ` Anatolij Gustschin
2011-03-10 15:07 ` Stefano Babic
2011-03-12 13:15   ` Anatolij Gustschin
2011-03-14 11:55     ` Stefano Babic

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox