MX31: mx31pdk: Add watchdog support
PATCH v2 1/2 MX31: mx31pdk: Add watchdog support
---
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(-)
board/freescale/mx31pdk/mx31pdk.c +16 -0
@@ -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" );
include/configs/mx31pdk.h +3 -0
@@ -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 \
Signature · 1 line
1.6.0.4
PATCH v2 2/2 MX31: mx31pdk: Print the cause of reset
---
Changes since v1:
- Use 3 bits for rcsr mask
board/freescale/mx31pdk/mx31pdk.c | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-)
board/freescale/mx31pdk/mx31pdk.c +24 -1
@@ -86,7 +86,30 @@ int board_late_init(void)int checkboard (void ) { -printf ("Board: i.MX31 MAX PDK (3DS)\n" ); +u32 cause; +struct clock_control_regs *ccm = + (struct clock_control_regs *)CCM_BASE ; +puts ("Board: MX31PDK [" ); + + cause = ccm->rcsr &0x07 ; +switch (cause) { +case 0x0000 : +puts ("POR" ); +break ; +case 0x0001 : +puts ("RST" ); +break ; +case 0x0002 : +puts ("WDOG" ); +break ; +case 0x0006 : +puts ("JTAG" ); +break ; +default : +puts ("unknown" ); + } + +puts ("]\n" );return 0 ; }
Signature · 1 line
1.6.0.4
PATCH v2 2/2 MX31: mx31pdk: Print the cause of reset
Hi Fabio,
Quoted 33 lines
Signed-off-by Fabio Estevam <[email protected]>---
Changes since v1:
- Use 3 bits for rcsr maskboard/freescale/mx31pdk/mx31pdk.c | 25 ++++++++++++++++++++++++- 1 files changed, 24 insertions(+), 1 deletions(-)board/freescale/mx31pdk/mx31pdk.c +16
-1@@ -86,7 +86,30 @@ int board_late_init(void)int checkboard (void ) { -printf ("Board: i.MX31 MAX PDK (3DS)\n" ); +u32 cause; +struct clock_control_regs *ccm = + (struct clock_control_regs *)CCM_BASE ; +puts ("Board: MX31PDK [" ); + + cause = ccm->rcsr &0x07 ; +switch (cause) { +case 0x0000 : +puts ("POR" ); +break ; +case 0x0001 : +puts ("RST" ); +break ; +case 0x0002 : +puts ("WDOG" ); +break ;
board/freescale/mx31pdk/mx31pdk.c int board_late_init(void) · line 114
Quoted 10 lines
board/freescale/mx31pdk/mx31pdk.c +8
-0+case 0x0006 : +puts ("JTAG" ); +break ; +default : +puts ("unknown" ); + } + +puts ("]\n" );return 0 ; }
Didn't we agree to move this into CPU specific code so other i.MX31 boards will profit from it as well? Can you remind me why this does not happen?
Cheers
Detlev
Signature · 7 lines
Don't trust everything you read, and don't assume every poster in
a thread is actually relevant to the problem.
-- Stefan Monnier <[email protected]>
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.dePATCH v2 1/2 MX31: mx31pdk: Add watchdog support
In reply to Fabio EstevamHi Stefano,
Ping?
Regards,
Fabio Estevam
Quoted 67 lines · Fabio Estevam
Signed-off-by Fabio Estevam <[email protected]>---
Changes since v1:
- defineBOARD_LATE_INITin /mx31pdk.hboard/freescale/mx31pdk/mx31pdk.c | 16 ++++++++++++++++ include/configs/mx31pdk.h | 3 +++ 2 files changed, 19 insertions(+), 0 deletions(-)board/freescale/mx31pdk/mx31pdk.c +16
-0@@ -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" );include/configs/mx31pdk.h +3
-0@@ -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 \
PATCH v2 1/2 MX31: mx31pdk: Add watchdog support
Hi Fabio,
Quoted 28 lines
Ping?
Regards,
Fabio Estevam
Quoted 21 lines · Fabio Estevam
Signed-off-by Fabio Estevam <[email protected]>---
Changes since v1:
- defineBOARD_LATE_INITin /mx31pdk.hboard/freescale/mx31pdk/mx31pdk.c | 16 ++++++++++++++++ include/configs/mx31pdk.h | 3 +++ 2 files changed, 19 insertions(+), 0 deletions(-)board/freescale/mx31pdk/mx31pdk.c +1
-0@@ -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 ;
Quoted 7 lines
board/freescale/mx31pdk/mx31pdk.c line 41
Quoted 7 lines
board/freescale/mx31pdk/mx31pdk.c +7
-0+#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.
Quoted 34 lines
Quoted 34 lines
board/freescale/mx31pdk/mx31pdk.c +8
-0int 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" );include/configs/mx31pdk.h +1
-0@@ -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
Quoted 5 lines
include/configs/mx31pdk.h line 106
Quoted 5 lines
include/configs/mx31pdk.h +2
-0+#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
Signature · 7 lines
So maybe I lost track of my point. But if I left a mark, C-x C-x should be
all I need.
-- David Kastrup, emacs-devel.gnu.org <[email protected]>
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de