Grant,
On 06/25/2011 03:47 PM, Grant Likely wrote:
On Fri, Jun 24, 2011 at 03:10:57PM +0100, Marc Zyngier wrote:
quoted
Use of_early_platform_populate() to collect nodes with the
"localtimer" compatible property and register them with
the early platform "bus".
Signed-off-by: Marc Zyngier <redacted>
---
arch/arm/kernel/time.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index 32d0df8..08a28ef 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -25,6 +25,7 @@
#include <linux/timer.h>
#include <linux/irq.h>
#include <linux/platform_device.h>
+#include <linux/of_platform.h>
#include <linux/mc146818rtc.h>
@@ -156,6 +157,9 @@ static void __init __arm_late_time_init(void)
arm_late_time_init();
#ifdef CONFIG_LOCAL_TIMER_DEVICES
+#ifdef CONFIG_OF_FLATTREE
+ of_early_platform_populate("localtimer");
+#endif
Rather than #ifdeffing around the function call, it is often cleaner
to have an #else in the header file that defines an empty static
inline.
quoted
early_platform_driver_register_all("localtimer");
early_platform_driver_probe("localtimer", 1, 0);
I suggested in my other reply that early_platform_driver should not be
used. It looks like it is already being used, so I'll back off a bit
from that position. However, the structure of the code really
shouldn't be any different between clock devices being statically
declared vs. clock data being obtained from the DT.
It's not really already being used. It is added in Marc's previous patch
series to move timers to drivers/clocksource.
Deferring driver probe doesn't really help for timers as they have to be
up early. If early platform drivers shouldn't be used, then why was it
accepted into the kernel in the first place? It doesn't make sense that
it is okay for one arch (sh), but not another (arm), or that it is okay
for non-DT, but not for DT.
Rob