Lines Matching refs:fttmr010
80 struct fttmr010 { struct
95 static struct fttmr010 *local_fttmr; argument
97 static inline struct fttmr010 *to_fttmr010(struct clock_event_device *evt) in to_fttmr010()
99 return container_of(evt, struct fttmr010, clkevt); in to_fttmr010()
125 struct fttmr010 *fttmr010 = to_fttmr010(evt); in fttmr010_timer_set_next_event() local
129 cr = readl(fttmr010->base + TIMER_CR); in fttmr010_timer_set_next_event()
130 cr &= ~fttmr010->t1_enable_val; in fttmr010_timer_set_next_event()
131 writel(cr, fttmr010->base + TIMER_CR); in fttmr010_timer_set_next_event()
133 if (fttmr010->count_down) { in fttmr010_timer_set_next_event()
138 writel(cycles, fttmr010->base + TIMER1_LOAD); in fttmr010_timer_set_next_event()
141 cr = readl(fttmr010->base + TIMER1_COUNT); in fttmr010_timer_set_next_event()
142 writel(cr + cycles, fttmr010->base + TIMER1_MATCH1); in fttmr010_timer_set_next_event()
146 cr = readl(fttmr010->base + TIMER_CR); in fttmr010_timer_set_next_event()
147 cr |= fttmr010->t1_enable_val; in fttmr010_timer_set_next_event()
148 writel(cr, fttmr010->base + TIMER_CR); in fttmr010_timer_set_next_event()
155 struct fttmr010 *fttmr010 = to_fttmr010(evt); in fttmr010_timer_shutdown() local
159 cr = readl(fttmr010->base + TIMER_CR); in fttmr010_timer_shutdown()
160 cr &= ~fttmr010->t1_enable_val; in fttmr010_timer_shutdown()
161 writel(cr, fttmr010->base + TIMER_CR); in fttmr010_timer_shutdown()
168 struct fttmr010 *fttmr010 = to_fttmr010(evt); in fttmr010_timer_set_oneshot() local
172 cr = readl(fttmr010->base + TIMER_CR); in fttmr010_timer_set_oneshot()
173 cr &= ~fttmr010->t1_enable_val; in fttmr010_timer_set_oneshot()
174 writel(cr, fttmr010->base + TIMER_CR); in fttmr010_timer_set_oneshot()
177 writel(0, fttmr010->base + TIMER1_COUNT); in fttmr010_timer_set_oneshot()
178 if (fttmr010->count_down) in fttmr010_timer_set_oneshot()
179 writel(~0, fttmr010->base + TIMER1_LOAD); in fttmr010_timer_set_oneshot()
181 writel(0, fttmr010->base + TIMER1_LOAD); in fttmr010_timer_set_oneshot()
184 cr = readl(fttmr010->base + TIMER_INTR_MASK); in fttmr010_timer_set_oneshot()
187 writel(cr, fttmr010->base + TIMER_INTR_MASK); in fttmr010_timer_set_oneshot()
194 struct fttmr010 *fttmr010 = to_fttmr010(evt); in fttmr010_timer_set_periodic() local
195 u32 period = DIV_ROUND_CLOSEST(fttmr010->tick_rate, HZ); in fttmr010_timer_set_periodic()
199 cr = readl(fttmr010->base + TIMER_CR); in fttmr010_timer_set_periodic()
200 cr &= ~fttmr010->t1_enable_val; in fttmr010_timer_set_periodic()
201 writel(cr, fttmr010->base + TIMER_CR); in fttmr010_timer_set_periodic()
204 if (fttmr010->count_down) { in fttmr010_timer_set_periodic()
205 writel(period, fttmr010->base + TIMER1_LOAD); in fttmr010_timer_set_periodic()
206 writel(0, fttmr010->base + TIMER1_MATCH1); in fttmr010_timer_set_periodic()
209 writel(cr, fttmr010->base + TIMER1_COUNT); in fttmr010_timer_set_periodic()
210 writel(cr, fttmr010->base + TIMER1_LOAD); in fttmr010_timer_set_periodic()
213 cr = readl(fttmr010->base + TIMER_INTR_MASK); in fttmr010_timer_set_periodic()
216 writel(cr, fttmr010->base + TIMER_INTR_MASK); in fttmr010_timer_set_periodic()
220 cr = readl(fttmr010->base + TIMER_CR); in fttmr010_timer_set_periodic()
221 cr |= fttmr010->t1_enable_val; in fttmr010_timer_set_periodic()
222 writel(cr, fttmr010->base + TIMER_CR); in fttmr010_timer_set_periodic()
240 struct fttmr010 *fttmr010; in fttmr010_common_init() local
262 fttmr010 = kzalloc(sizeof(*fttmr010), GFP_KERNEL); in fttmr010_common_init()
263 if (!fttmr010) { in fttmr010_common_init()
267 fttmr010->tick_rate = clk_get_rate(clk); in fttmr010_common_init()
269 fttmr010->base = of_iomap(np, 0); in fttmr010_common_init()
270 if (!fttmr010->base) { in fttmr010_common_init()
288 fttmr010->t1_enable_val = TIMER_1_CR_ASPEED_ENABLE | in fttmr010_common_init()
291 fttmr010->count_down = true; in fttmr010_common_init()
293 fttmr010->t1_enable_val = TIMER_1_CR_ENABLE | TIMER_1_CR_INT; in fttmr010_common_init()
299 writel(TIMER_INT_ALL_MASK, fttmr010->base + TIMER_INTR_MASK); in fttmr010_common_init()
300 writel(0, fttmr010->base + TIMER_INTR_STATE); in fttmr010_common_init()
310 if (!fttmr010->count_down) in fttmr010_common_init()
313 writel(val, fttmr010->base + TIMER_CR); in fttmr010_common_init()
319 local_fttmr = fttmr010; in fttmr010_common_init()
320 writel(0, fttmr010->base + TIMER2_COUNT); in fttmr010_common_init()
321 writel(0, fttmr010->base + TIMER2_MATCH1); in fttmr010_common_init()
322 writel(0, fttmr010->base + TIMER2_MATCH2); in fttmr010_common_init()
324 if (fttmr010->count_down) { in fttmr010_common_init()
325 writel(~0, fttmr010->base + TIMER2_LOAD); in fttmr010_common_init()
326 clocksource_mmio_init(fttmr010->base + TIMER2_COUNT, in fttmr010_common_init()
328 fttmr010->tick_rate, in fttmr010_common_init()
331 fttmr010->tick_rate); in fttmr010_common_init()
333 writel(0, fttmr010->base + TIMER2_LOAD); in fttmr010_common_init()
334 clocksource_mmio_init(fttmr010->base + TIMER2_COUNT, in fttmr010_common_init()
336 fttmr010->tick_rate, in fttmr010_common_init()
339 fttmr010->tick_rate); in fttmr010_common_init()
345 writel(0, fttmr010->base + TIMER1_COUNT); in fttmr010_common_init()
346 writel(0, fttmr010->base + TIMER1_LOAD); in fttmr010_common_init()
347 writel(0, fttmr010->base + TIMER1_MATCH1); in fttmr010_common_init()
348 writel(0, fttmr010->base + TIMER1_MATCH2); in fttmr010_common_init()
350 "FTTMR010-TIMER1", &fttmr010->clkevt); in fttmr010_common_init()
356 fttmr010->clkevt.name = "FTTMR010-TIMER1"; in fttmr010_common_init()
358 fttmr010->clkevt.rating = 300; in fttmr010_common_init()
359 fttmr010->clkevt.features = CLOCK_EVT_FEAT_PERIODIC | in fttmr010_common_init()
361 fttmr010->clkevt.set_next_event = fttmr010_timer_set_next_event; in fttmr010_common_init()
362 fttmr010->clkevt.set_state_shutdown = fttmr010_timer_shutdown; in fttmr010_common_init()
363 fttmr010->clkevt.set_state_periodic = fttmr010_timer_set_periodic; in fttmr010_common_init()
364 fttmr010->clkevt.set_state_oneshot = fttmr010_timer_set_oneshot; in fttmr010_common_init()
365 fttmr010->clkevt.tick_resume = fttmr010_timer_shutdown; in fttmr010_common_init()
366 fttmr010->clkevt.cpumask = cpumask_of(0); in fttmr010_common_init()
367 fttmr010->clkevt.irq = irq; in fttmr010_common_init()
368 clockevents_config_and_register(&fttmr010->clkevt, in fttmr010_common_init()
369 fttmr010->tick_rate, in fttmr010_common_init()
374 if (fttmr010->count_down) in fttmr010_common_init()
375 fttmr010->delay_timer.read_current_timer = in fttmr010_common_init()
378 fttmr010->delay_timer.read_current_timer = in fttmr010_common_init()
380 fttmr010->delay_timer.freq = fttmr010->tick_rate; in fttmr010_common_init()
381 register_current_timer_delay(&fttmr010->delay_timer); in fttmr010_common_init()
387 iounmap(fttmr010->base); in fttmr010_common_init()
389 kfree(fttmr010); in fttmr010_common_init()
406 TIMER_OF_DECLARE(fttmr010, "faraday,fttmr010", fttmr010_timer_init);