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: Tony Lindgren <tony@atomide.com>
This commit is contained in:
parent
ffe07ceae1
commit
0dad9faeae
@ -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)
|
|||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
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 {
|
|||||||
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 {
|
|||||||
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,
|
||||||
|
Loading…
Reference in New Issue
Block a user