linux-watchdog.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits
@ 2020-07-29 16:09 Krzysztof Kozlowski
  2020-07-29 16:09 ` [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header Krzysztof Kozlowski
                   ` (7 more replies)
  0 siblings, 8 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 16:09 UTC (permalink / raw)
  To: Russell King, Kukjin Kim, Krzysztof Kozlowski, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Guenter Roeck, Arnd Bergmann,
	Linus Walleij, linux-kernel, linux-arm-kernel, linux-samsung-soc,
	linux-stm32, patches, linux-clk, linux-watchdog
  Cc: Sergio Prado, Marek Szyprowski, Sylwester Nawrocki, Cedric Roux,
	Lihua Yao

Hi,

I tried to cleanup few warnings in S3C machine code which lead to
finding some bigger issues.

Patches touch mostly the ARM Samsung machine code except patch #1 (clk)
and #5 (watchdog).  They are independent from each other, except
some conflicting lines.

The last three patches would welcome some testing... as I did not
perform such (lack of S3C hardware).

Best regards,
Krzysztof


Krzysztof Kozlowski (7):
  clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header
  ARM: s3c64xx: Include header to fix -Wmissing-prototypes
  ARM: s3c: Remove plat-samsung/.../samsung-time.h
  ARM: samsung: Fix language typo
  ARM: samsung: Kill useless HAVE_S3C2410_WATCHDOG
  ARM: s3c64xx: Switch to generic watchdog driver reset
  ARM: s3c24xx: Fix missing system reset

 MAINTAINERS                                   |  1 +
 arch/arm/Kconfig                              |  3 +-
 arch/arm/mach-exynos/Kconfig                  |  1 -
 arch/arm/mach-s3c24xx/common.h                | 12 +++
 arch/arm/mach-s3c24xx/mach-amlm5900.c         |  2 -
 arch/arm/mach-s3c24xx/mach-anubis.c           |  1 -
 arch/arm/mach-s3c24xx/mach-at2440evb.c        |  1 -
 arch/arm/mach-s3c24xx/mach-bast.c             |  1 -
 arch/arm/mach-s3c24xx/mach-gta02.c            |  1 -
 arch/arm/mach-s3c24xx/mach-h1940.c            |  1 -
 arch/arm/mach-s3c24xx/mach-jive.c             |  1 -
 arch/arm/mach-s3c24xx/mach-mini2440.c         |  1 -
 arch/arm/mach-s3c24xx/mach-n30.c              |  1 -
 arch/arm/mach-s3c24xx/mach-nexcoder.c         |  1 -
 arch/arm/mach-s3c24xx/mach-osiris.c           |  1 -
 arch/arm/mach-s3c24xx/mach-otom.c             |  1 -
 arch/arm/mach-s3c24xx/mach-qt2410.c           |  1 -
 arch/arm/mach-s3c24xx/mach-rx1950.c           |  1 -
 arch/arm/mach-s3c24xx/mach-rx3715.c           |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2410.c         |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2413.c         |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2416.c         |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2440.c         |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2443.c         |  1 -
 arch/arm/mach-s3c24xx/mach-tct_hammer.c       |  1 -
 arch/arm/mach-s3c24xx/mach-vr1000.c           |  1 -
 arch/arm/mach-s3c24xx/mach-vstms.c            |  1 -
 arch/arm/mach-s3c64xx/Kconfig                 |  5 +-
 arch/arm/mach-s3c64xx/common.c                | 16 +---
 arch/arm/mach-s3c64xx/common.h                | 17 +++-
 arch/arm/mach-s3c64xx/mach-anw6410.c          |  2 -
 arch/arm/mach-s3c64xx/mach-crag6410.c         |  2 -
 arch/arm/mach-s3c64xx/mach-hmt.c              |  2 -
 arch/arm/mach-s3c64xx/mach-mini6410.c         |  2 -
 arch/arm/mach-s3c64xx/mach-ncp.c              |  2 -
 arch/arm/mach-s3c64xx/mach-real6410.c         |  2 -
 arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c       | 17 ----
 arch/arm/mach-s3c64xx/mach-smartq.c           |  1 -
 arch/arm/mach-s3c64xx/mach-smartq5.c          |  2 -
 arch/arm/mach-s3c64xx/mach-smartq7.c          |  2 -
 arch/arm/mach-s3c64xx/mach-smdk6400.c         |  2 -
 arch/arm/mach-s3c64xx/mach-smdk6410.c         |  2 -
 arch/arm/mach-s3c64xx/setup-spi.c             |  1 +
 arch/arm/mach-s3c64xx/watchdog-reset.h        | 16 ----
 arch/arm/mach-s5pv210/Kconfig                 |  1 -
 arch/arm/plat-samsung/Kconfig                 | 10 +-
 arch/arm/plat-samsung/Makefile                |  1 -
 .../plat-samsung/include/plat/samsung-time.h  | 26 ------
 arch/arm/plat-samsung/watchdog-reset.c        | 93 -------------------
 arch/arm64/Kconfig.platforms                  |  1 -
 drivers/clk/samsung/clk-s3c64xx.c             |  1 +
 drivers/watchdog/Kconfig                      |  8 --
 include/linux/clk/samsung.h                   | 21 +++++
 53 files changed, 59 insertions(+), 237 deletions(-)
 delete mode 100644 arch/arm/mach-s3c64xx/watchdog-reset.h
 delete mode 100644 arch/arm/plat-samsung/include/plat/samsung-time.h
 delete mode 100644 arch/arm/plat-samsung/watchdog-reset.c
 create mode 100644 include/linux/clk/samsung.h

-- 
2.17.1


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

