Lines Matching full:gpt

502 static int ppc4xx_gpt_compare(Ppc405GptState *gpt, int n)  in ppc4xx_gpt_compare()  argument
508 static void ppc4xx_gpt_set_output(Ppc405GptState *gpt, int n, int level) in ppc4xx_gpt_set_output() argument
513 static void ppc4xx_gpt_set_outputs(Ppc405GptState *gpt) in ppc4xx_gpt_set_outputs() argument
520 if (gpt->oe & mask) { in ppc4xx_gpt_set_outputs()
522 if (ppc4xx_gpt_compare(gpt, i)) { in ppc4xx_gpt_set_outputs()
524 ppc4xx_gpt_set_output(gpt, i, gpt->ol & mask); in ppc4xx_gpt_set_outputs()
527 ppc4xx_gpt_set_output(gpt, i, gpt->ol & mask ? 0 : 1); in ppc4xx_gpt_set_outputs()
534 static void ppc4xx_gpt_set_irqs(Ppc405GptState *gpt) in ppc4xx_gpt_set_irqs() argument
541 if (gpt->is & gpt->im & mask) { in ppc4xx_gpt_set_irqs()
542 qemu_irq_raise(gpt->irqs[i]); in ppc4xx_gpt_set_irqs()
544 qemu_irq_lower(gpt->irqs[i]); in ppc4xx_gpt_set_irqs()
550 static void ppc4xx_gpt_compute_timer(Ppc405GptState *gpt) in ppc4xx_gpt_compute_timer() argument
557 Ppc405GptState *gpt = opaque; in ppc4xx_gpt_read() local
566 ret = muldiv64(qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + gpt->tb_offset, in ppc4xx_gpt_read()
567 gpt->tb_freq, NANOSECONDS_PER_SECOND); in ppc4xx_gpt_read()
571 ret = gpt->oe; in ppc4xx_gpt_read()
575 ret = gpt->ol; in ppc4xx_gpt_read()
579 ret = gpt->im; in ppc4xx_gpt_read()
584 ret = gpt->is; in ppc4xx_gpt_read()
588 ret = gpt->ie; in ppc4xx_gpt_read()
593 ret = gpt->comp[idx]; in ppc4xx_gpt_read()
598 ret = gpt->mask[idx]; in ppc4xx_gpt_read()
611 Ppc405GptState *gpt = opaque; in ppc4xx_gpt_write() local
619 gpt->tb_offset = muldiv64(value, NANOSECONDS_PER_SECOND, gpt->tb_freq) in ppc4xx_gpt_write()
621 ppc4xx_gpt_compute_timer(gpt); in ppc4xx_gpt_write()
625 gpt->oe = value & 0xF8000000; in ppc4xx_gpt_write()
626 ppc4xx_gpt_set_outputs(gpt); in ppc4xx_gpt_write()
630 gpt->ol = value & 0xF8000000; in ppc4xx_gpt_write()
631 ppc4xx_gpt_set_outputs(gpt); in ppc4xx_gpt_write()
635 gpt->im = value & 0x0000F800; in ppc4xx_gpt_write()
639 gpt->is |= value & 0x0000F800; in ppc4xx_gpt_write()
640 ppc4xx_gpt_set_irqs(gpt); in ppc4xx_gpt_write()
644 gpt->is &= ~(value & 0x0000F800); in ppc4xx_gpt_write()
645 ppc4xx_gpt_set_irqs(gpt); in ppc4xx_gpt_write()
649 gpt->ie = value & 0x0000F800; in ppc4xx_gpt_write()
650 ppc4xx_gpt_set_irqs(gpt); in ppc4xx_gpt_write()
655 gpt->comp[idx] = value & 0xF8000000; in ppc4xx_gpt_write()
656 ppc4xx_gpt_compute_timer(gpt); in ppc4xx_gpt_write()
661 gpt->mask[idx] = value & 0xF8000000; in ppc4xx_gpt_write()
662 ppc4xx_gpt_compute_timer(gpt); in ppc4xx_gpt_write()
677 Ppc405GptState *gpt = opaque; in ppc4xx_gpt_cb() local
679 ppc4xx_gpt_set_irqs(gpt); in ppc4xx_gpt_cb()
680 ppc4xx_gpt_set_outputs(gpt); in ppc4xx_gpt_cb()
681 ppc4xx_gpt_compute_timer(gpt); in ppc4xx_gpt_cb()
686 Ppc405GptState *gpt = PPC405_GPT(dev); in ppc405_gpt_reset() local
689 timer_del(gpt->timer); in ppc405_gpt_reset()
690 gpt->oe = 0x00000000; in ppc405_gpt_reset()
691 gpt->ol = 0x00000000; in ppc405_gpt_reset()
692 gpt->im = 0x00000000; in ppc405_gpt_reset()
693 gpt->is = 0x00000000; in ppc405_gpt_reset()
694 gpt->ie = 0x00000000; in ppc405_gpt_reset()
696 gpt->comp[i] = 0x00000000; in ppc405_gpt_reset()
697 gpt->mask[i] = 0x00000000; in ppc405_gpt_reset()
708 memory_region_init_io(&s->iomem, OBJECT(s), &gpt_ops, s, "gpt", 0xd4); in ppc405_gpt_realize()
718 /* timer will be NULL if the GPT wasn't realized */ in ppc405_gpt_finalize()
998 object_initialize_child(obj, "gpt", &s->gpt, TYPE_PPC405_GPT); in ppc405_soc_instance_init()
1137 /* GPT */ in ppc405_soc_realize()
1138 sbd = SYS_BUS_DEVICE(&s->gpt); in ppc405_soc_realize()
1143 for (i = 0; i < ARRAY_SIZE(s->gpt.irqs); i++) { in ppc405_soc_realize()