diff options
| -rw-r--r-- | arch/m68knommu/platform/coldfire/timers.c | 17 | 
1 files changed, 12 insertions, 5 deletions
| diff --git a/arch/m68knommu/platform/coldfire/timers.c b/arch/m68knommu/platform/coldfire/timers.c index a60213e877ef..ba5a9f32ebd4 100644 --- a/arch/m68knommu/platform/coldfire/timers.c +++ b/arch/m68knommu/platform/coldfire/timers.c | |||
| @@ -148,25 +148,32 @@ irqreturn_t coldfire_profile_tick(int irq, void *dummy) | |||
| 148 | /* Reset ColdFire timer2 */ | 148 | /* Reset ColdFire timer2 */ | 
| 149 | __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, PA(MCFTIMER_TER)); | 149 | __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, PA(MCFTIMER_TER)); | 
| 150 | if (current->pid) | 150 | if (current->pid) | 
| 151 | profile_tick(CPU_PROFILING, regs); | 151 | profile_tick(CPU_PROFILING); | 
| 152 | return IRQ_HANDLED; | 152 | return IRQ_HANDLED; | 
| 153 | } | 153 | } | 
| 154 | 154 | ||
| 155 | /***************************************************************************/ | 155 | /***************************************************************************/ | 
| 156 | 156 | ||
| 157 | static struct irqaction coldfire_profile_irq = { | ||
| 158 | .name = "profile timer", | ||
| 159 | .flags = IRQF_DISABLED | IRQF_TIMER, | ||
| 160 | .handler = coldfire_profile_tick, | ||
| 161 | }; | ||
| 162 | |||
| 157 | void coldfire_profile_init(void) | 163 | void coldfire_profile_init(void) | 
| 158 | { | 164 | { | 
| 159 | printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n", PROFILEHZ); | 165 | printk(KERN_INFO "PROFILE: lodging TIMER2 @ %dHz as profile timer\n", | 
| 166 | PROFILEHZ); | ||
| 167 | |||
| 168 | setup_irq(mcf_profilevector, &coldfire_profile_irq); | ||
| 160 | 169 | ||
| 161 | /* Set up TIMER 2 as high speed profile clock */ | 170 | /* Set up TIMER 2 as high speed profile clock */ | 
| 162 | __raw_writew(MCFTIMER_TMR_DISABLE, PA(MCFTIMER_TMR)); | 171 | __raw_writew(MCFTIMER_TMR_DISABLE, PA(MCFTIMER_TMR)); | 
| 163 | 172 | ||
| 164 | __raw_writetrr(((MCF_CLK / 16) / PROFILEHZ), PA(MCFTIMER_TRR)); | 173 | __raw_writetrr(((MCF_BUSCLK / 16) / PROFILEHZ), PA(MCFTIMER_TRR)); | 
| 165 | __raw_writew(MCFTIMER_TMR_ENORI | MCFTIMER_TMR_CLK16 | | 174 | __raw_writew(MCFTIMER_TMR_ENORI | MCFTIMER_TMR_CLK16 | | 
| 166 | MCFTIMER_TMR_RESTART | MCFTIMER_TMR_ENABLE, PA(MCFTIMER_TMR)); | 175 | MCFTIMER_TMR_RESTART | MCFTIMER_TMR_ENABLE, PA(MCFTIMER_TMR)); | 
| 167 | 176 | ||
| 168 | request_irq(mcf_profilevector, coldfire_profile_tick, | ||
| 169 | (IRQF_DISABLED | IRQ_FLG_FAST), "profile timer", NULL); | ||
| 170 | mcf_settimericr(2, 7); | 177 | mcf_settimericr(2, 7); | 
| 171 | } | 178 | } | 
| 172 | 179 | ||
