ARM: i.MX system: Simplify handling watchdog clock
Subsystems (3)
PATCH 1/2 ARM: i.MX system: Simplify handling watchdog clock
This patch simplifies handling watchdog clock a bit.
As an additional change, now we properly check WDT clock in a reset function.
--- arch/arm/mach-imx/system.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)
arch/arm/mach-imx/system.c +7 -13
@@ -42,7 +42,7 @@ void mxc_restart(enum reboot_mode mode, const char *cmd) {unsigned int wcr_enable; -if (wdog_clk) +if (!IS_ERR_OR_NULL (wdog_clk))clk_enable (wdog_clk);if (cpu_is_mx1 ())
@@ -79,13 +79,10 @@ void __init mxc_arch_reset_init(void __iomem *base) wdog_base = base; wdog_clk =clk_get_sys ("imx2-wdt.0" ,NULL ); -if (IS_ERR (wdog_clk)) { +if (IS_ERR (wdog_clk))pr_warn ("%s: failed to get wdog clock\n" , __func__); - wdog_clk =NULL ; -return ; - } - -clk_prepare (wdog_clk); +else +clk_prepare (wdog_clk); }void __init mxc_arch_reset_init_dt (void )
@@ -97,13 +94,10 @@ void __init mxc_arch_reset_init_dt(void)WARN_ON (!wdog_base); wdog_clk =of_clk_get (np,0 ); -if (IS_ERR (wdog_clk)) { +if (IS_ERR (wdog_clk))pr_warn ("%s: failed to get wdog clock\n" , __func__); - wdog_clk =NULL ; -return ; - } - -clk_prepare (wdog_clk); +else +clk_prepare (wdog_clk); }#ifdef CONFIG_CACHE_L2X0
Signature · 1 line
1.8.5.5
PATCH 2/2 ARM: i.MX system: Add a reset fallback if base address of watchdog is not set
This patch adds a reset fallback if base address of watchdog is not set. This is intended for a targets not compatible with imx-21 watchdog, i.MX1 for example.
--- arch/arm/mach-imx/system.c | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm/mach-imx/system.c +4 -0
@@ -42,6 +42,9 @@ void mxc_restart(enum reboot_mode mode, const char *cmd) {unsigned int wcr_enable; +if (!wdog_base) + goto reset_fallback; +if (!IS_ERR_OR_NULL (wdog_clk))clk_enable (wdog_clk);
@@ -70,6 +73,7 @@ void mxc_restart(enum reboot_mode mode, const char *cmd)/* delay to allow the serial port to show the message */ mdelay (50 ); +reset_fallback:/* we'll take a jump through zero as a poor second */ soft_restart (0 ); }
Signature · 1 line
1.8.5.5
PATCH 1/2 ARM: i.MX system: Simplify handling watchdog clock
In reply to Alexander ShiyanQuoted 14 lines · Alexander Shiyan
This patch simplifies handling watchdog clock a bit.
As an additional change, now we properly check WDT clock in a reset function.Signed-off-by Alexander Shiyan <[email protected]>--- arch/arm/mach-imx/system.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)arch/arm/mach-imx/system.c +0
-0
arch/arm/mach-imx/system.c void mxc_restart(enum reboot_mode mode, const char *cmd) · line 45
Quoted 5 lines
arch/arm/mach-imx/system.c +1
-1@@ -42,7 +42,7 @@ void mxc_restart(enum reboot_mode mode, const char *cmd) {unsigned int wcr_enable; -if (wdog_clk) +if (!IS_ERR_OR_NULL (wdog_clk))
I think this should just be if (!IS_ERR(wdog_clk)).
Shawn
Quoted 40 lines
arch/arm/mach-imx/system.c +6
-12clk_enable (wdog_clk);if (cpu_is_mx1 ())@@ -79,13 +79,10 @@ void __init mxc_arch_reset_init(void __iomem *base) wdog_base = base; wdog_clk =clk_get_sys ("imx2-wdt.0" ,NULL ); -if (IS_ERR (wdog_clk)) { +if (IS_ERR (wdog_clk))pr_warn ("%s: failed to get wdog clock\n" , __func__); - wdog_clk =NULL ; -return ; - } - -clk_prepare (wdog_clk); +else +clk_prepare (wdog_clk); }void __init mxc_arch_reset_init_dt (void )@@ -97,13 +94,10 @@ void __init mxc_arch_reset_init_dt(void)WARN_ON (!wdog_base); wdog_clk =of_clk_get (np,0 ); -if (IS_ERR (wdog_clk)) { +if (IS_ERR (wdog_clk))pr_warn ("%s: failed to get wdog clock\n" , __func__); - wdog_clk =NULL ; -return ; - } - -clk_prepare (wdog_clk); +else +clk_prepare (wdog_clk); }#ifdef CONFIG_CACHE_L2X0 Signature · 1 line
1.8.5.5
Fri, 20 Jun 2014 12:26:52 +0800 ?? Shawn Guo <[email protected]>:
Quoted 18 lines · Alexander Shiyan
Quoted 17 lines
This patch simplifies handling watchdog clock a bit.
As an additional change, now we properly check WDT clock in a reset function.Signed-off-by Alexander Shiyan <[email protected]>--- arch/arm/mach-imx/system.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)arch/arm/mach-imx/system.c +0
-0@@ -42,7 +42,7 @@ void mxc_restart(enum reboot_mode mode, const char *cmd) {unsigned int wcr_enable;
Quoted 4 lines
arch/arm/mach-imx/system.c void mxc_restart(enum reboot_mode mode, const char *cmd) · line 45
Quoted 2 lines
arch/arm/mach-imx/system.c +1
-1-if (wdog_clk) +if (!IS_ERR_OR_NULL (wdog_clk))I think this should just be if (!IS_ERR(wdog_clk)).
No, this is a part of commit log.wdog_clk can be NULL if mxc_arch_reset_init() is not called, so we just protect mxc_restart() for such cases.
---
PATCH 1/2 ARM: i.MX system: Simplify handling watchdog clock
Quoted 19 lines · Alexander Shiyan
Fri, 20 Jun 2014 12:26:52 +0800 ?? Shawn Guo <[email protected]>:
Quoted 18 lines · Alexander Shiyan
Quoted 17 lines
This patch simplifies handling watchdog clock a bit.
As an additional change, now we properly check WDT clock in a reset function.Signed-off-by Alexander Shiyan <[email protected]>--- arch/arm/mach-imx/system.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)arch/arm/mach-imx/system.c +0
-0@@ -42,7 +42,7 @@ void mxc_restart(enum reboot_mode mode, const char *cmd) {unsigned int wcr_enable;
Quoted 8 lines
Quoted 4 lines
arch/arm/mach-imx/system.c void mxc_restart(enum reboot_mode mode, const char *cmd) · line 45
Quoted 2 lines
arch/arm/mach-imx/system.c +1
-1-if (wdog_clk) +if (!IS_ERR_OR_NULL (wdog_clk))I think this should just be if (!IS_ERR(wdog_clk)).
No, this is a part of commit log.
wdog_clkcan be NULL ifmxc_arch_reset_init()is not called, so we just protectmxc_restart()for such cases.
I think clk API can take NULL as input.
Shawn
Fri, 20 Jun 2014 15:50:34 +0800 ?? Shawn Guo <[email protected]>:
Quoted 25 lines · Alexander Shiyan
Quoted 24 lines
Fri, 20 Jun 2014 12:26:52 +0800 ?? Shawn Guo <[email protected]>:
Quoted 22 lines · Alexander Shiyan
Quoted 14 lines
This patch simplifies handling watchdog clock a bit.
As an additional change, now we properly check WDT clock in a reset function.Signed-off-by Alexander Shiyan <[email protected]>--- arch/arm/mach-imx/system.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-)arch/arm/mach-imx/system.c +0
-0arch/arm/mach-imx/system.c void mxc_restart(enum reboot_mode mode, const char *cmd) · line 45
Quoted 5 lines
arch/arm/mach-imx/system.c +1
-1@@ -42,7 +42,7 @@ void mxc_restart(enum reboot_mode mode, const char *cmd) {unsigned int wcr_enable; -if (wdog_clk) +if (!IS_ERR_OR_NULL (wdog_clk))I think this should just be if (!IS_ERR(wdog_clk)).
Quoted 5 lines
Quoted 3 lines
No, this is a part of commit log.
wdog_clkcan be NULL ifmxc_arch_reset_init()is not called, so we just protectmxc_restart()for such cases.I think clk API can take NULL as input.
You are right.
If this is the only issue on this series, could you fix it during the applying?
---
PATCH 1/2 ARM: i.MX system: Simplify handling watchdog clock
Quoted 2 lines · Alexander Shiyan
You are right.
If this is the only issue on this series, could you fix it during the applying?
Okay. Fixed it and applied both patches.
Shawn