Lines Matching defs:dw_ced

82  * @dw_ced:	The APB clock to stop generating events.
84 void dw_apb_clockevent_pause(struct dw_apb_clock_event_device *dw_ced)
86 disable_irq(dw_ced->timer.irq);
87 apbt_disable_int(&dw_ced->timer);
98 struct dw_apb_clock_event_device *dw_ced = ced_to_dw_apb_ced(evt);
105 if (dw_ced->eoi)
106 dw_ced->eoi(&dw_ced->timer);
123 struct dw_apb_clock_event_device *dw_ced = ced_to_dw_apb_ced(evt);
129 ctrl = apbt_readl(&dw_ced->timer, APBTMR_N_CONTROL);
131 apbt_writel(&dw_ced->timer, ctrl, APBTMR_N_CONTROL);
137 struct dw_apb_clock_event_device *dw_ced = ced_to_dw_apb_ced(evt);
143 ctrl = apbt_readl(&dw_ced->timer, APBTMR_N_CONTROL);
152 apbt_writel(&dw_ced->timer, ctrl, APBTMR_N_CONTROL);
154 apbt_writel(&dw_ced->timer, ctrl, APBTMR_N_CONTROL);
160 apbt_writel(&dw_ced->timer, ~0, APBTMR_N_LOAD_COUNT);
163 apbt_writel(&dw_ced->timer, ctrl, APBTMR_N_CONTROL);
169 struct dw_apb_clock_event_device *dw_ced = ced_to_dw_apb_ced(evt);
170 unsigned long period = DIV_ROUND_UP(dw_ced->timer.freq, HZ);
176 ctrl = apbt_readl(&dw_ced->timer, APBTMR_N_CONTROL);
178 apbt_writel(&dw_ced->timer, ctrl, APBTMR_N_CONTROL);
184 apbt_writel(&dw_ced->timer, ctrl, APBTMR_N_CONTROL);
187 apbt_writel(&dw_ced->timer, period, APBTMR_N_LOAD_COUNT);
189 apbt_writel(&dw_ced->timer, ctrl, APBTMR_N_CONTROL);
195 struct dw_apb_clock_event_device *dw_ced = ced_to_dw_apb_ced(evt);
200 apbt_enable_int(&dw_ced->timer);
208 struct dw_apb_clock_event_device *dw_ced = ced_to_dw_apb_ced(evt);
211 ctrl = apbt_readl_relaxed(&dw_ced->timer, APBTMR_N_CONTROL);
213 apbt_writel_relaxed(&dw_ced->timer, ctrl, APBTMR_N_CONTROL);
215 apbt_writel_relaxed(&dw_ced->timer, delta, APBTMR_N_LOAD_COUNT);
217 apbt_writel_relaxed(&dw_ced->timer, ctrl, APBTMR_N_CONTROL);
244 struct dw_apb_clock_event_device *dw_ced =
245 kzalloc(sizeof(*dw_ced), GFP_KERNEL);
248 if (!dw_ced)
251 dw_ced->timer.base = base;
252 dw_ced->timer.irq = irq;
253 dw_ced->timer.freq = freq;
255 clockevents_calc_mult_shift(&dw_ced->ced, freq, APBT_MIN_PERIOD);
256 dw_ced->ced.max_delta_ns = clockevent_delta2ns(0x7fffffff,
257 &dw_ced->ced);
258 dw_ced->ced.max_delta_ticks = 0x7fffffff;
259 dw_ced->ced.min_delta_ns = clockevent_delta2ns(5000, &dw_ced->ced);
260 dw_ced->ced.min_delta_ticks = 5000;
261 dw_ced->ced.cpumask = cpu < 0 ? cpu_possible_mask : cpumask_of(cpu);
262 dw_ced->ced.features = CLOCK_EVT_FEAT_PERIODIC |
264 dw_ced->ced.set_state_shutdown = apbt_shutdown;
265 dw_ced->ced.set_state_periodic = apbt_set_periodic;
266 dw_ced->ced.set_state_oneshot = apbt_set_oneshot;
267 dw_ced->ced.set_state_oneshot_stopped = apbt_shutdown;
268 dw_ced->ced.tick_resume = apbt_resume;
269 dw_ced->ced.set_next_event = apbt_next_event;
270 dw_ced->ced.irq = dw_ced->timer.irq;
271 dw_ced->ced.rating = rating;
272 dw_ced->ced.name = name;
274 dw_ced->eoi = apbt_eoi;
277 dw_ced->ced.name, &dw_ced->ced);
280 kfree(dw_ced);
281 dw_ced = NULL;
284 return dw_ced;
290 * @dw_ced: The APB clock to resume.
292 void dw_apb_clockevent_resume(struct dw_apb_clock_event_device *dw_ced)
294 enable_irq(dw_ced->timer.irq);
300 * @dw_ced: The APB clock to stop generating the events.
302 void dw_apb_clockevent_stop(struct dw_apb_clock_event_device *dw_ced)
304 free_irq(dw_ced->timer.irq, &dw_ced->ced);
310 * @dw_ced: The APB clock to register as a clock_event_device.
312 void dw_apb_clockevent_register(struct dw_apb_clock_event_device *dw_ced)
314 apbt_writel(&dw_ced->timer, 0, APBTMR_N_CONTROL);
315 clockevents_register_device(&dw_ced->ced);
316 apbt_enable_int(&dw_ced->timer);