提交 0dad9fae 编写于 作者: T Tony Lindgren

ARM: OMAP: dmtimer: skip reserved timers

Pass the reserved flag in pdata and use it. We can
now make sys_timer_reserved static to mach-omap2/timer.c.
Signed-off-by: NTony Lindgren <tony@atomide.com>
上级 ffe07cea
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */ /* MAX_GPTIMER_ID: number of GPTIMERs on the chip */
#define MAX_GPTIMER_ID 12 #define MAX_GPTIMER_ID 12
u32 sys_timer_reserved; static u32 sys_timer_reserved;
/* Clockevent code */ /* Clockevent code */
...@@ -463,6 +463,10 @@ static int __init omap_timer_init(struct omap_hwmod *oh, void *unused) ...@@ -463,6 +463,10 @@ static int __init omap_timer_init(struct omap_hwmod *oh, void *unused)
pdata->set_timer_src = omap2_dm_timer_set_src; pdata->set_timer_src = omap2_dm_timer_set_src;
pdata->timer_ip_version = oh->class->rev; pdata->timer_ip_version = oh->class->rev;
/* Mark clocksource and clockevent timers as reserved */
if ((sys_timer_reserved >> (id - 1)) & 0x1)
pdata->reserved = 1;
od = omap_device_build(name, id, oh, pdata, sizeof(*pdata), od = omap_device_build(name, id, oh, pdata, sizeof(*pdata),
omap2_dmtimer_latency, omap2_dmtimer_latency,
ARRAY_SIZE(omap2_dmtimer_latency), ARRAY_SIZE(omap2_dmtimer_latency),
......
...@@ -509,6 +509,7 @@ static int __devinit omap_dm_timer_probe(struct platform_device *pdev) ...@@ -509,6 +509,7 @@ static int __devinit omap_dm_timer_probe(struct platform_device *pdev)
timer->id = pdev->id; timer->id = pdev->id;
timer->irq = irq->start; timer->irq = irq->start;
timer->reserved = pdata->reserved;
timer->pdev = pdev; timer->pdev = pdev;
/* Skip pm_runtime_enable for OMAP1 */ /* Skip pm_runtime_enable for OMAP1 */
...@@ -517,6 +518,12 @@ static int __devinit omap_dm_timer_probe(struct platform_device *pdev) ...@@ -517,6 +518,12 @@ static int __devinit omap_dm_timer_probe(struct platform_device *pdev)
pm_runtime_irq_safe(&pdev->dev); pm_runtime_irq_safe(&pdev->dev);
} }
if (!timer->reserved) {
pm_runtime_get_sync(&pdev->dev);
__omap_dm_timer_init_regs(timer);
pm_runtime_put(&pdev->dev);
}
/* add the timer element to the list */ /* add the timer element to the list */
spin_lock_irqsave(&dm_timer_lock, flags); spin_lock_irqsave(&dm_timer_lock, flags);
list_add_tail(&timer->node, &omap_timer_list); list_add_tail(&timer->node, &omap_timer_list);
......
...@@ -77,6 +77,7 @@ struct dmtimer_platform_data { ...@@ -77,6 +77,7 @@ struct dmtimer_platform_data {
int (*set_timer_src)(struct platform_device *pdev, int source); int (*set_timer_src)(struct platform_device *pdev, int source);
int timer_ip_version; int timer_ip_version;
u32 needs_manual_reset:1; u32 needs_manual_reset:1;
bool reserved;
}; };
struct omap_dm_timer *omap_dm_timer_request(void); struct omap_dm_timer *omap_dm_timer_request(void);
...@@ -248,7 +249,6 @@ struct omap_dm_timer { ...@@ -248,7 +249,6 @@ struct omap_dm_timer {
struct list_head node; struct list_head node;
}; };
extern u32 sys_timer_reserved;
int omap_dm_timer_prepare(struct omap_dm_timer *timer); int omap_dm_timer_prepare(struct omap_dm_timer *timer);
static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg, static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册