Patchwork [U-Boot,v2,1/2] MX31: mx31pdk: Add watchdog support

login
register
mail settings
Submitter Fabio Estevam
Date April 10, 2011, 6:17 p.m.
Message ID <1302459471-12308-1-git-send-email-festevam@gmail.com>
Download mbox | patch
Permalink /patch/90526/
State Accepted
Delegated to: Stefano Babic
Headers show

Comments

Fabio Estevam - April 10, 2011, 6:17 p.m.
Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
---
Changes since v1:
- define BOARD_LATE_INIT in /mx31pdk.h

 board/freescale/mx31pdk/mx31pdk.c |   16 ++++++++++++++++
 include/configs/mx31pdk.h         |    3 +++
 2 files changed, 19 insertions(+), 0 deletions(-)
Fabio Estevam - April 26, 2011, 12:54 a.m.
Hi Stefano,

Ping?

Regards,

Fabio Estevam

On 4/10/2011 3:17 PM, Fabio Estevam wrote:
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
> Changes since v1:
> - define BOARD_LATE_INIT in /mx31pdk.h
> 
>  board/freescale/mx31pdk/mx31pdk.c |   16 ++++++++++++++++
>  include/configs/mx31pdk.h         |    3 +++
>  2 files changed, 19 insertions(+), 0 deletions(-)
> 
> diff --git a/board/freescale/mx31pdk/mx31pdk.c b/board/freescale/mx31pdk/mx31pdk.c
> index 3f291fc..4ef548f 100644
> --- a/board/freescale/mx31pdk/mx31pdk.c
> +++ b/board/freescale/mx31pdk/mx31pdk.c
> @@ -28,9 +28,17 @@
>  #include <netdev.h>
>  #include <asm/arch/clock.h>
>  #include <asm/arch/imx-regs.h>
> +#include <watchdog.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> +#ifdef CONFIG_HW_WATCHDOG
> +void hw_watchdog_reset(void)
> +{
> +	mxc_hw_watchdog_reset();
> +}
> +#endif
> +
>  int dram_init(void)
>  {
>  	/* dram_init must store complete ramsize in gd->ram_size */
> @@ -68,6 +76,14 @@ int board_init(void)
>  	return 0;
>  }
>  
> +int board_late_init(void)
> +{
> +#ifdef CONFIG_HW_WATCHDOG
> +	mxc_hw_watchdog_enable();
> +#endif
> +	return 0;
> +}
> +
>  int checkboard(void)
>  {
>  	printf("Board: i.MX31 MAX PDK (3DS)\n");
> diff --git a/include/configs/mx31pdk.h b/include/configs/mx31pdk.h
> index d4c6d16..f5d3ee7 100644
> --- a/include/configs/mx31pdk.h
> +++ b/include/configs/mx31pdk.h
> @@ -61,6 +61,7 @@
>  
>  #define CONFIG_MXC_UART		1
>  #define CONFIG_SYS_MX31_UART1	1
> +#define CONFIG_HW_WATCHDOG
>  
>  #define CONFIG_HARD_SPI		1
>  #define CONFIG_MXC_SPI		1
> @@ -98,6 +99,8 @@
>   */
>  #undef CONFIG_CMD_IMLS
>  
> +#define BOARD_LATE_INIT
> +
>  #define CONFIG_BOOTDELAY	3
>  
>  #define	CONFIG_EXTRA_ENV_SETTINGS					\
Detlev Zundel - April 27, 2011, 11:35 a.m.
Hi Fabio,

> Ping?
>
> Regards,
>
> Fabio Estevam
>
> On 4/10/2011 3:17 PM, Fabio Estevam wrote:
>> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
>> ---
>> Changes since v1:
>> - define BOARD_LATE_INIT in /mx31pdk.h
>> 
>>  board/freescale/mx31pdk/mx31pdk.c |   16 ++++++++++++++++
>>  include/configs/mx31pdk.h         |    3 +++
>>  2 files changed, 19 insertions(+), 0 deletions(-)
>> 
>> diff --git a/board/freescale/mx31pdk/mx31pdk.c b/board/freescale/mx31pdk/mx31pdk.c
>> index 3f291fc..4ef548f 100644
>> --- a/board/freescale/mx31pdk/mx31pdk.c
>> +++ b/board/freescale/mx31pdk/mx31pdk.c
>> @@ -28,9 +28,17 @@
>>  #include <netdev.h>
>>  #include <asm/arch/clock.h>
>>  #include <asm/arch/imx-regs.h>
>> +#include <watchdog.h>
>>  
>>  DECLARE_GLOBAL_DATA_PTR;
>>  
>> +#ifdef CONFIG_HW_WATCHDOG
>> +void hw_watchdog_reset(void)
>> +{
>> +	mxc_hw_watchdog_reset();
>> +}
>> +#endif
>> +

I was just discussing this with Wolfgang again and actually you should
use CONFIG_WATCHDOG for this.  The latter was meant for CPU internal
watchdog functionality, whereas CONFIG_HW_WATCHDOG was for external
(i.e. i2c or other) separate watchdog chips.  I'm working on a patch to
README to make this more widely known.

>>  int dram_init(void)
>>  {
>>  	/* dram_init must store complete ramsize in gd->ram_size */
>> @@ -68,6 +76,14 @@ int board_init(void)
>>  	return 0;
>>  }
>>  
>> +int board_late_init(void)
>> +{
>> +#ifdef CONFIG_HW_WATCHDOG
>> +	mxc_hw_watchdog_enable();
>> +#endif
>> +	return 0;
>> +}
>> +
>>  int checkboard(void)
>>  {
>>  	printf("Board: i.MX31 MAX PDK (3DS)\n");
>> diff --git a/include/configs/mx31pdk.h b/include/configs/mx31pdk.h
>> index d4c6d16..f5d3ee7 100644
>> --- a/include/configs/mx31pdk.h
>> +++ b/include/configs/mx31pdk.h
>> @@ -61,6 +61,7 @@
>>  
>>  #define CONFIG_MXC_UART		1
>>  #define CONFIG_SYS_MX31_UART1	1
>> +#define CONFIG_HW_WATCHDOG
>>  
>>  #define CONFIG_HARD_SPI		1
>>  #define CONFIG_MXC_SPI		1
>> @@ -98,6 +99,8 @@
>>   */
>>  #undef CONFIG_CMD_IMLS
>>  
>> +#define BOARD_LATE_INIT
>> +
>>  #define CONFIG_BOOTDELAY	3
>>  
>>  #define	CONFIG_EXTRA_ENV_SETTINGS					\

Why cannot we put the code into i.mx31 specific code and only keep the
config board specific?  In this patch there is (again) zero board
dependency, so all i.MX31 boards should be able to profit from the work.

Thanks
  Detlev

Patch

diff --git a/board/freescale/mx31pdk/mx31pdk.c b/board/freescale/mx31pdk/mx31pdk.c
index 3f291fc..4ef548f 100644
--- a/board/freescale/mx31pdk/mx31pdk.c
+++ b/board/freescale/mx31pdk/mx31pdk.c
@@ -28,9 +28,17 @@ 
 #include <netdev.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
+#include <watchdog.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
+#ifdef CONFIG_HW_WATCHDOG
+void hw_watchdog_reset(void)
+{
+	mxc_hw_watchdog_reset();
+}
+#endif
+
 int dram_init(void)
 {
 	/* dram_init must store complete ramsize in gd->ram_size */
@@ -68,6 +76,14 @@  int board_init(void)
 	return 0;
 }
 
+int board_late_init(void)
+{
+#ifdef CONFIG_HW_WATCHDOG
+	mxc_hw_watchdog_enable();
+#endif
+	return 0;
+}
+
 int checkboard(void)
 {
 	printf("Board: i.MX31 MAX PDK (3DS)\n");
diff --git a/include/configs/mx31pdk.h b/include/configs/mx31pdk.h
index d4c6d16..f5d3ee7 100644
--- a/include/configs/mx31pdk.h
+++ b/include/configs/mx31pdk.h
@@ -61,6 +61,7 @@ 
 
 #define CONFIG_MXC_UART		1
 #define CONFIG_SYS_MX31_UART1	1
+#define CONFIG_HW_WATCHDOG
 
 #define CONFIG_HARD_SPI		1
 #define CONFIG_MXC_SPI		1
@@ -98,6 +99,8 @@ 
  */
 #undef CONFIG_CMD_IMLS
 
+#define BOARD_LATE_INIT
+
 #define CONFIG_BOOTDELAY	3
 
 #define	CONFIG_EXTRA_ENV_SETTINGS					\