linux-mips.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] Move Loongson1 restart handler to watchdog driver
@ 2023-03-30 11:20 Keguang Zhang
  2023-03-30 11:20 ` [PATCH v2 1/2] MIPS: Loongson32: Remove reset.c Keguang Zhang
  2023-03-30 11:20 ` [PATCH v2 2/2] watchdog: loongson1_wdt: Implement restart handler Keguang Zhang
  0 siblings, 2 replies; 4+ messages in thread
From: Keguang Zhang @ 2023-03-30 11:20 UTC (permalink / raw)
  To: linux-watchdog, linux-mips, linux-kernel
  Cc: Wim Van Sebroeck, Guenter Roeck, Thomas Bogendoerfer, Yang Ling,
	Keguang Zhang

Move Loongson1 restart handler to watchdog driver
and update the Makefile accordingly.

Changelog
V1 -> V2: Remove the reference to regs-wdt.h

Keguang Zhang (2):
  MIPS: Loongson32: Remove reset.c
  watchdog: loongson1_wdt: Implement restart handler

 .../include/asm/mach-loongson32/loongson1.h   |  1 -
 .../include/asm/mach-loongson32/regs-wdt.h    | 15 ------
 arch/mips/loongson32/common/Makefile          |  2 +-
 arch/mips/loongson32/common/reset.c           | 51 -------------------
 drivers/watchdog/loongson1_wdt.c              | 19 ++++++-
 5 files changed, 19 insertions(+), 69 deletions(-)
 delete mode 100644 arch/mips/include/asm/mach-loongson32/regs-wdt.h
 delete mode 100644 arch/mips/loongson32/common/reset.c


base-commit: cf3be7e82b129ed34f811f116f2b113f6299d449
-- 
2.34.1


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

* [PATCH v2 1/2] MIPS: Loongson32: Remove reset.c
  2023-03-30 11:20 [PATCH v2 0/2] Move Loongson1 restart handler to watchdog driver Keguang Zhang
@ 2023-03-30 11:20 ` Keguang Zhang
  2023-03-30 11:20 ` [PATCH v2 2/2] watchdog: loongson1_wdt: Implement restart handler Keguang Zhang
  1 sibling, 0 replies; 4+ messages in thread
From: Keguang Zhang @ 2023-03-30 11:20 UTC (permalink / raw)
  To: linux-watchdog, linux-mips, linux-kernel
  Cc: Wim Van Sebroeck, Guenter Roeck, Thomas Bogendoerfer, Yang Ling,
	Keguang Zhang

The Loongson-1 restart handler will be moved to watchdog driver,
then _machine_restart is no longer needed.
The _machine_halt and pm_power_off are also unnecessary,
which contain no hardware operations.

Therefore, remove the entire reset.c and related header file.
Update the Makefile accordingly.

Signed-off-by: Keguang Zhang <keguang.zhang@gmail.com>
---
V1 -> V2: Remove the reference to regs-wdt.h
---
 .../include/asm/mach-loongson32/loongson1.h   |  1 -
 .../include/asm/mach-loongson32/regs-wdt.h    | 15 ------
 arch/mips/loongson32/common/Makefile          |  2 +-
 arch/mips/loongson32/common/reset.c           | 51 -------------------
 4 files changed, 1 insertion(+), 68 deletions(-)
 delete mode 100644 arch/mips/include/asm/mach-loongson32/regs-wdt.h
 delete mode 100644 arch/mips/loongson32/common/reset.c

diff --git a/arch/mips/include/asm/mach-loongson32/loongson1.h b/arch/mips/include/asm/mach-loongson32/loongson1.h
index eb3ddbec1752..50358f1a6181 100644
--- a/arch/mips/include/asm/mach-loongson32/loongson1.h
+++ b/arch/mips/include/asm/mach-loongson32/loongson1.h
@@ -49,6 +49,5 @@
 #include <regs-mux.h>
 #include <regs-pwm.h>
 #include <regs-rtc.h>
-#include <regs-wdt.h>
 
 #endif /* __ASM_MACH_LOONGSON32_LOONGSON1_H */
