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()
81 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_shutdown() local
85 writel(0, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_shutdown()
86 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_shutdown()
88 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_shutdown()
94 struct zevio_timer *timer = container_of(dev, struct zevio_timer, in zevio_timer_set_oneshot() local
98 writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_set_oneshot()
99 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_set_oneshot()
105 struct zevio_timer *timer = dev_id; in zevio_timer_interrupt() local
108 intr = readl(timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_interrupt()
112 writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_interrupt()
113 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_interrupt()
115 if (timer->clkevt.event_handler) in zevio_timer_interrupt()
116 timer->clkevt.event_handler(&timer->clkevt); in zevio_timer_interrupt()
123 struct zevio_timer *timer; in zevio_timer_add() local
127 timer = kzalloc(sizeof(*timer), GFP_KERNEL); in zevio_timer_add()
128 if (!timer) in zevio_timer_add()
131 timer->base = of_iomap(node, 0); in zevio_timer_add()
132 if (!timer->base) { in zevio_timer_add()
136 timer->timer1 = timer->base + IO_TIMER1; in zevio_timer_add()
137 timer->timer2 = timer->base + IO_TIMER2; in zevio_timer_add()
139 timer->clk = of_clk_get(node, 0); in zevio_timer_add()
140 if (IS_ERR(timer->clk)) { in zevio_timer_add()
141 ret = PTR_ERR(timer->clk); in zevio_timer_add()
146 timer->interrupt_regs = of_iomap(node, 1); in zevio_timer_add()
150 scnprintf(timer->clocksource_name, sizeof(timer->clocksource_name), in zevio_timer_add()
154 scnprintf(timer->clockevent_name, sizeof(timer->clockevent_name), in zevio_timer_add()
158 if (timer->interrupt_regs && irqnr) { in zevio_timer_add()
159 timer->clkevt.name = timer->clockevent_name; in zevio_timer_add()
160 timer->clkevt.set_next_event = zevio_timer_set_event; in zevio_timer_add()
161 timer->clkevt.set_state_shutdown = zevio_timer_shutdown; in zevio_timer_add()
162 timer->clkevt.set_state_oneshot = zevio_timer_set_oneshot; in zevio_timer_add()
163 timer->clkevt.tick_resume = zevio_timer_set_oneshot; in zevio_timer_add()
164 timer->clkevt.rating = 200; in zevio_timer_add()
165 timer->clkevt.cpumask = cpu_all_mask; in zevio_timer_add()
166 timer->clkevt.features = CLOCK_EVT_FEAT_ONESHOT; in zevio_timer_add()
167 timer->clkevt.irq = irqnr; in zevio_timer_add()
169 writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL); in zevio_timer_add()
170 writel(0, timer->timer1 + IO_DIVIDER); in zevio_timer_add()
173 writel(0, timer->interrupt_regs + IO_INTR_MSK); in zevio_timer_add()
174 writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK); in zevio_timer_add()
177 writel(0, timer->base + IO_MATCH(TIMER_MATCH)); in zevio_timer_add()
179 timer->clkevt_irq.name = timer->clockevent_name; in zevio_timer_add()
180 timer->clkevt_irq.handler = zevio_timer_interrupt; in zevio_timer_add()
181 timer->clkevt_irq.dev_id = timer; in zevio_timer_add()
182 timer->clkevt_irq.flags = IRQF_TIMER | IRQF_IRQPOLL; in zevio_timer_add()
184 setup_irq(irqnr, &timer->clkevt_irq); in zevio_timer_add()
186 clockevents_config_and_register(&timer->clkevt, in zevio_timer_add()
187 clk_get_rate(timer->clk), 0x0001, 0xffff); in zevio_timer_add()
188 pr_info("Added %s as clockevent\n", timer->clockevent_name); in zevio_timer_add()
191 writel(CNTL_STOP_TIMER, timer->timer2 + IO_CONTROL); in zevio_timer_add()
192 writel(0, timer->timer2 + IO_CURRENT_VAL); in zevio_timer_add()
193 writel(0, timer->timer2 + IO_DIVIDER); in zevio_timer_add()
195 timer->timer2 + IO_CONTROL); in zevio_timer_add()
197 clocksource_mmio_init(timer->timer2 + IO_CURRENT_VAL, in zevio_timer_add()
198 timer->clocksource_name, in zevio_timer_add()
199 clk_get_rate(timer->clk), in zevio_timer_add()
203 pr_info("Added %s as clocksource\n", timer->clocksource_name); in zevio_timer_add()
207 iounmap(timer->base); in zevio_timer_add()
209 kfree(timer); in zevio_timer_add()