Lines Matching refs:timer

22 #define ALTR_TIMER_COMPATIBLE		"altr,timer-1.0"
42 struct nios2_timer timer;
47 struct nios2_timer timer;
63 static u16 timer_readw(struct nios2_timer *timer, u32 offs)
65 return readw(timer->base + offs);
68 static void timer_writew(struct nios2_timer *timer, u16 val, u32 offs)
70 writew(val, timer->base + offs);
73 static inline unsigned long read_timersnapshot(struct nios2_timer *timer)
77 timer_writew(timer, 0, ALTERA_TIMER_SNAPL_REG);
78 count = timer_readw(timer, ALTERA_TIMER_SNAPH_REG) << 16 |
79 timer_readw(timer, ALTERA_TIMER_SNAPL_REG);
91 count = read_timersnapshot(&nios2_cs->timer);
110 /* Only read timer if it has been initialized */
111 if (nios2_cs.timer.base)
117 static void nios2_timer_start(struct nios2_timer *timer)
121 ctrl = timer_readw(timer, ALTERA_TIMER_CONTROL_REG);
123 timer_writew(timer, ctrl, ALTERA_TIMER_CONTROL_REG);
126 static void nios2_timer_stop(struct nios2_timer *timer)
130 ctrl = timer_readw(timer, ALTERA_TIMER_CONTROL_REG);
132 timer_writew(timer, ctrl, ALTERA_TIMER_CONTROL_REG);
135 static void nios2_timer_config(struct nios2_timer *timer, unsigned long period,
140 /* The timer's actual period is one cycle greater than the value
144 ctrl = timer_readw(timer, ALTERA_TIMER_CONTROL_REG);
146 timer_writew(timer, ctrl | ALTERA_TIMER_CONTROL_STOP_MSK,
150 timer_writew(timer, period, ALTERA_TIMER_PERIODL_REG);
151 timer_writew(timer, period >> 16, ALTERA_TIMER_PERIODH_REG);
158 timer_writew(timer, ctrl, ALTERA_TIMER_CONTROL_REG);
166 nios2_timer_config(&nios2_ced->timer, delta, false);
174 struct nios2_timer *timer = &nios2_ced->timer;
176 nios2_timer_stop(timer);
184 struct nios2_timer *timer = &nios2_ced->timer;
186 period = DIV_ROUND_UP(timer->freq, HZ);
187 nios2_timer_config(timer, period, true);
194 struct nios2_timer *timer = &nios2_ced->timer;
196 nios2_timer_start(timer);
206 timer_writew(&nios2_ced->timer, 0, ALTERA_TIMER_STATUS_REG);
243 static __init int nios2_clockevent_init(struct device_node *timer)
249 ret = nios2_timer_get_base_and_freq(timer, &iobase, &freq);
253 irq = irq_of_parse_and_map(timer, 0);
255 pr_crit("Unable to parse timer irq\n");
259 nios2_ce.timer.base = iobase;
260 nios2_ce.timer.freq = freq;
265 nios2_timer_stop(&nios2_ce.timer);
267 timer_writew(&nios2_ce.timer, 0, ALTERA_TIMER_STATUS_REG);
269 ret = request_irq(irq, timer_interrupt, IRQF_TIMER, timer->name,
272 pr_crit("Unable to setup timer irq\n");
281 static __init int nios2_clocksource_init(struct device_node *timer)
288 ret = nios2_timer_get_base_and_freq(timer, &iobase, &freq);
292 nios2_cs.timer.base = iobase;
293 nios2_cs.timer.freq = freq;
299 timer_writew(&nios2_cs.timer, USHRT_MAX, ALTERA_TIMER_PERIODL_REG);
300 timer_writew(&nios2_cs.timer, USHRT_MAX, ALTERA_TIMER_PERIODH_REG);
304 timer_writew(&nios2_cs.timer, ctrl, ALTERA_TIMER_CONTROL_REG);
313 * The first timer instance will use as a clockevent. If there are two or
317 static int __init nios2_time_init(struct device_node *timer)
324 ret = nios2_clockevent_init(timer);
327 ret = nios2_clocksource_init(timer);
354 panic("%d timer is found, it needs 2 timers in system\n", count);