From cfde6e7431270b9dbb827878c4332cb102e5a85f Mon Sep 17 00:00:00 2001 From: Pawel Moll Date: Thu, 23 Feb 2012 14:57:11 +0000 Subject: [PATCH] --- yaml --- r: 295746 b: refs/heads/master c: e129440af63879808ee0a40613fd1cece935678e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/arm/plat-versatile/localtimer.c | 26 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 32a744ba6563..cb89a1c9511a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 98ed4ceb93ba22268f35ebcbb7de0cb1c7e70231 +refs/heads/master: e129440af63879808ee0a40613fd1cece935678e diff --git a/trunk/arch/arm/plat-versatile/localtimer.c b/trunk/arch/arm/plat-versatile/localtimer.c index 0fb3961999b5..e15668793159 100644 --- a/trunk/arch/arm/plat-versatile/localtimer.c +++ b/trunk/arch/arm/plat-versatile/localtimer.c @@ -11,16 +11,42 @@ #include #include #include +#include +#include #include #include #include +const static struct of_device_id twd_of_match[] __initconst = { + { .compatible = "arm,cortex-a9-twd-timer", }, + { .compatible = "arm,cortex-a5-twd-timer", }, + { .compatible = "arm,arm11mp-twd-timer", }, + { }, +}; + /* * Setup the local clock events for a CPU. */ int __cpuinit local_timer_setup(struct clock_event_device *evt) { +#if defined(CONFIG_OF) + static int dt_node_probed; + + /* Look for TWD node only once */ + if (!dt_node_probed) { + struct device_node *node = of_find_matching_node(NULL, + twd_of_match); + + if (node) + twd_base = of_iomap(node, 0); + + dt_node_probed = 1; + } +#endif + if (!twd_base) + return -ENXIO; + evt->irq = IRQ_LOCALTIMER; twd_timer_setup(evt); return 0;