Lines Matching refs:timer
65 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_set_event() local
68 writel(delta, timer->timer1 + IO_CURRENT_VAL); in zevio_timer_set_event()
70 timer->timer1 + IO_CONTROL); in zevio_timer_set_event()
77 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_shutdown() local
81 writel(0, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_shutdown()
82 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_shutdown()
84 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_shutdown()
90 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_set_oneshot() local
94 writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_set_oneshot()
95 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_set_oneshot()
101 struct zevio_timer *timer = dev_id; in zevio_timer_interrupt() local
104 intr = readl(timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_interrupt()
108 writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_interrupt()
109 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_interrupt()
111 if (timer->clkevt.event_handler) in zevio_timer_interrupt()
112 timer->clkevt.event_handler(&timer->clkevt); in zevio_timer_interrupt()
119 struct zevio_timer *timer; in zevio_timer_add() local
123 timer = kzalloc(sizeof(*timer), GFP_KERNEL); in zevio_timer_add()
124 if (!timer) in zevio_timer_add()
127 timer->base = of_iomap(node, 0); in zevio_timer_add()
128 if (!timer->base) { in zevio_timer_add()
132 timer->timer1 = timer->base + IO_TIMER1; in zevio_timer_add()
133 timer->timer2 = timer->base + IO_TIMER2; in zevio_timer_add()
135 timer->clk = of_clk_get(node, 0); in zevio_timer_add()
136 if (IS_ERR(timer->clk)) { in zevio_timer_add()
137 ret = PTR_ERR(timer->clk); in zevio_timer_add()
142 timer->interrupt_regs = of_iomap(node, 1); in zevio_timer_add()
146 scnprintf(timer->clocksource_name, sizeof(timer->clocksource_name), in zevio_timer_add()
150 scnprintf(timer->clockevent_name, sizeof(timer->clockevent_name), in zevio_timer_add()
154 if (timer->interrupt_regs && irqnr) { in zevio_timer_add()
155 timer->clkevt.name = timer->clockevent_name; in zevio_timer_add()
156 timer->clkevt.set_next_event = zevio_timer_set_event; in zevio_timer_add()
157 timer->clkevt.set_state_shutdown = zevio_timer_shutdown; in zevio_timer_add()
158 timer->clkevt.set_state_oneshot = zevio_timer_set_oneshot; in zevio_timer_add()
159 timer->clkevt.tick_resume = zevio_timer_set_oneshot; in zevio_timer_add()
160 timer->clkevt.rating = 200; in zevio_timer_add()
161 timer->clkevt.cpumask = cpu_possible_mask; in zevio_timer_add()
162 timer->clkevt.features = CLOCK_EVT_FEAT_ONESHOT; in zevio_timer_add()
163 timer->clkevt.irq = irqnr; in zevio_timer_add()
165 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_add()
166 writel(0, timer->timer1 + IO_DIVIDER); in zevio_timer_add()
169 writel(0, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_add()
170 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_add()
173 writel(0, timer->base + IO_MATCH(TIMER_MATCH)); in zevio_timer_add()
175 timer->clkevt_irq.name = timer->clockevent_name; in zevio_timer_add()
176 timer->clkevt_irq.handler = zevio_timer_interrupt; in zevio_timer_add()
177 timer->clkevt_irq.dev_id = timer; in zevio_timer_add()
178 timer->clkevt_irq.flags = IRQF_TIMER | IRQF_IRQPOLL; in zevio_timer_add()
180 setup_irq(irqnr, &timer->clkevt_irq); in zevio_timer_add()
182 clockevents_config_and_register(&timer->clkevt, in zevio_timer_add()
183 clk_get_rate(timer->clk), 0x0001, 0xffff); in zevio_timer_add()
184 pr_info("Added %s as clockevent\n", timer->clockevent_name); in zevio_timer_add()
187 writel(CNTL_STOP_TIMER, timer->timer2 + IO_CONTROL); in zevio_timer_add()
188 writel(0, timer->timer2 + IO_CURRENT_VAL); in zevio_timer_add()
189 writel(0, timer->timer2 + IO_DIVIDER); in zevio_timer_add()
191 timer->timer2 + IO_CONTROL); in zevio_timer_add()
193 clocksource_mmio_init(timer->timer2 + IO_CURRENT_VAL, in zevio_timer_add()
194 timer->clocksource_name, in zevio_timer_add()
195 clk_get_rate(timer->clk), in zevio_timer_add()
199 pr_info("Added %s as clocksource\n", timer->clocksource_name); in zevio_timer_add()
203 iounmap(timer->base); in zevio_timer_add()
205 kfree(timer); in zevio_timer_add()