diff --git a/arch/mips/include/asm/mach-loongson32/regs-wdt.h b/arch/mips/include/asm/mach-loongson32/regs-wdt.h
deleted file mode 100644
index c6d345fe13f2..000000000000
--- a/arch/mips/include/asm/mach-loongson32/regs-wdt.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-or-later */
-/*
- * Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com>
- *
- * Loongson 1 Watchdog Register Definitions.
- */
-
-#ifndef __ASM_MACH_LOONGSON32_REGS_WDT_H
-#define __ASM_MACH_LOONGSON32_REGS_WDT_H
-
-#define WDT_EN			0x0
-#define WDT_TIMER		0x4
-#define WDT_SET			0x8
-
-#endif /* __ASM_MACH_LOONGSON32_REGS_WDT_H */
diff --git a/arch/mips/loongson32/common/Makefile b/arch/mips/loongson32/common/Makefile
index 7b49c8260706..f3950d308187 100644
--- a/arch/mips/loongson32/common/Makefile
+++ b/arch/mips/loongson32/common/Makefile
@@ -3,4 +3,4 @@
 # Makefile for common code of loongson1 based machines.
 #
 
-obj-y	+= time.o irq.o platform.o prom.o reset.o setup.o
+obj-y	+= time.o irq.o platform.o prom.o setup.o
diff --git a/arch/mips/loongson32/common/reset.c b/arch/mips/loongson32/common/reset.c
deleted file mode 100644
index 0c7399b303fb..000000000000
--- a/arch/mips/loongson32/common/reset.c
+++ /dev/null
@@ -1,51 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com>
- */
-
-#include <linux/io.h>
-#include <linux/pm.h>
-#include <linux/sizes.h>
-#include <asm/idle.h>
-#include <asm/reboot.h>
-
-#include <loongson1.h>
-
-static void __iomem *wdt_reg_base;
-
-static void ls1x_halt(void)
-{
-	while (1) {
-		if (cpu_wait)
-			cpu_wait();
-	}
-}
-
-static void ls1x_restart(char *command)
-{
-	__raw_writel(0x1, wdt_reg_base + WDT_EN);
-	__raw_writel(0x1, wdt_reg_base + WDT_TIMER);
-	__raw_writel(0x1, wdt_reg_base + WDT_SET);
-
-	ls1x_halt();
-}
-
-static void ls1x_power_off(void)
-{
-	ls1x_halt();
-}
-
-static int __init ls1x_reboot_setup(void)
-{
-	wdt_reg_base = ioremap(LS1X_WDT_BASE, (SZ_4 + SZ_8));
-	if (!wdt_reg_base)
-		panic("Failed to remap watchdog registers");
-
-	_machine_restart = ls1x_restart;
-	_machine_halt = ls1x_halt;
-	pm_power_off = ls1x_power_off;
-
-	return 0;
-}
-
-arch_initcall(ls1x_reboot_setup);
-- 
2.34.1


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

* [PATCH v2 2/2] watchdog: loongson1_wdt: Implement restart handler
  2023-03-30 11:20 [PATCH v2 0/2] Move Loongson1 restart handler to watchdog driver Keguang Zhang
  2023-03-30 11:20 ` [PATCH v2 1/2] MIPS: Loongson32: Remove reset.c Keguang Zhang
@ 2023-03-30 11:20 ` Keguang Zhang
  2023-04-16 16:16   ` Guenter Roeck
  1 sibling, 1 reply; 4+ messages in thread
From: Keguang Zhang @ 2023-03-30 11:20 UTC (permalink / raw)
  To: linux-watchdog, linux-mips, linux-kernel
  Cc: Wim Van Sebroeck, Guenter Roeck, Thomas Bogendoerfer, Yang Ling,
	Keguang Zhang

Implement restart handler for the Loongson-1 watchdog driver and
define the watchdog registers instead of including the legacy header.

Signed-off-by: Keguang Zhang <keguang.zhang@gmail.com>
---
V1 -> V2: None
---
 drivers/watchdog/loongson1_wdt.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/watchdog/loongson1_wdt.c b/drivers/watchdog/loongson1_wdt.c
index bb3d075c0633..a0b6fe62e516 100644
--- a/drivers/watchdog/loongson1_wdt.c
+++ b/drivers/watchdog/loongson1_wdt.c
@@ -7,7 +7,11 @@
 #include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/watchdog.h>
-#include <loongson1.h>
+
+/* Loongson 1 Watchdog Register Definitions */
+#define WDT_EN			0x0
+#define WDT_TIMER		0x4
+#define WDT_SET			0x8
 
 #define DEFAULT_HEARTBEAT	30
 
@@ -66,6 +70,18 @@ static int ls1x_wdt_stop(struct watchdog_device *wdt_dev)
 	return 0;
 }
 
+static int ls1x_wdt_restart(struct watchdog_device *wdt_dev,
+			    unsigned long action, void *data)
+{
+	struct ls1x_wdt_drvdata *drvdata = watchdog_get_drvdata(wdt_dev);
+
+	writel(0x1, drvdata->base + WDT_EN);
+	writel(0x1, drvdata->base + WDT_TIMER);
+	writel(0x1, drvdata->base + WDT_SET);
+
+	return 0;
+}
+
 static const struct watchdog_info ls1x_wdt_info = {
 	.options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE,
 	.identity = "Loongson1 Watchdog",
@@ -77,6 +93,7 @@ static const struct watchdog_ops ls1x_wdt_ops = {
 	.stop = ls1x_wdt_stop,
 	.ping = ls1x_wdt_ping,
 	.set_timeout = ls1x_wdt_set_timeout,
+	.restart = ls1x_wdt_restart,
 };
 
 static void ls1x_clk_disable_unprepare(void *data)
-- 
2.34.1


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

* Re: [PATCH v2 2/2] watchdog: loongson1_wdt: Implement restart handler
  2023-03-30 11:20 ` [PATCH v2 2/2] watchdog: loongson1_wdt: Implement restart handler Keguang Zhang
