@@ -41,6 +41,8 @@
#define OMAP1_DM_TIMER_COUNT 8
+u32 sys_timer_reserved;
+
static int omap1_dm_timer_set_src(struct platform_device *pdev,
int source)
{
@@ -520,10 +520,14 @@ static int __devinit omap_dm_timer_probe(struct platform_device *pdev)
timer->pdev = pdev;
timer->reserved = 0;
- /* Skip pm_runtime_enable for OMAP1 */
- if (!pdata->needs_manual_reset)
+ if (!pdata->needs_manual_reset) {
pm_runtime_enable(&pdev->dev);
+ /* Mark clocksource and clockevent timers as reserved */
+ if ((sys_timer_reserved >> (pdev->id - 1)) & 0x1)
+ timer->reserved = 1;
+ }
+
/* add the timer element to the list */
mutex_lock(&dm_timer_mutex);
list_add_tail(&timer->node, &omap_timer_list);
In driver probe use sys_timer_reserved to identify which all timers have already been used for clocksource and clockevent. Mark all those timers as reserved so that no one else can use them. Signed-off-by: Tarun Kanti DebBarma <tarun.kanti@ti.com> --- arch/arm/mach-omap1/timer.c | 2 ++ arch/arm/plat-omap/dmtimer.c | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-)