Lines Matching refs:vpit

74 	struct vpit	*vpit;  member
95 struct vpit { struct
121 pit_cntr0_timer_running(struct vpit *vpit) in pit_cntr0_timer_running() argument
125 c = &vpit->channel[0]; in pit_cntr0_timer_running()
130 vpit_get_out(struct vpit *vpit, int channel, uint64_t delta_ticks) in vpit_get_out() argument
136 c = &vpit->channel[channel]; in vpit_get_out()
141 initval = initval && !pit_cntr0_timer_running(vpit); in vpit_get_out()
214 struct vpit *vpit; in vpit_timer_handler() local
227 vpit = arg->vpit; in vpit_timer_handler()
229 if (vpit == NULL) { in vpit_timer_handler()
234 c = &vpit->channel[arg->channel_num]; in vpit_timer_handler()
237 vm_set_gsi_irq(vpit->vm, PIT_IOAPIC_IRQ, GSI_RAISING_PULSE); in vpit_timer_handler()
247 pit_timer_stop_cntr0(struct vpit *vpit, struct itimerspec *rem) in pit_timer_stop_cntr0() argument
252 c = &vpit->channel[0]; in pit_timer_stop_cntr0()
253 active = pit_cntr0_timer_running(vpit); in pit_timer_stop_cntr0()
269 if (pit_cntr0_timer_running(vpit)) { in pit_timer_stop_cntr0()
279 pit_timer_start_cntr0(struct vpit *vpit) in pit_timer_start_cntr0() argument
285 c = &vpit->channel[0]; in pit_timer_start_cntr0()
287 if (pit_timer_stop_cntr0(vpit, &ts) && PERIODIC_MODE(c->mode)) { in pit_timer_start_cntr0()
344 pit_update_counter(struct vpit *vpit, struct channel *c, bool latch, in pit_update_counter() argument
401 pit_readback1(struct vpit *vpit, int channel, uint8_t cmd) in pit_readback1() argument
406 c = &vpit->channel[channel]; in pit_readback1()
412 pit_update_counter(vpit, c, !(cmd & TIMER_RB_LCTR), &delta_ticks); in pit_readback1()
425 if (vpit_get_out(vpit, channel, delta_ticks)) { in pit_readback1()
434 pit_readback(struct vpit *vpit, uint8_t cmd) in pit_readback() argument
442 error = pit_readback1(vpit, 0, cmd); in pit_readback()
445 error = pit_readback1(vpit, 1, cmd); in pit_readback()
448 error = pit_readback1(vpit, 2, cmd); in pit_readback()
456 vpit_update_mode(struct vpit *vpit, uint8_t val) in vpit_update_mode() argument
467 return pit_readback(vpit, val); in vpit_update_mode()
489 c = &vpit->channel[channel]; in vpit_update_mode()
492 pit_update_counter(vpit, c, true, &delta_ticks); in vpit_update_mode()
506 pit_timer_stop_cntr0(vpit, NULL); in vpit_update_mode()
517 struct vpit *vpit = ctx->vpit; in vpit_handler() local
536 error = vpit_update_mode(vpit, val); in vpit_handler()
548 c = &vpit->channel[port - TIMER_CNTR0]; in vpit_handler()
571 tmp = pit_update_counter(vpit, c, false, &delta_ticks); in vpit_handler()
604 pit_timer_start_cntr0(vpit); in vpit_handler()
630 struct vpit *vpit = ctx->vpit; in vpit_nmisc_handler() local
636 c = &vpit->channel[2]; in vpit_nmisc_handler()
640 if (vpit_get_out(vpit, 2, ticks_elapsed_since(&c->start_ts))) { in vpit_nmisc_handler()
656 struct vpit *vpit; in vpit_init() local
661 vpit = calloc(1U, sizeof(*vpit)); in vpit_init()
663 if (vpit == NULL) { in vpit_init()
668 vpit->vm = ctx; in vpit_init()
674 arg->vpit = vpit; in vpit_init()
679 ctx->vpit = vpit; in vpit_init()
694 struct vpit *vpit; in vpit_deinit() local
698 vpit = ctx->vpit; in vpit_deinit()
700 if (vpit == NULL) in vpit_deinit()
703 ctx->vpit = NULL; in vpit_deinit()
704 pit_timer_stop_cntr0(vpit, NULL); in vpit_deinit()
710 if (vpit) in vpit_deinit()
711 free(vpit); in vpit_deinit()