@ 2023-04-16 16:16   ` Guenter Roeck
  0 siblings, 0 replies; 4+ messages in thread
From: Guenter Roeck @ 2023-04-16 16:16 UTC (permalink / raw)
  To: Keguang Zhang
  Cc: linux-watchdog, linux-mips, linux-kernel, Wim Van Sebroeck,
	Thomas Bogendoerfer, Yang Ling

On Thu, Mar 30, 2023 at 07:20:51PM +0800, Keguang Zhang wrote:
> Implement restart handler for the Loongson-1 watchdog driver and
> define the watchdog registers instead of including the legacy header.
> 
> Signed-off-by: Keguang Zhang <keguang.zhang@gmail.com>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
> V1 -> V2: None
> ---
>  drivers/watchdog/loongson1_wdt.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/watchdog/loongson1_wdt.c b/drivers/watchdog/loongson1_wdt.c
> index bb3d075c0633..a0b6fe62e516 100644
> --- a/drivers/watchdog/loongson1_wdt.c
> +++ b/drivers/watchdog/loongson1_wdt.c
> @@ -7,7 +7,11 @@
>  #include <linux/module.h>
>  #include <linux/platform_device.h>
>  #include <linux/watchdog.h>
> -#include <loongson1.h>
> +
> +/* Loongson 1 Watchdog Register Definitions */
> +#define WDT_EN			0x0
> +#define WDT_TIMER		0x4
> +#define WDT_SET			0x8
>  
>  #define DEFAULT_HEARTBEAT	30
>  
> @@ -66,6 +70,18 @@ static int ls1x_wdt_stop(struct watchdog_device *wdt_dev)
>  	return 0;
>  }
>  
> +static int ls1x_wdt_restart(struct watchdog_device *wdt_dev,
> +			    unsigned long action, void *data)
> +{
> +	struct ls1x_wdt_drvdata *drvdata = watchdog_get_drvdata(wdt_dev);
> +
> +	writel(0x1, drvdata->base + WDT_EN);
> +	writel(0x1, drvdata->base + WDT_TIMER);
> +	writel(0x1, drvdata->base + WDT_SET);
> +
> +	return 0;
> +}
> +
>  static const struct watchdog_info ls1x_wdt_info = {
>  	.options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE,
>  	.identity = "Loongson1 Watchdog",
> @@ -77,6 +93,7 @@ static const struct watchdog_ops ls1x_wdt_ops = {
>  	.stop = ls1x_wdt_stop,
>  	.ping = ls1x_wdt_ping,
>  	.set_timeout = ls1x_wdt_set_timeout,
> +	.restart = ls1x_wdt_restart,
>  };
>  
>  static void ls1x_clk_disable_unprepare(void *data)

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

end of thread, other threads:[~2023-04-16 16:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-30 11:20 [PATCH v2 0/2] Move Loongson1 restart handler to watchdog driver Keguang Zhang
2023-03-30 11:20 ` [PATCH v2 1/2] MIPS: Loongson32: Remove reset.c Keguang Zhang
2023-03-30 11:20 ` [PATCH v2 2/2] watchdog: loongson1_wdt: Implement restart handler Keguang Zhang
2023-04-16 16:16   ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).