Re: [PATCH 05/14] ARM: call reset_controller_of_init from default time_init handler

4 messages, 3 authors, 2015-02-16 · open the first message on its own page

Re: [PATCH 05/14] ARM: call reset_controller_of_init from default time_init handler

From: Rob Herring <hidden>
Date: 2015-02-15 22:18:01

On Thu, Feb 12, 2015 at 11:45 AM, Maxime Coquelin
[off-list ref] wrote:
Some DT ARM platforms need the reset controllers to be initialized before
the timers.
This is the case of the stm32 and sunxi platforms.
I would say this is the exception, not the rule and therefore should
be handled in a machine desc function. Or it could be part of your
timer setup. Or is the bootloader's problem (like arch timer setup).

We just want to limit how much this mechanism gets used.

Rob
quoted hunk
This patch adds a call to reset_controller_of_init() to the default
.init_time callback when RESET_CONTROLLER is used by the platform.

Signed-off-by: Maxime Coquelin <mcoquelin.stm32@gmail.com>
---
 arch/arm/kernel/time.c | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index 0cc7e58..4601b1e 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -20,6 +20,7 @@
 #include <linux/irq.h>
 #include <linux/kernel.h>
 #include <linux/profile.h>
+#include <linux/reset-controller.h>
 #include <linux/sched.h>
 #include <linux/sched_clock.h>
 #include <linux/smp.h>
@@ -117,6 +118,9 @@ void __init time_init(void)
        if (machine_desc->init_time) {
                machine_desc->init_time();
        } else {
+#ifdef CONFIG_RESET_CONTROLLER
+               reset_controller_of_init();
+#endif
 #ifdef CONFIG_COMMON_CLK
                of_clk_init(NULL);
 #endif
--
1.9.1

Re: [PATCH 05/14] ARM: call reset_controller_of_init from default time_init handler

From: Russell King - ARM Linux <hidden>
Date: 2015-02-15 23:14:14

On Sun, Feb 15, 2015 at 04:17:31PM -0600, Rob Herring wrote:
On Thu, Feb 12, 2015 at 11:45 AM, Maxime Coquelin
[off-list ref] wrote:
quoted
Some DT ARM platforms need the reset controllers to be initialized before
the timers.
This is the case of the stm32 and sunxi platforms.
I would say this is the exception, not the rule and therefore should
be handled in a machine desc function. Or it could be part of your
timer setup. Or is the bootloader's problem (like arch timer setup).

We just want to limit how much this mechanism gets used.
Can you clarify please - what is "this mechanism"?  Placing explicit
calls at this location, or the whole OF_DECLARE_* stuff?

Sebastian suggested using the OF_DECLARE_* stuff for the Dove PMU -
so maybe you have a comment on that too?

Thanks.

-- 
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.

Re: [PATCH 05/14] ARM: call reset_controller_of_init from default time_init handler

From: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Date: 2015-02-16 12:03:02

2015-02-15 23:17 GMT+01:00 Rob Herring [off-list ref]:
On Thu, Feb 12, 2015 at 11:45 AM, Maxime Coquelin
[off-list ref] wrote:
quoted
Some DT ARM platforms need the reset controllers to be initialized before
the timers.
This is the case of the stm32 and sunxi platforms.
I would say this is the exception, not the rule and therefore should
be handled in a machine desc function. Or it could be part of your
timer setup. Or is the bootloader's problem (like arch timer setup).
The only valid way in my opinion would be to implement the init_time
callback (as your first proposal),
duplicating what performs the time_init() function.

Then, if other machines than sunxi and stm32 have some day the same need,
we could consider moving the call to reset_controller_of_init()
function to time_init().
We just want to limit how much this mechanism gets used.
Could you elaborate the reason why we want to limit this mechanism please?
I am not sure to understand.

Thanks,
Maxime
Rob
quoted
This patch adds a call to reset_controller_of_init() to the default
.init_time callback when RESET_CONTROLLER is used by the platform.

Signed-off-by: Maxime Coquelin <mcoquelin.stm32@gmail.com>
---
 arch/arm/kernel/time.c | 4 ++++
 1 file changed, 4 insertions(+)
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index 0cc7e58..4601b1e 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -20,6 +20,7 @@
 #include <linux/irq.h>
 #include <linux/kernel.h>
 #include <linux/profile.h>
+#include <linux/reset-controller.h>
 #include <linux/sched.h>
 #include <linux/sched_clock.h>
 #include <linux/smp.h>
@@ -117,6 +118,9 @@ void __init time_init(void)
        if (machine_desc->init_time) {
                machine_desc->init_time();
        } else {
+#ifdef CONFIG_RESET_CONTROLLER
+               reset_controller_of_init();
+#endif
 #ifdef CONFIG_COMMON_CLK
                of_clk_init(NULL);
 #endif
--
1.9.1

Re: [PATCH 05/14] ARM: call reset_controller_of_init from default time_init handler

From: Rob Herring <hidden>
Date: 2015-02-16 15:49:30

On Sun, Feb 15, 2015 at 5:12 PM, Russell King - ARM Linux
[off-list ref] wrote:
On Sun, Feb 15, 2015 at 04:17:31PM -0600, Rob Herring wrote:
quoted
On Thu, Feb 12, 2015 at 11:45 AM, Maxime Coquelin
[off-list ref] wrote:
quoted
Some DT ARM platforms need the reset controllers to be initialized before
the timers.
This is the case of the stm32 and sunxi platforms.
I would say this is the exception, not the rule and therefore should
be handled in a machine desc function. Or it could be part of your
timer setup. Or is the bootloader's problem (like arch timer setup).

We just want to limit how much this mechanism gets used.
Can you clarify please - what is "this mechanism"?  Placing explicit
calls at this location, or the whole OF_DECLARE_* stuff?
Well, it is both really, but I guess OF_DECLARE_ linker sections are
just an implementation detail of scattering various explicit init
calls. My concern is we'll end up with another initcall like mechanism
and the ordering problems associated with them. For example, what if
another platform needs clocks initialized before the reset controller?
I could see wanting to add gpio, pinctrl, syscon, etc. Another example
is the Beagleboard Cape folks want to read an I2C EEPROM early to
apply overlays before drivers probe. Where do we draw the line?
Sebastian suggested using the OF_DECLARE_* stuff for the Dove PMU -
so maybe you have a comment on that too?
I have the same position that it is the exception, not the rule, so
use the machine descriptor. I'm willing to be convinced otherwise, but
I think these cases need to be questioned.

Rob
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help