Lines Matching refs:timer

64 	struct zevio_timer *timer = container_of(dev, struct zevio_timer,  in zevio_timer_set_event()  local
67 writel(delta, timer->timer1 + IO_CURRENT_VAL); in zevio_timer_set_event()
69 timer->timer1 + IO_CONTROL); in zevio_timer_set_event()
76 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_shutdown() local
80 writel(0, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_shutdown()
81 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_shutdown()
83 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_shutdown()
89 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_set_oneshot() local
93 writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_set_oneshot()
94 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_set_oneshot()
100 struct zevio_timer *timer = dev_id; in zevio_timer_interrupt() local
103 intr = readl(timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_interrupt()
107 writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_interrupt()
108 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_interrupt()
110 if (timer->clkevt.event_handler) in zevio_timer_interrupt()
111 timer->clkevt.event_handler(&timer->clkevt); in zevio_timer_interrupt()
118 struct zevio_timer *timer; in zevio_timer_add() local
122 timer = kzalloc(sizeof(*timer), GFP_KERNEL); in zevio_timer_add()
123 if (!timer) in zevio_timer_add()
126 timer->base = of_iomap(node, 0); in zevio_timer_add()
127 if (!timer->base) { in zevio_timer_add()
131 timer->timer1 = timer->base + IO_TIMER1; in zevio_timer_add()
132 timer->timer2 = timer->base + IO_TIMER2; in zevio_timer_add()
134 timer->clk = of_clk_get(node, 0); in zevio_timer_add()
135 if (IS_ERR(timer->clk)) { in zevio_timer_add()
136 ret = PTR_ERR(timer->clk); in zevio_timer_add()
141 timer->interrupt_regs = of_iomap(node, 1); in zevio_timer_add()
145 scnprintf(timer->clocksource_name, sizeof(timer->clocksource_name), in zevio_timer_add()
149 scnprintf(timer->clockevent_name, sizeof(timer->clockevent_name), in zevio_timer_add()
153 if (timer->interrupt_regs && irqnr) { in zevio_timer_add()
154 timer->clkevt.name = timer->clockevent_name; in zevio_timer_add()
155 timer->clkevt.set_next_event = zevio_timer_set_event; in zevio_timer_add()
156 timer->clkevt.set_state_shutdown = zevio_timer_shutdown; in zevio_timer_add()
157 timer->clkevt.set_state_oneshot = zevio_timer_set_oneshot; in zevio_timer_add()
158 timer->clkevt.tick_resume = zevio_timer_set_oneshot; in zevio_timer_add()
159 timer->clkevt.rating = 200; in zevio_timer_add()
160 timer->clkevt.cpumask = cpu_possible_mask; in zevio_timer_add()
161 timer->clkevt.features = CLOCK_EVT_FEAT_ONESHOT; in zevio_timer_add()
162 timer->clkevt.irq = irqnr; in zevio_timer_add()
164 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_add()
165 writel(0, timer->timer1 + IO_DIVIDER); in zevio_timer_add()
168 writel(0, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_add()
169 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_add()
172 writel(0, timer->base + IO_MATCH(TIMER_MATCH)); in zevio_timer_add()
176 timer->clockevent_name, timer)) { in zevio_timer_add()
178 timer->clockevent_name); in zevio_timer_add()
181 clockevents_config_and_register(&timer->clkevt, in zevio_timer_add()
182 clk_get_rate(timer->clk), 0x0001, 0xffff); in zevio_timer_add()
183 pr_info("Added %s as clockevent\n", timer->clockevent_name); in zevio_timer_add()
186 writel(CNTL_STOP_TIMER, timer->timer2 + IO_CONTROL); in zevio_timer_add()
187 writel(0, timer->timer2 + IO_CURRENT_VAL); in zevio_timer_add()
188 writel(0, timer->timer2 + IO_DIVIDER); in zevio_timer_add()
190 timer->timer2 + IO_CONTROL); in zevio_timer_add()
192 clocksource_mmio_init(timer->timer2 + IO_CURRENT_VAL, in zevio_timer_add()
193 timer->clocksource_name, in zevio_timer_add()
194 clk_get_rate(timer->clk), in zevio_timer_add()
198 pr_info("Added %s as clocksource\n", timer->clocksource_name); in zevio_timer_add()
202 iounmap(timer->base); in zevio_timer_add()
204 kfree(timer); in zevio_timer_add()