All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/2] Handle reboot for Exynos SoC via restart_handler
@ 2014-11-18 10:47 ` Pankaj Dubey
  0 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-18 10:47 UTC (permalink / raw)
  To: linux-arm-kernel, linux-samsung-soc
  Cc: kgene.kim, tomasz.figa, linux, thomas.ab, linux, Pankaj Dubey

This patch removes restart hook from machine_desc of Exynos, and moves
respective code into restart_notifiers.
Exynos5440 handles reboot via clock register so let's register a
restart_handler in Exynos5440 clock driver.
For rest Exynos SoC, reboot is handled via PMU SWRESET register so
let's register a restart_handler in PMU driver for handling this.

This patch is inspired and dependent on following patch series[1] from
Geunter Roeck.

[1]: kernel: Add support for kernel restart handler call chain
https://lkml.org/lkml/2014/8/19/652

I have tested reboot functionality on Exynos3250 based board, on
kgene/for-next as well as linux-next's next-20141114 tag.

Patch v3 and related discussion can be found here
http://www.spinics.net/lists/linux-samsung-soc/msg37600.html

Changes since v4:
  - Addressed review comments from Geunter Roeck.
  - Added Geunter Roeck's Acked-by tag.

Changes since v3:
  - As v2 is causing conflict after recent changes in kgene/for-next,
    rebased on top of kgene/for-next dated 2014-11-13.
  - Removed dependency patch list from cover-letter as all dependencies 
    are merged into kgene/for-next.

Changes since v2:
  - Used register_restart_handler instead of register_reboot_notifier.
  - Updated notifier names and commit message accordingly.

Changes since v1:
  - Addressed review comments from Tomasz Figa. Removed usage of 
    local variables where ever unnecessary.
  - Make reg_base as global in clk-exynos5440.c file, to avoid 
    iomapping it again in reboot_notifier handler.


Pankaj Dubey (2):
  clk: samsung: exynos5440: move restart code into clock driver
  ARM: EXYNOS: PMU: move restart code into pmu driver

 arch/arm/mach-exynos/common.h        |    1 -
 arch/arm/mach-exynos/exynos.c        |   23 -----------------------
 arch/arm/mach-exynos/pmu.c           |   23 +++++++++++++++++++++++
 drivers/clk/samsung/clk-exynos5440.c |   29 ++++++++++++++++++++++++++++-
 4 files changed, 51 insertions(+), 25 deletions(-)

-- 
1.7.9.5

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

* [PATCH v5 0/2] Handle reboot for Exynos SoC via restart_handler
@ 2014-11-18 10:47 ` Pankaj Dubey
  0 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-18 10:47 UTC (permalink / raw)
  To: linux-arm-kernel

This patch removes restart hook from machine_desc of Exynos, and moves
respective code into restart_notifiers.
Exynos5440 handles reboot via clock register so let's register a
restart_handler in Exynos5440 clock driver.
For rest Exynos SoC, reboot is handled via PMU SWRESET register so
let's register a restart_handler in PMU driver for handling this.

This patch is inspired and dependent on following patch series[1] from
Geunter Roeck.

[1]: kernel: Add support for kernel restart handler call chain
https://lkml.org/lkml/2014/8/19/652

I have tested reboot functionality on Exynos3250 based board, on
kgene/for-next as well as linux-next's next-20141114 tag.

Patch v3 and related discussion can be found here
http://www.spinics.net/lists/linux-samsung-soc/msg37600.html

Changes since v4:
  - Addressed review comments from Geunter Roeck.
  - Added Geunter Roeck's Acked-by tag.

Changes since v3:
  - As v2 is causing conflict after recent changes in kgene/for-next,
    rebased on top of kgene/for-next dated 2014-11-13.
  - Removed dependency patch list from cover-letter as all dependencies 
    are merged into kgene/for-next.

Changes since v2:
  - Used register_restart_handler instead of register_reboot_notifier.
  - Updated notifier names and commit message accordingly.

Changes since v1:
  - Addressed review comments from Tomasz Figa. Removed usage of 
    local variables where ever unnecessary.
  - Make reg_base as global in clk-exynos5440.c file, to avoid 
    iomapping it again in reboot_notifier handler.


Pankaj Dubey (2):
  clk: samsung: exynos5440: move restart code into clock driver
  ARM: EXYNOS: PMU: move restart code into pmu driver

 arch/arm/mach-exynos/common.h        |    1 -
 arch/arm/mach-exynos/exynos.c        |   23 -----------------------
 arch/arm/mach-exynos/pmu.c           |   23 +++++++++++++++++++++++
 drivers/clk/samsung/clk-exynos5440.c |   29 ++++++++++++++++++++++++++++-
 4 files changed, 51 insertions(+), 25 deletions(-)

-- 
1.7.9.5

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

