aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-omap
diff options
context:
space:
mode:
authorJon Hunter <jon-hunter@ti.com>2012-06-05 13:34:58 -0400
committerTony Lindgren <tony@atomide.com>2012-06-14 05:39:47 -0400
commitbca4580845cbffb455d77783fc7e58a94b3904e0 (patch)
tree3ad2e1e3c870e1ebdfaf922372ed5cbdafc32d75 /arch/arm/plat-omap
parent6615975bc58a1234bd401a7ff231dae85631fd58 (diff)
ARM: OMAP1: Fix dmtimer support
OMAP1 dmtimer support is currently broken. When a dmtimer is requested by the omap_dm_timer_request() function fails to allocate a dmtimer because the call to clk_get() inside omap_dm_timer_prepare fails. The clk_get() fails simply because the clock data for the OMAP1 dmtimers is not present. Ideally this should be fixed by moving OMAP1 dmtimers to use the clock framework. For now simply fix this by using the "TIMER_NEEDS_RESET" flag to identify an OMAP1 device and avoid calling clk_get(). Although this is not the ideal fix and should be corrected, this flag has already been use for the same purpose in omap_dm_timer_stop(). Signed-off-by: Jon Hunter <jon-hunter@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/plat-omap')
-rw-r--r--arch/arm/plat-omap/dmtimer.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index e3e22b3dc5c2..6510e5e7b7e3 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -137,11 +137,17 @@ int omap_dm_timer_prepare(struct omap_dm_timer *timer)
137{ 137{
138 int ret; 138 int ret;
139 139
140 timer->fclk = clk_get(&timer->pdev->dev, "fck"); 140 /*
141 if (WARN_ON_ONCE(IS_ERR_OR_NULL(timer->fclk))) { 141 * FIXME: OMAP1 devices do not use the clock framework for dmtimers so
142 timer->fclk = NULL; 142 * do not call clk_get() for these devices.
143 dev_err(&timer->pdev->dev, ": No fclk handle.\n"); 143 */
144 return -EINVAL; 144 if (!(timer->capability & OMAP_TIMER_NEEDS_RESET)) {
145 timer->fclk = clk_get(&timer->pdev->dev, "fck");
146 if (WARN_ON_ONCE(IS_ERR_OR_NULL(timer->fclk))) {
147 timer->fclk = NULL;
148 dev_err(&timer->pdev->dev, ": No fclk handle.\n");
149 return -EINVAL;
150 }
145 } 151 }
146 152
147 if (timer->capability & OMAP_TIMER_NEEDS_RESET) 153 if (timer->capability & OMAP_TIMER_NEEDS_RESET)