Lines Matching refs:evt

76 static void mtk_clkevt_time_stop(struct mtk_clock_event_device *evt, u8 timer)  in mtk_clkevt_time_stop()  argument
80 val = readl(evt->gpt_base + TIMER_CTRL_REG(timer)); in mtk_clkevt_time_stop()
81 writel(val & ~TIMER_CTRL_ENABLE, evt->gpt_base + in mtk_clkevt_time_stop()
85 static void mtk_clkevt_time_setup(struct mtk_clock_event_device *evt, in mtk_clkevt_time_setup() argument
88 writel(delay, evt->gpt_base + TIMER_CMP_REG(timer)); in mtk_clkevt_time_setup()
91 static void mtk_clkevt_time_start(struct mtk_clock_event_device *evt, in mtk_clkevt_time_start() argument
97 writel(GPT_IRQ_ACK(timer), evt->gpt_base + GPT_IRQ_ACK_REG); in mtk_clkevt_time_start()
99 val = readl(evt->gpt_base + TIMER_CTRL_REG(timer)); in mtk_clkevt_time_start()
110 evt->gpt_base + TIMER_CTRL_REG(timer)); in mtk_clkevt_time_start()
121 struct mtk_clock_event_device *evt = to_mtk_clk(clk); in mtk_clkevt_set_periodic() local
123 mtk_clkevt_time_stop(evt, GPT_CLK_EVT); in mtk_clkevt_set_periodic()
124 mtk_clkevt_time_setup(evt, evt->ticks_per_jiffy, GPT_CLK_EVT); in mtk_clkevt_set_periodic()
125 mtk_clkevt_time_start(evt, true, GPT_CLK_EVT); in mtk_clkevt_set_periodic()
132 struct mtk_clock_event_device *evt = to_mtk_clk(clk); in mtk_clkevt_next_event() local
134 mtk_clkevt_time_stop(evt, GPT_CLK_EVT); in mtk_clkevt_next_event()
135 mtk_clkevt_time_setup(evt, event, GPT_CLK_EVT); in mtk_clkevt_next_event()
136 mtk_clkevt_time_start(evt, false, GPT_CLK_EVT); in mtk_clkevt_next_event()
143 struct mtk_clock_event_device *evt = dev_id; in mtk_timer_interrupt() local
146 writel(GPT_IRQ_ACK(GPT_CLK_EVT), evt->gpt_base + GPT_IRQ_ACK_REG); in mtk_timer_interrupt()
147 evt->dev.event_handler(&evt->dev); in mtk_timer_interrupt()
153 mtk_timer_setup(struct mtk_clock_event_device *evt, u8 timer, u8 option) in mtk_timer_setup() argument
156 evt->gpt_base + TIMER_CTRL_REG(timer)); in mtk_timer_setup()
159 evt->gpt_base + TIMER_CLK_REG(timer)); in mtk_timer_setup()
161 writel(0x0, evt->gpt_base + TIMER_CMP_REG(timer)); in mtk_timer_setup()
164 evt->gpt_base + TIMER_CTRL_REG(timer)); in mtk_timer_setup()
167 static void mtk_timer_enable_irq(struct mtk_clock_event_device *evt, u8 timer) in mtk_timer_enable_irq() argument
172 writel(0x0, evt->gpt_base + GPT_IRQ_EN_REG); in mtk_timer_enable_irq()
175 writel(0x3f, evt->gpt_base + GPT_IRQ_ACK_REG); in mtk_timer_enable_irq()
177 val = readl(evt->gpt_base + GPT_IRQ_EN_REG); in mtk_timer_enable_irq()
179 evt->gpt_base + GPT_IRQ_EN_REG); in mtk_timer_enable_irq()
184 struct mtk_clock_event_device *evt; in mtk_timer_init() local
189 evt = kzalloc(sizeof(*evt), GFP_KERNEL); in mtk_timer_init()
190 if (!evt) { in mtk_timer_init()
195 evt->dev.name = "mtk_tick"; in mtk_timer_init()
196 evt->dev.rating = 300; in mtk_timer_init()
197 evt->dev.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT; in mtk_timer_init()
198 evt->dev.set_state_shutdown = mtk_clkevt_shutdown; in mtk_timer_init()
199 evt->dev.set_state_periodic = mtk_clkevt_set_periodic; in mtk_timer_init()
200 evt->dev.set_state_oneshot = mtk_clkevt_shutdown; in mtk_timer_init()
201 evt->dev.tick_resume = mtk_clkevt_shutdown; in mtk_timer_init()
202 evt->dev.set_next_event = mtk_clkevt_next_event; in mtk_timer_init()
203 evt->dev.cpumask = cpu_possible_mask; in mtk_timer_init()
205 evt->gpt_base = of_io_request_and_map(node, 0, "mtk-timer"); in mtk_timer_init()
206 if (IS_ERR(evt->gpt_base)) { in mtk_timer_init()
211 evt->dev.irq = irq_of_parse_and_map(node, 0); in mtk_timer_init()
212 if (evt->dev.irq <= 0) { in mtk_timer_init()
229 if (request_irq(evt->dev.irq, mtk_timer_interrupt, in mtk_timer_init()
230 IRQF_TIMER | IRQF_IRQPOLL, "mtk_timer", evt)) { in mtk_timer_init()
231 pr_warn("failed to setup irq %d\n", evt->dev.irq); in mtk_timer_init()
235 evt->ticks_per_jiffy = DIV_ROUND_UP(rate, HZ); in mtk_timer_init()
238 mtk_timer_setup(evt, GPT_CLK_SRC, TIMER_CTRL_OP_FREERUN); in mtk_timer_init()
239 clocksource_mmio_init(evt->gpt_base + TIMER_CNT_REG(GPT_CLK_SRC), in mtk_timer_init()
241 gpt_sched_reg = evt->gpt_base + TIMER_CNT_REG(GPT_CLK_SRC); in mtk_timer_init()
245 mtk_timer_setup(evt, GPT_CLK_EVT, TIMER_CTRL_OP_REPEAT); in mtk_timer_init()
246 clockevents_config_and_register(&evt->dev, rate, 0x3, in mtk_timer_init()
249 mtk_timer_enable_irq(evt, GPT_CLK_EVT); in mtk_timer_init()
258 irq_dispose_mapping(evt->dev.irq); in mtk_timer_init()
260 iounmap(evt->gpt_base); in mtk_timer_init()