* [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
  2014-11-18 10:47 ` Pankaj Dubey
@ 2014-11-18 10:47   ` Pankaj Dubey
  -1 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-18 10:47 UTC (permalink / raw)
  To: linux-arm-kernel, linux-samsung-soc
  Cc: kgene.kim, tomasz.figa, linux, thomas.ab, linux, Pankaj Dubey,
	Sylwester Nawrocki

Let's register restart handler for Exynos5440 from it's clock driver
for restart functionality. So that we can cleanup restart hooks from
machine specific file.

CC: Sylwester Nawrocki <s.nawrocki@samsung.com>
CC: Tomasz Figa <tomasz.figa@gmail.com>
Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
---
 arch/arm/mach-exynos/exynos.c        |   19 +------------------
 drivers/clk/samsung/clk-exynos5440.c |   29 ++++++++++++++++++++++++++++-
 2 files changed, 29 insertions(+), 19 deletions(-)

diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 8f638ad..8f995b7 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -89,24 +89,7 @@ static struct map_desc exynos5_iodesc[] __initdata = {
 
 static void exynos_restart(enum reboot_mode mode, const char *cmd)
 {
-	struct device_node *np;
-	u32 val = 0x1;
-	void __iomem *addr = pmu_base_addr + EXYNOS_SWRESET;
-
-	if (of_machine_is_compatible("samsung,exynos5440")) {
-		u32 status;
-		np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock");
-
-		addr = of_iomap(np, 0) + 0xbc;
-		status = __raw_readl(addr);
-
-		addr = of_iomap(np, 0) + 0xcc;
-		val = __raw_readl(addr);
-
-		val = (val & 0xffff0000) | (status & 0xffff);
-	}
-
-	__raw_writel(val, addr);
+	__raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
 }
 
 static struct platform_device exynos_cpuidle = {
diff --git a/drivers/clk/samsung/clk-exynos5440.c b/drivers/clk/samsung/clk-exynos5440.c
index 00d1d00..979e813 100644
--- a/drivers/clk/samsung/clk-exynos5440.c
+++ b/drivers/clk/samsung/clk-exynos5440.c
@@ -15,6 +15,8 @@
 #include <linux/clk-provider.h>
 #include <linux/of.h>
 #include <linux/of_address.h>
+#include <linux/notifier.h>
+#include <linux/reboot.h>
 
 #include "clk.h"
 #include "clk-pll.h"
@@ -23,6 +25,8 @@
 #define CPU_CLK_STATUS		0xfc
 #define MISC_DOUT1		0x558
 
+static void __iomem *reg_base;
+
 /* parent clock name list */
 PNAME(mout_armclk_p)	= { "cplla", "cpllb" };
 PNAME(mout_spi_p)	= { "div125", "div200" };
@@ -89,10 +93,30 @@ static const struct of_device_id ext_clk_match[] __initconst = {
 	{},
 };
 
+static int exynos5440_clk_restart_notify(struct notifier_block *this,
+		unsigned long code, void *unused)
+{
+	u32 val, status;
+
+	status = readl_relaxed(reg_base + 0xbc);
+	val = readl_relaxed(reg_base + 0xcc);
+	val = (val & 0xffff0000) | (status & 0xffff);
+	writel_relaxed(val, reg_base + 0xcc);
+
+	return NOTIFY_DONE;
+}
+
+/*
+ * Exynos5440 Clock restart notifier, handles restart functionality
+ */
+static struct notifier_block exynos5440_clk_restart_handler = {
+	.notifier_call = exynos5440_clk_restart_notify,
+	.priority = 128,
+};
+
 /* register exynos5440 clocks */
 static void __init exynos5440_clk_init(struct device_node *np)
 {
-	void __iomem *reg_base;
 	struct samsung_clk_provider *ctx;
 
 	reg_base = of_iomap(np, 0);
@@ -125,6 +149,9 @@ static void __init exynos5440_clk_init(struct device_node *np)
 
 	samsung_clk_of_add_provider(np, ctx);
 
+	if (register_restart_handler(&exynos5440_clk_restart_handler))
+		pr_warn("exynos5440 clock can't register restart handler\n");
+
 	pr_info("Exynos5440: arm_clk = %ldHz\n", _get_rate("arm_clk"));
 	pr_info("exynos5440 clock initialization complete\n");
 }
-- 
1.7.9.5

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

* [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
@ 2014-11-18 10:47   ` Pankaj Dubey
  0 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-18 10:47 UTC (permalink / raw)
  To: linux-arm-kernel

Let's register restart handler for Exynos5440 from it's clock driver
for restart functionality. So that we can cleanup restart hooks from
machine specific file.

CC: Sylwester Nawrocki <s.nawrocki@samsung.com>
CC: Tomasz Figa <tomasz.figa@gmail.com>
Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
---
 arch/arm/mach-exynos/exynos.c        |   19 +------------------
 drivers/clk/samsung/clk-exynos5440.c |   29 ++++++++++++++++++++++++++++-
 2 files changed, 29 insertions(+), 19 deletions(-)

diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 8f638ad..8f995b7 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -89,24 +89,7 @@ static struct map_desc exynos5_iodesc[] __initdata = {
 
 static void exynos_restart(enum reboot_mode mode, const char *cmd)
 {
-	struct device_node *np;
-	u32 val = 0x1;
-	void __iomem *addr = pmu_base_addr + EXYNOS_SWRESET;
-
-	if (of_machine_is_compatible("samsung,exynos5440")) {
-		u32 status;
-		np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock");
-
-		addr = of_iomap(np, 0) + 0xbc;
-		status = __raw_readl(addr);
-
-		addr = of_iomap(np, 0) + 0xcc;
-		val = __raw_readl(addr);
-
-		val = (val & 0xffff0000) | (status & 0xffff);
-	}
-
-	__raw_writel(val, addr);
+	__raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
 }
 
 static struct platform_device exynos_cpuidle = {
diff --git a/drivers/clk/samsung/clk-exynos5440.c b/drivers/clk/samsung/clk-exynos5440.c
index 00d1d00..979e813 100644
--- a/drivers/clk/samsung/clk-exynos5440.c
+++ b/drivers/clk/samsung/clk-exynos5440.c
@@ -15,6 +15,8 @@
 #include <linux/clk-provider.h>
 #include <linux/of.h>
 #include <linux/of_address.h>
+#include <linux/notifier.h>
+#include <linux/reboot.h>
 
 #include "clk.h"
 #include "clk-pll.h"
@@ -23,6 +25,8 @@
 #define CPU_CLK_STATUS		0xfc
 #define MISC_DOUT1		0x558
 
+static void __iomem *reg_base;
+
 /* parent clock name list */
 PNAME(mout_armclk_p)	= { "cplla", "cpllb" };
 PNAME(mout_spi_p)	= { "div125", "div200" };
@@ -89,10 +93,30 @@ static const struct of_device_id ext_clk_match[] __initconst = {
 	{},
 };
 
+static int exynos5440_clk_restart_notify(struct notifier_block *this,
+		unsigned long code, void *unused)
+{
+	u32 val, status;
+
+	status = readl_relaxed(reg_base + 0xbc);
+	val = readl_relaxed(reg_base + 0xcc);
+	val = (val & 0xffff0000) | (status & 0xffff);
+	writel_relaxed(val, reg_base + 0xcc);
+
+	return NOTIFY_DONE;
+}
+
+/*
+ * Exynos5440 Clock restart notifier, handles restart functionality
+ */
+static struct notifier_block exynos5440_clk_restart_handler = {
+	.notifier_call = exynos5440_clk_restart_notify,
+	.priority = 128,
+};
+
 /* register exynos5440 clocks */
 static void __init exynos5440_clk_init(struct device_node *np)
 {
-	void __iomem *reg_base;
 	struct samsung_clk_provider *ctx;
 
 	reg_base = of_iomap(np, 0);
@@ -125,6 +149,9 @@ static void __init exynos5440_clk_init(struct device_node *np)
 
 	samsung_clk_of_add_provider(np, ctx);
 
+	if (register_restart_handler(&exynos5440_clk_restart_handler))
+		pr_warn("exynos5440 clock can't register restart handler\n");
+
 	pr_info("Exynos5440: arm_clk = %ldHz\n", _get_rate("arm_clk"));
 	pr_info("exynos5440 clock initialization complete\n");
 }
-- 
1.7.9.5

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

* [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
  2014-11-18 10:47 ` Pankaj Dubey
@ 2014-11-18 10:47   ` Pankaj Dubey
  -1 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-18 10:47 UTC (permalink / raw)
  To: linux-arm-kernel, linux-samsung-soc
  Cc: kgene.kim, tomasz.figa, linux, thomas.ab, linux, Pankaj Dubey

Let's register restart handler from PMU driver for restart
functionality. So that we can remove restart hooks from
machine specific file, and thus moving ahead when PMU moved
to driver folder, this functionality can be reused for ARM64
based Exynos SoC's.

Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
---
 arch/arm/mach-exynos/common.h |    1 -
 arch/arm/mach-exynos/exynos.c |    6 ------
 arch/arm/mach-exynos/pmu.c    |   23 +++++++++++++++++++++++
 3 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index 431be1b..865f878 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -12,7 +12,6 @@
 #ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H
 #define __ARCH_ARM_MACH_EXYNOS_COMMON_H
 
-#include <linux/reboot.h>
 #include <linux/of.h>
 
 #define EXYNOS3250_SOC_ID	0xE3472000
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 8f995b7..c13d083 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -87,11 +87,6 @@ static struct map_desc exynos5_iodesc[] __initdata = {
 	},
 };
 
-static void exynos_restart(enum reboot_mode mode, const char *cmd)
-{
-	__raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
-}
-
 static struct platform_device exynos_cpuidle = {
 	.name              = "exynos_cpuidle",
 #ifdef CONFIG_ARM_EXYNOS_CPUIDLE
@@ -316,7 +311,6 @@ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)")
 	.init_machine	= exynos_dt_machine_init,
 	.init_late	= exynos_init_late,
 	.dt_compat	= exynos_dt_compat,
-	.restart	= exynos_restart,
 	.reserve	= exynos_reserve,
 	.dt_fixup	= exynos_dt_fixup,
 MACHINE_END
diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
index 6c8a76d..e4c3512 100644
--- a/arch/arm/mach-exynos/pmu.c
+++ b/arch/arm/mach-exynos/pmu.c
@@ -11,8 +11,11 @@
 
 #include <linux/io.h>
 #include <linux/of.h>
+#include <linux/of_address.h>
 #include <linux/platform_device.h>
 #include <linux/delay.h>
+#include <linux/notifier.h>
+#include <linux/reboot.h>
 
 
 #include "exynos-pmu.h"
@@ -716,6 +719,13 @@ static void exynos5420_pmu_init(void)
 	pr_info("EXYNOS5420 PMU initialized\n");
 }
 
+static int pmu_restart_notify(struct notifier_block *this,
+		unsigned long code, void *unused)
+{
+	pmu_raw_writel(0x1, EXYNOS_SWRESET);
+
+	return NOTIFY_DONE;
+}
 
 static const struct exynos_pmu_data exynos4210_pmu_data = {
 	.pmu_config	= exynos4210_pmu_config,
@@ -765,11 +775,20 @@ static const struct of_device_id exynos_pmu_of_device_ids[] = {
 	{ /*sentinel*/ },
 };
 
+/*
+ * Exynos PMU restart notifier, handles restart functionality
+ */
+static struct notifier_block pmu_restart_handler = {
+	.notifier_call = pmu_restart_notify,
+	.priority = 128,
+};
+
 static int exynos_pmu_probe(struct platform_device *pdev)
 {
 	const struct of_device_id *match;
 	struct device *dev = &pdev->dev;
 	struct resource *res;
+	int ret;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	pmu_base_addr = devm_ioremap_resource(dev, res);
@@ -794,6 +813,10 @@ static int exynos_pmu_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, pmu_context);
 
+	ret = register_restart_handler(&pmu_restart_handler);
+	if (ret)
+		dev_warn(dev, "can't register restart handler err=%d\n", ret);
+
 	dev_dbg(dev, "Exynos PMU Driver probe done\n");
 	return 0;
 }
-- 
1.7.9.5

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

* [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
@ 2014-11-18 10:47   ` Pankaj Dubey
  0 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-18 10:47 UTC (permalink / raw)
  To: linux-arm-kernel

Let's register restart handler from PMU driver for restart
functionality. So that we can remove restart hooks from
machine specific file, and thus moving ahead when PMU moved
to driver folder, this functionality can be reused for ARM64
based Exynos SoC's.

Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
---
 arch/arm/mach-exynos/common.h |    1 -
 arch/arm/mach-exynos/exynos.c |    6 ------
 arch/arm/mach-exynos/pmu.c    |   23 +++++++++++++++++++++++
 3 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index 431be1b..865f878 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -12,7 +12,6 @@
 #ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H
 #define __ARCH_ARM_MACH_EXYNOS_COMMON_H
 
-#include <linux/reboot.h>
 #include <linux/of.h>
 
 #define EXYNOS3250_SOC_ID	0xE3472000
diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
index 8f995b7..c13d083 100644
--- a/arch/arm/mach-exynos/exynos.c
+++ b/arch/arm/mach-exynos/exynos.c
@@ -87,11 +87,6 @@ static struct map_desc exynos5_iodesc[] __initdata = {
 	},
 };
 
-static void exynos_restart(enum reboot_mode mode, const char *cmd)
-{
-	__raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
-}
-
 static struct platform_device exynos_cpuidle = {
 	.name              = "exynos_cpuidle",
 #ifdef CONFIG_ARM_EXYNOS_CPUIDLE
@@ -316,7 +311,6 @@ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)")
 	.init_machine	= exynos_dt_machine_init,
 	.init_late	= exynos_init_late,
 	.dt_compat	= exynos_dt_compat,
-	.restart	= exynos_restart,
 	.reserve	= exynos_reserve,
 	.dt_fixup	= exynos_dt_fixup,
 MACHINE_END
diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
index 6c8a76d..e4c3512 100644
--- a/arch/arm/mach-exynos/pmu.c
+++ b/arch/arm/mach-exynos/pmu.c
@@ -11,8 +11,11 @@
 
 #include <linux/io.h>
 #include <linux/of.h>
+#include <linux/of_address.h>
 #include <linux/platform_device.h>
 #include <linux/delay.h>
+#include <linux/notifier.h>
+#include <linux/reboot.h>
 
 
 #include "exynos-pmu.h"
@@ -716,6 +719,13 @@ static void exynos5420_pmu_init(void)
 	pr_info("EXYNOS5420 PMU initialized\n");
 }
 
+static int pmu_restart_notify(struct notifier_block *this,
+		unsigned long code, void *unused)
+{
+	pmu_raw_writel(0x1, EXYNOS_SWRESET);
+
+	return NOTIFY_DONE;
+}
 
 static const struct exynos_pmu_data exynos4210_pmu_data = {
 	.pmu_config	= exynos4210_pmu_config,
@@ -765,11 +775,20 @@ static const struct of_device_id exynos_pmu_of_device_ids[] = {
 	{ /*sentinel*/ },
 };
 
+/*
+ * Exynos PMU restart notifier, handles restart functionality
+ */
+static struct notifier_block pmu_restart_handler = {
+	.notifier_call = pmu_restart_notify,
+	.priority = 128,
+};
+
 static int exynos_pmu_probe(struct platform_device *pdev)
 {
 	const struct of_device_id *match;
 	struct device *dev = &pdev->dev;
 	struct resource *res;
+	int ret;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	pmu_base_addr = devm_ioremap_resource(dev, res);
@@ -794,6 +813,10 @@ static int exynos_pmu_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, pmu_context);
 
+	ret = register_restart_handler(&pmu_restart_handler);
+	if (ret)
+		dev_warn(dev, "can't register restart handler err=%d\n", ret);
+
 	dev_dbg(dev, "Exynos PMU Driver probe done\n");
 	return 0;
 }
-- 
1.7.9.5

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

* Re: [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
  2014-11-18 10:47   ` Pankaj Dubey
@ 2014-11-18 15:17     ` Sylwester Nawrocki
  -1 siblings, 0 replies; 26+ messages in thread
From: Sylwester Nawrocki @ 2014-11-18 15:17 UTC (permalink / raw)
  To: Pankaj Dubey
  Cc: linux-arm-kernel, linux-samsung-soc, kgene.kim, tomasz.figa,
	linux, thomas.ab, linux

On 18/11/14 11:47, Pankaj Dubey wrote:
> Let's register restart handler for Exynos5440 from it's clock driver
> for restart functionality. So that we can cleanup restart hooks from
> machine specific file.
> 
> CC: Sylwester Nawrocki <s.nawrocki@samsung.com>
> CC: Tomasz Figa <tomasz.figa@gmail.com>
> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> Acked-by: Guenter Roeck <linux@roeck-us.net>

The patch looks good to me.

Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>

Just one comment below.

> ---
>  arch/arm/mach-exynos/exynos.c        |   19 +------------------
>  drivers/clk/samsung/clk-exynos5440.c |   29 ++++++++++++++++++++++++++++-
>  2 files changed, 29 insertions(+), 19 deletions(-)
> 
> diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
> index 8f638ad..8f995b7 100644
> --- a/arch/arm/mach-exynos/exynos.c
> +++ b/arch/arm/mach-exynos/exynos.c
> @@ -89,24 +89,7 @@ static struct map_desc exynos5_iodesc[] __initdata = {
>  
>  static void exynos_restart(enum reboot_mode mode, const char *cmd)
>  {
> -	struct device_node *np;
> -	u32 val = 0x1;
> -	void __iomem *addr = pmu_base_addr + EXYNOS_SWRESET;
> -
> -	if (of_machine_is_compatible("samsung,exynos5440")) {
> -		u32 status;
> -		np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock");
> -
> -		addr = of_iomap(np, 0) + 0xbc;
> -		status = __raw_readl(addr);
> -
> -		addr = of_iomap(np, 0) + 0xcc;
> -		val = __raw_readl(addr);
> -
> -		val = (val & 0xffff0000) | (status & 0xffff);
> -	}
> -
> -	__raw_writel(val, addr);
> +	__raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
>  }
>  

> +static int exynos5440_clk_restart_notify(struct notifier_block *this,
> +		unsigned long code, void *unused)
> +{
> +	u32 val, status;
> +
> +	status = readl_relaxed(reg_base + 0xbc);
> +	val = readl_relaxed(reg_base + 0xcc);
> +	val = (val & 0xffff0000) | (status & 0xffff);
> +	writel_relaxed(val, reg_base + 0xcc);

Can we have macro definitions for these 0xcc, 0xbc address offsets ?
I must say I couldn't find them documented in any Exynos datasheet
I've got though.

> +	return NOTIFY_DONE;
> +}

--
Regards,
Sylwester

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

* [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
@ 2014-11-18 15:17     ` Sylwester Nawrocki
  0 siblings, 0 replies; 26+ messages in thread
From: Sylwester Nawrocki @ 2014-11-18 15:17 UTC (permalink / raw)
  To: linux-arm-kernel

On 18/11/14 11:47, Pankaj Dubey wrote:
> Let's register restart handler for Exynos5440 from it's clock driver
> for restart functionality. So that we can cleanup restart hooks from
> machine specific file.
> 
> CC: Sylwester Nawrocki <s.nawrocki@samsung.com>
> CC: Tomasz Figa <tomasz.figa@gmail.com>
> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> Acked-by: Guenter Roeck <linux@roeck-us.net>

The patch looks good to me.

Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>

Just one comment below.

> ---
>  arch/arm/mach-exynos/exynos.c        |   19 +------------------
>  drivers/clk/samsung/clk-exynos5440.c |   29 ++++++++++++++++++++++++++++-
>  2 files changed, 29 insertions(+), 19 deletions(-)
> 
> diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
> index 8f638ad..8f995b7 100644
> --- a/arch/arm/mach-exynos/exynos.c
> +++ b/arch/arm/mach-exynos/exynos.c
> @@ -89,24 +89,7 @@ static struct map_desc exynos5_iodesc[] __initdata = {
>  
>  static void exynos_restart(enum reboot_mode mode, const char *cmd)
>  {
> -	struct device_node *np;
> -	u32 val = 0x1;
> -	void __iomem *addr = pmu_base_addr + EXYNOS_SWRESET;
> -
> -	if (of_machine_is_compatible("samsung,exynos5440")) {
> -		u32 status;
> -		np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock");
> -
> -		addr = of_iomap(np, 0) + 0xbc;
> -		status = __raw_readl(addr);
> -
> -		addr = of_iomap(np, 0) + 0xcc;
> -		val = __raw_readl(addr);
> -
> -		val = (val & 0xffff0000) | (status & 0xffff);
> -	}
> -
> -	__raw_writel(val, addr);
> +	__raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
>  }
>  

> +static int exynos5440_clk_restart_notify(struct notifier_block *this,
> +		unsigned long code, void *unused)
> +{
> +	u32 val, status;
> +
> +	status = readl_relaxed(reg_base + 0xbc);
> +	val = readl_relaxed(reg_base + 0xcc);
> +	val = (val & 0xffff0000) | (status & 0xffff);
> +	writel_relaxed(val, reg_base + 0xcc);

Can we have macro definitions for these 0xcc, 0xbc address offsets ?
I must say I couldn't find them documented in any Exynos datasheet
I've got though.

> +	return NOTIFY_DONE;
> +}

--
Regards,
Sylwester

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

* Re: [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
  2014-11-18 10:47   ` Pankaj Dubey
@ 2014-11-18 15:19     ` Sylwester Nawrocki
  -1 siblings, 0 replies; 26+ messages in thread
From: Sylwester Nawrocki @ 2014-11-18 15:19 UTC (permalink / raw)
  To: Pankaj Dubey
  Cc: linux-arm-kernel, linux-samsung-soc, kgene.kim, tomasz.figa,
	linux, thomas.ab, linux

On 18/11/14 11:47, Pankaj Dubey wrote:
> diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
> index 6c8a76d..e4c3512 100644
> --- a/arch/arm/mach-exynos/pmu.c
> +++ b/arch/arm/mach-exynos/pmu.c
> @@ -11,8 +11,11 @@

> @@ -716,6 +719,13 @@ static void exynos5420_pmu_init(void)
>  	pr_info("EXYNOS5420 PMU initialized\n");
>  }
>  
> +static int pmu_restart_notify(struct notifier_block *this,
> +		unsigned long code, void *unused)
> +{
> +	pmu_raw_writel(0x1, EXYNOS_SWRESET);

Is it also valid on exynos5440 ? Doesn't it cause any harm there ?
Perhaps we could add a comment saying it has not effect on that SoC ?

> +	return NOTIFY_DONE;
> +}

--
Thanks,
Sylwester

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

* [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
@ 2014-11-18 15:19     ` Sylwester Nawrocki
  0 siblings, 0 replies; 26+ messages in thread
From: Sylwester Nawrocki @ 2014-11-18 15:19 UTC (permalink / raw)
  To: linux-arm-kernel

On 18/11/14 11:47, Pankaj Dubey wrote:
> diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
> index 6c8a76d..e4c3512 100644
> --- a/arch/arm/mach-exynos/pmu.c
> +++ b/arch/arm/mach-exynos/pmu.c
> @@ -11,8 +11,11 @@

> @@ -716,6 +719,13 @@ static void exynos5420_pmu_init(void)
>  	pr_info("EXYNOS5420 PMU initialized\n");
>  }
>  
> +static int pmu_restart_notify(struct notifier_block *this,
> +		unsigned long code, void *unused)
> +{
> +	pmu_raw_writel(0x1, EXYNOS_SWRESET);

Is it also valid on exynos5440 ? Doesn't it cause any harm there ?
Perhaps we could add a comment saying it has not effect on that SoC ?

> +	return NOTIFY_DONE;
> +}

--
Thanks,
Sylwester

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

* RE: [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
  2014-11-18 15:19     ` Sylwester Nawrocki
@ 2014-11-19  3:16       ` Pankaj Dubey
  -1 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-19  3:16 UTC (permalink / raw)
  To: 'Sylwester Nawrocki'
  Cc: linux-arm-kernel, linux-samsung-soc, kgene.kim, tomasz.figa,
	linux, thomas.ab, linux

On Tuesday, November 18, 2014 8:50 PM, Sylwester Nawrocki Wrote:
> On 18/11/14 11:47, Pankaj Dubey wrote:
> > diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
> > index 6c8a76d..e4c3512 100644
> > --- a/arch/arm/mach-exynos/pmu.c
> > +++ b/arch/arm/mach-exynos/pmu.c
> > @@ -11,8 +11,11 @@
> 
> > @@ -716,6 +719,13 @@ static void exynos5420_pmu_init(void)
> >  	pr_info("EXYNOS5420 PMU initialized\n");  }
> >
> > +static int pmu_restart_notify(struct notifier_block *this,
> > +		unsigned long code, void *unused)
> > +{
> > +	pmu_raw_writel(0x1, EXYNOS_SWRESET);
> 
> Is it also valid on exynos5440 ? Doesn't it cause any harm there ?
> Perhaps we could add a comment saying it has not effect on that SoC ?
> 

Seeing original code from exynos.c (restart hook) I can say it's not valid
for exynos5440.
But it should not cause any harm as of now, because for exynos54440 PMU will
not be probed.
If in future support for exynos5440 PMU gets added, that time one may need
to consider this
point. This will be applicable for any SoC which does not have same register
for restart.

Thanks,
Pankaj Dubey

> > +	return NOTIFY_DONE;
> > +}
> 
> --
> Thanks,
> Sylwester

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

* [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
@ 2014-11-19  3:16       ` Pankaj Dubey
  0 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-19  3:16 UTC (permalink / raw)
  To: linux-arm-kernel

On Tuesday, November 18, 2014 8:50 PM, Sylwester Nawrocki Wrote:
> On 18/11/14 11:47, Pankaj Dubey wrote:
> > diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
> > index 6c8a76d..e4c3512 100644
> > --- a/arch/arm/mach-exynos/pmu.c
> > +++ b/arch/arm/mach-exynos/pmu.c
> > @@ -11,8 +11,11 @@
> 
> > @@ -716,6 +719,13 @@ static void exynos5420_pmu_init(void)
> >  	pr_info("EXYNOS5420 PMU initialized\n");  }
> >
> > +static int pmu_restart_notify(struct notifier_block *this,
> > +		unsigned long code, void *unused)
> > +{
> > +	pmu_raw_writel(0x1, EXYNOS_SWRESET);
> 
> Is it also valid on exynos5440 ? Doesn't it cause any harm there ?
> Perhaps we could add a comment saying it has not effect on that SoC ?
> 

Seeing original code from exynos.c (restart hook) I can say it's not valid
for exynos5440.
But it should not cause any harm as of now, because for exynos54440 PMU will
not be probed.
If in future support for exynos5440 PMU gets added, that time one may need
to consider this
point. This will be applicable for any SoC which does not have same register
for restart.

Thanks,
Pankaj Dubey

> > +	return NOTIFY_DONE;
> > +}
> 
> --
> Thanks,
> Sylwester

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

* RE: [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
  2014-11-18 15:17     ` Sylwester Nawrocki
@ 2014-11-19  3:37       ` Pankaj Dubey
  -1 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-19  3:37 UTC (permalink / raw)
  To: 'Sylwester Nawrocki'
  Cc: linux-arm-kernel, linux-samsung-soc, kgene.kim, tomasz.figa,
	linux, thomas.ab, linux

On Tuesday, November 18, 2014 8:47 PM, Sylwester Nawrocki Wrote:
> On 18/11/14 11:47, Pankaj Dubey wrote:
> > Let's register restart handler for Exynos5440 from it's clock driver
> > for restart functionality. So that we can cleanup restart hooks from
> > machine specific file.
> >
> > CC: Sylwester Nawrocki <s.nawrocki@samsung.com>
> > CC: Tomasz Figa <tomasz.figa@gmail.com>
> > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> > Acked-by: Guenter Roeck <linux@roeck-us.net>
> 
> The patch looks good to me.
> 
> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> 
> Just one comment below.
> 

Thanks for review. 

> > ---
> >  arch/arm/mach-exynos/exynos.c        |   19 +------------------
> >  drivers/clk/samsung/clk-exynos5440.c |   29
> ++++++++++++++++++++++++++++-
> >  2 files changed, 29 insertions(+), 19 deletions(-)
> >
> > diff --git a/arch/arm/mach-exynos/exynos.c
> > b/arch/arm/mach-exynos/exynos.c index 8f638ad..8f995b7 100644
> > --- a/arch/arm/mach-exynos/exynos.c
> > +++ b/arch/arm/mach-exynos/exynos.c
> > @@ -89,24 +89,7 @@ static struct map_desc exynos5_iodesc[] __initdata
> > = {
> >
> >  static void exynos_restart(enum reboot_mode mode, const char *cmd)  {
> > -	struct device_node *np;
> > -	u32 val = 0x1;
> > -	void __iomem *addr = pmu_base_addr + EXYNOS_SWRESET;
> > -
> > -	if (of_machine_is_compatible("samsung,exynos5440")) {
> > -		u32 status;
> > -		np = of_find_compatible_node(NULL, NULL,
"samsung,exynos5440-
> clock");
> > -
> > -		addr = of_iomap(np, 0) + 0xbc;
> > -		status = __raw_readl(addr);
> > -
> > -		addr = of_iomap(np, 0) + 0xcc;
> > -		val = __raw_readl(addr);
> > -
> > -		val = (val & 0xffff0000) | (status & 0xffff);
> > -	}
> > -
> > -	__raw_writel(val, addr);
> > +	__raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
> >  }
> >
> 
> > +static int exynos5440_clk_restart_notify(struct notifier_block *this,
> > +		unsigned long code, void *unused)
> > +{
> > +	u32 val, status;
> > +
> > +	status = readl_relaxed(reg_base + 0xbc);
> > +	val = readl_relaxed(reg_base + 0xcc);
> > +	val = (val & 0xffff0000) | (status & 0xffff);
> > +	writel_relaxed(val, reg_base + 0xcc);
> 
> Can we have macro definitions for these 0xcc, 0xbc address offsets ?
> I must say I couldn't find them documented in any Exynos datasheet I've
got though.
> 

I also wished this, but I could not find them documented. 
So I tried to keep logic of original code as it is, just changed location. 
I would also like to mention that I have not tested this on exynos5440 as I
do not have
one with me. I believe if it was working at its original place in
exynos_restart it should work
here also. Other patch (2/2) I have verified on Exynos3250 board and its
working well.

Thanks,
Pankaj Dubey
> > +	return NOTIFY_DONE;
> > +}
> 
> --
> Regards,
> Sylwester

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

* [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
@ 2014-11-19  3:37       ` Pankaj Dubey
  0 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-19  3:37 UTC (permalink / raw)
  To: linux-arm-kernel

On Tuesday, November 18, 2014 8:47 PM, Sylwester Nawrocki Wrote:
> On 18/11/14 11:47, Pankaj Dubey wrote:
> > Let's register restart handler for Exynos5440 from it's clock driver
> > for restart functionality. So that we can cleanup restart hooks from
> > machine specific file.
> >
> > CC: Sylwester Nawrocki <s.nawrocki@samsung.com>
> > CC: Tomasz Figa <tomasz.figa@gmail.com>
> > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> > Acked-by: Guenter Roeck <linux@roeck-us.net>
> 
> The patch looks good to me.
> 
> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> 
> Just one comment below.
> 

Thanks for review. 

> > ---
> >  arch/arm/mach-exynos/exynos.c        |   19 +------------------
> >  drivers/clk/samsung/clk-exynos5440.c |   29
> ++++++++++++++++++++++++++++-
> >  2 files changed, 29 insertions(+), 19 deletions(-)
> >
> > diff --git a/arch/arm/mach-exynos/exynos.c
> > b/arch/arm/mach-exynos/exynos.c index 8f638ad..8f995b7 100644
> > --- a/arch/arm/mach-exynos/exynos.c
> > +++ b/arch/arm/mach-exynos/exynos.c
> > @@ -89,24 +89,7 @@ static struct map_desc exynos5_iodesc[] __initdata
> > = {
> >
> >  static void exynos_restart(enum reboot_mode mode, const char *cmd)  {
> > -	struct device_node *np;
> > -	u32 val = 0x1;
> > -	void __iomem *addr = pmu_base_addr + EXYNOS_SWRESET;
> > -
> > -	if (of_machine_is_compatible("samsung,exynos5440")) {
> > -		u32 status;
> > -		np = of_find_compatible_node(NULL, NULL,
"samsung,exynos5440-
> clock");
> > -
> > -		addr = of_iomap(np, 0) + 0xbc;
> > -		status = __raw_readl(addr);
> > -
> > -		addr = of_iomap(np, 0) + 0xcc;
> > -		val = __raw_readl(addr);
> > -
> > -		val = (val & 0xffff0000) | (status & 0xffff);
> > -	}
> > -
> > -	__raw_writel(val, addr);
> > +	__raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
> >  }
> >
> 
> > +static int exynos5440_clk_restart_notify(struct notifier_block *this,
> > +		unsigned long code, void *unused)
> > +{
> > +	u32 val, status;
> > +
> > +	status = readl_relaxed(reg_base + 0xbc);
> > +	val = readl_relaxed(reg_base + 0xcc);
> > +	val = (val & 0xffff0000) | (status & 0xffff);
> > +	writel_relaxed(val, reg_base + 0xcc);
> 
> Can we have macro definitions for these 0xcc, 0xbc address offsets ?
> I must say I couldn't find them documented in any Exynos datasheet I've
got though.
> 

I also wished this, but I could not find them documented. 
So I tried to keep logic of original code as it is, just changed location. 
I would also like to mention that I have not tested this on exynos5440 as I
do not have
one with me. I believe if it was working at its original place in
exynos_restart it should work
here also. Other patch (2/2) I have verified on Exynos3250 board and its
working well.

Thanks,
Pankaj Dubey
> > +	return NOTIFY_DONE;
> > +}
> 
> --
> Regards,
> Sylwester

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

* Re: [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
  2014-11-19  3:16       ` Pankaj Dubey
@ 2014-11-19 14:26         ` Sylwester Nawrocki
  -1 siblings, 0 replies; 26+ messages in thread
From: Sylwester Nawrocki @ 2014-11-19 14:26 UTC (permalink / raw)
  To: Pankaj Dubey
  Cc: linux-arm-kernel, linux-samsung-soc, kgene.kim, tomasz.figa,
	linux, thomas.ab, linux

On 19/11/14 04:16, Pankaj Dubey wrote:
>>> > > +static int pmu_restart_notify(struct notifier_block *this,
>>> > > +		unsigned long code, void *unused)
>>> > > +{
>>> > > +	pmu_raw_writel(0x1, EXYNOS_SWRESET);
>> > 
>> > Is it also valid on exynos5440 ? Doesn't it cause any harm there ?
>> > Perhaps we could add a comment saying it has not effect on that SoC ?
>> > 
> Seeing original code from exynos.c (restart hook) I can say it's not valid
> for exynos5440.
> But it should not cause any harm as of now, because for exynos54440 PMU will
> not be probed.
> If in future support for exynos5440 PMU gets added, that time one may need
> to consider this
> point. This will be applicable for any SoC which does not have same register
> for restart.

OK, I wasn't aware PMU driver won't be probed for exynos5440 at all.
Anyway, I hope we can get someone testing the patch set on exynos5440.

--
Regards,
Sylwester

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

* [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
@ 2014-11-19 14:26         ` Sylwester Nawrocki
  0 siblings, 0 replies; 26+ messages in thread
From: Sylwester Nawrocki @ 2014-11-19 14:26 UTC (permalink / raw)
  To: linux-arm-kernel

On 19/11/14 04:16, Pankaj Dubey wrote:
>>> > > +static int pmu_restart_notify(struct notifier_block *this,
>>> > > +		unsigned long code, void *unused)
>>> > > +{
>>> > > +	pmu_raw_writel(0x1, EXYNOS_SWRESET);
>> > 
>> > Is it also valid on exynos5440 ? Doesn't it cause any harm there ?
>> > Perhaps we could add a comment saying it has not effect on that SoC ?
>> > 
> Seeing original code from exynos.c (restart hook) I can say it's not valid
> for exynos5440.
> But it should not cause any harm as of now, because for exynos54440 PMU will
> not be probed.
> If in future support for exynos5440 PMU gets added, that time one may need
> to consider this
> point. This will be applicable for any SoC which does not have same register
> for restart.

OK, I wasn't aware PMU driver won't be probed for exynos5440 at all.
Anyway, I hope we can get someone testing the patch set on exynos5440.

--
Regards,
Sylwester

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

* Re: [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
  2014-11-19  3:37       ` Pankaj Dubey
@ 2014-11-20 17:48         ` Sylwester Nawrocki
  -1 siblings, 0 replies; 26+ messages in thread
From: Sylwester Nawrocki @ 2014-11-20 17:48 UTC (permalink / raw)
  To: Pankaj Dubey
  Cc: linux-arm-kernel, linux-samsung-soc, kgene.kim, tomasz.figa,
	linux, thomas.ab, linux, Mike Turquette

On 19/11/14 04:37, Pankaj Dubey wrote:
>> > 
>>> > > +static int exynos5440_clk_restart_notify(struct notifier_block *this,
>>> > > +		unsigned long code, void *unused)
>>> > > +{
>>> > > +	u32 val, status;
>>> > > +
>>> > > +	status = readl_relaxed(reg_base + 0xbc);
>>> > > +	val = readl_relaxed(reg_base + 0xcc);
>>> > > +	val = (val & 0xffff0000) | (status & 0xffff);
>>> > > +	writel_relaxed(val, reg_base + 0xcc);
>> > 
>> > Can we have macro definitions for these 0xcc, 0xbc address offsets ?
>> > I must say I couldn't find them documented in any Exynos datasheet I've
> got though.
>> > 
>
> I also wished this, but I could not find them documented. 
> So I tried to keep logic of original code as it is, just changed location. 
> I would also like to mention that I have not tested this on exynos5440 as I
> do not have
> one with me. I believe if it was working at its original place in
> exynos_restart it should work
> here also. Other patch (2/2) I have verified on Exynos3250 board and its
> working well.

I think it's best to merge both patches in that series through
the arm-soc tree, since applying them not in order may cause some
breakage. Thus I'd let Kukjin take this patch set into his tree.

For both patches:
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>

--
Thanks,
Sylwester

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

* [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
@ 2014-11-20 17:48         ` Sylwester Nawrocki
  0 siblings, 0 replies; 26+ messages in thread
From: Sylwester Nawrocki @ 2014-11-20 17:48 UTC (permalink / raw)
  To: linux-arm-kernel

On 19/11/14 04:37, Pankaj Dubey wrote:
>> > 
>>> > > +static int exynos5440_clk_restart_notify(struct notifier_block *this,
>>> > > +		unsigned long code, void *unused)
>>> > > +{
>>> > > +	u32 val, status;
>>> > > +
>>> > > +	status = readl_relaxed(reg_base + 0xbc);
>>> > > +	val = readl_relaxed(reg_base + 0xcc);
>>> > > +	val = (val & 0xffff0000) | (status & 0xffff);
>>> > > +	writel_relaxed(val, reg_base + 0xcc);
>> > 
>> > Can we have macro definitions for these 0xcc, 0xbc address offsets ?
>> > I must say I couldn't find them documented in any Exynos datasheet I've
> got though.
>> > 
>
> I also wished this, but I could not find them documented. 
> So I tried to keep logic of original code as it is, just changed location. 
> I would also like to mention that I have not tested this on exynos5440 as I
> do not have
> one with me. I believe if it was working at its original place in
> exynos_restart it should work
> here also. Other patch (2/2) I have verified on Exynos3250 board and its
> working well.

I think it's best to merge both patches in that series through
the arm-soc tree, since applying them not in order may cause some
breakage. Thus I'd let Kukjin take this patch set into his tree.

For both patches:
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>

--
Thanks,
Sylwester

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

* Re: [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
  2014-11-18 10:47   ` Pankaj Dubey
@ 2014-11-21  4:28     ` Vivek Gautam
  -1 siblings, 0 replies; 26+ messages in thread
From: Vivek Gautam @ 2014-11-21  4:28 UTC (permalink / raw)
  To: Pankaj Dubey
  Cc: linux-arm-kernel, linux-samsung-soc, Kukjin Kim, Tomasz Figa,
	Russell King - ARM Linux, Thomas Abraham, linux

Hi Pankaj,


On Tue, Nov 18, 2014 at 4:17 PM, Pankaj Dubey <pankaj.dubey@samsung.com> wrote:
> Let's register restart handler from PMU driver for restart
> functionality. So that we can remove restart hooks from
> machine specific file, and thus moving ahead when PMU moved
> to driver folder, this functionality can be reused for ARM64
> based Exynos SoC's.
>
> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> Acked-by: Guenter Roeck <linux@roeck-us.net>
> ---

Tested on Exynos5800 peach-pi board with linux-samsung/for-next.
Reboot works as expected mutiple times.

Tested-by: Vivek Gautam <gautam.vivek@samsung.com>

>  arch/arm/mach-exynos/common.h |    1 -
>  arch/arm/mach-exynos/exynos.c |    6 ------
>  arch/arm/mach-exynos/pmu.c    |   23 +++++++++++++++++++++++
>  3 files changed, 23 insertions(+), 7 deletions(-)
>
> diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
> index 431be1b..865f878 100644
> --- a/arch/arm/mach-exynos/common.h
> +++ b/arch/arm/mach-exynos/common.h
> @@ -12,7 +12,6 @@
>  #ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H
>  #define __ARCH_ARM_MACH_EXYNOS_COMMON_H
>
> -#include <linux/reboot.h>
>  #include <linux/of.h>
>
>  #define EXYNOS3250_SOC_ID      0xE3472000
> diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
> index 8f995b7..c13d083 100644
> --- a/arch/arm/mach-exynos/exynos.c
> +++ b/arch/arm/mach-exynos/exynos.c
> @@ -87,11 +87,6 @@ static struct map_desc exynos5_iodesc[] __initdata = {
>         },
>  };
>
> -static void exynos_restart(enum reboot_mode mode, const char *cmd)
> -{
> -       __raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
> -}
> -
>  static struct platform_device exynos_cpuidle = {
>         .name              = "exynos_cpuidle",
>  #ifdef CONFIG_ARM_EXYNOS_CPUIDLE
> @@ -316,7 +311,6 @@ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)")
>         .init_machine   = exynos_dt_machine_init,
>         .init_late      = exynos_init_late,
>         .dt_compat      = exynos_dt_compat,
> -       .restart        = exynos_restart,
>         .reserve        = exynos_reserve,
>         .dt_fixup       = exynos_dt_fixup,
>  MACHINE_END
> diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
> index 6c8a76d..e4c3512 100644
> --- a/arch/arm/mach-exynos/pmu.c
> +++ b/arch/arm/mach-exynos/pmu.c
> @@ -11,8 +11,11 @@
>
>  #include <linux/io.h>
>  #include <linux/of.h>
> +#include <linux/of_address.h>
>  #include <linux/platform_device.h>
>  #include <linux/delay.h>
> +#include <linux/notifier.h>
> +#include <linux/reboot.h>
>
>
>  #include "exynos-pmu.h"
> @@ -716,6 +719,13 @@ static void exynos5420_pmu_init(void)
>         pr_info("EXYNOS5420 PMU initialized\n");
>  }
>
> +static int pmu_restart_notify(struct notifier_block *this,
> +               unsigned long code, void *unused)
> +{
> +       pmu_raw_writel(0x1, EXYNOS_SWRESET);
> +
> +       return NOTIFY_DONE;
> +}
>
>  static const struct exynos_pmu_data exynos4210_pmu_data = {
>         .pmu_config     = exynos4210_pmu_config,
> @@ -765,11 +775,20 @@ static const struct of_device_id exynos_pmu_of_device_ids[] = {
>         { /*sentinel*/ },
>  };
>
> +/*
> + * Exynos PMU restart notifier, handles restart functionality
> + */
> +static struct notifier_block pmu_restart_handler = {
> +       .notifier_call = pmu_restart_notify,
> +       .priority = 128,
> +};
> +
>  static int exynos_pmu_probe(struct platform_device *pdev)
>  {
>         const struct of_device_id *match;
>         struct device *dev = &pdev->dev;
>         struct resource *res;
> +       int ret;
>
>         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>         pmu_base_addr = devm_ioremap_resource(dev, res);
> @@ -794,6 +813,10 @@ static int exynos_pmu_probe(struct platform_device *pdev)
>
>         platform_set_drvdata(pdev, pmu_context);
>
> +       ret = register_restart_handler(&pmu_restart_handler);
> +       if (ret)
> +               dev_warn(dev, "can't register restart handler err=%d\n", ret);
> +
>         dev_dbg(dev, "Exynos PMU Driver probe done\n");
>         return 0;
>  }
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Best Regards
Vivek Gautam
Samsung R&D Institute, Bangalore
India

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

* [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver
@ 2014-11-21  4:28     ` Vivek Gautam
  0 siblings, 0 replies; 26+ messages in thread
From: Vivek Gautam @ 2014-11-21  4:28 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Pankaj,


On Tue, Nov 18, 2014 at 4:17 PM, Pankaj Dubey <pankaj.dubey@samsung.com> wrote:
> Let's register restart handler from PMU driver for restart
> functionality. So that we can remove restart hooks from
> machine specific file, and thus moving ahead when PMU moved
> to driver folder, this functionality can be reused for ARM64
> based Exynos SoC's.
>
> Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> Acked-by: Guenter Roeck <linux@roeck-us.net>
> ---

Tested on Exynos5800 peach-pi board with linux-samsung/for-next.
Reboot works as expected mutiple times.

Tested-by: Vivek Gautam <gautam.vivek@samsung.com>

>  arch/arm/mach-exynos/common.h |    1 -
>  arch/arm/mach-exynos/exynos.c |    6 ------
>  arch/arm/mach-exynos/pmu.c    |   23 +++++++++++++++++++++++
>  3 files changed, 23 insertions(+), 7 deletions(-)
>
> diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
> index 431be1b..865f878 100644
> --- a/arch/arm/mach-exynos/common.h
> +++ b/arch/arm/mach-exynos/common.h
> @@ -12,7 +12,6 @@
>  #ifndef __ARCH_ARM_MACH_EXYNOS_COMMON_H
>  #define __ARCH_ARM_MACH_EXYNOS_COMMON_H
>
> -#include <linux/reboot.h>
>  #include <linux/of.h>
>
>  #define EXYNOS3250_SOC_ID      0xE3472000
> diff --git a/arch/arm/mach-exynos/exynos.c b/arch/arm/mach-exynos/exynos.c
> index 8f995b7..c13d083 100644
> --- a/arch/arm/mach-exynos/exynos.c
> +++ b/arch/arm/mach-exynos/exynos.c
> @@ -87,11 +87,6 @@ static struct map_desc exynos5_iodesc[] __initdata = {
>         },
>  };
>
> -static void exynos_restart(enum reboot_mode mode, const char *cmd)
> -{
> -       __raw_writel(0x1, pmu_base_addr + EXYNOS_SWRESET);
> -}
> -
>  static struct platform_device exynos_cpuidle = {
>         .name              = "exynos_cpuidle",
>  #ifdef CONFIG_ARM_EXYNOS_CPUIDLE
> @@ -316,7 +311,6 @@ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EXYNOS (Flattened Device Tree)")
>         .init_machine   = exynos_dt_machine_init,
>         .init_late      = exynos_init_late,
>         .dt_compat      = exynos_dt_compat,
> -       .restart        = exynos_restart,
>         .reserve        = exynos_reserve,
>         .dt_fixup       = exynos_dt_fixup,
>  MACHINE_END
> diff --git a/arch/arm/mach-exynos/pmu.c b/arch/arm/mach-exynos/pmu.c
> index 6c8a76d..e4c3512 100644
> --- a/arch/arm/mach-exynos/pmu.c
> +++ b/arch/arm/mach-exynos/pmu.c
> @@ -11,8 +11,11 @@
>
>  #include <linux/io.h>
>  #include <linux/of.h>
> +#include <linux/of_address.h>
>  #include <linux/platform_device.h>
>  #include <linux/delay.h>
> +#include <linux/notifier.h>
> +#include <linux/reboot.h>
>
>
>  #include "exynos-pmu.h"
> @@ -716,6 +719,13 @@ static void exynos5420_pmu_init(void)
>         pr_info("EXYNOS5420 PMU initialized\n");
>  }
>
> +static int pmu_restart_notify(struct notifier_block *this,
> +               unsigned long code, void *unused)
> +{
> +       pmu_raw_writel(0x1, EXYNOS_SWRESET);
> +
> +       return NOTIFY_DONE;
> +}
>
>  static const struct exynos_pmu_data exynos4210_pmu_data = {
>         .pmu_config     = exynos4210_pmu_config,
> @@ -765,11 +775,20 @@ static const struct of_device_id exynos_pmu_of_device_ids[] = {
>         { /*sentinel*/ },
>  };
>
> +/*
> + * Exynos PMU restart notifier, handles restart functionality
> + */
> +static struct notifier_block pmu_restart_handler = {
> +       .notifier_call = pmu_restart_notify,
> +       .priority = 128,
> +};
> +
>  static int exynos_pmu_probe(struct platform_device *pdev)
>  {
>         const struct of_device_id *match;
>         struct device *dev = &pdev->dev;
>         struct resource *res;
> +       int ret;
>
>         res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>         pmu_base_addr = devm_ioremap_resource(dev, res);
> @@ -794,6 +813,10 @@ static int exynos_pmu_probe(struct platform_device *pdev)
>
>         platform_set_drvdata(pdev, pmu_context);
>
> +       ret = register_restart_handler(&pmu_restart_handler);
> +       if (ret)
> +               dev_warn(dev, "can't register restart handler err=%d\n", ret);
> +
>         dev_dbg(dev, "Exynos PMU Driver probe done\n");
>         return 0;
>  }
> --
> 1.7.9.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
Best Regards
Vivek Gautam
Samsung R&D Institute, Bangalore
India

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

* Re: [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
  2014-11-20 17:48         ` Sylwester Nawrocki
@ 2014-11-21 10:30           ` Pankaj Dubey
  -1 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-21 10:30 UTC (permalink / raw)
  To: Sylwester Nawrocki, kgene.kim
  Cc: linux-arm-kernel, linux-samsung-soc, tomasz.figa, linux,
	thomas.ab, linux, Mike Turquette

Hi Kukjin,

On Thursday 20 November 2014 11:18 PM, Sylwester Nawrocki wrote:
> On 19/11/14 04:37, Pankaj Dubey wrote:
>>>>
>>>>>> +static int exynos5440_clk_restart_notify(struct notifier_block *this,
>>>>>> +		unsigned long code, void *unused)
>>>>>> +{
>>>>>> +	u32 val, status;
>>>>>> +
>>>>>> +	status = readl_relaxed(reg_base + 0xbc);
>>>>>> +	val = readl_relaxed(reg_base + 0xcc);
>>>>>> +	val = (val & 0xffff0000) | (status & 0xffff);
>>>>>> +	writel_relaxed(val, reg_base + 0xcc);
>>>>
>>>> Can we have macro definitions for these 0xcc, 0xbc address offsets ?
>>>> I must say I couldn't find them documented in any Exynos datasheet I've
>> got though.
>>>>
>>
>> I also wished this, but I could not find them documented.
>> So I tried to keep logic of original code as it is, just changed location.
>> I would also like to mention that I have not tested this on exynos5440 as I
>> do not have
>> one with me. I believe if it was working at its original place in
>> exynos_restart it should work
>> here also. Other patch (2/2) I have verified on Exynos3250 board and its
>> working well.
>
> I think it's best to merge both patches in that series through
> the arm-soc tree, since applying them not in order may cause some
> breakage. Thus I'd let Kukjin take this patch set into his tree.
>
> For both patches:
> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
>

Will you please take this series into your tree.

Thanks,
Pankaj Dubey
> --
> Thanks,
> Sylwester
>

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

* [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
@ 2014-11-21 10:30           ` Pankaj Dubey
  0 siblings, 0 replies; 26+ messages in thread
From: Pankaj Dubey @ 2014-11-21 10:30 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Kukjin,

On Thursday 20 November 2014 11:18 PM, Sylwester Nawrocki wrote:
> On 19/11/14 04:37, Pankaj Dubey wrote:
>>>>
>>>>>> +static int exynos5440_clk_restart_notify(struct notifier_block *this,
>>>>>> +		unsigned long code, void *unused)
>>>>>> +{
>>>>>> +	u32 val, status;
>>>>>> +
>>>>>> +	status = readl_relaxed(reg_base + 0xbc);
>>>>>> +	val = readl_relaxed(reg_base + 0xcc);
>>>>>> +	val = (val & 0xffff0000) | (status & 0xffff);
>>>>>> +	writel_relaxed(val, reg_base + 0xcc);
>>>>
>>>> Can we have macro definitions for these 0xcc, 0xbc address offsets ?
>>>> I must say I couldn't find them documented in any Exynos datasheet I've
>> got though.
>>>>
>>
>> I also wished this, but I could not find them documented.
>> So I tried to keep logic of original code as it is, just changed location.
>> I would also like to mention that I have not tested this on exynos5440 as I
>> do not have
>> one with me. I believe if it was working at its original place in
>> exynos_restart it should work
>> here also. Other patch (2/2) I have verified on Exynos3250 board and its
>> working well.
>
> I think it's best to merge both patches in that series through
> the arm-soc tree, since applying them not in order may cause some
> breakage. Thus I'd let Kukjin take this patch set into his tree.
>
> For both patches:
> Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
>

Will you please take this series into your tree.

Thanks,
Pankaj Dubey
> --
> Thanks,
> Sylwester
>

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

* RE: [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
  2014-11-21 10:30           ` Pankaj Dubey
@ 2014-11-22  2:08             ` Kukjin Kim
  -1 siblings, 0 replies; 26+ messages in thread
From: Kukjin Kim @ 2014-11-22  2:08 UTC (permalink / raw)
  To: 'Pankaj Dubey', 'Sylwester Nawrocki'
  Cc: linux-arm-kernel, linux-samsung-soc, tomasz.figa, linux,
	thomas.ab, linux, 'Mike Turquette',
	amit.daniel

Pankaj Dubey wrote:
> 
> Hi Kukjin,
> 
Hi,

> On Thursday 20 November 2014 11:18 PM, Sylwester Nawrocki wrote:
> > On 19/11/14 04:37, Pankaj Dubey wrote:
> >>>>
> >>>>>> +static int exynos5440_clk_restart_notify(struct notifier_block *this,
> >>>>>> +		unsigned long code, void *unused)
> >>>>>> +{
> >>>>>> +	u32 val, status;
> >>>>>> +
> >>>>>> +	status = readl_relaxed(reg_base + 0xbc);
> >>>>>> +	val = readl_relaxed(reg_base + 0xcc);
> >>>>>> +	val = (val & 0xffff0000) | (status & 0xffff);
> >>>>>> +	writel_relaxed(val, reg_base + 0xcc);
> >>>>
> >>>> Can we have macro definitions for these 0xcc, 0xbc address offsets ?
> >>>> I must say I couldn't find them documented in any Exynos datasheet I've
> >> got though.
> >>>>
> >>
> >> I also wished this, but I could not find them documented.
> >> So I tried to keep logic of original code as it is, just changed location.
> >> I would also like to mention that I have not tested this on exynos5440 as I
> >> do not have
> >> one with me. I believe if it was working at its original place in
> >> exynos_restart it should work
> >> here also. Other patch (2/2) I have verified on Exynos3250 board and its
> >> working well.
> >
> > I think it's best to merge both patches in that series through
> > the arm-soc tree, since applying them not in order may cause some
> > breakage. Thus I'd let Kukjin take this patch set into his tree.
> >
> > For both patches:
> > Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> >
Sylwester, thanks for your ack.

> 
> Will you please take this series into your tree.
> 
+ Amit Daniel

Yeah, this series looks good to me and I'm looking at this series with Amit's
moving pmu.c into drivers/. Maybe I need to ask Amit to respin the series on
top of this? If required, I'll reply.

Thanks,
Kukjin

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

* [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
@ 2014-11-22  2:08             ` Kukjin Kim
  0 siblings, 0 replies; 26+ messages in thread
From: Kukjin Kim @ 2014-11-22  2:08 UTC (permalink / raw)
  To: linux-arm-kernel

Pankaj Dubey wrote:
> 
> Hi Kukjin,
> 
Hi,

> On Thursday 20 November 2014 11:18 PM, Sylwester Nawrocki wrote:
> > On 19/11/14 04:37, Pankaj Dubey wrote:
> >>>>
> >>>>>> +static int exynos5440_clk_restart_notify(struct notifier_block *this,
> >>>>>> +		unsigned long code, void *unused)
> >>>>>> +{
> >>>>>> +	u32 val, status;
> >>>>>> +
> >>>>>> +	status = readl_relaxed(reg_base + 0xbc);
> >>>>>> +	val = readl_relaxed(reg_base + 0xcc);
> >>>>>> +	val = (val & 0xffff0000) | (status & 0xffff);
> >>>>>> +	writel_relaxed(val, reg_base + 0xcc);
> >>>>
> >>>> Can we have macro definitions for these 0xcc, 0xbc address offsets ?
> >>>> I must say I couldn't find them documented in any Exynos datasheet I've
> >> got though.
> >>>>
> >>
> >> I also wished this, but I could not find them documented.
> >> So I tried to keep logic of original code as it is, just changed location.
> >> I would also like to mention that I have not tested this on exynos5440 as I
> >> do not have
> >> one with me. I believe if it was working at its original place in
> >> exynos_restart it should work
> >> here also. Other patch (2/2) I have verified on Exynos3250 board and its
> >> working well.
> >
> > I think it's best to merge both patches in that series through
> > the arm-soc tree, since applying them not in order may cause some
> > breakage. Thus I'd let Kukjin take this patch set into his tree.
> >
> > For both patches:
> > Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> >
Sylwester, thanks for your ack.

> 
> Will you please take this series into your tree.
> 
+ Amit Daniel

Yeah, this series looks good to me and I'm looking at this series with Amit's
moving pmu.c into drivers/. Maybe I need to ask Amit to respin the series on
top of this? If required, I'll reply.

Thanks,
Kukjin

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

* Re: [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
  2014-11-22  2:08             ` Kukjin Kim
@ 2014-11-24  2:16               ` amit daniel kachhap
  -1 siblings, 0 replies; 26+ messages in thread
From: amit daniel kachhap @ 2014-11-24  2:16 UTC (permalink / raw)
  To: Kukjin Kim
  Cc: Pankaj Dubey, Sylwester Nawrocki, LAK, linux-samsung-soc,
	Tomasz Figa, Russell King, Thomas Abraham, Guenter Roeck,
	Mike Turquette

On Sat, Nov 22, 2014 at 7:38 AM, Kukjin Kim <kgene@kernel.org> wrote:
> Pankaj Dubey wrote:
>>
>> Hi Kukjin,
>>
> Hi,
>
>> On Thursday 20 November 2014 11:18 PM, Sylwester Nawrocki wrote:
>> > On 19/11/14 04:37, Pankaj Dubey wrote:
>> >>>>
>> >>>>>> +static int exynos5440_clk_restart_notify(struct notifier_block *this,
>> >>>>>> +              unsigned long code, void *unused)
>> >>>>>> +{
>> >>>>>> +      u32 val, status;
>> >>>>>> +
>> >>>>>> +      status = readl_relaxed(reg_base + 0xbc);
>> >>>>>> +      val = readl_relaxed(reg_base + 0xcc);
>> >>>>>> +      val = (val & 0xffff0000) | (status & 0xffff);
>> >>>>>> +      writel_relaxed(val, reg_base + 0xcc);
>> >>>>
>> >>>> Can we have macro definitions for these 0xcc, 0xbc address offsets ?
>> >>>> I must say I couldn't find them documented in any Exynos datasheet I've
>> >> got though.
>> >>>>
>> >>
>> >> I also wished this, but I could not find them documented.
>> >> So I tried to keep logic of original code as it is, just changed location.
>> >> I would also like to mention that I have not tested this on exynos5440 as I
>> >> do not have
>> >> one with me. I believe if it was working at its original place in
>> >> exynos_restart it should work
>> >> here also. Other patch (2/2) I have verified on Exynos3250 board and its
>> >> working well.
>> >
>> > I think it's best to merge both patches in that series through
>> > the arm-soc tree, since applying them not in order may cause some
>> > breakage. Thus I'd let Kukjin take this patch set into his tree.
>> >
>> > For both patches:
>> > Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
>> >
> Sylwester, thanks for your ack.
>
>>
>> Will you please take this series into your tree.
>>
> + Amit Daniel
>
> Yeah, this series looks good to me and I'm looking at this series with Amit's
> moving pmu.c into drivers/. Maybe I need to ask Amit to respin the series on
> top of this? If required, I'll reply.

I was ready to post pmu v4 version with Russell suggested changes so i
rebased and posted v4 series
on top of this 2 patch.

Regards,
Amit D
>
> Thanks,
> Kukjin
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver
@ 2014-11-24  2:16               ` amit daniel kachhap
  0 siblings, 0 replies; 26+ messages in thread
From: amit daniel kachhap @ 2014-11-24  2:16 UTC (permalink / raw)
  To: linux-arm-kernel

On Sat, Nov 22, 2014 at 7:38 AM, Kukjin Kim <kgene@kernel.org> wrote:
> Pankaj Dubey wrote:
>>
>> Hi Kukjin,
>>
> Hi,
>
>> On Thursday 20 November 2014 11:18 PM, Sylwester Nawrocki wrote:
>> > On 19/11/14 04:37, Pankaj Dubey wrote:
>> >>>>
>> >>>>>> +static int exynos5440_clk_restart_notify(struct notifier_block *this,
>> >>>>>> +              unsigned long code, void *unused)
>> >>>>>> +{
>> >>>>>> +      u32 val, status;
>> >>>>>> +
>> >>>>>> +      status = readl_relaxed(reg_base + 0xbc);
>> >>>>>> +      val = readl_relaxed(reg_base + 0xcc);
>> >>>>>> +      val = (val & 0xffff0000) | (status & 0xffff);
>> >>>>>> +      writel_relaxed(val, reg_base + 0xcc);
>> >>>>
>> >>>> Can we have macro definitions for these 0xcc, 0xbc address offsets ?
>> >>>> I must say I couldn't find them documented in any Exynos datasheet I've
>> >> got though.
>> >>>>
>> >>
>> >> I also wished this, but I could not find them documented.
>> >> So I tried to keep logic of original code as it is, just changed location.
>> >> I would also like to mention that I have not tested this on exynos5440 as I
>> >> do not have
>> >> one with me. I believe if it was working at its original place in
>> >> exynos_restart it should work
>> >> here also. Other patch (2/2) I have verified on Exynos3250 board and its
>> >> working well.
>> >
>> > I think it's best to merge both patches in that series through
>> > the arm-soc tree, since applying them not in order may cause some
>> > breakage. Thus I'd let Kukjin take this patch set into his tree.
>> >
>> > For both patches:
>> > Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
>> >
> Sylwester, thanks for your ack.
>
>>
>> Will you please take this series into your tree.
>>
> + Amit Daniel
>
> Yeah, this series looks good to me and I'm looking at this series with Amit's
> moving pmu.c into drivers/. Maybe I need to ask Amit to respin the series on
> top of this? If required, I'll reply.

I was ready to post pmu v4 version with Russell suggested changes so i
rebased and posted v4 series
on top of this 2 patch.

Regards,
Amit D
>
> Thanks,
> Kukjin
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2014-11-24  2:16 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-18 10:47 [PATCH v5 0/2] Handle reboot for Exynos SoC via restart_handler Pankaj Dubey
2014-11-18 10:47 ` Pankaj Dubey
2014-11-18 10:47 ` [PATCH v5 1/2] clk: samsung: exynos5440: move restart code into clock driver Pankaj Dubey
2014-11-18 10:47   ` Pankaj Dubey
2014-11-18 15:17   ` Sylwester Nawrocki
2014-11-18 15:17     ` Sylwester Nawrocki
2014-11-19  3:37     ` Pankaj Dubey
2014-11-19  3:37       ` Pankaj Dubey
2014-11-20 17:48       ` Sylwester Nawrocki
2014-11-20 17:48         ` Sylwester Nawrocki
2014-11-21 10:30         ` Pankaj Dubey
2014-11-21 10:30           ` Pankaj Dubey
2014-11-22  2:08           ` Kukjin Kim
2014-11-22  2:08             ` Kukjin Kim
2014-11-24  2:16             ` amit daniel kachhap
2014-11-24  2:16               ` amit daniel kachhap
2014-11-18 10:47 ` [PATCH v5 2/2] ARM: EXYNOS: PMU: move restart code into pmu driver Pankaj Dubey
2014-11-18 10:47   ` Pankaj Dubey
2014-11-18 15:19   ` Sylwester Nawrocki
2014-11-18 15:19     ` Sylwester Nawrocki
2014-11-19  3:16     ` Pankaj Dubey
2014-11-19  3:16       ` Pankaj Dubey
2014-11-19 14:26       ` Sylwester Nawrocki
2014-11-19 14:26         ` Sylwester Nawrocki
2014-11-21  4:28   ` Vivek Gautam
2014-11-21  4:28     ` Vivek Gautam

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.