Lines Matching refs:timer

69 	struct zevio_timer *timer = container_of(dev, struct zevio_timer,  in zevio_timer_set_event()  local
72 writel(delta, timer->timer1 + IO_CURRENT_VAL); in zevio_timer_set_event()
74 timer->timer1 + IO_CONTROL); in zevio_timer_set_event()
82 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_set_mode() local
89 writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_set_mode()
90 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_set_mode()
95 writel(0, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_set_mode()
96 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_set_mode()
98 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_set_mode()
109 struct zevio_timer *timer = dev_id; in zevio_timer_interrupt() local
112 intr = readl(timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_interrupt()
116 writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_interrupt()
117 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_interrupt()
119 if (timer->clkevt.event_handler) in zevio_timer_interrupt()
120 timer->clkevt.event_handler(&timer->clkevt); in zevio_timer_interrupt()
127 struct zevio_timer *timer; in zevio_timer_add() local
131 timer = kzalloc(sizeof(*timer), GFP_KERNEL); in zevio_timer_add()
132 if (!timer) in zevio_timer_add()
135 timer->base = of_iomap(node, 0); in zevio_timer_add()
136 if (!timer->base) { in zevio_timer_add()
140 timer->timer1 = timer->base + IO_TIMER1; in zevio_timer_add()
141 timer->timer2 = timer->base + IO_TIMER2; in zevio_timer_add()
143 timer->clk = of_clk_get(node, 0); in zevio_timer_add()
144 if (IS_ERR(timer->clk)) { in zevio_timer_add()
145 ret = PTR_ERR(timer->clk); in zevio_timer_add()
150 timer->interrupt_regs = of_iomap(node, 1); in zevio_timer_add()
154 scnprintf(timer->clocksource_name, sizeof(timer->clocksource_name), in zevio_timer_add()
158 scnprintf(timer->clockevent_name, sizeof(timer->clockevent_name), in zevio_timer_add()
162 if (timer->interrupt_regs && irqnr) { in zevio_timer_add()
163 timer->clkevt.name = timer->clockevent_name; in zevio_timer_add()
164 timer->clkevt.set_next_event = zevio_timer_set_event; in zevio_timer_add()
165 timer->clkevt.set_mode = zevio_timer_set_mode; in zevio_timer_add()
166 timer->clkevt.rating = 200; in zevio_timer_add()
167 timer->clkevt.cpumask = cpu_all_mask; in zevio_timer_add()
168 timer->clkevt.features = CLOCK_EVT_FEAT_ONESHOT; in zevio_timer_add()
169 timer->clkevt.irq = irqnr; in zevio_timer_add()
171 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_add()
172 writel(0, timer->timer1 + IO_DIVIDER); in zevio_timer_add()
175 writel(0, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_add()
176 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_add()
179 writel(0, timer->base + IO_MATCH(TIMER_MATCH)); in zevio_timer_add()
181 timer->clkevt_irq.name = timer->clockevent_name; in zevio_timer_add()
182 timer->clkevt_irq.handler = zevio_timer_interrupt; in zevio_timer_add()
183 timer->clkevt_irq.dev_id = timer; in zevio_timer_add()
184 timer->clkevt_irq.flags = IRQF_TIMER | IRQF_IRQPOLL; in zevio_timer_add()
186 setup_irq(irqnr, &timer->clkevt_irq); in zevio_timer_add()
188 clockevents_config_and_register(&timer->clkevt, in zevio_timer_add()
189 clk_get_rate(timer->clk), 0x0001, 0xffff); in zevio_timer_add()
190 pr_info("Added %s as clockevent\n", timer->clockevent_name); in zevio_timer_add()
193 writel(CNTL_STOP_TIMER, timer->timer2 + IO_CONTROL); in zevio_timer_add()
194 writel(0, timer->timer2 + IO_CURRENT_VAL); in zevio_timer_add()
195 writel(0, timer->timer2 + IO_DIVIDER); in zevio_timer_add()
197 timer->timer2 + IO_CONTROL); in zevio_timer_add()
199 clocksource_mmio_init(timer->timer2 + IO_CURRENT_VAL, in zevio_timer_add()
200 timer->clocksource_name, in zevio_timer_add()
201 clk_get_rate(timer->clk), in zevio_timer_add()
205 pr_info("Added %s as clocksource\n", timer->clocksource_name); in zevio_timer_add()
209 iounmap(timer->base); in zevio_timer_add()
211 kfree(timer); in zevio_timer_add()