fttmr010 109 drivers/clocksource/timer-fttmr010.c static struct fttmr010 *local_fttmr; fttmr010 111 drivers/clocksource/timer-fttmr010.c static inline struct fttmr010 *to_fttmr010(struct clock_event_device *evt) fttmr010 113 drivers/clocksource/timer-fttmr010.c return container_of(evt, struct fttmr010, clkevt); fttmr010 139 drivers/clocksource/timer-fttmr010.c struct fttmr010 *fttmr010 = to_fttmr010(evt); fttmr010 143 drivers/clocksource/timer-fttmr010.c cr = readl(fttmr010->base + TIMER_CR); fttmr010 144 drivers/clocksource/timer-fttmr010.c cr &= ~fttmr010->t1_enable_val; fttmr010 145 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER_CR); fttmr010 147 drivers/clocksource/timer-fttmr010.c if (fttmr010->is_aspeed) { fttmr010 152 drivers/clocksource/timer-fttmr010.c writel(cycles, fttmr010->base + TIMER1_LOAD); fttmr010 155 drivers/clocksource/timer-fttmr010.c cr = readl(fttmr010->base + TIMER1_COUNT); fttmr010 156 drivers/clocksource/timer-fttmr010.c writel(cr + cycles, fttmr010->base + TIMER1_MATCH1); fttmr010 160 drivers/clocksource/timer-fttmr010.c cr = readl(fttmr010->base + TIMER_CR); fttmr010 161 drivers/clocksource/timer-fttmr010.c cr |= fttmr010->t1_enable_val; fttmr010 162 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER_CR); fttmr010 169 drivers/clocksource/timer-fttmr010.c struct fttmr010 *fttmr010 = to_fttmr010(evt); fttmr010 173 drivers/clocksource/timer-fttmr010.c cr = readl(fttmr010->base + TIMER_CR); fttmr010 174 drivers/clocksource/timer-fttmr010.c cr &= ~fttmr010->t1_enable_val; fttmr010 175 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER_CR); fttmr010 182 drivers/clocksource/timer-fttmr010.c struct fttmr010 *fttmr010 = to_fttmr010(evt); fttmr010 186 drivers/clocksource/timer-fttmr010.c cr = readl(fttmr010->base + TIMER_CR); fttmr010 187 drivers/clocksource/timer-fttmr010.c cr &= ~fttmr010->t1_enable_val; fttmr010 188 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER_CR); fttmr010 191 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER1_COUNT); fttmr010 192 drivers/clocksource/timer-fttmr010.c if (fttmr010->is_aspeed) { fttmr010 193 drivers/clocksource/timer-fttmr010.c writel(~0, fttmr010->base + TIMER1_LOAD); fttmr010 195 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER1_LOAD); fttmr010 198 drivers/clocksource/timer-fttmr010.c cr = readl(fttmr010->base + TIMER_INTR_MASK); fttmr010 201 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER_INTR_MASK); fttmr010 209 drivers/clocksource/timer-fttmr010.c struct fttmr010 *fttmr010 = to_fttmr010(evt); fttmr010 210 drivers/clocksource/timer-fttmr010.c u32 period = DIV_ROUND_CLOSEST(fttmr010->tick_rate, HZ); fttmr010 214 drivers/clocksource/timer-fttmr010.c cr = readl(fttmr010->base + TIMER_CR); fttmr010 215 drivers/clocksource/timer-fttmr010.c cr &= ~fttmr010->t1_enable_val; fttmr010 216 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER_CR); fttmr010 219 drivers/clocksource/timer-fttmr010.c if (fttmr010->is_aspeed) { fttmr010 220 drivers/clocksource/timer-fttmr010.c writel(period, fttmr010->base + TIMER1_LOAD); fttmr010 223 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER1_COUNT); fttmr010 224 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER1_LOAD); fttmr010 227 drivers/clocksource/timer-fttmr010.c cr = readl(fttmr010->base + TIMER_INTR_MASK); fttmr010 230 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER_INTR_MASK); fttmr010 234 drivers/clocksource/timer-fttmr010.c cr = readl(fttmr010->base + TIMER_CR); fttmr010 235 drivers/clocksource/timer-fttmr010.c cr |= fttmr010->t1_enable_val; fttmr010 236 drivers/clocksource/timer-fttmr010.c writel(cr, fttmr010->base + TIMER_CR); fttmr010 254 drivers/clocksource/timer-fttmr010.c struct fttmr010 *fttmr010; fttmr010 276 drivers/clocksource/timer-fttmr010.c fttmr010 = kzalloc(sizeof(*fttmr010), GFP_KERNEL); fttmr010 277 drivers/clocksource/timer-fttmr010.c if (!fttmr010) { fttmr010 281 drivers/clocksource/timer-fttmr010.c fttmr010->tick_rate = clk_get_rate(clk); fttmr010 283 drivers/clocksource/timer-fttmr010.c fttmr010->base = of_iomap(np, 0); fttmr010 284 drivers/clocksource/timer-fttmr010.c if (!fttmr010->base) { fttmr010 301 drivers/clocksource/timer-fttmr010.c fttmr010->t1_enable_val = TIMER_1_CR_ASPEED_ENABLE | fttmr010 303 drivers/clocksource/timer-fttmr010.c fttmr010->is_aspeed = true; fttmr010 305 drivers/clocksource/timer-fttmr010.c fttmr010->t1_enable_val = TIMER_1_CR_ENABLE | TIMER_1_CR_INT; fttmr010 310 drivers/clocksource/timer-fttmr010.c writel(TIMER_INT_ALL_MASK, fttmr010->base + TIMER_INTR_MASK); fttmr010 311 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER_INTR_STATE); fttmr010 324 drivers/clocksource/timer-fttmr010.c writel(val, fttmr010->base + TIMER_CR); fttmr010 330 drivers/clocksource/timer-fttmr010.c local_fttmr = fttmr010; fttmr010 331 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER2_COUNT); fttmr010 332 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER2_MATCH1); fttmr010 333 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER2_MATCH2); fttmr010 335 drivers/clocksource/timer-fttmr010.c if (fttmr010->is_aspeed) { fttmr010 336 drivers/clocksource/timer-fttmr010.c writel(~0, fttmr010->base + TIMER2_LOAD); fttmr010 337 drivers/clocksource/timer-fttmr010.c clocksource_mmio_init(fttmr010->base + TIMER2_COUNT, fttmr010 339 drivers/clocksource/timer-fttmr010.c fttmr010->tick_rate, fttmr010 342 drivers/clocksource/timer-fttmr010.c fttmr010->tick_rate); fttmr010 344 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER2_LOAD); fttmr010 345 drivers/clocksource/timer-fttmr010.c clocksource_mmio_init(fttmr010->base + TIMER2_COUNT, fttmr010 347 drivers/clocksource/timer-fttmr010.c fttmr010->tick_rate, fttmr010 350 drivers/clocksource/timer-fttmr010.c fttmr010->tick_rate); fttmr010 356 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER1_COUNT); fttmr010 357 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER1_LOAD); fttmr010 358 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER1_MATCH1); fttmr010 359 drivers/clocksource/timer-fttmr010.c writel(0, fttmr010->base + TIMER1_MATCH2); fttmr010 361 drivers/clocksource/timer-fttmr010.c "FTTMR010-TIMER1", &fttmr010->clkevt); fttmr010 367 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.name = "FTTMR010-TIMER1"; fttmr010 369 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.rating = 300; fttmr010 370 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.features = CLOCK_EVT_FEAT_PERIODIC | fttmr010 372 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.set_next_event = fttmr010_timer_set_next_event; fttmr010 373 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.set_state_shutdown = fttmr010_timer_shutdown; fttmr010 374 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.set_state_periodic = fttmr010_timer_set_periodic; fttmr010 375 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.set_state_oneshot = fttmr010_timer_set_oneshot; fttmr010 376 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.tick_resume = fttmr010_timer_shutdown; fttmr010 377 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.cpumask = cpumask_of(0); fttmr010 378 drivers/clocksource/timer-fttmr010.c fttmr010->clkevt.irq = irq; fttmr010 379 drivers/clocksource/timer-fttmr010.c clockevents_config_and_register(&fttmr010->clkevt, fttmr010 380 drivers/clocksource/timer-fttmr010.c fttmr010->tick_rate, fttmr010 385 drivers/clocksource/timer-fttmr010.c if (fttmr010->is_aspeed) fttmr010 386 drivers/clocksource/timer-fttmr010.c fttmr010->delay_timer.read_current_timer = fttmr010 389 drivers/clocksource/timer-fttmr010.c fttmr010->delay_timer.read_current_timer = fttmr010 391 drivers/clocksource/timer-fttmr010.c fttmr010->delay_timer.freq = fttmr010->tick_rate; fttmr010 392 drivers/clocksource/timer-fttmr010.c register_current_timer_delay(&fttmr010->delay_timer); fttmr010 398 drivers/clocksource/timer-fttmr010.c iounmap(fttmr010->base); fttmr010 400 drivers/clocksource/timer-fttmr010.c kfree(fttmr010); fttmr010 417 drivers/clocksource/timer-fttmr010.c TIMER_OF_DECLARE(fttmr010, "faraday,fttmr010", fttmr010_timer_init);