* [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header
  2020-07-29 16:09 [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Krzysztof Kozlowski
@ 2020-07-29 16:09 ` Krzysztof Kozlowski
  2020-07-29 17:39   ` Tomasz Figa
  2020-07-29 19:42   ` Stephen Boyd
  2020-07-29 16:09 ` [PATCH 2/7] ARM: s3c64xx: Include header to fix -Wmissing-prototypes Krzysztof Kozlowski
                   ` (6 subsequent siblings)
  7 siblings, 2 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 16:09 UTC (permalink / raw)
  To: Russell King, Kukjin Kim, Krzysztof Kozlowski, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Guenter Roeck, Arnd Bergmann,
	Linus Walleij, linux-kernel, linux-arm-kernel, linux-samsung-soc,
	linux-stm32, patches, linux-clk, linux-watchdog
  Cc: Sergio Prado, Marek Szyprowski, Sylwester Nawrocki, Cedric Roux,
	Lihua Yao

The s3c64xx_clk_init() is defined and used by clk-s3c64xx driver and
also used in mach-s3c64xx machine code.  Move the declaration to a
header to fix W=1 build warning:

    drivers/clk/samsung/clk-s3c64xx.c:391:13: warning: no previous prototype for 's3c64xx_clk_init' [-Wmissing-prototypes]
      391 | void __init s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f,

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 MAINTAINERS                       |  1 +
 arch/arm/mach-s3c64xx/common.c    |  1 +
 arch/arm/mach-s3c64xx/common.h    |  2 --
 drivers/clk/samsung/clk-s3c64xx.c |  1 +
 include/linux/clk/samsung.h       | 21 +++++++++++++++++++++
 5 files changed, 24 insertions(+), 2 deletions(-)
 create mode 100644 include/linux/clk/samsung.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 7f8c6e41a364..f5d7cf3c3aaa 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -15294,6 +15294,7 @@ F:	Documentation/devicetree/bindings/clock/samsung,s3c*
 F:	Documentation/devicetree/bindings/clock/samsung,s5p*
 F:	drivers/clk/samsung/
 F:	include/dt-bindings/clock/exynos*.h
+F:	include/linux/clk/samsung.h
 
 SAMSUNG SPI DRIVERS
 M:	Kukjin Kim <kgene@kernel.org>
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index 13e91074308a..a655bf0c7802 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -24,6 +24,7 @@
 #include <linux/platform_device.h>
 #include <linux/reboot.h>
 #include <linux/io.h>
+#include <linux/clk/samsung.h>
 #include <linux/dma-mapping.h>
 #include <linux/irq.h>
 #include <linux/gpio.h>
diff --git a/arch/arm/mach-s3c64xx/common.h b/arch/arm/mach-s3c64xx/common.h
index 03670887a764..f4eca42cdc86 100644
--- a/arch/arm/mach-s3c64xx/common.h
+++ b/arch/arm/mach-s3c64xx/common.h
@@ -22,8 +22,6 @@ void s3c64xx_init_io(struct map_desc *mach_desc, int size);
 void s3c64xx_restart(enum reboot_mode mode, const char *cmd);
 
 struct device_node;
-void s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f,
-	unsigned long xusbxti_f, bool is_s3c6400, void __iomem *reg_base);
 void s3c64xx_set_xtal_freq(unsigned long freq);
 void s3c64xx_set_xusbxti_freq(unsigned long freq);
 
diff --git a/drivers/clk/samsung/clk-s3c64xx.c b/drivers/clk/samsung/clk-s3c64xx.c
index b96d33e5eb45..56f95b63f71f 100644
--- a/drivers/clk/samsung/clk-s3c64xx.c
+++ b/drivers/clk/samsung/clk-s3c64xx.c
@@ -7,6 +7,7 @@
 
 #include <linux/slab.h>
 #include <linux/clk-provider.h>
+#include <linux/clk/samsung.h>
 #include <linux/of.h>
 #include <linux/of_address.h>
 
diff --git a/include/linux/clk/samsung.h b/include/linux/clk/samsung.h
new file mode 100644
index 000000000000..b6b253c46c22
--- /dev/null
+++ b/include/linux/clk/samsung.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2020 Krzysztof Kozlowski <krzk@kernel.org>
+ */
+
+#ifndef __LINUX_CLK_SAMSUNG_H_
+#define __LINUX_CLK_SAMSUNG_H_
+
+#ifdef CONFIG_ARCH_S3C64XX
+void __init s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f,
+			     unsigned long xusbxti_f, bool s3c6400,
+			     void __iomem *base);
+#else
+static inline void __init s3c64xx_clk_init(struct device_node *np,
+					   unsigned long xtal_f,
+					   unsigned long xusbxti_f,
+					   bool s3c6400,
+					   void __iomem *base) { }
+#endif /* CONFIG_ARCH_S3C64XX */
+
+#endif /* __LINUX_CLK_SAMSUNG_H_ */
-- 
2.17.1


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

* [PATCH 2/7] ARM: s3c64xx: Include header to fix -Wmissing-prototypes
  2020-07-29 16:09 [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Krzysztof Kozlowski
  2020-07-29 16:09 ` [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header Krzysztof Kozlowski
@ 2020-07-29 16:09 ` Krzysztof Kozlowski
  2020-07-29 17:46   ` Tomasz Figa
  2020-07-29 16:09 ` [PATCH 3/7] ARM: s3c: Remove plat-samsung/.../samsung-time.h Krzysztof Kozlowski
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 16:09 UTC (permalink / raw)
  To: Russell King, Kukjin Kim, Krzysztof Kozlowski, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Guenter Roeck, Arnd Bergmann,
	Linus Walleij, linux-kernel, linux-arm-kernel, linux-samsung-soc,
	linux-stm32, patches, linux-clk, linux-watchdog
  Cc: Sergio Prado, Marek Szyprowski, Sylwester Nawrocki, Cedric Roux,
	Lihua Yao

Include the spi-s3c64xx.h header to fix W=1 build warning:

    arch/arm/mach-s3c64xx/setup-spi.c:11:5: warning:
        no previous prototype for 's3c64xx_spi0_cfg_gpio' [-Wmissing-prototypes]
       11 | int s3c64xx_spi0_cfg_gpio(void)

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/mach-s3c64xx/setup-spi.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mach-s3c64xx/setup-spi.c b/arch/arm/mach-s3c64xx/setup-spi.c
index 39dfae1f46e7..03c9d296bb0f 100644
--- a/arch/arm/mach-s3c64xx/setup-spi.c
+++ b/arch/arm/mach-s3c64xx/setup-spi.c
@@ -4,6 +4,7 @@
 //		http://www.samsung.com/
 
 #include <linux/gpio.h>
+#include <linux/platform_data/spi-s3c64xx.h>
 #include <plat/gpio-cfg.h>
 #include <mach/gpio-samsung.h>
 
-- 
2.17.1


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

* [PATCH 3/7] ARM: s3c: Remove plat-samsung/.../samsung-time.h
  2020-07-29 16:09 [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Krzysztof Kozlowski
  2020-07-29 16:09 ` [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header Krzysztof Kozlowski
  2020-07-29 16:09 ` [PATCH 2/7] ARM: s3c64xx: Include header to fix -Wmissing-prototypes Krzysztof Kozlowski
@ 2020-07-29 16:09 ` Krzysztof Kozlowski
  2020-07-29 17:49   ` Tomasz Figa
  2020-07-29 16:09 ` [PATCH 4/7] ARM: samsung: Fix language typo Krzysztof Kozlowski
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 16:09 UTC (permalink / raw)
  To: Russell King, Kukjin Kim, Krzysztof Kozlowski, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Guenter Roeck, Arnd Bergmann,
	Linus Walleij, linux-kernel, linux-arm-kernel, linux-samsung-soc,
	linux-stm32, patches, linux-clk, linux-watchdog
  Cc: Sergio Prado, Marek Szyprowski, Sylwester Nawrocki, Cedric Roux,
	Lihua Yao

Remove the arch/arm/plat-samsung/include/plat/samsung-time.h header and
move the contents to common.h headers in mach-s3c24xx and mach-s3c64xx.
The definition of declared functions is already in common.c in mach
directories, so it is logically to put declaration next to them.

This is also one step further towards removal of plat-samsung directory
and it fixes W=1 build warnings:

    arch/arm/mach-s3c64xx/common.c:174:13: warning:
        no previous prototype for 'samsung_set_timer_source' [-Wmissing-prototypes]
      174 | void __init samsung_set_timer_source(unsigned int event, unsigned int source)

    arch/arm/mach-s3c64xx/common.c:180:13: warning:
        no previous prototype for 'samsung_timer_init' [-Wmissing-prototypes]
      180 | void __init samsung_timer_init(void)

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/mach-s3c24xx/common.h                | 12 +++++++++
 arch/arm/mach-s3c24xx/mach-amlm5900.c         |  2 --
 arch/arm/mach-s3c24xx/mach-anubis.c           |  1 -
 arch/arm/mach-s3c24xx/mach-at2440evb.c        |  1 -
 arch/arm/mach-s3c24xx/mach-bast.c             |  1 -
 arch/arm/mach-s3c24xx/mach-gta02.c            |  1 -
 arch/arm/mach-s3c24xx/mach-h1940.c            |  1 -
 arch/arm/mach-s3c24xx/mach-jive.c             |  1 -
 arch/arm/mach-s3c24xx/mach-mini2440.c         |  1 -
 arch/arm/mach-s3c24xx/mach-n30.c              |  1 -
 arch/arm/mach-s3c24xx/mach-nexcoder.c         |  1 -
 arch/arm/mach-s3c24xx/mach-osiris.c           |  1 -
 arch/arm/mach-s3c24xx/mach-otom.c             |  1 -
 arch/arm/mach-s3c24xx/mach-qt2410.c           |  1 -
 arch/arm/mach-s3c24xx/mach-rx1950.c           |  1 -
 arch/arm/mach-s3c24xx/mach-rx3715.c           |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2410.c         |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2413.c         |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2416.c         |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2440.c         |  1 -
 arch/arm/mach-s3c24xx/mach-smdk2443.c         |  1 -
 arch/arm/mach-s3c24xx/mach-tct_hammer.c       |  1 -
 arch/arm/mach-s3c24xx/mach-vr1000.c           |  1 -
 arch/arm/mach-s3c24xx/mach-vstms.c            |  1 -
 arch/arm/mach-s3c64xx/common.h                | 13 ++++++++++
 arch/arm/mach-s3c64xx/mach-anw6410.c          |  1 -
 arch/arm/mach-s3c64xx/mach-crag6410.c         |  1 -
 arch/arm/mach-s3c64xx/mach-hmt.c              |  1 -
 arch/arm/mach-s3c64xx/mach-mini6410.c         |  1 -
 arch/arm/mach-s3c64xx/mach-ncp.c              |  1 -
 arch/arm/mach-s3c64xx/mach-real6410.c         |  1 -
 arch/arm/mach-s3c64xx/mach-smartq.c           |  1 -
 arch/arm/mach-s3c64xx/mach-smartq5.c          |  1 -
 arch/arm/mach-s3c64xx/mach-smartq7.c          |  1 -
 arch/arm/mach-s3c64xx/mach-smdk6400.c         |  1 -
 arch/arm/mach-s3c64xx/mach-smdk6410.c         |  1 -
 .../plat-samsung/include/plat/samsung-time.h  | 26 -------------------
 37 files changed, 25 insertions(+), 61 deletions(-)
 delete mode 100644 arch/arm/plat-samsung/include/plat/samsung-time.h

diff --git a/arch/arm/mach-s3c24xx/common.h b/arch/arm/mach-s3c24xx/common.h
index d087b20e8857..0260b80cffd1 100644
--- a/arch/arm/mach-s3c24xx/common.h
+++ b/arch/arm/mach-s3c24xx/common.h
@@ -123,4 +123,16 @@ void __init s3c2443_common_clk_init(struct device_node *np, unsigned long xti_f,
 				    void __iomem *reg_base);
 #endif
 
+enum samsung_timer_mode {
+	SAMSUNG_PWM0,
+	SAMSUNG_PWM1,
+	SAMSUNG_PWM2,
+	SAMSUNG_PWM3,
+	SAMSUNG_PWM4,
+};
+
+extern void __init samsung_set_timer_source(enum samsung_timer_mode event,
+					    enum samsung_timer_mode source);
+extern void __init samsung_timer_init(void);
+
 #endif /* __ARCH_ARM_MACH_S3C24XX_COMMON_H */
diff --git a/arch/arm/mach-s3c24xx/mach-amlm5900.c b/arch/arm/mach-s3c24xx/mach-amlm5900.c
index 9a9daf526d0c..623c320f8253 100644
--- a/arch/arm/mach-s3c24xx/mach-amlm5900.c
+++ b/arch/arm/mach-s3c24xx/mach-amlm5900.c
@@ -45,8 +45,6 @@
 #include <linux/mtd/map.h>
 #include <linux/mtd/physmap.h>
 
-#include <plat/samsung-time.h>
-
 #include "common.h"
 
 static struct resource amlm5900_nor_resource =
diff --git a/arch/arm/mach-s3c24xx/mach-anubis.c b/arch/arm/mach-s3c24xx/mach-anubis.c
index 072966dcad78..44338dfb5470 100644
--- a/arch/arm/mach-s3c24xx/mach-anubis.c
+++ b/arch/arm/mach-s3c24xx/mach-anubis.c
@@ -44,7 +44,6 @@
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <linux/platform_data/asoc-s3c24xx_simtec.h>
-#include <plat/samsung-time.h>
 
 #include "anubis.h"
 #include "common.h"
diff --git a/arch/arm/mach-s3c24xx/mach-at2440evb.c b/arch/arm/mach-s3c24xx/mach-at2440evb.c
index 58c5ef3cf1d7..02ac2e240bd7 100644
--- a/arch/arm/mach-s3c24xx/mach-at2440evb.c
+++ b/arch/arm/mach-s3c24xx/mach-at2440evb.c
@@ -43,7 +43,6 @@
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <linux/platform_data/mmc-s3cmci.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 
diff --git a/arch/arm/mach-s3c24xx/mach-bast.c b/arch/arm/mach-s3c24xx/mach-bast.c
index a7c3955ae8f6..cd67d00a46e4 100644
--- a/arch/arm/mach-s3c24xx/mach-bast.c
+++ b/arch/arm/mach-s3c24xx/mach-bast.c
@@ -50,7 +50,6 @@
 #include <plat/cpu-freq.h>
 #include <plat/devs.h>
 #include <plat/gpio-cfg.h>
-#include <plat/samsung-time.h>
 
 #include "bast.h"
 #include "common.h"
diff --git a/arch/arm/mach-s3c24xx/mach-gta02.c b/arch/arm/mach-s3c24xx/mach-gta02.c
index 594901f3b8e5..81d94a75d1c2 100644
--- a/arch/arm/mach-s3c24xx/mach-gta02.c
+++ b/arch/arm/mach-s3c24xx/mach-gta02.c
@@ -67,7 +67,6 @@
 #include <plat/devs.h>
 #include <plat/gpio-cfg.h>
 #include <plat/pm.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "gta02.h"
diff --git a/arch/arm/mach-s3c24xx/mach-h1940.c b/arch/arm/mach-s3c24xx/mach-h1940.c
index f4710052843a..89528bea89f1 100644
--- a/arch/arm/mach-s3c24xx/mach-h1940.c
+++ b/arch/arm/mach-s3c24xx/mach-h1940.c
@@ -58,7 +58,6 @@
 #include <plat/devs.h>
 #include <plat/gpio-cfg.h>
 #include <plat/pm.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "h1940.h"
diff --git a/arch/arm/mach-s3c24xx/mach-jive.c b/arch/arm/mach-s3c24xx/mach-jive.c
index 885e8f12e4b9..2c630ade08bb 100644
--- a/arch/arm/mach-s3c24xx/mach-jive.c
+++ b/arch/arm/mach-s3c24xx/mach-jive.c
@@ -48,7 +48,6 @@
 #include <plat/cpu.h>
 #include <plat/pm.h>
 #include <linux/platform_data/usb-s3c2410_udc.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "s3c2412-power.h"
diff --git a/arch/arm/mach-s3c24xx/mach-mini2440.c b/arch/arm/mach-s3c24xx/mach-mini2440.c
index 235749448311..936f7e3b7213 100644
--- a/arch/arm/mach-s3c24xx/mach-mini2440.c
+++ b/arch/arm/mach-s3c24xx/mach-mini2440.c
@@ -52,7 +52,6 @@
 #include <plat/gpio-cfg.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
-#include <plat/samsung-time.h>
 
 #include <sound/s3c24xx_uda134x.h>
 
diff --git a/arch/arm/mach-s3c24xx/mach-n30.c b/arch/arm/mach-s3c24xx/mach-n30.c
index 998ccff3c174..b9ceacfdd6ef 100644
--- a/arch/arm/mach-s3c24xx/mach-n30.c
+++ b/arch/arm/mach-s3c24xx/mach-n30.c
@@ -48,7 +48,6 @@
 #include <plat/gpio-cfg.h>
 #include <linux/platform_data/mmc-s3cmci.h>
 #include <linux/platform_data/usb-s3c2410_udc.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 
diff --git a/arch/arm/mach-s3c24xx/mach-nexcoder.c b/arch/arm/mach-s3c24xx/mach-nexcoder.c
index c2f34758ccb6..92ecc15c4320 100644
--- a/arch/arm/mach-s3c24xx/mach-nexcoder.c
+++ b/arch/arm/mach-s3c24xx/mach-nexcoder.c
@@ -40,7 +40,6 @@
 #include <plat/gpio-cfg.h>
 #include <plat/devs.h>
 #include <plat/cpu.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 
diff --git a/arch/arm/mach-s3c24xx/mach-osiris.c b/arch/arm/mach-s3c24xx/mach-osiris.c
index ee3630cb236a..ed03928dffe4 100644
--- a/arch/arm/mach-s3c24xx/mach-osiris.c
+++ b/arch/arm/mach-s3c24xx/mach-osiris.c
@@ -40,7 +40,6 @@
 #include <plat/cpu-freq.h>
 #include <plat/devs.h>
 #include <plat/gpio-cfg.h>
-#include <plat/samsung-time.h>
 
 #include <mach/hardware.h>
 #include <mach/regs-gpio.h>
diff --git a/arch/arm/mach-s3c24xx/mach-otom.c b/arch/arm/mach-s3c24xx/mach-otom.c
index 4e24d89e870b..d65c65ca1a38 100644
--- a/arch/arm/mach-s3c24xx/mach-otom.c
+++ b/arch/arm/mach-s3c24xx/mach-otom.c
@@ -27,7 +27,6 @@
 
 #include <plat/cpu.h>
 #include <plat/devs.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "otom.h"
diff --git a/arch/arm/mach-s3c24xx/mach-qt2410.c b/arch/arm/mach-s3c24xx/mach-qt2410.c
index ff9e3197309b..2f3c8b31a08a 100644
--- a/arch/arm/mach-s3c24xx/mach-qt2410.c
+++ b/arch/arm/mach-s3c24xx/mach-qt2410.c
@@ -44,7 +44,6 @@
 #include <plat/devs.h>
 #include <plat/cpu.h>
 #include <plat/pm.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "common-smdk.h"
diff --git a/arch/arm/mach-s3c24xx/mach-rx1950.c b/arch/arm/mach-s3c24xx/mach-rx1950.c
index fde98b175c75..c46fb6b9e11a 100644
--- a/arch/arm/mach-s3c24xx/mach-rx1950.c
+++ b/arch/arm/mach-s3c24xx/mach-rx1950.c
@@ -53,7 +53,6 @@
 #include <plat/cpu.h>
 #include <plat/devs.h>
 #include <plat/pm.h>
-#include <plat/samsung-time.h>
 #include <plat/gpio-cfg.h>
 
 #include "common.h"
diff --git a/arch/arm/mach-s3c24xx/mach-rx3715.c b/arch/arm/mach-s3c24xx/mach-rx3715.c
index 995f1ff34a1b..740865ef8e23 100644
--- a/arch/arm/mach-s3c24xx/mach-rx3715.c
+++ b/arch/arm/mach-s3c24xx/mach-rx3715.c
@@ -43,7 +43,6 @@
 #include <plat/cpu.h>
 #include <plat/devs.h>
 #include <plat/pm.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "h1940.h"
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2410.c b/arch/arm/mach-s3c24xx/mach-smdk2410.c
index 18dfef52c8bf..1c2f20ab0520 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2410.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2410.c
@@ -32,7 +32,6 @@
 
 #include <plat/devs.h>
 #include <plat/cpu.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "common-smdk.h"
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2413.c b/arch/arm/mach-s3c24xx/mach-smdk2413.c
index ca80167f268d..9782cc3e698c 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2413.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2413.c
@@ -40,7 +40,6 @@
 
 #include <plat/devs.h>
 #include <plat/cpu.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "common-smdk.h"
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2416.c b/arch/arm/mach-s3c24xx/mach-smdk2416.c
index 61c3e45898d3..f98feb45568d 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2416.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2416.c
@@ -44,7 +44,6 @@
 #include <plat/sdhci.h>
 #include <linux/platform_data/usb-s3c2410_udc.h>
 #include <linux/platform_data/s3c-hsudc.h>
-#include <plat/samsung-time.h>
 
 #include <plat/fb.h>
 
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2440.c b/arch/arm/mach-s3c24xx/mach-smdk2440.c
index 7bafcd8ea104..ebc184cd9aba 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2440.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2440.c
@@ -35,7 +35,6 @@
 
 #include <plat/devs.h>
 #include <plat/cpu.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "common-smdk.h"
diff --git a/arch/arm/mach-s3c24xx/mach-smdk2443.c b/arch/arm/mach-s3c24xx/mach-smdk2443.c
index 2358ed5ed7be..dcc4e446938a 100644
--- a/arch/arm/mach-s3c24xx/mach-smdk2443.c
+++ b/arch/arm/mach-s3c24xx/mach-smdk2443.c
@@ -34,7 +34,6 @@
 
 #include <plat/devs.h>
 #include <plat/cpu.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "common-smdk.h"
diff --git a/arch/arm/mach-s3c24xx/mach-tct_hammer.c b/arch/arm/mach-s3c24xx/mach-tct_hammer.c
index 8d8ddd6ea305..e334ddf0832f 100644
--- a/arch/arm/mach-s3c24xx/mach-tct_hammer.c
+++ b/arch/arm/mach-s3c24xx/mach-tct_hammer.c
@@ -36,7 +36,6 @@
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/map.h>
 #include <linux/mtd/physmap.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 
diff --git a/arch/arm/mach-s3c24xx/mach-vr1000.c b/arch/arm/mach-s3c24xx/mach-vr1000.c
index 6a3fb2becc7c..2f00217fa44e 100644
--- a/arch/arm/mach-s3c24xx/mach-vr1000.c
+++ b/arch/arm/mach-s3c24xx/mach-vr1000.c
@@ -42,7 +42,6 @@
 #include <plat/cpu.h>
 #include <plat/devs.h>
 #include <plat/gpio-cfg.h>
-#include <plat/samsung-time.h>
 
 #include "bast.h"
 #include "common.h"
diff --git a/arch/arm/mach-s3c24xx/mach-vstms.c b/arch/arm/mach-s3c24xx/mach-vstms.c
index d76b28b65e65..9f479e28b8fd 100644
--- a/arch/arm/mach-s3c24xx/mach-vstms.c
+++ b/arch/arm/mach-s3c24xx/mach-vstms.c
@@ -39,7 +39,6 @@
 
 #include <plat/devs.h>
 #include <plat/cpu.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 
diff --git a/arch/arm/mach-s3c64xx/common.h b/arch/arm/mach-s3c64xx/common.h
index f4eca42cdc86..6fcfb0e0ffa5 100644
--- a/arch/arm/mach-s3c64xx/common.h
+++ b/arch/arm/mach-s3c64xx/common.h
@@ -52,4 +52,17 @@ extern struct pl08x_platform_data s3c64xx_dma0_plat_data;
 extern struct pl08x_platform_data s3c64xx_dma1_plat_data;
 #endif
 
+/* Samsung HR-Timer Clock mode */
+enum samsung_timer_mode {
+	SAMSUNG_PWM0,
+	SAMSUNG_PWM1,
+	SAMSUNG_PWM2,
+	SAMSUNG_PWM3,
+	SAMSUNG_PWM4,
+};
+
+extern void __init samsung_set_timer_source(enum samsung_timer_mode event,
+					    enum samsung_timer_mode source);
+extern void __init samsung_timer_init(void);
+
 #endif /* __ARCH_ARM_MACH_S3C64XX_COMMON_H */
diff --git a/arch/arm/mach-s3c64xx/mach-anw6410.c b/arch/arm/mach-s3c64xx/mach-anw6410.c
index 0d3d5befb806..495549573d36 100644
--- a/arch/arm/mach-s3c64xx/mach-anw6410.c
+++ b/arch/arm/mach-s3c64xx/mach-anw6410.c
@@ -44,7 +44,6 @@
 #include <mach/irqs.h>
 #include <mach/regs-gpio.h>
 #include <mach/gpio-samsung.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "regs-modem.h"
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c
index da9654255e3f..3cb43a33e3f8 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -61,7 +61,6 @@
 #include <plat/adc.h>
 #include <linux/platform_data/i2c-s3c2410.h>
 #include <plat/pm.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "crag6410.h"
diff --git a/arch/arm/mach-s3c64xx/mach-hmt.c b/arch/arm/mach-s3c64xx/mach-hmt.c
index e7080215c624..cadb63103517 100644
--- a/arch/arm/mach-s3c64xx/mach-hmt.c
+++ b/arch/arm/mach-s3c64xx/mach-hmt.c
@@ -39,7 +39,6 @@
 
 #include <plat/devs.h>
 #include <plat/cpu.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 
diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c b/arch/arm/mach-s3c64xx/mach-mini6410.c
index 0dd36ae49e6a..77bad2891020 100644
--- a/arch/arm/mach-s3c64xx/mach-mini6410.c
+++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
@@ -39,7 +39,6 @@
 
 #include <video/platform_lcd.h>
 #include <video/samsung_fimd.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "regs-modem.h"
diff --git a/arch/arm/mach-s3c64xx/mach-ncp.c b/arch/arm/mach-s3c64xx/mach-ncp.c
index 13fea5c86ca3..a7c328d32824 100644
--- a/arch/arm/mach-s3c64xx/mach-ncp.c
+++ b/arch/arm/mach-s3c64xx/mach-ncp.c
@@ -36,7 +36,6 @@
 
 #include <plat/devs.h>
 #include <plat/cpu.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 
diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c b/arch/arm/mach-s3c64xx/mach-real6410.c
index 0ff88b6859c4..993ce7bdd740 100644
--- a/arch/arm/mach-s3c64xx/mach-real6410.c
+++ b/arch/arm/mach-s3c64xx/mach-real6410.c
@@ -38,7 +38,6 @@
 
 #include <video/platform_lcd.h>
 #include <video/samsung_fimd.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "regs-modem.h"
diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c b/arch/arm/mach-s3c64xx/mach-smartq.c
index 5025db607c0f..37d878909b17 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq.c
@@ -32,7 +32,6 @@
 #include <linux/platform_data/touchscreen-s3c2410.h>
 
 #include <video/platform_lcd.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "mach-smartq.h"
diff --git a/arch/arm/mach-s3c64xx/mach-smartq5.c b/arch/arm/mach-s3c64xx/mach-smartq5.c
index 44e9edb144fa..c1d173a97f2a 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq5.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq5.c
@@ -23,7 +23,6 @@
 #include <plat/devs.h>
 #include <plat/fb.h>
 #include <plat/gpio-cfg.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "mach-smartq.h"
diff --git a/arch/arm/mach-s3c64xx/mach-smartq7.c b/arch/arm/mach-s3c64xx/mach-smartq7.c
index 815ee7d0b5e3..493fd8cd83eb 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq7.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq7.c
@@ -23,7 +23,6 @@
 #include <plat/devs.h>
 #include <plat/fb.h>
 #include <plat/gpio-cfg.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 #include "mach-smartq.h"
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6400.c b/arch/arm/mach-s3c64xx/mach-smdk6400.c
index cbd16843c7d1..76b676b6acbb 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6400.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6400.c
@@ -30,7 +30,6 @@
 #include <plat/cpu.h>
 #include <linux/platform_data/i2c-s3c2410.h>
 #include <mach/gpio-samsung.h>
-#include <plat/samsung-time.h>
 
 #include "common.h"
 
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index 56f406c0c3dd..3bd13701d01c 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -64,7 +64,6 @@
 #include <plat/adc.h>
 #include <linux/platform_data/touchscreen-s3c2410.h>
 #include <plat/keypad.h>
-#include <plat/samsung-time.h>
 
 #include "backlight.h"
 #include "common.h"
diff --git a/arch/arm/plat-samsung/include/plat/samsung-time.h b/arch/arm/plat-samsung/include/plat/samsung-time.h
deleted file mode 100644
index 32ab0860f631..000000000000
--- a/arch/arm/plat-samsung/include/plat/samsung-time.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright 2011 Samsung Electronics Co., Ltd.
- *		http://www.samsung.com/
- *
- * Header file for samsung s3c and s5p time support
- */
-
-#ifndef __ASM_PLAT_SAMSUNG_TIME_H
-#define __ASM_PLAT_SAMSUNG_TIME_H __FILE__
-
-/* Samsung HR-Timer Clock mode */
-enum samsung_timer_mode {
-	SAMSUNG_PWM0,
-	SAMSUNG_PWM1,
-	SAMSUNG_PWM2,
-	SAMSUNG_PWM3,
-	SAMSUNG_PWM4,
-};
-
-extern void __init samsung_set_timer_source(enum samsung_timer_mode event,
-					enum samsung_timer_mode source);
-
-extern void __init samsung_timer_init(void);
-
-#endif /* __ASM_PLAT_SAMSUNG_TIME_H */
-- 
2.17.1


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

* [PATCH 4/7] ARM: samsung: Fix language typo
  2020-07-29 16:09 [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Krzysztof Kozlowski
                   ` (2 preceding siblings ...)
  2020-07-29 16:09 ` [PATCH 3/7] ARM: s3c: Remove plat-samsung/.../samsung-time.h Krzysztof Kozlowski
@ 2020-07-29 16:09 ` Krzysztof Kozlowski
  2020-07-29 16:09 ` [PATCH 5/7] ARM: samsung: Kill useless HAVE_S3C2410_WATCHDOG Krzysztof Kozlowski
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 16:09 UTC (permalink / raw)
  To: Russell King, Kukjin Kim, Krzysztof Kozlowski, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Guenter Roeck, Arnd Bergmann,
	Linus Walleij, linux-kernel, linux-arm-kernel, linux-samsung-soc,
	linux-stm32, patches, linux-clk, linux-watchdog
  Cc: Sergio Prado, Marek Szyprowski, Sylwester Nawrocki, Cedric Roux,
	Lihua Yao

Fix Complie -> Compile

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/plat-samsung/Kconfig | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index 301e572651c0..43a8b2bd16ff 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -154,7 +154,7 @@ config S3C_DEV_WDT
 	bool
 	default y if ARCH_S3C24XX
 	help
-	  Complie in platform device definition for Watchdog Timer
+	  Compile in platform device definition for Watchdog Timer
 
 config S3C_DEV_NAND
 	bool
@@ -169,7 +169,7 @@ config S3C_DEV_ONENAND
 config S3C_DEV_RTC
 	bool
 	help
-	  Complie in platform device definition for RTC
+	  Compile in platform device definition for RTC
 
 config SAMSUNG_DEV_ADC
 	bool
-- 
2.17.1


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

* [PATCH 5/7] ARM: samsung: Kill useless HAVE_S3C2410_WATCHDOG
  2020-07-29 16:09 [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Krzysztof Kozlowski
                   ` (3 preceding siblings ...)
  2020-07-29 16:09 ` [PATCH 4/7] ARM: samsung: Fix language typo Krzysztof Kozlowski
@ 2020-07-29 16:09 ` Krzysztof Kozlowski
  2020-07-29 17:02   ` Guenter Roeck
  2020-07-29 16:09 ` [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset Krzysztof Kozlowski
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 16:09 UTC (permalink / raw)
  To: Russell King, Kukjin Kim, Krzysztof Kozlowski, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Guenter Roeck, Arnd Bergmann,
	Linus Walleij, linux-kernel, linux-arm-kernel, linux-samsung-soc,
	linux-stm32, patches, linux-clk, linux-watchdog
  Cc: Sergio Prado, Marek Szyprowski, Sylwester Nawrocki, Cedric Roux,
	Lihua Yao

A separate Kconfig option HAVE_S3C2410_WATCHDOG for Samsung SoCs does
not have sense, because:
1. All ARMv7 and ARMv8 Samsung SoCs have watchdog,
2. All architecture Kconfigs were selecting it (if WATCHDOG framework is
   chosen),
3. HAVE_S3C2410_WATCHDOG is doing nothing except being a dependency of
   actual Samsung SoC watchdog driver, which is enabled manually by
   specific defconfigs.

HAVE_S3C2410_WATCHDOG can be safely removed.

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/Kconfig              | 1 -
 arch/arm/mach-exynos/Kconfig  | 1 -
 arch/arm/mach-s3c64xx/Kconfig | 2 --
 arch/arm/mach-s5pv210/Kconfig | 1 -
 arch/arm64/Kconfig.platforms  | 1 -
 drivers/watchdog/Kconfig      | 8 --------
 6 files changed, 14 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 7564f293f107..fe95777af653 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -504,7 +504,6 @@ config ARCH_S3C24XX
 	select GPIOLIB
 	select GENERIC_IRQ_MULTI_HANDLER
 	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
 	select HAVE_S3C_RTC if RTC_CLASS
 	select NEED_MACH_IO_H
 	select SAMSUNG_ATAGS
diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index f185cd3d4c62..d2d249706ebb 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -24,7 +24,6 @@ menuconfig ARCH_EXYNOS
 	select HAVE_ARM_ARCH_TIMER if ARCH_EXYNOS5
 	select HAVE_ARM_SCU if SMP
 	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
 	select HAVE_S3C_RTC if RTC_CLASS
 	select PINCTRL
 	select PINCTRL_EXYNOS
diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
index ac3e3563487f..e208c2b48853 100644
--- a/arch/arm/mach-s3c64xx/Kconfig
+++ b/arch/arm/mach-s3c64xx/Kconfig
@@ -13,7 +13,6 @@ menuconfig ARCH_S3C64XX
 	select GPIO_SAMSUNG if ATAGS
 	select GPIOLIB
 	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
 	select HAVE_TCM
 	select PLAT_SAMSUNG
 	select PM_GENERIC_DOMAINS if PM
@@ -165,7 +164,6 @@ config MACH_SMDK6410
 	bool "SMDK6410"
 	depends on ATAGS
 	select CPU_S3C6410
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
 	select S3C64XX_SETUP_FB_24BPP
 	select S3C64XX_SETUP_I2C1
 	select S3C64XX_SETUP_IDE
diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
index 03984a791879..b3db1191e437 100644
--- a/arch/arm/mach-s5pv210/Kconfig
+++ b/arch/arm/mach-s5pv210/Kconfig
@@ -14,7 +14,6 @@ config ARCH_S5PV210
 	select COMMON_CLK_SAMSUNG
 	select GPIOLIB
 	select HAVE_S3C2410_I2C if I2C
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
 	select HAVE_S3C_RTC if RTC_CLASS
 	select PINCTRL
 	select PINCTRL_EXYNOS
diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
index cd58f8495c45..d235b27cf372 100644
--- a/arch/arm64/Kconfig.platforms
+++ b/arch/arm64/Kconfig.platforms
@@ -80,7 +80,6 @@ config ARCH_EXYNOS
 	select EXYNOS_CHIPID
 	select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
 	select EXYNOS_PMU
-	select HAVE_S3C2410_WATCHDOG if WATCHDOG
 	select HAVE_S3C_RTC if RTC_CLASS
 	select PINCTRL
 	select PINCTRL_EXYNOS
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
index 4f4687c46d38..ae86ea135d2b 100644
--- a/drivers/watchdog/Kconfig
+++ b/drivers/watchdog/Kconfig
@@ -478,16 +478,8 @@ config IXP4XX_WATCHDOG
 
 	  Say N if you are unsure.
 
-config HAVE_S3C2410_WATCHDOG
-	bool
-	help
-	  This will include watchdog timer support for Samsung SoCs. If
-	  you want to include watchdog support for any machine, kindly
-	  select this in the respective mach-XXXX/Kconfig file.
-
 config S3C2410_WATCHDOG
 	tristate "S3C2410 Watchdog"
-	depends on HAVE_S3C2410_WATCHDOG || COMPILE_TEST
 	select WATCHDOG_CORE
 	select MFD_SYSCON if ARCH_EXYNOS
 	help
-- 
2.17.1


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

* [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset
  2020-07-29 16:09 [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Krzysztof Kozlowski
                   ` (4 preceding siblings ...)
  2020-07-29 16:09 ` [PATCH 5/7] ARM: samsung: Kill useless HAVE_S3C2410_WATCHDOG Krzysztof Kozlowski
@ 2020-07-29 16:09 ` Krzysztof Kozlowski
  2020-07-29 17:33   ` Tomasz Figa
  2020-07-29 16:09 ` [PATCH 7/7] ARM: s3c24xx: Fix missing system reset Krzysztof Kozlowski
  2020-07-29 20:01 ` [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Arnd Bergmann
  7 siblings, 1 reply; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 16:09 UTC (permalink / raw)
  To: Russell King, Kukjin Kim, Krzysztof Kozlowski, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Guenter Roeck, Arnd Bergmann,
	Linus Walleij, linux-kernel, linux-arm-kernel, linux-samsung-soc,
	linux-stm32, patches, linux-clk, linux-watchdog
  Cc: Sergio Prado, Marek Szyprowski, Sylwester Nawrocki, Cedric Roux,
	Lihua Yao

Similarly to commit f6361c6b3880 ("ARM: S3C24XX: remove separate restart
code"), the platform watchdog reset code can be removed in favor of
a generic watchdog driver which already handles reset.

This allows removal of a bunch of machine code and fixes also W=1
compile warnings:

    arch/arm/plat-samsung/watchdog-reset.c:29:6: warning: no previous prototype for 'samsung_wdt_reset' [-Wmissing-prototypes]
       29 | void samsung_wdt_reset(void)
          |      ^~~~~~~~~~~~~~~~~
    arch/arm/plat-samsung/watchdog-reset.c:69:13: warning: no previous prototype for 'samsung_wdt_reset_of_init' [-Wmissing-prototypes]
       69 | void __init samsung_wdt_reset_of_init(void)
          |             ^~~~~~~~~~~~~~~~~~~~~~~~~
    arch/arm/plat-samsung/watchdog-reset.c:89:13: warning: no previous prototype for 'samsung_wdt_reset_init' [-Wmissing-prototypes]
       89 | void __init samsung_wdt_reset_init(void __iomem *base)

Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/mach-s3c64xx/Kconfig           |  3 +-
 arch/arm/mach-s3c64xx/common.c          | 15 +---
 arch/arm/mach-s3c64xx/common.h          |  2 -
 arch/arm/mach-s3c64xx/mach-anw6410.c    |  1 -
 arch/arm/mach-s3c64xx/mach-crag6410.c   |  1 -
 arch/arm/mach-s3c64xx/mach-hmt.c        |  1 -
 arch/arm/mach-s3c64xx/mach-mini6410.c   |  1 -
 arch/arm/mach-s3c64xx/mach-ncp.c        |  1 -
 arch/arm/mach-s3c64xx/mach-real6410.c   |  1 -
 arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 17 -----
 arch/arm/mach-s3c64xx/mach-smartq5.c    |  1 -
 arch/arm/mach-s3c64xx/mach-smartq7.c    |  1 -
 arch/arm/mach-s3c64xx/mach-smdk6400.c   |  1 -
 arch/arm/mach-s3c64xx/mach-smdk6410.c   |  1 -
 arch/arm/mach-s3c64xx/watchdog-reset.h  | 16 -----
 arch/arm/plat-samsung/Kconfig           |  6 --
 arch/arm/plat-samsung/Makefile          |  1 -
 arch/arm/plat-samsung/watchdog-reset.c  | 93 -------------------------
 18 files changed, 5 insertions(+), 158 deletions(-)
 delete mode 100644 arch/arm/mach-s3c64xx/watchdog-reset.h
 delete mode 100644 arch/arm/plat-samsung/watchdog-reset.c

diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
index e208c2b48853..f3fcb570edf5 100644
--- a/arch/arm/mach-s3c64xx/Kconfig
+++ b/arch/arm/mach-s3c64xx/Kconfig
@@ -18,9 +18,10 @@ menuconfig ARCH_S3C64XX
 	select PM_GENERIC_DOMAINS if PM
 	select S3C_DEV_NAND if ATAGS
 	select S3C_GPIO_TRACK if ATAGS
+	select S3C2410_WATCHDOG
 	select SAMSUNG_ATAGS if ATAGS
 	select SAMSUNG_WAKEMASK if PM
-	select SAMSUNG_WDT_RESET
+	select WATCHDOG
 	help
 	  Samsung S3C64XX series based systems
 
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index a655bf0c7802..42e96d196f61 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -50,7 +50,6 @@
 
 #include "common.h"
 #include "irq-uart.h"
-#include "watchdog-reset.h"
 
 /* External clock frequency */
 static unsigned long xtal_f __ro_after_init = 12000000;
@@ -232,10 +231,11 @@ void __init s3c64xx_init_irq(u32 vic0_valid, u32 vic1_valid)
 	/*
 	 * FIXME: there is no better place to put this at the moment
 	 * (s3c64xx_clk_init needs ioremap and must happen before init_time
-	 * samsung_wdt_reset_init needs clocks)
+	 * samsung_wdt_reset_init needs clocks).  However
+	 * samsung_wdt_reset_init() was removed in favor of watchdog driver
+	 * so this should be revised.
 	 */
 	s3c64xx_clk_init(NULL, xtal_f, xusbxti_f, soc_is_s3c6400(), S3C_VA_SYS);
-	samsung_wdt_reset_init(S3C_VA_WATCHDOG);
 
 	printk(KERN_DEBUG "%s: initialising interrupts\n", __func__);
 
@@ -429,12 +429,3 @@ static int __init s3c64xx_init_irq_eint(void)
 	return 0;
 }
 arch_initcall(s3c64xx_init_irq_eint);
-
-void s3c64xx_restart(enum reboot_mode mode, const char *cmd)
-{
-	if (mode != REBOOT_SOFT)
-		samsung_wdt_reset();
-
-	/* if all else fails, or mode was for soft, jump to 0 */
-	soft_restart(0);
-}
diff --git a/arch/arm/mach-s3c64xx/common.h b/arch/arm/mach-s3c64xx/common.h
index 6fcfb0e0ffa5..567bf3017171 100644
--- a/arch/arm/mach-s3c64xx/common.h
+++ b/arch/arm/mach-s3c64xx/common.h
@@ -19,8 +19,6 @@
 void s3c64xx_init_irq(u32 vic0, u32 vic1);
 void s3c64xx_init_io(struct map_desc *mach_desc, int size);
 
-void s3c64xx_restart(enum reboot_mode mode, const char *cmd);
-
 struct device_node;
 void s3c64xx_set_xtal_freq(unsigned long freq);
 void s3c64xx_set_xusbxti_freq(unsigned long freq);
diff --git a/arch/arm/mach-s3c64xx/mach-anw6410.c b/arch/arm/mach-s3c64xx/mach-anw6410.c
index 495549573d36..e783f5b3593a 100644
--- a/arch/arm/mach-s3c64xx/mach-anw6410.c
+++ b/arch/arm/mach-s3c64xx/mach-anw6410.c
@@ -228,5 +228,4 @@ MACHINE_START(ANW6410, "A&W6410")
 	.map_io		= anw6410_map_io,
 	.init_machine	= anw6410_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c b/arch/arm/mach-s3c64xx/mach-crag6410.c
index 3cb43a33e3f8..223a3d51d8b6 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -877,5 +877,4 @@ MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
 	.map_io		= crag6410_map_io,
 	.init_machine	= crag6410_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-hmt.c b/arch/arm/mach-s3c64xx/mach-hmt.c
index cadb63103517..ad15260c12b4 100644
--- a/arch/arm/mach-s3c64xx/mach-hmt.c
+++ b/arch/arm/mach-s3c64xx/mach-hmt.c
@@ -280,5 +280,4 @@ MACHINE_START(HMT, "Airgoo-HMT")
 	.map_io		= hmt_map_io,
 	.init_machine	= hmt_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c b/arch/arm/mach-s3c64xx/mach-mini6410.c
index 77bad2891020..636d312add81 100644
--- a/arch/arm/mach-s3c64xx/mach-mini6410.c
+++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
@@ -362,5 +362,4 @@ MACHINE_START(MINI6410, "MINI6410")
 	.map_io		= mini6410_map_io,
 	.init_machine	= mini6410_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-ncp.c b/arch/arm/mach-s3c64xx/mach-ncp.c
index a7c328d32824..0a67ff173575 100644
--- a/arch/arm/mach-s3c64xx/mach-ncp.c
+++ b/arch/arm/mach-s3c64xx/mach-ncp.c
@@ -98,5 +98,4 @@ MACHINE_START(NCP, "NCP")
 	.map_io		= ncp_map_io,
 	.init_machine	= ncp_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c b/arch/arm/mach-s3c64xx/mach-real6410.c
index 993ce7bdd740..56fc21f02c7b 100644
--- a/arch/arm/mach-s3c64xx/mach-real6410.c
+++ b/arch/arm/mach-s3c64xx/mach-real6410.c
@@ -330,5 +330,4 @@ MACHINE_START(REAL6410, "REAL6410")
 	.map_io		= real6410_map_io,
 	.init_machine	= real6410_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
index 1724f5ea5c46..09c4e8742629 100644
--- a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
+++ b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
@@ -12,7 +12,6 @@
 #include <mach/map.h>
 
 #include "common.h"
-#include "watchdog-reset.h"
 
 /*
  * IO mapping for shared system controller IP.
@@ -39,20 +38,6 @@ static void __init s3c64xx_dt_map_io(void)
 		panic("SoC is not S3C64xx!");
 }
 
-static void __init s3c64xx_dt_init_machine(void)
-{
-	samsung_wdt_reset_of_init();
-}
-
-static void s3c64xx_dt_restart(enum reboot_mode mode, const char *cmd)
-{
-	if (mode != REBOOT_SOFT)
-		samsung_wdt_reset();
-
-	/* if all else fails, or mode was for soft, jump to 0 */
-	soft_restart(0);
-}
-
 static const char *const s3c64xx_dt_compat[] __initconst = {
 	"samsung,s3c6400",
 	"samsung,s3c6410",
@@ -63,6 +48,4 @@ DT_MACHINE_START(S3C6400_DT, "Samsung S3C64xx (Flattened Device Tree)")
 	/* Maintainer: Tomasz Figa <tomasz.figa@gmail.com> */
 	.dt_compat	= s3c64xx_dt_compat,
 	.map_io		= s3c64xx_dt_map_io,
-	.init_machine	= s3c64xx_dt_init_machine,
-	.restart        = s3c64xx_dt_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-smartq5.c b/arch/arm/mach-s3c64xx/mach-smartq5.c
index c1d173a97f2a..789876a20534 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq5.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq5.c
@@ -151,5 +151,4 @@ MACHINE_START(SMARTQ5, "SmartQ 5")
 	.map_io		= smartq_map_io,
 	.init_machine	= smartq5_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-smartq7.c b/arch/arm/mach-s3c64xx/mach-smartq7.c
index 493fd8cd83eb..d004e34b63bb 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq7.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq7.c
@@ -167,5 +167,4 @@ MACHINE_START(SMARTQ7, "SmartQ 7")
 	.map_io		= smartq_map_io,
 	.init_machine	= smartq7_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6400.c b/arch/arm/mach-s3c64xx/mach-smdk6400.c
index 76b676b6acbb..d24899dd3883 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6400.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6400.c
@@ -88,5 +88,4 @@ MACHINE_START(SMDK6400, "SMDK6400")
 	.map_io		= smdk6400_map_io,
 	.init_machine	= smdk6400_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index 3bd13701d01c..104548fb192a 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -704,5 +704,4 @@ MACHINE_START(SMDK6410, "SMDK6410")
 	.map_io		= smdk6410_map_io,
 	.init_machine	= smdk6410_machine_init,
 	.init_time	= samsung_timer_init,
-	.restart	= s3c64xx_restart,
 MACHINE_END
diff --git a/arch/arm/mach-s3c64xx/watchdog-reset.h b/arch/arm/mach-s3c64xx/watchdog-reset.h
deleted file mode 100644
index 1042d6c463dc..000000000000
--- a/arch/arm/mach-s3c64xx/watchdog-reset.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2008 Simtec Electronics
- *	Ben Dooks <ben@simtec.co.uk>
- *
- * S3C2410 - System define for arch_reset() function
- */
-
-#ifndef __PLAT_SAMSUNG_WATCHDOG_RESET_H
-#define __PLAT_SAMSUNG_WATCHDOG_RESET_H
-
-extern void samsung_wdt_reset(void);
-extern void samsung_wdt_reset_of_init(void);
-extern void samsung_wdt_reset_init(void __iomem *base);
-
-#endif /* __PLAT_SAMSUNG_WATCHDOG_RESET_H */
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index 43a8b2bd16ff..3aca01067b3c 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -290,12 +290,6 @@ config SAMSUNG_WAKEMASK
 	  and above. This code allows a set of interrupt to wakeup-mask
 	  mappings. See <plat/wakeup-mask.h>
 
-config SAMSUNG_WDT_RESET
-	bool
-	help
-	  Compile support for system restart by triggering watchdog reset.
-	  Used on SoCs that do not provide dedicated reset control.
-
 config DEBUG_S3C_UART
 	depends on PLAT_SAMSUNG
 	int
diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile
index 3db9d2c38258..ce339a96fbf7 100644
--- a/arch/arm/plat-samsung/Makefile
+++ b/arch/arm/plat-samsung/Makefile
@@ -32,4 +32,3 @@ obj-$(CONFIG_SAMSUNG_PM_CHECK)	+= pm-check.o
 obj-$(CONFIG_SAMSUNG_PM_DEBUG)	+= pm-debug.o
 
 obj-$(CONFIG_SAMSUNG_WAKEMASK)	+= wakeup-mask.o
-obj-$(CONFIG_SAMSUNG_WDT_RESET)	+= watchdog-reset.o
diff --git a/arch/arm/plat-samsung/watchdog-reset.c b/arch/arm/plat-samsung/watchdog-reset.c
deleted file mode 100644
index 71d85ff323f7..000000000000
--- a/arch/arm/plat-samsung/watchdog-reset.c
+++ /dev/null
@@ -1,93 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-//
-// Copyright (c) 2008 Simtec Electronics
-//	Ben Dooks <ben@simtec.co.uk>
-//
-// Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
-//
-// Watchdog reset support for Samsung SoCs.
-
-#include <linux/clk.h>
-#include <linux/err.h>
-#include <linux/io.h>
-#include <linux/delay.h>
-#include <linux/of.h>
-#include <linux/of_address.h>
-
-#define S3C2410_WTCON			0x00
-#define S3C2410_WTDAT			0x04
-#define S3C2410_WTCNT			0x08
-
-#define S3C2410_WTCON_ENABLE		(1 << 5)
-#define S3C2410_WTCON_DIV16		(0 << 3)
-#define S3C2410_WTCON_RSTEN		(1 << 0)
-#define S3C2410_WTCON_PRESCALE(x)	((x) << 8)
-
-static void __iomem *wdt_base;
-static struct clk *wdt_clock;
-
-void samsung_wdt_reset(void)
-{
-	if (!wdt_base) {
-		pr_err("%s: wdt reset not initialized\n", __func__);
-		/* delay to allow the serial port to show the message */
-		mdelay(50);
-		return;
-	}
-
-	if (!IS_ERR(wdt_clock))
-		clk_prepare_enable(wdt_clock);
-
-	/* disable watchdog, to be safe  */
-	__raw_writel(0, wdt_base + S3C2410_WTCON);
-
-	/* put initial values into count and data */
-	__raw_writel(0x80, wdt_base + S3C2410_WTCNT);
-	__raw_writel(0x80, wdt_base + S3C2410_WTDAT);
-
-	/* set the watchdog to go and reset... */
-	__raw_writel(S3C2410_WTCON_ENABLE | S3C2410_WTCON_DIV16 |
-			S3C2410_WTCON_RSTEN | S3C2410_WTCON_PRESCALE(0x20),
-			wdt_base + S3C2410_WTCON);
-
-	/* wait for reset to assert... */
-	mdelay(500);
-
-	pr_err("Watchdog reset failed to assert reset\n");
-
-	/* delay to allow the serial port to show the message */
-	mdelay(50);
-}
-
-#ifdef CONFIG_OF
-static const struct of_device_id s3c2410_wdt_match[] = {
-	{ .compatible = "samsung,s3c2410-wdt" },
-	{ .compatible = "samsung,s3c6410-wdt" },
-	{},
-};
-
-void __init samsung_wdt_reset_of_init(void)
-{
-	struct device_node *np;
-
-	np = of_find_matching_node(NULL, s3c2410_wdt_match);
-	if (!np) {
-		pr_err("%s: failed to find watchdog node\n", __func__);
-		return;
-	}
-
-	wdt_base = of_iomap(np, 0);
-	if (!wdt_base) {
-		pr_err("%s: failed to map watchdog registers\n", __func__);
-		return;
-	}
-
-	wdt_clock = of_clk_get(np, 0);
-}
-#endif
-
-void __init samsung_wdt_reset_init(void __iomem *base)
-{
-	wdt_base = base;
-	wdt_clock = clk_get(NULL, "watchdog");
-}
-- 
2.17.1


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

* [PATCH 7/7] ARM: s3c24xx: Fix missing system reset
  2020-07-29 16:09 [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Krzysztof Kozlowski
                   ` (5 preceding siblings ...)
  2020-07-29 16:09 ` [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset Krzysztof Kozlowski
@ 2020-07-29 16:09 ` Krzysztof Kozlowski
  2020-07-29 20:01 ` [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Arnd Bergmann
  7 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 16:09 UTC (permalink / raw)
  To: Russell King, Kukjin Kim, Krzysztof Kozlowski, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Guenter Roeck, Arnd Bergmann,
	Linus Walleij, linux-kernel, linux-arm-kernel, linux-samsung-soc,
	linux-stm32, patches, linux-clk, linux-watchdog
  Cc: Sergio Prado, Marek Szyprowski, Sylwester Nawrocki, Cedric Roux,
	Lihua Yao, stable

Commit f6361c6b3880 ("ARM: S3C24XX: remove separate restart code")
removed usage of the watchdog reset platform code in favor of the
Samsung SoC watchdog driver.  However the latter was not selected thus
S3C24xx platforms lost reset abilities.

Cc: <stable@vger.kernel.org>
Fixes: f6361c6b3880 ("ARM: S3C24XX: remove separate restart code")
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
---
 arch/arm/Kconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index fe95777af653..063018c387be 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -506,8 +506,10 @@ config ARCH_S3C24XX
 	select HAVE_S3C2410_I2C if I2C
 	select HAVE_S3C_RTC if RTC_CLASS
 	select NEED_MACH_IO_H
+	select S3C2410_WATCHDOG
 	select SAMSUNG_ATAGS
 	select USE_OF
+	select WATCHDOG
 	help
 	  Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443
 	  and S3C2450 SoCs based systems, such as the Simtec Electronics BAST
-- 
2.17.1


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

* Re: [PATCH 5/7] ARM: samsung: Kill useless HAVE_S3C2410_WATCHDOG
  2020-07-29 16:09 ` [PATCH 5/7] ARM: samsung: Kill useless HAVE_S3C2410_WATCHDOG Krzysztof Kozlowski
@ 2020-07-29 17:02   ` Guenter Roeck
  2020-07-29 17:36     ` Tomasz Figa
  0 siblings, 1 reply; 24+ messages in thread
From: Guenter Roeck @ 2020-07-29 17:02 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Tomasz Figa, Chanwoo Choi, Michael Turquette, Stephen Boyd,
	Wim Van Sebroeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, linux-samsung-soc, linux-stm32, patches,
	linux-clk, linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

On Wed, Jul 29, 2020 at 06:09:40PM +0200, Krzysztof Kozlowski wrote:
> A separate Kconfig option HAVE_S3C2410_WATCHDOG for Samsung SoCs does
> not have sense, because:
> 1. All ARMv7 and ARMv8 Samsung SoCs have watchdog,
> 2. All architecture Kconfigs were selecting it (if WATCHDOG framework is
>    chosen),
> 3. HAVE_S3C2410_WATCHDOG is doing nothing except being a dependency of
>    actual Samsung SoC watchdog driver, which is enabled manually by
>    specific defconfigs.
> 
> HAVE_S3C2410_WATCHDOG can be safely removed.
> 

That is not really correct. HAVE_S3C2410_WATCHDOG is used to ensure
that users can only enable S3C2410_WATCHDOG if the watchdog actually
exists in a system. With this change, it can be enabled for all
architectures and platforms.

NACK.

Guenter

> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> ---
>  arch/arm/Kconfig              | 1 -
>  arch/arm/mach-exynos/Kconfig  | 1 -
>  arch/arm/mach-s3c64xx/Kconfig | 2 --
>  arch/arm/mach-s5pv210/Kconfig | 1 -
>  arch/arm64/Kconfig.platforms  | 1 -
>  drivers/watchdog/Kconfig      | 8 --------
>  6 files changed, 14 deletions(-)
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 7564f293f107..fe95777af653 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -504,7 +504,6 @@ config ARCH_S3C24XX
>  	select GPIOLIB
>  	select GENERIC_IRQ_MULTI_HANDLER
>  	select HAVE_S3C2410_I2C if I2C
> -	select HAVE_S3C2410_WATCHDOG if WATCHDOG
>  	select HAVE_S3C_RTC if RTC_CLASS
>  	select NEED_MACH_IO_H
>  	select SAMSUNG_ATAGS
> diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> index f185cd3d4c62..d2d249706ebb 100644
> --- a/arch/arm/mach-exynos/Kconfig
> +++ b/arch/arm/mach-exynos/Kconfig
> @@ -24,7 +24,6 @@ menuconfig ARCH_EXYNOS
>  	select HAVE_ARM_ARCH_TIMER if ARCH_EXYNOS5
>  	select HAVE_ARM_SCU if SMP
>  	select HAVE_S3C2410_I2C if I2C
> -	select HAVE_S3C2410_WATCHDOG if WATCHDOG
>  	select HAVE_S3C_RTC if RTC_CLASS
>  	select PINCTRL
>  	select PINCTRL_EXYNOS
> diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
> index ac3e3563487f..e208c2b48853 100644
> --- a/arch/arm/mach-s3c64xx/Kconfig
> +++ b/arch/arm/mach-s3c64xx/Kconfig
> @@ -13,7 +13,6 @@ menuconfig ARCH_S3C64XX
>  	select GPIO_SAMSUNG if ATAGS
>  	select GPIOLIB
>  	select HAVE_S3C2410_I2C if I2C
> -	select HAVE_S3C2410_WATCHDOG if WATCHDOG
>  	select HAVE_TCM
>  	select PLAT_SAMSUNG
>  	select PM_GENERIC_DOMAINS if PM
> @@ -165,7 +164,6 @@ config MACH_SMDK6410
>  	bool "SMDK6410"
>  	depends on ATAGS
>  	select CPU_S3C6410
> -	select HAVE_S3C2410_WATCHDOG if WATCHDOG
>  	select S3C64XX_SETUP_FB_24BPP
>  	select S3C64XX_SETUP_I2C1
>  	select S3C64XX_SETUP_IDE
> diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
> index 03984a791879..b3db1191e437 100644
> --- a/arch/arm/mach-s5pv210/Kconfig
> +++ b/arch/arm/mach-s5pv210/Kconfig
> @@ -14,7 +14,6 @@ config ARCH_S5PV210
>  	select COMMON_CLK_SAMSUNG
>  	select GPIOLIB
>  	select HAVE_S3C2410_I2C if I2C
> -	select HAVE_S3C2410_WATCHDOG if WATCHDOG
>  	select HAVE_S3C_RTC if RTC_CLASS
>  	select PINCTRL
>  	select PINCTRL_EXYNOS
> diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
> index cd58f8495c45..d235b27cf372 100644
> --- a/arch/arm64/Kconfig.platforms
> +++ b/arch/arm64/Kconfig.platforms
> @@ -80,7 +80,6 @@ config ARCH_EXYNOS
>  	select EXYNOS_CHIPID
>  	select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
>  	select EXYNOS_PMU
> -	select HAVE_S3C2410_WATCHDOG if WATCHDOG
>  	select HAVE_S3C_RTC if RTC_CLASS
>  	select PINCTRL
>  	select PINCTRL_EXYNOS
> diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> index 4f4687c46d38..ae86ea135d2b 100644
> --- a/drivers/watchdog/Kconfig
> +++ b/drivers/watchdog/Kconfig
> @@ -478,16 +478,8 @@ config IXP4XX_WATCHDOG
>  
>  	  Say N if you are unsure.
>  
> -config HAVE_S3C2410_WATCHDOG
> -	bool
> -	help
> -	  This will include watchdog timer support for Samsung SoCs. If
> -	  you want to include watchdog support for any machine, kindly
> -	  select this in the respective mach-XXXX/Kconfig file.
> -
>  config S3C2410_WATCHDOG
>  	tristate "S3C2410 Watchdog"
> -	depends on HAVE_S3C2410_WATCHDOG || COMPILE_TEST
>  	select WATCHDOG_CORE
>  	select MFD_SYSCON if ARCH_EXYNOS
>  	help
> -- 
> 2.17.1
> 

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

* Re: [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset
  2020-07-29 16:09 ` [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset Krzysztof Kozlowski
@ 2020-07-29 17:33   ` Tomasz Figa
  2020-07-29 19:15     ` Krzysztof Kozlowski
  0 siblings, 1 reply; 24+ messages in thread
From: Tomasz Figa @ 2020-07-29 17:33 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Chanwoo Choi, Michael Turquette, Stephen Boyd, Wim Van Sebroeck,
	Guenter Roeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, moderated list:SAMSUNG SOC CLOCK DRIVERS,
	linux-stm32, patches, open list:COMMON CLK FRAMEWORK,
	linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

Hi Krzysztof,

2020年7月29日(水) 18:11 Krzysztof Kozlowski <krzk@kernel.org>:
>
> Similarly to commit f6361c6b3880 ("ARM: S3C24XX: remove separate restart
> code"), the platform watchdog reset code can be removed in favor of
> a generic watchdog driver which already handles reset.
>
> This allows removal of a bunch of machine code and fixes also W=1
> compile warnings:
>
>     arch/arm/plat-samsung/watchdog-reset.c:29:6: warning: no previous prototype for 'samsung_wdt_reset' [-Wmissing-prototypes]
>        29 | void samsung_wdt_reset(void)
>           |      ^~~~~~~~~~~~~~~~~
>     arch/arm/plat-samsung/watchdog-reset.c:69:13: warning: no previous prototype for 'samsung_wdt_reset_of_init' [-Wmissing-prototypes]
>        69 | void __init samsung_wdt_reset_of_init(void)
>           |             ^~~~~~~~~~~~~~~~~~~~~~~~~
>     arch/arm/plat-samsung/watchdog-reset.c:89:13: warning: no previous prototype for 'samsung_wdt_reset_init' [-Wmissing-prototypes]
>        89 | void __init samsung_wdt_reset_init(void __iomem *base)
>
> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> ---
>  arch/arm/mach-s3c64xx/Kconfig           |  3 +-
>  arch/arm/mach-s3c64xx/common.c          | 15 +---
>  arch/arm/mach-s3c64xx/common.h          |  2 -
>  arch/arm/mach-s3c64xx/mach-anw6410.c    |  1 -
>  arch/arm/mach-s3c64xx/mach-crag6410.c   |  1 -
>  arch/arm/mach-s3c64xx/mach-hmt.c        |  1 -
>  arch/arm/mach-s3c64xx/mach-mini6410.c   |  1 -
>  arch/arm/mach-s3c64xx/mach-ncp.c        |  1 -
>  arch/arm/mach-s3c64xx/mach-real6410.c   |  1 -
>  arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 17 -----
>  arch/arm/mach-s3c64xx/mach-smartq5.c    |  1 -
>  arch/arm/mach-s3c64xx/mach-smartq7.c    |  1 -
>  arch/arm/mach-s3c64xx/mach-smdk6400.c   |  1 -
>  arch/arm/mach-s3c64xx/mach-smdk6410.c   |  1 -
>  arch/arm/mach-s3c64xx/watchdog-reset.h  | 16 -----
>  arch/arm/plat-samsung/Kconfig           |  6 --
>  arch/arm/plat-samsung/Makefile          |  1 -
>  arch/arm/plat-samsung/watchdog-reset.c  | 93 -------------------------
>  18 files changed, 5 insertions(+), 158 deletions(-)
>  delete mode 100644 arch/arm/mach-s3c64xx/watchdog-reset.h
>  delete mode 100644 arch/arm/plat-samsung/watchdog-reset.c
>

Thanks for the patch! Please see my comments inline.

> diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
> index e208c2b48853..f3fcb570edf5 100644
> --- a/arch/arm/mach-s3c64xx/Kconfig
> +++ b/arch/arm/mach-s3c64xx/Kconfig
> @@ -18,9 +18,10 @@ menuconfig ARCH_S3C64XX
>         select PM_GENERIC_DOMAINS if PM
>         select S3C_DEV_NAND if ATAGS
>         select S3C_GPIO_TRACK if ATAGS
> +       select S3C2410_WATCHDOG
>         select SAMSUNG_ATAGS if ATAGS
>         select SAMSUNG_WAKEMASK if PM
> -       select SAMSUNG_WDT_RESET
> +       select WATCHDOG
>         help
>           Samsung S3C64XX series based systems
>
> diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
> index a655bf0c7802..42e96d196f61 100644
> --- a/arch/arm/mach-s3c64xx/common.c
> +++ b/arch/arm/mach-s3c64xx/common.c
> @@ -50,7 +50,6 @@
>
>  #include "common.h"
>  #include "irq-uart.h"
> -#include "watchdog-reset.h"
>
>  /* External clock frequency */
>  static unsigned long xtal_f __ro_after_init = 12000000;
> @@ -232,10 +231,11 @@ void __init s3c64xx_init_irq(u32 vic0_valid, u32 vic1_valid)
>         /*
>          * FIXME: there is no better place to put this at the moment
>          * (s3c64xx_clk_init needs ioremap and must happen before init_time
> -        * samsung_wdt_reset_init needs clocks)
> +        * samsung_wdt_reset_init needs clocks).  However
> +        * samsung_wdt_reset_init() was removed in favor of watchdog driver
> +        * so this should be revised.

This leaves the comment referring to an inexistent function.

I wonder if this being here is actually a problem at all. It's legacy
code and probably there isn't much value in reshuffling it further.
Rather than that, we would probably want to make sure that everything
migrated to DT and just drop the board files.

>          */
>         s3c64xx_clk_init(NULL, xtal_f, xusbxti_f, soc_is_s3c6400(), S3C_VA_SYS);
> -       samsung_wdt_reset_init(S3C_VA_WATCHDOG);
>
>         printk(KERN_DEBUG "%s: initialising interrupts\n", __func__);
>
> @@ -429,12 +429,3 @@ static int __init s3c64xx_init_irq_eint(void)
>         return 0;
>  }
>  arch_initcall(s3c64xx_init_irq_eint);
> -
> -void s3c64xx_restart(enum reboot_mode mode, const char *cmd)
> -{
> -       if (mode != REBOOT_SOFT)
> -               samsung_wdt_reset();
> -
> -       /* if all else fails, or mode was for soft, jump to 0 */
> -       soft_restart(0);

Does this remove the soft reboot capability? I'm not sure how much of
a problem that would be, though.

[snip]
> diff --git a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> index 1724f5ea5c46..09c4e8742629 100644
> --- a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> +++ b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> @@ -12,7 +12,6 @@
>  #include <mach/map.h>
>
>  #include "common.h"
> -#include "watchdog-reset.h"
>
>  /*
>   * IO mapping for shared system controller IP.
> @@ -39,20 +38,6 @@ static void __init s3c64xx_dt_map_io(void)
>                 panic("SoC is not S3C64xx!");
>  }
>
> -static void __init s3c64xx_dt_init_machine(void)
> -{
> -       samsung_wdt_reset_of_init();
> -}
> -
> -static void s3c64xx_dt_restart(enum reboot_mode mode, const char *cmd)
> -{
> -       if (mode != REBOOT_SOFT)
> -               samsung_wdt_reset();
> -
> -       /* if all else fails, or mode was for soft, jump to 0 */
> -       soft_restart(0);

Ditto.

Best regards,
Tomasz

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

* Re: [PATCH 5/7] ARM: samsung: Kill useless HAVE_S3C2410_WATCHDOG
  2020-07-29 17:02   ` Guenter Roeck
@ 2020-07-29 17:36     ` Tomasz Figa
  2020-07-29 19:08       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 24+ messages in thread
From: Tomasz Figa @ 2020-07-29 17:36 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Krzysztof Kozlowski, Russell King, Kukjin Kim, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Arnd Bergmann, Linus Walleij,
	linux-kernel, linux-arm-kernel,
	moderated list:SAMSUNG SOC CLOCK DRIVERS, linux-stm32, patches,
	open list:COMMON CLK FRAMEWORK, linux-watchdog, Sergio Prado,
	Marek Szyprowski, Sylwester Nawrocki, Cedric Roux, Lihua Yao

2020年7月29日(水) 19:02 Guenter Roeck <linux@roeck-us.net>:
>
> On Wed, Jul 29, 2020 at 06:09:40PM +0200, Krzysztof Kozlowski wrote:
> > A separate Kconfig option HAVE_S3C2410_WATCHDOG for Samsung SoCs does
> > not have sense, because:
> > 1. All ARMv7 and ARMv8 Samsung SoCs have watchdog,
> > 2. All architecture Kconfigs were selecting it (if WATCHDOG framework is
> >    chosen),
> > 3. HAVE_S3C2410_WATCHDOG is doing nothing except being a dependency of
> >    actual Samsung SoC watchdog driver, which is enabled manually by
> >    specific defconfigs.
> >
> > HAVE_S3C2410_WATCHDOG can be safely removed.
> >
>
> That is not really correct. HAVE_S3C2410_WATCHDOG is used to ensure
> that users can only enable S3C2410_WATCHDOG if the watchdog actually
> exists in a system. With this change, it can be enabled for all
> architectures and platforms.
>
> NACK.
>
> Guenter
>

I'd side with Guenter on this. We better not flood users' screens with
options that are not relevant to their hardware.

An alternative here could be making CONFIG_S3C2410_WATCHDOG depend on
a general symbol for Samsung SoC support if there is such, but then,
are we 100% sure that all the Samsung SoCs would actually have exactly
this watchdog? If a new one shows up, one would have to bring back
this HAVE_S3C2410_WATCHDOG symbol.

Best regards,
Tomasz

> > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> > ---
> >  arch/arm/Kconfig              | 1 -
> >  arch/arm/mach-exynos/Kconfig  | 1 -
> >  arch/arm/mach-s3c64xx/Kconfig | 2 --
> >  arch/arm/mach-s5pv210/Kconfig | 1 -
> >  arch/arm64/Kconfig.platforms  | 1 -
> >  drivers/watchdog/Kconfig      | 8 --------
> >  6 files changed, 14 deletions(-)
> >
> > diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> > index 7564f293f107..fe95777af653 100644
> > --- a/arch/arm/Kconfig
> > +++ b/arch/arm/Kconfig
> > @@ -504,7 +504,6 @@ config ARCH_S3C24XX
> >       select GPIOLIB
> >       select GENERIC_IRQ_MULTI_HANDLER
> >       select HAVE_S3C2410_I2C if I2C
> > -     select HAVE_S3C2410_WATCHDOG if WATCHDOG
> >       select HAVE_S3C_RTC if RTC_CLASS
> >       select NEED_MACH_IO_H
> >       select SAMSUNG_ATAGS
> > diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
> > index f185cd3d4c62..d2d249706ebb 100644
> > --- a/arch/arm/mach-exynos/Kconfig
> > +++ b/arch/arm/mach-exynos/Kconfig
> > @@ -24,7 +24,6 @@ menuconfig ARCH_EXYNOS
> >       select HAVE_ARM_ARCH_TIMER if ARCH_EXYNOS5
> >       select HAVE_ARM_SCU if SMP
> >       select HAVE_S3C2410_I2C if I2C
> > -     select HAVE_S3C2410_WATCHDOG if WATCHDOG
> >       select HAVE_S3C_RTC if RTC_CLASS
> >       select PINCTRL
> >       select PINCTRL_EXYNOS
> > diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
> > index ac3e3563487f..e208c2b48853 100644
> > --- a/arch/arm/mach-s3c64xx/Kconfig
> > +++ b/arch/arm/mach-s3c64xx/Kconfig
> > @@ -13,7 +13,6 @@ menuconfig ARCH_S3C64XX
> >       select GPIO_SAMSUNG if ATAGS
> >       select GPIOLIB
> >       select HAVE_S3C2410_I2C if I2C
> > -     select HAVE_S3C2410_WATCHDOG if WATCHDOG
> >       select HAVE_TCM
> >       select PLAT_SAMSUNG
> >       select PM_GENERIC_DOMAINS if PM
> > @@ -165,7 +164,6 @@ config MACH_SMDK6410
> >       bool "SMDK6410"
> >       depends on ATAGS
> >       select CPU_S3C6410
> > -     select HAVE_S3C2410_WATCHDOG if WATCHDOG
> >       select S3C64XX_SETUP_FB_24BPP
> >       select S3C64XX_SETUP_I2C1
> >       select S3C64XX_SETUP_IDE
> > diff --git a/arch/arm/mach-s5pv210/Kconfig b/arch/arm/mach-s5pv210/Kconfig
> > index 03984a791879..b3db1191e437 100644
> > --- a/arch/arm/mach-s5pv210/Kconfig
> > +++ b/arch/arm/mach-s5pv210/Kconfig
> > @@ -14,7 +14,6 @@ config ARCH_S5PV210
> >       select COMMON_CLK_SAMSUNG
> >       select GPIOLIB
> >       select HAVE_S3C2410_I2C if I2C
> > -     select HAVE_S3C2410_WATCHDOG if WATCHDOG
> >       select HAVE_S3C_RTC if RTC_CLASS
> >       select PINCTRL
> >       select PINCTRL_EXYNOS
> > diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
> > index cd58f8495c45..d235b27cf372 100644
> > --- a/arch/arm64/Kconfig.platforms
> > +++ b/arch/arm64/Kconfig.platforms
> > @@ -80,7 +80,6 @@ config ARCH_EXYNOS
> >       select EXYNOS_CHIPID
> >       select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
> >       select EXYNOS_PMU
> > -     select HAVE_S3C2410_WATCHDOG if WATCHDOG
> >       select HAVE_S3C_RTC if RTC_CLASS
> >       select PINCTRL
> >       select PINCTRL_EXYNOS
> > diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig
> > index 4f4687c46d38..ae86ea135d2b 100644
> > --- a/drivers/watchdog/Kconfig
> > +++ b/drivers/watchdog/Kconfig
> > @@ -478,16 +478,8 @@ config IXP4XX_WATCHDOG
> >
> >         Say N if you are unsure.
> >
> > -config HAVE_S3C2410_WATCHDOG
> > -     bool
> > -     help
> > -       This will include watchdog timer support for Samsung SoCs. If
> > -       you want to include watchdog support for any machine, kindly
> > -       select this in the respective mach-XXXX/Kconfig file.
> > -
> >  config S3C2410_WATCHDOG
> >       tristate "S3C2410 Watchdog"
> > -     depends on HAVE_S3C2410_WATCHDOG || COMPILE_TEST
> >       select WATCHDOG_CORE
> >       select MFD_SYSCON if ARCH_EXYNOS
> >       help
> > --
> > 2.17.1
> >

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

* Re: [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header
  2020-07-29 16:09 ` [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header Krzysztof Kozlowski
@ 2020-07-29 17:39   ` Tomasz Figa
  2020-07-29 19:42   ` Stephen Boyd
  1 sibling, 0 replies; 24+ messages in thread
From: Tomasz Figa @ 2020-07-29 17:39 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Chanwoo Choi, Michael Turquette, Stephen Boyd, Wim Van Sebroeck,
	Guenter Roeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, moderated list:SAMSUNG SOC CLOCK DRIVERS,
	linux-stm32, patches, open list:COMMON CLK FRAMEWORK,
	linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

2020年7月29日(水) 18:11 Krzysztof Kozlowski <krzk@kernel.org>:
>
> The s3c64xx_clk_init() is defined and used by clk-s3c64xx driver and
> also used in mach-s3c64xx machine code.  Move the declaration to a
> header to fix W=1 build warning:
>
>     drivers/clk/samsung/clk-s3c64xx.c:391:13: warning: no previous prototype for 's3c64xx_clk_init' [-Wmissing-prototypes]
>       391 | void __init s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f,
>
> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> ---
>  MAINTAINERS                       |  1 +
>  arch/arm/mach-s3c64xx/common.c    |  1 +
>  arch/arm/mach-s3c64xx/common.h    |  2 --
>  drivers/clk/samsung/clk-s3c64xx.c |  1 +
>  include/linux/clk/samsung.h       | 21 +++++++++++++++++++++
>  5 files changed, 24 insertions(+), 2 deletions(-)
>  create mode 100644 include/linux/clk/samsung.h
>

Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com>

Best regards,
Tomasz

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

* Re: [PATCH 2/7] ARM: s3c64xx: Include header to fix -Wmissing-prototypes
  2020-07-29 16:09 ` [PATCH 2/7] ARM: s3c64xx: Include header to fix -Wmissing-prototypes Krzysztof Kozlowski
@ 2020-07-29 17:46   ` Tomasz Figa
  0 siblings, 0 replies; 24+ messages in thread
From: Tomasz Figa @ 2020-07-29 17:46 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Chanwoo Choi, Michael Turquette, Stephen Boyd, Wim Van Sebroeck,
	Guenter Roeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, moderated list:SAMSUNG SOC CLOCK DRIVERS,
	linux-stm32, patches, open list:COMMON CLK FRAMEWORK,
	linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

2020年7月29日(水) 18:11 Krzysztof Kozlowski <krzk@kernel.org>:
>
> Include the spi-s3c64xx.h header to fix W=1 build warning:
>
>     arch/arm/mach-s3c64xx/setup-spi.c:11:5: warning:
>         no previous prototype for 's3c64xx_spi0_cfg_gpio' [-Wmissing-prototypes]
>        11 | int s3c64xx_spi0_cfg_gpio(void)
>
> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> ---
>  arch/arm/mach-s3c64xx/setup-spi.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm/mach-s3c64xx/setup-spi.c b/arch/arm/mach-s3c64xx/setup-spi.c
> index 39dfae1f46e7..03c9d296bb0f 100644
> --- a/arch/arm/mach-s3c64xx/setup-spi.c
> +++ b/arch/arm/mach-s3c64xx/setup-spi.c
> @@ -4,6 +4,7 @@
>  //             http://www.samsung.com/
>
>  #include <linux/gpio.h>
> +#include <linux/platform_data/spi-s3c64xx.h>
>  #include <plat/gpio-cfg.h>
>  #include <mach/gpio-samsung.h>
>
> --
> 2.17.1
>

Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com>

Best regards,
Tomasz

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

* Re: [PATCH 3/7] ARM: s3c: Remove plat-samsung/.../samsung-time.h
  2020-07-29 16:09 ` [PATCH 3/7] ARM: s3c: Remove plat-samsung/.../samsung-time.h Krzysztof Kozlowski
@ 2020-07-29 17:49   ` Tomasz Figa
  2020-07-29 19:02     ` Krzysztof Kozlowski
  0 siblings, 1 reply; 24+ messages in thread
From: Tomasz Figa @ 2020-07-29 17:49 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Chanwoo Choi, Michael Turquette, Stephen Boyd, Wim Van Sebroeck,
	Guenter Roeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, moderated list:SAMSUNG SOC CLOCK DRIVERS,
	linux-stm32, patches, open list:COMMON CLK FRAMEWORK,
	linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

2020年7月29日(水) 18:11 Krzysztof Kozlowski <krzk@kernel.org>:
>
> Remove the arch/arm/plat-samsung/include/plat/samsung-time.h header and
> move the contents to common.h headers in mach-s3c24xx and mach-s3c64xx.
> The definition of declared functions is already in common.c in mach
> directories, so it is logically to put declaration next to them.
>
> This is also one step further towards removal of plat-samsung directory
> and it fixes W=1 build warnings:
>
>     arch/arm/mach-s3c64xx/common.c:174:13: warning:
>         no previous prototype for 'samsung_set_timer_source' [-Wmissing-prototypes]
>       174 | void __init samsung_set_timer_source(unsigned int event, unsigned int source)
>
>     arch/arm/mach-s3c64xx/common.c:180:13: warning:
>         no previous prototype for 'samsung_timer_init' [-Wmissing-prototypes]
>       180 | void __init samsung_timer_init(void)
>
> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> ---
>  arch/arm/mach-s3c24xx/common.h                | 12 +++++++++
>  arch/arm/mach-s3c24xx/mach-amlm5900.c         |  2 --
>  arch/arm/mach-s3c24xx/mach-anubis.c           |  1 -
>  arch/arm/mach-s3c24xx/mach-at2440evb.c        |  1 -
>  arch/arm/mach-s3c24xx/mach-bast.c             |  1 -
>  arch/arm/mach-s3c24xx/mach-gta02.c            |  1 -
>  arch/arm/mach-s3c24xx/mach-h1940.c            |  1 -
>  arch/arm/mach-s3c24xx/mach-jive.c             |  1 -
>  arch/arm/mach-s3c24xx/mach-mini2440.c         |  1 -
>  arch/arm/mach-s3c24xx/mach-n30.c              |  1 -
>  arch/arm/mach-s3c24xx/mach-nexcoder.c         |  1 -
>  arch/arm/mach-s3c24xx/mach-osiris.c           |  1 -
>  arch/arm/mach-s3c24xx/mach-otom.c             |  1 -
>  arch/arm/mach-s3c24xx/mach-qt2410.c           |  1 -
>  arch/arm/mach-s3c24xx/mach-rx1950.c           |  1 -
>  arch/arm/mach-s3c24xx/mach-rx3715.c           |  1 -
>  arch/arm/mach-s3c24xx/mach-smdk2410.c         |  1 -
>  arch/arm/mach-s3c24xx/mach-smdk2413.c         |  1 -
>  arch/arm/mach-s3c24xx/mach-smdk2416.c         |  1 -
>  arch/arm/mach-s3c24xx/mach-smdk2440.c         |  1 -
>  arch/arm/mach-s3c24xx/mach-smdk2443.c         |  1 -
>  arch/arm/mach-s3c24xx/mach-tct_hammer.c       |  1 -
>  arch/arm/mach-s3c24xx/mach-vr1000.c           |  1 -
>  arch/arm/mach-s3c24xx/mach-vstms.c            |  1 -
>  arch/arm/mach-s3c64xx/common.h                | 13 ++++++++++
>  arch/arm/mach-s3c64xx/mach-anw6410.c          |  1 -
>  arch/arm/mach-s3c64xx/mach-crag6410.c         |  1 -
>  arch/arm/mach-s3c64xx/mach-hmt.c              |  1 -
>  arch/arm/mach-s3c64xx/mach-mini6410.c         |  1 -
>  arch/arm/mach-s3c64xx/mach-ncp.c              |  1 -
>  arch/arm/mach-s3c64xx/mach-real6410.c         |  1 -
>  arch/arm/mach-s3c64xx/mach-smartq.c           |  1 -
>  arch/arm/mach-s3c64xx/mach-smartq5.c          |  1 -
>  arch/arm/mach-s3c64xx/mach-smartq7.c          |  1 -
>  arch/arm/mach-s3c64xx/mach-smdk6400.c         |  1 -
>  arch/arm/mach-s3c64xx/mach-smdk6410.c         |  1 -
>  .../plat-samsung/include/plat/samsung-time.h  | 26 -------------------
>  37 files changed, 25 insertions(+), 61 deletions(-)
>  delete mode 100644 arch/arm/plat-samsung/include/plat/samsung-time.h
>

For the s3c64xx bits:

Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com>

I suppose the next step would be renaming those functions to s3c24xx_*
and s3c64xx_* to avoid naming collisions?

Best regards,
Tomasz

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

* Re: [PATCH 3/7] ARM: s3c: Remove plat-samsung/.../samsung-time.h
  2020-07-29 17:49   ` Tomasz Figa
@ 2020-07-29 19:02     ` Krzysztof Kozlowski
  0 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 19:02 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Chanwoo Choi, Michael Turquette, Stephen Boyd, Wim Van Sebroeck,
	Guenter Roeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, moderated list:SAMSUNG SOC CLOCK DRIVERS,
	linux-stm32, patches, open list:COMMON CLK FRAMEWORK,
	linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

On Wed, Jul 29, 2020 at 07:49:02PM +0200, Tomasz Figa wrote:
> 2020年7月29日(水) 18:11 Krzysztof Kozlowski <krzk@kernel.org>:
> >
> > Remove the arch/arm/plat-samsung/include/plat/samsung-time.h header and
> > move the contents to common.h headers in mach-s3c24xx and mach-s3c64xx.
> > The definition of declared functions is already in common.c in mach
> > directories, so it is logically to put declaration next to them.
> >
> > This is also one step further towards removal of plat-samsung directory
> > and it fixes W=1 build warnings:
> >
> >     arch/arm/mach-s3c64xx/common.c:174:13: warning:
> >         no previous prototype for 'samsung_set_timer_source' [-Wmissing-prototypes]
> >       174 | void __init samsung_set_timer_source(unsigned int event, unsigned int source)
> >
> >     arch/arm/mach-s3c64xx/common.c:180:13: warning:
> >         no previous prototype for 'samsung_timer_init' [-Wmissing-prototypes]
> >       180 | void __init samsung_timer_init(void)
> >
> > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> > ---
> >  arch/arm/mach-s3c24xx/common.h                | 12 +++++++++
> >  arch/arm/mach-s3c24xx/mach-amlm5900.c         |  2 --
> >  arch/arm/mach-s3c24xx/mach-anubis.c           |  1 -
> >  arch/arm/mach-s3c24xx/mach-at2440evb.c        |  1 -
> >  arch/arm/mach-s3c24xx/mach-bast.c             |  1 -
> >  arch/arm/mach-s3c24xx/mach-gta02.c            |  1 -
> >  arch/arm/mach-s3c24xx/mach-h1940.c            |  1 -
> >  arch/arm/mach-s3c24xx/mach-jive.c             |  1 -
> >  arch/arm/mach-s3c24xx/mach-mini2440.c         |  1 -
> >  arch/arm/mach-s3c24xx/mach-n30.c              |  1 -
> >  arch/arm/mach-s3c24xx/mach-nexcoder.c         |  1 -
> >  arch/arm/mach-s3c24xx/mach-osiris.c           |  1 -
> >  arch/arm/mach-s3c24xx/mach-otom.c             |  1 -
> >  arch/arm/mach-s3c24xx/mach-qt2410.c           |  1 -
> >  arch/arm/mach-s3c24xx/mach-rx1950.c           |  1 -
> >  arch/arm/mach-s3c24xx/mach-rx3715.c           |  1 -
> >  arch/arm/mach-s3c24xx/mach-smdk2410.c         |  1 -
> >  arch/arm/mach-s3c24xx/mach-smdk2413.c         |  1 -
> >  arch/arm/mach-s3c24xx/mach-smdk2416.c         |  1 -
> >  arch/arm/mach-s3c24xx/mach-smdk2440.c         |  1 -
> >  arch/arm/mach-s3c24xx/mach-smdk2443.c         |  1 -
> >  arch/arm/mach-s3c24xx/mach-tct_hammer.c       |  1 -
> >  arch/arm/mach-s3c24xx/mach-vr1000.c           |  1 -
> >  arch/arm/mach-s3c24xx/mach-vstms.c            |  1 -
> >  arch/arm/mach-s3c64xx/common.h                | 13 ++++++++++
> >  arch/arm/mach-s3c64xx/mach-anw6410.c          |  1 -
> >  arch/arm/mach-s3c64xx/mach-crag6410.c         |  1 -
> >  arch/arm/mach-s3c64xx/mach-hmt.c              |  1 -
> >  arch/arm/mach-s3c64xx/mach-mini6410.c         |  1 -
> >  arch/arm/mach-s3c64xx/mach-ncp.c              |  1 -
> >  arch/arm/mach-s3c64xx/mach-real6410.c         |  1 -
> >  arch/arm/mach-s3c64xx/mach-smartq.c           |  1 -
> >  arch/arm/mach-s3c64xx/mach-smartq5.c          |  1 -
> >  arch/arm/mach-s3c64xx/mach-smartq7.c          |  1 -
> >  arch/arm/mach-s3c64xx/mach-smdk6400.c         |  1 -
> >  arch/arm/mach-s3c64xx/mach-smdk6410.c         |  1 -
> >  .../plat-samsung/include/plat/samsung-time.h  | 26 -------------------
> >  37 files changed, 25 insertions(+), 61 deletions(-)
> >  delete mode 100644 arch/arm/plat-samsung/include/plat/samsung-time.h
> >
> 
> For the s3c64xx bits:
> 
> Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com>
> 
> I suppose the next step would be renaming those functions to s3c24xx_*
> and s3c64xx_* to avoid naming collisions?

That's a good point. I will send a follow up patch. Thanks!

Best regards,
Krzysztof


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

* Re: [PATCH 5/7] ARM: samsung: Kill useless HAVE_S3C2410_WATCHDOG
  2020-07-29 17:36     ` Tomasz Figa
@ 2020-07-29 19:08       ` Krzysztof Kozlowski
  0 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 19:08 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Guenter Roeck, Russell King, Kukjin Kim, Vincent Sanders,
	Simtec Linux Team, Kyungmin Park, Catalin Marinas, Will Deacon,
	Sylwester Nawrocki, Chanwoo Choi, Michael Turquette,
	Stephen Boyd, Wim Van Sebroeck, Arnd Bergmann, Linus Walleij,
	linux-kernel, linux-arm-kernel,
	moderated list:SAMSUNG SOC CLOCK DRIVERS, linux-stm32, patches,
	open list:COMMON CLK FRAMEWORK, linux-watchdog, Sergio Prado,
	Marek Szyprowski, Sylwester Nawrocki, Cedric Roux, Lihua Yao

On Wed, Jul 29, 2020 at 07:36:38PM +0200, Tomasz Figa wrote:
> 2020年7月29日(水) 19:02 Guenter Roeck <linux@roeck-us.net>:
> >
> > On Wed, Jul 29, 2020 at 06:09:40PM +0200, Krzysztof Kozlowski wrote:
> > > A separate Kconfig option HAVE_S3C2410_WATCHDOG for Samsung SoCs does
> > > not have sense, because:
> > > 1. All ARMv7 and ARMv8 Samsung SoCs have watchdog,
> > > 2. All architecture Kconfigs were selecting it (if WATCHDOG framework is
> > >    chosen),
> > > 3. HAVE_S3C2410_WATCHDOG is doing nothing except being a dependency of
> > >    actual Samsung SoC watchdog driver, which is enabled manually by
> > >    specific defconfigs.
> > >
> > > HAVE_S3C2410_WATCHDOG can be safely removed.
> > >
> >
> > That is not really correct. HAVE_S3C2410_WATCHDOG is used to ensure
> > that users can only enable S3C2410_WATCHDOG if the watchdog actually
> > exists in a system. With this change, it can be enabled for all
> > architectures and platforms.
> >
> > NACK.
> >
> > Guenter
> >
> 
> I'd side with Guenter on this. We better not flood users' screens with
> options that are not relevant to their hardware.
> 
> An alternative here could be making CONFIG_S3C2410_WATCHDOG depend on
> a general symbol for Samsung SoC support if there is such, but then,
> are we 100% sure that all the Samsung SoCs would actually have exactly
> this watchdog? If a new one shows up, one would have to bring back
> this HAVE_S3C2410_WATCHDOG symbol.

Ah, good points. Indeed for all of such SoC drivers we usually just
depend on architecture to limit the choices on other architectures.
In this case it would be:
    depends on ARCH_EXYNOS || ARCH_S3C24XX || ARCH_S3C64XX || ARCH_S5PV210 || COMPILE_TEST

I admit it is pretty long, but we already use this pattern. In shorter
version (less ARCH*) for all drivers, in full version also in:
drivers/iio/adc/Kconfig
drivers/gpu/drm/exynos/Kconfig

Have in mind that in general we follow the first approach and only three
drivers have still the HAVE_xxx option (also HAVE_S3C2410_I2C and
HAVE_S3C_RTC).

I can update therefore the "depends" while removing the
HAVE_S3C2410_WATCHDOG option or just keep it.

Best regards,
Krzysztof


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

* Re: [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset
  2020-07-29 17:33   ` Tomasz Figa
@ 2020-07-29 19:15     ` Krzysztof Kozlowski
  2020-07-29 19:25       ` Krzysztof Kozlowski
  2020-07-30 11:34       ` Tomasz Figa
  0 siblings, 2 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 19:15 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Chanwoo Choi, Michael Turquette, Stephen Boyd, Wim Van Sebroeck,
	Guenter Roeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, moderated list:SAMSUNG SOC CLOCK DRIVERS,
	linux-stm32, patches, open list:COMMON CLK FRAMEWORK,
	linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

On Wed, Jul 29, 2020 at 07:33:33PM +0200, Tomasz Figa wrote:
> Hi Krzysztof,
> 
> 2020年7月29日(水) 18:11 Krzysztof Kozlowski <krzk@kernel.org>:
> >
> > Similarly to commit f6361c6b3880 ("ARM: S3C24XX: remove separate restart
> > code"), the platform watchdog reset code can be removed in favor of
> > a generic watchdog driver which already handles reset.
> >
> > This allows removal of a bunch of machine code and fixes also W=1
> > compile warnings:
> >
> >     arch/arm/plat-samsung/watchdog-reset.c:29:6: warning: no previous prototype for 'samsung_wdt_reset' [-Wmissing-prototypes]
> >        29 | void samsung_wdt_reset(void)
> >           |      ^~~~~~~~~~~~~~~~~
> >     arch/arm/plat-samsung/watchdog-reset.c:69:13: warning: no previous prototype for 'samsung_wdt_reset_of_init' [-Wmissing-prototypes]
> >        69 | void __init samsung_wdt_reset_of_init(void)
> >           |             ^~~~~~~~~~~~~~~~~~~~~~~~~
> >     arch/arm/plat-samsung/watchdog-reset.c:89:13: warning: no previous prototype for 'samsung_wdt_reset_init' [-Wmissing-prototypes]
> >        89 | void __init samsung_wdt_reset_init(void __iomem *base)
> >
> > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> > ---
> >  arch/arm/mach-s3c64xx/Kconfig           |  3 +-
> >  arch/arm/mach-s3c64xx/common.c          | 15 +---
> >  arch/arm/mach-s3c64xx/common.h          |  2 -
> >  arch/arm/mach-s3c64xx/mach-anw6410.c    |  1 -
> >  arch/arm/mach-s3c64xx/mach-crag6410.c   |  1 -
> >  arch/arm/mach-s3c64xx/mach-hmt.c        |  1 -
> >  arch/arm/mach-s3c64xx/mach-mini6410.c   |  1 -
> >  arch/arm/mach-s3c64xx/mach-ncp.c        |  1 -
> >  arch/arm/mach-s3c64xx/mach-real6410.c   |  1 -
> >  arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 17 -----
> >  arch/arm/mach-s3c64xx/mach-smartq5.c    |  1 -
> >  arch/arm/mach-s3c64xx/mach-smartq7.c    |  1 -
> >  arch/arm/mach-s3c64xx/mach-smdk6400.c   |  1 -
> >  arch/arm/mach-s3c64xx/mach-smdk6410.c   |  1 -
> >  arch/arm/mach-s3c64xx/watchdog-reset.h  | 16 -----
> >  arch/arm/plat-samsung/Kconfig           |  6 --
> >  arch/arm/plat-samsung/Makefile          |  1 -
> >  arch/arm/plat-samsung/watchdog-reset.c  | 93 -------------------------
> >  18 files changed, 5 insertions(+), 158 deletions(-)
> >  delete mode 100644 arch/arm/mach-s3c64xx/watchdog-reset.h
> >  delete mode 100644 arch/arm/plat-samsung/watchdog-reset.c
> >
> 
> Thanks for the patch! Please see my comments inline.
> 
> > diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
> > index e208c2b48853..f3fcb570edf5 100644
> > --- a/arch/arm/mach-s3c64xx/Kconfig
> > +++ b/arch/arm/mach-s3c64xx/Kconfig
> > @@ -18,9 +18,10 @@ menuconfig ARCH_S3C64XX
> >         select PM_GENERIC_DOMAINS if PM
> >         select S3C_DEV_NAND if ATAGS
> >         select S3C_GPIO_TRACK if ATAGS
> > +       select S3C2410_WATCHDOG
> >         select SAMSUNG_ATAGS if ATAGS
> >         select SAMSUNG_WAKEMASK if PM
> > -       select SAMSUNG_WDT_RESET
> > +       select WATCHDOG
> >         help
> >           Samsung S3C64XX series based systems
> >
> > diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
> > index a655bf0c7802..42e96d196f61 100644
> > --- a/arch/arm/mach-s3c64xx/common.c
> > +++ b/arch/arm/mach-s3c64xx/common.c
> > @@ -50,7 +50,6 @@
> >
> >  #include "common.h"
> >  #include "irq-uart.h"
> > -#include "watchdog-reset.h"
> >
> >  /* External clock frequency */
> >  static unsigned long xtal_f __ro_after_init = 12000000;
> > @@ -232,10 +231,11 @@ void __init s3c64xx_init_irq(u32 vic0_valid, u32 vic1_valid)
> >         /*
> >          * FIXME: there is no better place to put this at the moment
> >          * (s3c64xx_clk_init needs ioremap and must happen before init_time
> > -        * samsung_wdt_reset_init needs clocks)
> > +        * samsung_wdt_reset_init needs clocks).  However
> > +        * samsung_wdt_reset_init() was removed in favor of watchdog driver
> > +        * so this should be revised.
> 
> This leaves the comment referring to an inexistent function.

Yes, I left it as a reference/reason. Although might be quite confusing
now...

> 
> I wonder if this being here is actually a problem at all. It's legacy
> code and probably there isn't much value in reshuffling it further.
> Rather than that, we would probably want to make sure that everything
> migrated to DT and just drop the board files.

Maybe let's remove the FIXME and leave the clock init. Since all these
times no one fixed the FIXME, so now with limited hardware access I do
not expect any movements here.

> 
> >          */
> >         s3c64xx_clk_init(NULL, xtal_f, xusbxti_f, soc_is_s3c6400(), S3C_VA_SYS);
> > -       samsung_wdt_reset_init(S3C_VA_WATCHDOG);
> >
> >         printk(KERN_DEBUG "%s: initialising interrupts\n", __func__);
> >
> > @@ -429,12 +429,3 @@ static int __init s3c64xx_init_irq_eint(void)
> >         return 0;
> >  }
> >  arch_initcall(s3c64xx_init_irq_eint);
> > -
> > -void s3c64xx_restart(enum reboot_mode mode, const char *cmd)
> > -{
> > -       if (mode != REBOOT_SOFT)
> > -               samsung_wdt_reset();
> > -
> > -       /* if all else fails, or mode was for soft, jump to 0 */
> > -       soft_restart(0);
> 
> Does this remove the soft reboot capability? I'm not sure how much of
> a problem that would be, though.

1. No one cared about it in f6361c6b3880 :)
2. Exynos does not have it
3. Does soft_restart really work? It would be worth to keep it if more
   or less it was working.

Best regards,
Krzysztof

> 
> [snip]
> > diff --git a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> > index 1724f5ea5c46..09c4e8742629 100644
> > --- a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> > +++ b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> > @@ -12,7 +12,6 @@
> >  #include <mach/map.h>
> >
> >  #include "common.h"
> > -#include "watchdog-reset.h"
> >
> >  /*
> >   * IO mapping for shared system controller IP.
> > @@ -39,20 +38,6 @@ static void __init s3c64xx_dt_map_io(void)
> >                 panic("SoC is not S3C64xx!");
> >  }
> >
> > -static void __init s3c64xx_dt_init_machine(void)
> > -{
> > -       samsung_wdt_reset_of_init();
> > -}
> > -
> > -static void s3c64xx_dt_restart(enum reboot_mode mode, const char *cmd)
> > -{
> > -       if (mode != REBOOT_SOFT)
> > -               samsung_wdt_reset();
> > -
> > -       /* if all else fails, or mode was for soft, jump to 0 */
> > -       soft_restart(0);
> 
> Ditto.
> 
> Best regards,
> Tomasz

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

* Re: [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset
  2020-07-29 19:15     ` Krzysztof Kozlowski
@ 2020-07-29 19:25       ` Krzysztof Kozlowski
  2020-07-30 11:34       ` Tomasz Figa
  1 sibling, 0 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 19:25 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Chanwoo Choi, Michael Turquette, Stephen Boyd, Wim Van Sebroeck,
	Guenter Roeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, moderated list:SAMSUNG SOC CLOCK DRIVERS,
	linux-stm32, patches, open list:COMMON CLK FRAMEWORK,
	linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

On Wed, Jul 29, 2020 at 09:15:44PM +0200, Krzysztof Kozlowski wrote:
> On Wed, Jul 29, 2020 at 07:33:33PM +0200, Tomasz Figa wrote:
> > Hi Krzysztof,
> > 
> > 2020年7月29日(水) 18:11 Krzysztof Kozlowski <krzk@kernel.org>:
> > >
> > > Similarly to commit f6361c6b3880 ("ARM: S3C24XX: remove separate restart
> > > code"), the platform watchdog reset code can be removed in favor of
> > > a generic watchdog driver which already handles reset.
> > >
> > > This allows removal of a bunch of machine code and fixes also W=1
> > > compile warnings:
> > >
> > >     arch/arm/plat-samsung/watchdog-reset.c:29:6: warning: no previous prototype for 'samsung_wdt_reset' [-Wmissing-prototypes]
> > >        29 | void samsung_wdt_reset(void)
> > >           |      ^~~~~~~~~~~~~~~~~
> > >     arch/arm/plat-samsung/watchdog-reset.c:69:13: warning: no previous prototype for 'samsung_wdt_reset_of_init' [-Wmissing-prototypes]
> > >        69 | void __init samsung_wdt_reset_of_init(void)
> > >           |             ^~~~~~~~~~~~~~~~~~~~~~~~~
> > >     arch/arm/plat-samsung/watchdog-reset.c:89:13: warning: no previous prototype for 'samsung_wdt_reset_init' [-Wmissing-prototypes]
> > >        89 | void __init samsung_wdt_reset_init(void __iomem *base)
> > >
> > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> > > ---
> > >  arch/arm/mach-s3c64xx/Kconfig           |  3 +-
> > >  arch/arm/mach-s3c64xx/common.c          | 15 +---
> > >  arch/arm/mach-s3c64xx/common.h          |  2 -
> > >  arch/arm/mach-s3c64xx/mach-anw6410.c    |  1 -
> > >  arch/arm/mach-s3c64xx/mach-crag6410.c   |  1 -
> > >  arch/arm/mach-s3c64xx/mach-hmt.c        |  1 -
> > >  arch/arm/mach-s3c64xx/mach-mini6410.c   |  1 -
> > >  arch/arm/mach-s3c64xx/mach-ncp.c        |  1 -
> > >  arch/arm/mach-s3c64xx/mach-real6410.c   |  1 -
> > >  arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 17 -----
> > >  arch/arm/mach-s3c64xx/mach-smartq5.c    |  1 -
> > >  arch/arm/mach-s3c64xx/mach-smartq7.c    |  1 -
> > >  arch/arm/mach-s3c64xx/mach-smdk6400.c   |  1 -
> > >  arch/arm/mach-s3c64xx/mach-smdk6410.c   |  1 -
> > >  arch/arm/mach-s3c64xx/watchdog-reset.h  | 16 -----
> > >  arch/arm/plat-samsung/Kconfig           |  6 --
> > >  arch/arm/plat-samsung/Makefile          |  1 -
> > >  arch/arm/plat-samsung/watchdog-reset.c  | 93 -------------------------
> > >  18 files changed, 5 insertions(+), 158 deletions(-)
> > >  delete mode 100644 arch/arm/mach-s3c64xx/watchdog-reset.h
> > >  delete mode 100644 arch/arm/plat-samsung/watchdog-reset.c
> > >
> > 
> > Thanks for the patch! Please see my comments inline.
> > 
> > > diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
> > > index e208c2b48853..f3fcb570edf5 100644
> > > --- a/arch/arm/mach-s3c64xx/Kconfig
> > > +++ b/arch/arm/mach-s3c64xx/Kconfig
> > > @@ -18,9 +18,10 @@ menuconfig ARCH_S3C64XX
> > >         select PM_GENERIC_DOMAINS if PM
> > >         select S3C_DEV_NAND if ATAGS
> > >         select S3C_GPIO_TRACK if ATAGS
> > > +       select S3C2410_WATCHDOG
> > >         select SAMSUNG_ATAGS if ATAGS
> > >         select SAMSUNG_WAKEMASK if PM
> > > -       select SAMSUNG_WDT_RESET
> > > +       select WATCHDOG
> > >         help
> > >           Samsung S3C64XX series based systems
> > >
> > > diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
> > > index a655bf0c7802..42e96d196f61 100644
> > > --- a/arch/arm/mach-s3c64xx/common.c
> > > +++ b/arch/arm/mach-s3c64xx/common.c
> > > @@ -50,7 +50,6 @@
> > >
> > >  #include "common.h"
> > >  #include "irq-uart.h"
> > > -#include "watchdog-reset.h"
> > >
> > >  /* External clock frequency */
> > >  static unsigned long xtal_f __ro_after_init = 12000000;
> > > @@ -232,10 +231,11 @@ void __init s3c64xx_init_irq(u32 vic0_valid, u32 vic1_valid)
> > >         /*
> > >          * FIXME: there is no better place to put this at the moment
> > >          * (s3c64xx_clk_init needs ioremap and must happen before init_time
> > > -        * samsung_wdt_reset_init needs clocks)
> > > +        * samsung_wdt_reset_init needs clocks).  However
> > > +        * samsung_wdt_reset_init() was removed in favor of watchdog driver
> > > +        * so this should be revised.
> > 
> > This leaves the comment referring to an inexistent function.
> 
> Yes, I left it as a reference/reason. Although might be quite confusing
> now...
> 
> > 
> > I wonder if this being here is actually a problem at all. It's legacy
> > code and probably there isn't much value in reshuffling it further.
> > Rather than that, we would probably want to make sure that everything
> > migrated to DT and just drop the board files.
> 
> Maybe let's remove the FIXME and leave the clock init. Since all these
> times no one fixed the FIXME, so now with limited hardware access I do
> not expect any movements here.
> 
> > 
> > >          */
> > >         s3c64xx_clk_init(NULL, xtal_f, xusbxti_f, soc_is_s3c6400(), S3C_VA_SYS);
> > > -       samsung_wdt_reset_init(S3C_VA_WATCHDOG);
> > >
> > >         printk(KERN_DEBUG "%s: initialising interrupts\n", __func__);
> > >
> > > @@ -429,12 +429,3 @@ static int __init s3c64xx_init_irq_eint(void)
> > >         return 0;
> > >  }
> > >  arch_initcall(s3c64xx_init_irq_eint);
> > > -
> > > -void s3c64xx_restart(enum reboot_mode mode, const char *cmd)
> > > -{
> > > -       if (mode != REBOOT_SOFT)
> > > -               samsung_wdt_reset();
> > > -
> > > -       /* if all else fails, or mode was for soft, jump to 0 */
> > > -       soft_restart(0);
> > 
> > Does this remove the soft reboot capability? I'm not sure how much of
> > a problem that would be, though.
> 
> 1. No one cared about it in f6361c6b3880 :)
> 2. Exynos does not have it
> 3. Does soft_restart really work? It would be worth to keep it if more
>    or less it was working.

... and one more reason:
4. Look how much code I removed:
       5 insertions(+), 158 deletions(-)
   Isn't it nice? :)

Best regards,
Krzysztof

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

* Re: [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header
  2020-07-29 16:09 ` [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header Krzysztof Kozlowski
  2020-07-29 17:39   ` Tomasz Figa
@ 2020-07-29 19:42   ` Stephen Boyd
  2020-07-29 20:16     ` Krzysztof Kozlowski
  1 sibling, 1 reply; 24+ messages in thread
From: Stephen Boyd @ 2020-07-29 19:42 UTC (permalink / raw)
  To: Arnd Bergmann, Catalin Marinas, Chanwoo Choi, Guenter Roeck,
	Krzysztof Kozlowski, Kukjin Kim, Kyungmin Park, Linus Walleij,
	Michael Turquette, Russell King, Simtec Linux Team,
	Sylwester Nawrocki, Tomasz Figa, Vincent Sanders, Will Deacon,
	Wim Van Sebroeck, linux-arm-kernel, linux-clk, linux-kernel,
	linux-samsung-soc, linux-stm32, linux-watchdog, patches
  Cc: Sergio Prado, Marek Szyprowski, Sylwester Nawrocki, Cedric Roux,
	Lihua Yao

Quoting Krzysztof Kozlowski (2020-07-29 09:09:36)
> diff --git a/include/linux/clk/samsung.h b/include/linux/clk/samsung.h
> new file mode 100644
> index 000000000000..b6b253c46c22
> --- /dev/null
> +++ b/include/linux/clk/samsung.h
> @@ -0,0 +1,21 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +/*
> + * Copyright (c) 2020 Krzysztof Kozlowski <krzk@kernel.org>
> + */
> +
> +#ifndef __LINUX_CLK_SAMSUNG_H_
> +#define __LINUX_CLK_SAMSUNG_H_
> +
> +#ifdef CONFIG_ARCH_S3C64XX
> +void __init s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f,

Don't use __init in header files. It doesn't do anything.

> +                            unsigned long xusbxti_f, bool s3c6400,
> +                            void __iomem *base);
> +#else
> +static inline void __init s3c64xx_clk_init(struct device_node *np,

Forward declare struct device_node;

> +                                          unsigned long xtal_f,
> +                                          unsigned long xusbxti_f,
> +                                          bool s3c6400,
> +                                          void __iomem *base) { }

Include <linux/compiler.h> (or compiler_types.h) for __iomem define
please.

> +#endif /* CONFIG_ARCH_S3C64XX */
> +
> +#endif /* __LINUX_CLK_SAMSUNG_H_ */

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

* Re: [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits
  2020-07-29 16:09 [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Krzysztof Kozlowski
                   ` (6 preceding siblings ...)
  2020-07-29 16:09 ` [PATCH 7/7] ARM: s3c24xx: Fix missing system reset Krzysztof Kozlowski
@ 2020-07-29 20:01 ` Arnd Bergmann
  2020-07-29 20:15   ` Krzysztof Kozlowski
  7 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2020-07-29 20:01 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Tomasz Figa, Chanwoo Choi, Michael Turquette, Stephen Boyd,
	Wim Van Sebroeck, Guenter Roeck, Linus Walleij, linux-kernel,
	Linux ARM, moderated list:ARM/SAMSUNG EXYNOS ARM ARCHITECTURES,
	linux-stm32, patches, linux-clk, LINUXWATCHDOG, Sergio Prado,
	Marek Szyprowski, Sylwester Nawrocki, Cedric Roux, Lihua Yao

On Wed, Jul 29, 2020 at 6:11 PM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> Hi,
>
> I tried to cleanup few warnings in S3C machine code which lead to
> finding some bigger issues.
>
> Patches touch mostly the ARM Samsung machine code except patch #1 (clk)
> and #5 (watchdog).  They are independent from each other, except
> some conflicting lines.
>
> The last three patches would welcome some testing... as I did not
> perform such (lack of S3C hardware).

I have an older series that I mean to repost. Please have a look at
the s3c-multiplatform branch of
git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground.git

The patches in there need to be rebased on a newer kernel, which
should be easy, but they will conflict with your work. If there is
anything in there you can easily pick up into your series, please
do so.

       Arnd

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

* Re: [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits
  2020-07-29 20:01 ` [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Arnd Bergmann
@ 2020-07-29 20:15   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 20:15 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Tomasz Figa, Chanwoo Choi, Michael Turquette, Stephen Boyd,
	Wim Van Sebroeck, Guenter Roeck, Linus Walleij, linux-kernel,
	Linux ARM, moderated list:ARM/SAMSUNG EXYNOS ARM ARCHITECTURES,
	linux-stm32, patches, linux-clk, LINUXWATCHDOG, Sergio Prado,
	Marek Szyprowski, Sylwester Nawrocki, Cedric Roux, Lihua Yao

On Wed, Jul 29, 2020 at 10:01:26PM +0200, Arnd Bergmann wrote:
> On Wed, Jul 29, 2020 at 6:11 PM Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >
> > Hi,
> >
> > I tried to cleanup few warnings in S3C machine code which lead to
> > finding some bigger issues.
> >
> > Patches touch mostly the ARM Samsung machine code except patch #1 (clk)
> > and #5 (watchdog).  They are independent from each other, except
> > some conflicting lines.
> >
> > The last three patches would welcome some testing... as I did not
> > perform such (lack of S3C hardware).
> 
> I have an older series that I mean to repost. Please have a look at
> the s3c-multiplatform branch of
> git://git.kernel.org:/pub/scm/linux/kernel/git/arnd/playground.git
> 
> The patches in there need to be rebased on a newer kernel, which
> should be easy, but they will conflict with your work. If there is
> anything in there you can easily pick up into your series, please
> do so.

Indeed now I remember you were doing it some time ago but a follow up
never happened.  I can take a look and either cherry pick or even take
over the series.

Best regards,
Krzysztof


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

* Re: [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header
  2020-07-29 19:42   ` Stephen Boyd
@ 2020-07-29 20:16     ` Krzysztof Kozlowski
  0 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-29 20:16 UTC (permalink / raw)
  To: Stephen Boyd
  Cc: Arnd Bergmann, Catalin Marinas, Chanwoo Choi, Guenter Roeck,
	Kukjin Kim, Kyungmin Park, Linus Walleij, Michael Turquette,
	Russell King, Simtec Linux Team, Sylwester Nawrocki, Tomasz Figa,
	Vincent Sanders, Will Deacon, Wim Van Sebroeck, linux-arm-kernel,
	linux-clk, linux-kernel, linux-samsung-soc, linux-stm32,
	linux-watchdog, patches, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

On Wed, Jul 29, 2020 at 12:42:43PM -0700, Stephen Boyd wrote:
> Quoting Krzysztof Kozlowski (2020-07-29 09:09:36)
> > diff --git a/include/linux/clk/samsung.h b/include/linux/clk/samsung.h
> > new file mode 100644
> > index 000000000000..b6b253c46c22
> > --- /dev/null
> > +++ b/include/linux/clk/samsung.h
> > @@ -0,0 +1,21 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +/*
> > + * Copyright (c) 2020 Krzysztof Kozlowski <krzk@kernel.org>
> > + */
> > +
> > +#ifndef __LINUX_CLK_SAMSUNG_H_
> > +#define __LINUX_CLK_SAMSUNG_H_
> > +
> > +#ifdef CONFIG_ARCH_S3C64XX
> > +void __init s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f,
> 
> Don't use __init in header files. It doesn't do anything.
> 
> > +                            unsigned long xusbxti_f, bool s3c6400,
> > +                            void __iomem *base);
> > +#else
> > +static inline void __init s3c64xx_clk_init(struct device_node *np,
> 
> Forward declare struct device_node;
> 
> > +                                          unsigned long xtal_f,
> > +                                          unsigned long xusbxti_f,
> > +                                          bool s3c6400,
> > +                                          void __iomem *base) { }
> 
> Include <linux/compiler.h> (or compiler_types.h) for __iomem define
> please.

Thanks for the feedback. I'll send v2.

Best regards,
Krzysztof


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

* Re: [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset
  2020-07-29 19:15     ` Krzysztof Kozlowski
  2020-07-29 19:25       ` Krzysztof Kozlowski
@ 2020-07-30 11:34       ` Tomasz Figa
  2020-07-30 11:45         ` Krzysztof Kozlowski
  1 sibling, 1 reply; 24+ messages in thread
From: Tomasz Figa @ 2020-07-30 11:34 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Chanwoo Choi, Michael Turquette, Stephen Boyd, Wim Van Sebroeck,
	Guenter Roeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, moderated list:SAMSUNG SOC CLOCK DRIVERS,
	linux-stm32, patches, open list:COMMON CLK FRAMEWORK,
	linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

2020年7月29日(水) 21:15 Krzysztof Kozlowski <krzk@kernel.org>:
>
> On Wed, Jul 29, 2020 at 07:33:33PM +0200, Tomasz Figa wrote:
> > Hi Krzysztof,
> >
> > 2020年7月29日(水) 18:11 Krzysztof Kozlowski <krzk@kernel.org>:
> > >
> > > Similarly to commit f6361c6b3880 ("ARM: S3C24XX: remove separate restart
> > > code"), the platform watchdog reset code can be removed in favor of
> > > a generic watchdog driver which already handles reset.
> > >
> > > This allows removal of a bunch of machine code and fixes also W=1
> > > compile warnings:
> > >
> > >     arch/arm/plat-samsung/watchdog-reset.c:29:6: warning: no previous prototype for 'samsung_wdt_reset' [-Wmissing-prototypes]
> > >        29 | void samsung_wdt_reset(void)
> > >           |      ^~~~~~~~~~~~~~~~~
> > >     arch/arm/plat-samsung/watchdog-reset.c:69:13: warning: no previous prototype for 'samsung_wdt_reset_of_init' [-Wmissing-prototypes]
> > >        69 | void __init samsung_wdt_reset_of_init(void)
> > >           |             ^~~~~~~~~~~~~~~~~~~~~~~~~
> > >     arch/arm/plat-samsung/watchdog-reset.c:89:13: warning: no previous prototype for 'samsung_wdt_reset_init' [-Wmissing-prototypes]
> > >        89 | void __init samsung_wdt_reset_init(void __iomem *base)
> > >
> > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> > > ---
> > >  arch/arm/mach-s3c64xx/Kconfig           |  3 +-
> > >  arch/arm/mach-s3c64xx/common.c          | 15 +---
> > >  arch/arm/mach-s3c64xx/common.h          |  2 -
> > >  arch/arm/mach-s3c64xx/mach-anw6410.c    |  1 -
> > >  arch/arm/mach-s3c64xx/mach-crag6410.c   |  1 -
> > >  arch/arm/mach-s3c64xx/mach-hmt.c        |  1 -
> > >  arch/arm/mach-s3c64xx/mach-mini6410.c   |  1 -
> > >  arch/arm/mach-s3c64xx/mach-ncp.c        |  1 -
> > >  arch/arm/mach-s3c64xx/mach-real6410.c   |  1 -
> > >  arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 17 -----
> > >  arch/arm/mach-s3c64xx/mach-smartq5.c    |  1 -
> > >  arch/arm/mach-s3c64xx/mach-smartq7.c    |  1 -
> > >  arch/arm/mach-s3c64xx/mach-smdk6400.c   |  1 -
> > >  arch/arm/mach-s3c64xx/mach-smdk6410.c   |  1 -
> > >  arch/arm/mach-s3c64xx/watchdog-reset.h  | 16 -----
> > >  arch/arm/plat-samsung/Kconfig           |  6 --
> > >  arch/arm/plat-samsung/Makefile          |  1 -
> > >  arch/arm/plat-samsung/watchdog-reset.c  | 93 -------------------------
> > >  18 files changed, 5 insertions(+), 158 deletions(-)
> > >  delete mode 100644 arch/arm/mach-s3c64xx/watchdog-reset.h
> > >  delete mode 100644 arch/arm/plat-samsung/watchdog-reset.c
> > >
> >
> > Thanks for the patch! Please see my comments inline.
> >
> > > diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
> > > index e208c2b48853..f3fcb570edf5 100644
> > > --- a/arch/arm/mach-s3c64xx/Kconfig
> > > +++ b/arch/arm/mach-s3c64xx/Kconfig
> > > @@ -18,9 +18,10 @@ menuconfig ARCH_S3C64XX
> > >         select PM_GENERIC_DOMAINS if PM
> > >         select S3C_DEV_NAND if ATAGS
> > >         select S3C_GPIO_TRACK if ATAGS
> > > +       select S3C2410_WATCHDOG
> > >         select SAMSUNG_ATAGS if ATAGS
> > >         select SAMSUNG_WAKEMASK if PM
> > > -       select SAMSUNG_WDT_RESET
> > > +       select WATCHDOG
> > >         help
> > >           Samsung S3C64XX series based systems
> > >
> > > diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
> > > index a655bf0c7802..42e96d196f61 100644
> > > --- a/arch/arm/mach-s3c64xx/common.c
> > > +++ b/arch/arm/mach-s3c64xx/common.c
> > > @@ -50,7 +50,6 @@
> > >
> > >  #include "common.h"
> > >  #include "irq-uart.h"
> > > -#include "watchdog-reset.h"
> > >
> > >  /* External clock frequency */
> > >  static unsigned long xtal_f __ro_after_init = 12000000;
> > > @@ -232,10 +231,11 @@ void __init s3c64xx_init_irq(u32 vic0_valid, u32 vic1_valid)
> > >         /*
> > >          * FIXME: there is no better place to put this at the moment
> > >          * (s3c64xx_clk_init needs ioremap and must happen before init_time
> > > -        * samsung_wdt_reset_init needs clocks)
> > > +        * samsung_wdt_reset_init needs clocks).  However
> > > +        * samsung_wdt_reset_init() was removed in favor of watchdog driver
> > > +        * so this should be revised.
> >
> > This leaves the comment referring to an inexistent function.
>
> Yes, I left it as a reference/reason. Although might be quite confusing
> now...
>
> >
> > I wonder if this being here is actually a problem at all. It's legacy
> > code and probably there isn't much value in reshuffling it further.
> > Rather than that, we would probably want to make sure that everything
> > migrated to DT and just drop the board files.
>
> Maybe let's remove the FIXME and leave the clock init. Since all these
> times no one fixed the FIXME, so now with limited hardware access I do
> not expect any movements here.
>

I think that would be fairly uncontroversial at this point.

> >
> > >          */
> > >         s3c64xx_clk_init(NULL, xtal_f, xusbxti_f, soc_is_s3c6400(), S3C_VA_SYS);
> > > -       samsung_wdt_reset_init(S3C_VA_WATCHDOG);
> > >
> > >         printk(KERN_DEBUG "%s: initialising interrupts\n", __func__);
> > >
> > > @@ -429,12 +429,3 @@ static int __init s3c64xx_init_irq_eint(void)
> > >         return 0;
> > >  }
> > >  arch_initcall(s3c64xx_init_irq_eint);
> > > -
> > > -void s3c64xx_restart(enum reboot_mode mode, const char *cmd)
> > > -{
> > > -       if (mode != REBOOT_SOFT)
> > > -               samsung_wdt_reset();
> > > -
> > > -       /* if all else fails, or mode was for soft, jump to 0 */
> > > -       soft_restart(0);
> >
> > Does this remove the soft reboot capability? I'm not sure how much of
> > a problem that would be, though.
>
> 1. No one cared about it in f6361c6b3880 :)

That was a different SoC family, though.

> 2. Exynos does not have it
> 3. Does soft_restart really work? It would be worth to keep it if more
>    or less it was working.

Anyway, I guess there is no way to know other than just removing it.
It can be always brought back if it turns out that someone needs it.
Please just mention that in the commit message.

With that addressed:

Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com>

>
> Best regards,
> Krzysztof
>
> >
> > [snip]
> > > diff --git a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> > > index 1724f5ea5c46..09c4e8742629 100644
> > > --- a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> > > +++ b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
> > > @@ -12,7 +12,6 @@
> > >  #include <mach/map.h>
> > >
> > >  #include "common.h"
> > > -#include "watchdog-reset.h"
> > >
> > >  /*
> > >   * IO mapping for shared system controller IP.
> > > @@ -39,20 +38,6 @@ static void __init s3c64xx_dt_map_io(void)
> > >                 panic("SoC is not S3C64xx!");
> > >  }
> > >
> > > -static void __init s3c64xx_dt_init_machine(void)
> > > -{
> > > -       samsung_wdt_reset_of_init();
> > > -}
> > > -
> > > -static void s3c64xx_dt_restart(enum reboot_mode mode, const char *cmd)
> > > -{
> > > -       if (mode != REBOOT_SOFT)
> > > -               samsung_wdt_reset();
> > > -
> > > -       /* if all else fails, or mode was for soft, jump to 0 */
> > > -       soft_restart(0);
> >
> > Ditto.
> >
> > Best regards,
> > Tomasz

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

* Re: [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset
  2020-07-30 11:34       ` Tomasz Figa
@ 2020-07-30 11:45         ` Krzysztof Kozlowski
  0 siblings, 0 replies; 24+ messages in thread
From: Krzysztof Kozlowski @ 2020-07-30 11:45 UTC (permalink / raw)
  To: Tomasz Figa
  Cc: Russell King, Kukjin Kim, Vincent Sanders, Simtec Linux Team,
	Kyungmin Park, Catalin Marinas, Will Deacon, Sylwester Nawrocki,
	Chanwoo Choi, Michael Turquette, Stephen Boyd, Wim Van Sebroeck,
	Guenter Roeck, Arnd Bergmann, Linus Walleij, linux-kernel,
	linux-arm-kernel, moderated list:SAMSUNG SOC CLOCK DRIVERS,
	linux-stm32, patches, open list:COMMON CLK FRAMEWORK,
	linux-watchdog, Sergio Prado, Marek Szyprowski,
	Sylwester Nawrocki, Cedric Roux, Lihua Yao

On Thu, Jul 30, 2020 at 01:34:38PM +0200, Tomasz Figa wrote:
> 2020年7月29日(水) 21:15 Krzysztof Kozlowski <krzk@kernel.org>:
> >
> > On Wed, Jul 29, 2020 at 07:33:33PM +0200, Tomasz Figa wrote:
> > > Hi Krzysztof,
> > >
> > > 2020年7月29日(水) 18:11 Krzysztof Kozlowski <krzk@kernel.org>:
> > > >
> > > > Similarly to commit f6361c6b3880 ("ARM: S3C24XX: remove separate restart
> > > > code"), the platform watchdog reset code can be removed in favor of
> > > > a generic watchdog driver which already handles reset.
> > > >
> > > > This allows removal of a bunch of machine code and fixes also W=1
> > > > compile warnings:
> > > >
> > > >     arch/arm/plat-samsung/watchdog-reset.c:29:6: warning: no previous prototype for 'samsung_wdt_reset' [-Wmissing-prototypes]
> > > >        29 | void samsung_wdt_reset(void)
> > > >           |      ^~~~~~~~~~~~~~~~~
> > > >     arch/arm/plat-samsung/watchdog-reset.c:69:13: warning: no previous prototype for 'samsung_wdt_reset_of_init' [-Wmissing-prototypes]
> > > >        69 | void __init samsung_wdt_reset_of_init(void)
> > > >           |             ^~~~~~~~~~~~~~~~~~~~~~~~~
> > > >     arch/arm/plat-samsung/watchdog-reset.c:89:13: warning: no previous prototype for 'samsung_wdt_reset_init' [-Wmissing-prototypes]
> > > >        89 | void __init samsung_wdt_reset_init(void __iomem *base)
> > > >
> > > > Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
> > > > ---
> > > >  arch/arm/mach-s3c64xx/Kconfig           |  3 +-
> > > >  arch/arm/mach-s3c64xx/common.c          | 15 +---
> > > >  arch/arm/mach-s3c64xx/common.h          |  2 -
> > > >  arch/arm/mach-s3c64xx/mach-anw6410.c    |  1 -
> > > >  arch/arm/mach-s3c64xx/mach-crag6410.c   |  1 -
> > > >  arch/arm/mach-s3c64xx/mach-hmt.c        |  1 -
> > > >  arch/arm/mach-s3c64xx/mach-mini6410.c   |  1 -
> > > >  arch/arm/mach-s3c64xx/mach-ncp.c        |  1 -
> > > >  arch/arm/mach-s3c64xx/mach-real6410.c   |  1 -
> > > >  arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c | 17 -----
> > > >  arch/arm/mach-s3c64xx/mach-smartq5.c    |  1 -
> > > >  arch/arm/mach-s3c64xx/mach-smartq7.c    |  1 -
> > > >  arch/arm/mach-s3c64xx/mach-smdk6400.c   |  1 -
> > > >  arch/arm/mach-s3c64xx/mach-smdk6410.c   |  1 -
> > > >  arch/arm/mach-s3c64xx/watchdog-reset.h  | 16 -----
> > > >  arch/arm/plat-samsung/Kconfig           |  6 --
> > > >  arch/arm/plat-samsung/Makefile          |  1 -
> > > >  arch/arm/plat-samsung/watchdog-reset.c  | 93 -------------------------
> > > >  18 files changed, 5 insertions(+), 158 deletions(-)
> > > >  delete mode 100644 arch/arm/mach-s3c64xx/watchdog-reset.h
> > > >  delete mode 100644 arch/arm/plat-samsung/watchdog-reset.c
> > > >
> > >
> > > Thanks for the patch! Please see my comments inline.
> > >
> > > > diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
> > > > index e208c2b48853..f3fcb570edf5 100644
> > > > --- a/arch/arm/mach-s3c64xx/Kconfig
> > > > +++ b/arch/arm/mach-s3c64xx/Kconfig
> > > > @@ -18,9 +18,10 @@ menuconfig ARCH_S3C64XX
> > > >         select PM_GENERIC_DOMAINS if PM
> > > >         select S3C_DEV_NAND if ATAGS
> > > >         select S3C_GPIO_TRACK if ATAGS
> > > > +       select S3C2410_WATCHDOG
> > > >         select SAMSUNG_ATAGS if ATAGS
> > > >         select SAMSUNG_WAKEMASK if PM
> > > > -       select SAMSUNG_WDT_RESET
> > > > +       select WATCHDOG
> > > >         help
> > > >           Samsung S3C64XX series based systems
> > > >
> > > > diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
> > > > index a655bf0c7802..42e96d196f61 100644
> > > > --- a/arch/arm/mach-s3c64xx/common.c
> > > > +++ b/arch/arm/mach-s3c64xx/common.c
> > > > @@ -50,7 +50,6 @@
> > > >
> > > >  #include "common.h"
> > > >  #include "irq-uart.h"
> > > > -#include "watchdog-reset.h"
> > > >
> > > >  /* External clock frequency */
> > > >  static unsigned long xtal_f __ro_after_init = 12000000;
> > > > @@ -232,10 +231,11 @@ void __init s3c64xx_init_irq(u32 vic0_valid, u32 vic1_valid)
> > > >         /*
> > > >          * FIXME: there is no better place to put this at the moment
> > > >          * (s3c64xx_clk_init needs ioremap and must happen before init_time
> > > > -        * samsung_wdt_reset_init needs clocks)
> > > > +        * samsung_wdt_reset_init needs clocks).  However
> > > > +        * samsung_wdt_reset_init() was removed in favor of watchdog driver
> > > > +        * so this should be revised.
> > >
> > > This leaves the comment referring to an inexistent function.
> >
> > Yes, I left it as a reference/reason. Although might be quite confusing
> > now...
> >
> > >
> > > I wonder if this being here is actually a problem at all. It's legacy
> > > code and probably there isn't much value in reshuffling it further.
> > > Rather than that, we would probably want to make sure that everything
> > > migrated to DT and just drop the board files.
> >
> > Maybe let's remove the FIXME and leave the clock init. Since all these
> > times no one fixed the FIXME, so now with limited hardware access I do
> > not expect any movements here.
> >
> 
> I think that would be fairly uncontroversial at this point.
> 
> > >
> > > >          */
> > > >         s3c64xx_clk_init(NULL, xtal_f, xusbxti_f, soc_is_s3c6400(), S3C_VA_SYS);
> > > > -       samsung_wdt_reset_init(S3C_VA_WATCHDOG);
> > > >
> > > >         printk(KERN_DEBUG "%s: initialising interrupts\n", __func__);
> > > >
> > > > @@ -429,12 +429,3 @@ static int __init s3c64xx_init_irq_eint(void)
> > > >         return 0;
> > > >  }
> > > >  arch_initcall(s3c64xx_init_irq_eint);
> > > > -
> > > > -void s3c64xx_restart(enum reboot_mode mode, const char *cmd)
> > > > -{
> > > > -       if (mode != REBOOT_SOFT)
> > > > -               samsung_wdt_reset();
> > > > -
> > > > -       /* if all else fails, or mode was for soft, jump to 0 */
> > > > -       soft_restart(0);
> > >
> > > Does this remove the soft reboot capability? I'm not sure how much of
> > > a problem that would be, though.
> >
> > 1. No one cared about it in f6361c6b3880 :)
> 
> That was a different SoC family, though.
> 
> > 2. Exynos does not have it
> > 3. Does soft_restart really work? It would be worth to keep it if more
> >    or less it was working.
> 
> Anyway, I guess there is no way to know other than just removing it.
> It can be always brought back if it turns out that someone needs it.
> Please just mention that in the commit message.
> 
> With that addressed:
> 
> Reviewed-by: Tomasz Figa <tomasz.figa@gmail.com>

Sure, I'll do it. Thanks for review.

Best regards,
Krzysztof

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

end of thread, other threads:[~2020-07-30 11:45 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-29 16:09 [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Krzysztof Kozlowski
2020-07-29 16:09 ` [PATCH 1/7] clk: samsung: s3c64xx: Declare s3c64xx_clk_init() in shared header Krzysztof Kozlowski
2020-07-29 17:39   ` Tomasz Figa
2020-07-29 19:42   ` Stephen Boyd
2020-07-29 20:16     ` Krzysztof Kozlowski
2020-07-29 16:09 ` [PATCH 2/7] ARM: s3c64xx: Include header to fix -Wmissing-prototypes Krzysztof Kozlowski
2020-07-29 17:46   ` Tomasz Figa
2020-07-29 16:09 ` [PATCH 3/7] ARM: s3c: Remove plat-samsung/.../samsung-time.h Krzysztof Kozlowski
2020-07-29 17:49   ` Tomasz Figa
2020-07-29 19:02     ` Krzysztof Kozlowski
2020-07-29 16:09 ` [PATCH 4/7] ARM: samsung: Fix language typo Krzysztof Kozlowski
2020-07-29 16:09 ` [PATCH 5/7] ARM: samsung: Kill useless HAVE_S3C2410_WATCHDOG Krzysztof Kozlowski
2020-07-29 17:02   ` Guenter Roeck
2020-07-29 17:36     ` Tomasz Figa
2020-07-29 19:08       ` Krzysztof Kozlowski
2020-07-29 16:09 ` [PATCH 6/7] ARM: s3c64xx: Switch to generic watchdog driver reset Krzysztof Kozlowski
2020-07-29 17:33   ` Tomasz Figa
2020-07-29 19:15     ` Krzysztof Kozlowski
2020-07-29 19:25       ` Krzysztof Kozlowski
2020-07-30 11:34       ` Tomasz Figa
2020-07-30 11:45         ` Krzysztof Kozlowski
2020-07-29 16:09 ` [PATCH 7/7] ARM: s3c24xx: Fix missing system reset Krzysztof Kozlowski
2020-07-29 20:01 ` [PATCH 0/7] ARM: samsung: Cleanup of various S3C bits Arnd Bergmann
2020-07-29 20:15   ` Krzysztof Kozlowski

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