Lines Matching full:unit

39 #define UNIT_REG_SIZE    16     /* Size of memory mapped regs for the unit */
70 GPTimerUnit *unit; member
139 static void grlib_gptimer_set_scaler(GPTimerUnit *unit, uint32_t scaler) in grlib_gptimer_set_scaler() argument
144 assert(unit != NULL); in grlib_gptimer_set_scaler()
147 value = unit->freq_hz / (scaler + 1); in grlib_gptimer_set_scaler()
149 value = unit->freq_hz; in grlib_gptimer_set_scaler()
154 for (i = 0; i < unit->nr_timers; i++) { in grlib_gptimer_set_scaler()
155 ptimer_transaction_begin(unit->timers[i].ptimer); in grlib_gptimer_set_scaler()
156 ptimer_set_freq(unit->timers[i].ptimer, value); in grlib_gptimer_set_scaler()
157 ptimer_transaction_commit(unit->timers[i].ptimer); in grlib_gptimer_set_scaler()
184 GPTimerUnit *unit = opaque; in grlib_gptimer_read() local
191 /* Unit registers */ in grlib_gptimer_read()
194 trace_grlib_gptimer_readl(-1, addr, unit->scaler); in grlib_gptimer_read()
195 return unit->scaler; in grlib_gptimer_read()
198 trace_grlib_gptimer_readl(-1, addr, unit->reload); in grlib_gptimer_read()
199 return unit->reload; in grlib_gptimer_read()
202 trace_grlib_gptimer_readl(-1, addr, unit->config); in grlib_gptimer_read()
203 return unit->config; in grlib_gptimer_read()
212 if (id >= 0 && id < unit->nr_timers) { in grlib_gptimer_read()
217 value = ptimer_get_count(unit->timers[id].ptimer); in grlib_gptimer_read()
222 value = unit->timers[id].reload; in grlib_gptimer_read()
227 trace_grlib_gptimer_readl(id, addr, unit->timers[id].config); in grlib_gptimer_read()
228 return unit->timers[id].config; in grlib_gptimer_read()
243 GPTimerUnit *unit = opaque; in grlib_gptimer_write() local
249 /* Unit registers */ in grlib_gptimer_write()
253 unit->scaler = value; in grlib_gptimer_write()
254 trace_grlib_gptimer_writel(-1, addr, unit->scaler); in grlib_gptimer_write()
259 unit->reload = value; in grlib_gptimer_write()
260 trace_grlib_gptimer_writel(-1, addr, unit->reload); in grlib_gptimer_write()
261 grlib_gptimer_set_scaler(unit, value); in grlib_gptimer_write()
276 if (id >= 0 && id < unit->nr_timers) { in grlib_gptimer_write()
282 grlib_gptimer_tx_begin(&unit->timers[id]); in grlib_gptimer_write()
283 unit->timers[id].counter = value; in grlib_gptimer_write()
284 grlib_gptimer_enable(&unit->timers[id]); in grlib_gptimer_write()
285 grlib_gptimer_tx_commit(&unit->timers[id]); in grlib_gptimer_write()
290 unit->timers[id].reload = value; in grlib_gptimer_write()
301 value |= unit->timers[id].config & GPTIMER_INT_PENDING; in grlib_gptimer_write()
304 unit->timers[id].config = value; in grlib_gptimer_write()
309 grlib_gptimer_tx_begin(&unit->timers[id]); in grlib_gptimer_write()
311 grlib_gptimer_restart(&unit->timers[id]); in grlib_gptimer_write()
313 grlib_gptimer_enable(&unit->timers[id]); in grlib_gptimer_write()
319 unit->timers[id].config = value; in grlib_gptimer_write()
320 grlib_gptimer_tx_commit(&unit->timers[id]); in grlib_gptimer_write()
344 GPTimerUnit *unit = GRLIB_GPTIMER(d); in grlib_gptimer_reset() local
347 assert(unit != NULL); in grlib_gptimer_reset()
349 unit->scaler = 0; in grlib_gptimer_reset()
350 unit->reload = 0; in grlib_gptimer_reset()
352 unit->config = unit->nr_timers; in grlib_gptimer_reset()
353 unit->config |= unit->irq_line << 3; in grlib_gptimer_reset()
354 unit->config |= 1 << 8; /* separate interrupt */ in grlib_gptimer_reset()
355 unit->config |= 1 << 9; /* Disable timer freeze */ in grlib_gptimer_reset()
358 for (i = 0; i < unit->nr_timers; i++) { in grlib_gptimer_reset()
359 GPTimer *timer = &unit->timers[i]; in grlib_gptimer_reset()
367 ptimer_set_freq(timer->ptimer, unit->freq_hz); in grlib_gptimer_reset()
374 GPTimerUnit *unit = GRLIB_GPTIMER(dev); in grlib_gptimer_realize() local
378 assert(unit->nr_timers > 0); in grlib_gptimer_realize()
379 assert(unit->nr_timers <= GPTIMER_MAX_TIMERS); in grlib_gptimer_realize()
381 unit->timers = g_malloc0(sizeof unit->timers[0] * unit->nr_timers); in grlib_gptimer_realize()
383 for (i = 0; i < unit->nr_timers; i++) { in grlib_gptimer_realize()
384 GPTimer *timer = &unit->timers[i]; in grlib_gptimer_realize()
386 timer->unit = unit; in grlib_gptimer_realize()
395 ptimer_set_freq(timer->ptimer, unit->freq_hz); in grlib_gptimer_realize()
399 memory_region_init_io(&unit->iomem, OBJECT(unit), &grlib_gptimer_ops, in grlib_gptimer_realize()
400 unit, "gptimer", in grlib_gptimer_realize()
401 UNIT_REG_SIZE + GPTIMER_REG_SIZE * unit->nr_timers); in grlib_gptimer_realize()
403 sysbus_init_mmio(sbd, &unit->iomem); in grlib_gptimer_realize()