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
					
				
			
		
					 3 changed files with 13 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -69,7 +69,7 @@
 | 
			
		|||
/* MAX_GPTIMER_ID: number of GPTIMERs on the chip */
 | 
			
		||||
#define MAX_GPTIMER_ID		12
 | 
			
		||||
 | 
			
		||||
u32 sys_timer_reserved;
 | 
			
		||||
static u32 sys_timer_reserved;
 | 
			
		||||
 | 
			
		||||
/* 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->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),
 | 
			
		||||
			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->irq = irq->start;
 | 
			
		||||
	timer->reserved = pdata->reserved;
 | 
			
		||||
	timer->pdev = pdev;
 | 
			
		||||
 | 
			
		||||
	/* 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);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	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 */
 | 
			
		||||
	spin_lock_irqsave(&dm_timer_lock, flags);
 | 
			
		||||
	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 timer_ip_version;
 | 
			
		||||
	u32 needs_manual_reset:1;
 | 
			
		||||
	bool reserved;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct omap_dm_timer *omap_dm_timer_request(void);
 | 
			
		||||
| 
						 | 
				
			
			@ -248,7 +249,6 @@ struct omap_dm_timer {
 | 
			
		|||
	struct list_head node;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
extern u32 sys_timer_reserved;
 | 
			
		||||
int omap_dm_timer_prepare(struct omap_dm_timer *timer);
 | 
			
		||||
 | 
			
		||||
static inline u32 __omap_dm_timer_read(struct omap_dm_timer *timer, u32 reg,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue