Lines Matching +full:timeout +full:- +full:idle +full:- +full:ms
4 * Copyright (c) 2011-2018 Laurent Vivier
5 * Copyright (c) 2018 Mark Cave-Ayland
9 * Copyright (c) 2004-2007 Fabrice Bellard
12 * some parts from linux-2.6.29, arch/m68k/include/asm/mac_via.h
15 * See the COPYING file in the top-level directory.
19 #include "exec/address-spaces.h"
30 #include "hw/qdev-properties.h"
31 #include "hw/qdev-properties-system.h"
32 #include "sysemu/block-backend.h"
77 * state-control line SEL" on all but IIfx
104 * Macintosh Family Hardware sez: bits 0-2 of VIA1A are volume control
106 * On IIci,IIfx, bits 1-2 are the rest of the CPU ID:
110 * CHRP sez: VIA1A bits 0-2 and 5 are 'unused': if programmed as
146 #define VIA1B_vRTCClk 0x02 /* Real time clock serial-clock line. */
147 #define VIA1B_vRTCData 0x01 /* Real time clock serial-data line. */
155 * defines the 'Video IRQ' as 0x40 for the 'EVR' VIA work-alike.
194 * 24/32bit switch - doubles as cache flush
228 * of the alternate video page for page-flipping animation. Since there
235 * 6522 registers - see databook.
264 /* from linux 2.6 drivers/macintosh/via-macii.c */
274 * Table 19-10 ADB transaction states
315 v1s->next_sixty_hz = (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + in via1_sixty_hz_update()
318 timer_mod(v1s->sixty_hz_timer, v1s->next_sixty_hz); in via1_sixty_hz_update()
323 v1s->next_second = (qemu_clock_get_ms(QEMU_CLOCK_VIRTUAL) + 1000) / in via1_one_second_update()
325 timer_mod(v1s->one_second_timer, v1s->next_second); in via1_one_second_update()
357 if (v1s->blk) { in pram_update()
358 if (blk_pwrite(v1s->blk, 0, sizeof(v1s->PRAM), v1s->PRAM, 0) < 0) { in pram_update()
369 * z00x0001 Seconds register 0 (lowest-order byte)
372 * z00x1101 Seconds register 3 (highest-order byte)
373 * 00110001 Test register (write-only)
374 * 00110101 Write-Protect Register (write-only)
375 * z010aa01 RAM address 100aa ($10-$13) (first 20 bytes only)
376 * z1aaaa01 RAM address 0aaaa ($00-$0F) (first 20 bytes only)
421 if (s->b & VIA1B_vRTCEnb) { in via1_rtc_update()
425 if (s->dirb & VIA1B_vRTCData) { in via1_rtc_update()
427 if (!(v1s->last_b & VIA1B_vRTCClk) && (s->b & VIA1B_vRTCClk)) { in via1_rtc_update()
428 v1s->data_out <<= 1; in via1_rtc_update()
429 v1s->data_out |= s->b & VIA1B_vRTCData; in via1_rtc_update()
430 v1s->data_out_cnt++; in via1_rtc_update()
432 trace_via1_rtc_update_data_out(v1s->data_out_cnt, v1s->data_out); in via1_rtc_update()
434 trace_via1_rtc_update_data_in(v1s->data_in_cnt, v1s->data_in); in via1_rtc_update()
436 if ((v1s->last_b & VIA1B_vRTCClk) && in via1_rtc_update()
437 !(s->b & VIA1B_vRTCClk) && in via1_rtc_update()
438 v1s->data_in_cnt) { in via1_rtc_update()
439 s->b = (s->b & ~VIA1B_vRTCData) | in via1_rtc_update()
440 ((v1s->data_in >> 7) & VIA1B_vRTCData); in via1_rtc_update()
441 v1s->data_in <<= 1; in via1_rtc_update()
442 v1s->data_in_cnt--; in via1_rtc_update()
447 if (v1s->data_out_cnt != 8) { in via1_rtc_update()
451 v1s->data_out_cnt = 0; in via1_rtc_update()
453 trace_via1_rtc_internal_status(v1s->cmd, v1s->alt, v1s->data_out); in via1_rtc_update()
455 if (v1s->cmd == REG_EMPTY) { in via1_rtc_update()
457 cmd = via1_rtc_compact_cmd(v1s->data_out); in via1_rtc_update()
461 trace_via1_rtc_cmd_invalid(v1s->data_out); in via1_rtc_update()
469 * register 0 is lowest-order byte in via1_rtc_update()
470 * register 3 is highest-order byte in via1_rtc_update()
473 time = v1s->tick_offset + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) in via1_rtc_update()
476 v1s->data_in = (time >> ((cmd & 0x03) << 3)) & 0xff; in via1_rtc_update()
477 v1s->data_in_cnt = 8; in via1_rtc_update()
478 trace_via1_rtc_cmd_seconds_read((cmd & 0x7f) - REG_0, in via1_rtc_update()
479 v1s->data_in); in via1_rtc_update()
482 /* PRAM address 0x00 -> 0x13 */ in via1_rtc_update()
483 v1s->data_in = v1s->PRAM[(cmd & 0x7f) - REG_PRAM_ADDR]; in via1_rtc_update()
484 v1s->data_in_cnt = 8; in via1_rtc_update()
485 trace_via1_rtc_cmd_pram_read((cmd & 0x7f) - REG_PRAM_ADDR, in via1_rtc_update()
486 v1s->data_in); in via1_rtc_update()
491 * the only two-byte read command in via1_rtc_update()
494 v1s->cmd = cmd; in via1_rtc_update()
503 if (cmd == REG_WPROTECT || !v1s->wprotect) { in via1_rtc_update()
505 v1s->cmd = cmd; in via1_rtc_update()
513 if (v1s->alt == REG_EMPTY) { in via1_rtc_update()
514 switch (v1s->cmd & 0x7f) { in via1_rtc_update()
517 trace_via1_rtc_cmd_seconds_write(v1s->cmd - REG_0, v1s->data_out); in via1_rtc_update()
518 v1s->cmd = REG_EMPTY; in via1_rtc_update()
522 trace_via1_rtc_cmd_test_write(v1s->data_out); in via1_rtc_update()
523 v1s->cmd = REG_EMPTY; in via1_rtc_update()
527 trace_via1_rtc_cmd_wprotect_write(v1s->data_out); in via1_rtc_update()
528 v1s->wprotect = !!(v1s->data_out & 0x80); in via1_rtc_update()
529 v1s->cmd = REG_EMPTY; in via1_rtc_update()
532 /* PRAM address 0x00 -> 0x13 */ in via1_rtc_update()
533 trace_via1_rtc_cmd_pram_write(v1s->cmd - REG_PRAM_ADDR, in via1_rtc_update()
534 v1s->data_out); in via1_rtc_update()
535 v1s->PRAM[v1s->cmd - REG_PRAM_ADDR] = v1s->data_out; in via1_rtc_update()
537 v1s->cmd = REG_EMPTY; in via1_rtc_update()
540 addr = (v1s->data_out >> 2) & 0x1f; in via1_rtc_update()
541 sector = (v1s->cmd & 0x7f) - REG_PRAM_SECT; in via1_rtc_update()
542 if (v1s->cmd & 0x80) { in via1_rtc_update()
544 v1s->data_in = v1s->PRAM[sector * 32 + addr]; in via1_rtc_update()
545 v1s->data_in_cnt = 8; in via1_rtc_update()
548 v1s->data_in); in via1_rtc_update()
549 v1s->cmd = REG_EMPTY; in via1_rtc_update()
553 v1s->alt = addr; in via1_rtc_update()
563 g_assert(REG_PRAM_SECT <= v1s->cmd && v1s->cmd <= REG_PRAM_SECT_LAST); in via1_rtc_update()
564 sector = v1s->cmd - REG_PRAM_SECT; in via1_rtc_update()
565 v1s->PRAM[sector * 32 + v1s->alt] = v1s->data_out; in via1_rtc_update()
567 trace_via1_rtc_cmd_pram_sect_write(sector, v1s->alt, sector * 32 + v1s->alt, in via1_rtc_update()
568 v1s->data_out); in via1_rtc_update()
569 v1s->alt = REG_EMPTY; in via1_rtc_update()
570 v1s->cmd = REG_EMPTY; in via1_rtc_update()
577 ADBBusState *adb_bus = &v1s->adb_bus; in adb_via_poll()
579 uint8_t *data = &s->sr; in adb_via_poll()
589 if (v1s->adb_data_in_size > 0 && v1s->adb_data_in_index == 0) { in adb_via_poll()
591 * For older Linux kernels that switch to IDLE mode after sending the in adb_via_poll()
593 * as a "fake" autopoll reply or bus timeout accordingly in adb_via_poll()
595 *data = v1s->adb_data_out[0]; in adb_via_poll()
596 olen = v1s->adb_data_in_size; in adb_via_poll()
598 s->b &= ~VIA1B_vADBInt; in adb_via_poll()
599 qemu_irq_raise(v1s->adb_data_ready); in adb_via_poll()
604 v1s->adb_data_in_index = 0; in adb_via_poll()
605 v1s->adb_data_out_index = 0; in adb_via_poll()
606 olen = adb_poll(adb_bus, obuf, adb_bus->autopoll_mask); in adb_via_poll()
611 olen--; in adb_via_poll()
612 memcpy(v1s->adb_data_in, &obuf[1], olen); in adb_via_poll()
613 v1s->adb_data_in_size = olen; in adb_via_poll()
615 s->b &= ~VIA1B_vADBInt; in adb_via_poll()
616 qemu_irq_raise(v1s->adb_data_ready); in adb_via_poll()
618 *data = v1s->adb_autopoll_cmd; in adb_via_poll()
623 memcpy(v1s->adb_data_in, obuf, olen); in adb_via_poll()
624 v1s->adb_data_in_size = olen; in adb_via_poll()
626 s->b &= ~VIA1B_vADBInt; in adb_via_poll()
627 qemu_irq_raise(v1s->adb_data_ready); in adb_via_poll()
631 trace_via1_adb_poll(*data, (s->b & VIA1B_vADBInt) ? "+" : "-", in adb_via_poll()
632 adb_bus->status, v1s->adb_data_in_index, olen); in adb_via_poll()
667 MOS6522State *ms = MOS6522(v1s); in adb_via_send() local
668 ADBBusState *adb_bus = &v1s->adb_bus; in adb_via_send()
679 if (adb_bus->status & ADB_STATUS_POLLREPLY) { in adb_via_send()
681 ms->b &= ~VIA1B_vADBInt; in adb_via_send()
683 ms->b |= VIA1B_vADBInt; in adb_via_send()
684 v1s->adb_data_out_index = 0; in adb_via_send()
685 v1s->adb_data_out[v1s->adb_data_out_index++] = data; in adb_via_send()
688 trace_via1_adb_send(" NEW", data, (ms->b & VIA1B_vADBInt) ? "+" : "-"); in adb_via_send()
689 qemu_irq_raise(v1s->adb_data_ready); in adb_via_send()
694 ms->b |= VIA1B_vADBInt; in adb_via_send()
695 v1s->adb_data_out[v1s->adb_data_out_index++] = data; in adb_via_send()
698 data, (ms->b & VIA1B_vADBInt) ? "+" : "-"); in adb_via_send()
699 qemu_irq_raise(v1s->adb_data_ready); in adb_via_send()
703 ms->b |= VIA1B_vADBInt; in adb_via_send()
706 trace_via1_adb_send("IDLE", data, in adb_via_send()
707 (ms->b & VIA1B_vADBInt) ? "+" : "-"); in adb_via_send()
713 if (v1s->adb_data_out_index == adb_via_send_len(v1s->adb_data_out[0])) { in adb_via_send()
714 v1s->adb_data_in_size = adb_request(adb_bus, v1s->adb_data_in, in adb_via_send()
715 v1s->adb_data_out, in adb_via_send()
716 v1s->adb_data_out_index); in adb_via_send()
717 v1s->adb_data_in_index = 0; in adb_via_send()
719 if (adb_bus->status & ADB_STATUS_BUSTIMEOUT) { in adb_via_send()
721 * Bus timeout (but allow first EVEN and ODD byte to indicate in adb_via_send()
722 * timeout via vADBInt and SRQ status) in adb_via_send()
724 v1s->adb_data_in[0] = 0xff; in adb_via_send()
725 v1s->adb_data_in[1] = 0xff; in adb_via_send()
726 v1s->adb_data_in_size = 2; in adb_via_send()
733 if ((v1s->adb_data_out[0] & 0xc) == 0xc) { in adb_via_send()
734 v1s->adb_autopoll_cmd = v1s->adb_data_out[0]; in adb_via_send()
736 autopoll_mask = 1 << (v1s->adb_autopoll_cmd >> 4); in adb_via_send()
744 MOS6522State *ms = MOS6522(v1s); in adb_via_receive() local
745 ADBBusState *adb_bus = &v1s->adb_bus; in adb_via_receive()
750 ms->b |= VIA1B_vADBInt; in adb_via_receive()
754 ms->b |= VIA1B_vADBInt; in adb_via_receive()
757 trace_via1_adb_receive("IDLE", *data, in adb_via_receive()
758 (ms->b & VIA1B_vADBInt) ? "+" : "-", adb_bus->status, in adb_via_receive()
759 v1s->adb_data_in_index, v1s->adb_data_in_size); in adb_via_receive()
765 switch (v1s->adb_data_in_index) { in adb_via_receive()
767 /* First EVEN byte: vADBInt indicates bus timeout */ in adb_via_receive()
768 *data = v1s->adb_data_in[v1s->adb_data_in_index]; in adb_via_receive()
769 if (adb_bus->status & ADB_STATUS_BUSTIMEOUT) { in adb_via_receive()
770 ms->b &= ~VIA1B_vADBInt; in adb_via_receive()
772 ms->b |= VIA1B_vADBInt; in adb_via_receive()
776 *data, (ms->b & VIA1B_vADBInt) ? "+" : "-", in adb_via_receive()
777 adb_bus->status, v1s->adb_data_in_index, in adb_via_receive()
778 v1s->adb_data_in_size); in adb_via_receive()
780 v1s->adb_data_in_index++; in adb_via_receive()
785 *data = v1s->adb_data_in[v1s->adb_data_in_index]; in adb_via_receive()
786 pending = adb_bus->pending & ~(1 << (v1s->adb_autopoll_cmd >> 4)); in adb_via_receive()
788 ms->b &= ~VIA1B_vADBInt; in adb_via_receive()
790 ms->b |= VIA1B_vADBInt; in adb_via_receive()
794 *data, (ms->b & VIA1B_vADBInt) ? "+" : "-", in adb_via_receive()
795 adb_bus->status, v1s->adb_data_in_index, in adb_via_receive()
796 v1s->adb_data_in_size); in adb_via_receive()
798 v1s->adb_data_in_index++; in adb_via_receive()
808 if (v1s->adb_data_in_index < v1s->adb_data_in_size) { in adb_via_receive()
810 *data = v1s->adb_data_in[v1s->adb_data_in_index]; in adb_via_receive()
811 ms->b |= VIA1B_vADBInt; in adb_via_receive()
812 } else if (v1s->adb_data_in_index == v1s->adb_data_in_size) { in adb_via_receive()
813 if (adb_bus->status & ADB_STATUS_BUSTIMEOUT) { in adb_via_receive()
814 /* Bus timeout (no more data) */ in adb_via_receive()
820 ms->b &= ~VIA1B_vADBInt; in adb_via_receive()
822 /* Bus timeout (no more data) */ in adb_via_receive()
824 ms->b &= ~VIA1B_vADBInt; in adb_via_receive()
825 adb_bus->status = 0; in adb_via_receive()
830 *data, (ms->b & VIA1B_vADBInt) ? "+" : "-", in adb_via_receive()
831 adb_bus->status, v1s->adb_data_in_index, in adb_via_receive()
832 v1s->adb_data_in_size); in adb_via_receive()
834 if (v1s->adb_data_in_index <= v1s->adb_data_in_size) { in adb_via_receive()
835 v1s->adb_data_in_index++; in adb_via_receive()
840 qemu_irq_raise(v1s->adb_data_ready); in adb_via_receive()
850 oldstate = (v1s->last_b & VIA1B_vADB_StateMask) >> VIA1B_vADB_StateShift; in via1_adb_update()
851 state = (s->b & VIA1B_vADB_StateMask) >> VIA1B_vADB_StateShift; in via1_adb_update()
854 if (s->acr & VIA1ACR_vShiftOut) { in via1_adb_update()
856 adb_via_send(v1s, state, s->sr); in via1_adb_update()
859 adb_via_receive(v1s, state, &s->sr); in via1_adb_update()
869 oldirq = (v1s->last_b & VIA1B_vMystery) ? 1 : 0; in via1_auxmode_update()
870 irq = (s->b & VIA1B_vMystery) ? 1 : 0; in via1_auxmode_update()
875 qemu_set_irq(v1s->auxmode_irq, irq); in via1_auxmode_update()
880 * interrupts upon boot. Fortunately NetBSD switches to the so-called in via1_auxmode_update()
884 s->b |= VIA1B_vADBInt; in via1_auxmode_update()
916 * Work around timer calibration to ensure we that we have non-zero and in via1_timer_calibration_hack()
922 int old_timer_hack_state = v1s->timer_hack_state; in via1_timer_calibration_hack()
924 switch (v1s->timer_hack_state) { in via1_timer_calibration_hack()
928 v1s->timer_hack_state = 1; in via1_timer_calibration_hack()
933 /* VIA_REG_T2CL: low byte of 1ms counter */ in via1_timer_calibration_hack()
935 v1s->timer_hack_state = 2; in via1_timer_calibration_hack()
937 v1s->timer_hack_state = 0; in via1_timer_calibration_hack()
944 * VIA_REG_T2CH: high byte of 1ms counter (very likely at the in via1_timer_calibration_hack()
948 v1s->timer_hack_state = 3; in via1_timer_calibration_hack()
950 v1s->timer_hack_state = 0; in via1_timer_calibration_hack()
971 v1s->timer_hack_state = 4; in via1_timer_calibration_hack()
976 * This is the normal post-calibration timer state: we should in via1_timer_calibration_hack()
982 v1s->timer_hack_state = 1; in via1_timer_calibration_hack()
987 v1s->timer_hack_state = 5; in via1_timer_calibration_hack()
997 v1s->timer_hack_state = 6; in via1_timer_calibration_hack()
1001 v1s->timer_hack_state = 0; in via1_timer_calibration_hack()
1007 v1s->timer_hack_state = 7; in via1_timer_calibration_hack()
1009 v1s->timer_hack_state = 0; in via1_timer_calibration_hack()
1014 * This is the normal post-calibration timer state once both the in via1_timer_calibration_hack()
1020 v1s->timer_hack_state = 1; in via1_timer_calibration_hack()
1027 if (old_timer_hack_state != v1s->timer_hack_state) { in via1_timer_calibration_hack()
1028 trace_via1_timer_hack_state(v1s->timer_hack_state); in via1_timer_calibration_hack()
1035 MOS6522State *ms = MOS6522(s); in mos6522_q800_via1_read() local
1040 ret = mos6522_read(ms, addr, size); in mos6522_q800_via1_read()
1048 if (s->timer_hack_state == 6) { in mos6522_q800_via1_read()
1072 MOS6522State *ms = MOS6522(v1s); in mos6522_q800_via1_write() local
1074 int oldsr = ms->sr; in mos6522_q800_via1_write()
1080 mos6522_write(ms, addr, val, size); in mos6522_q800_via1_write()
1088 v1s->last_b = ms->b; in mos6522_q800_via1_write()
1110 oldstate = (v1s->last_b & VIA1B_vADB_StateMask) >> in mos6522_q800_via1_write()
1112 state = (ms->b & VIA1B_vADB_StateMask) >> VIA1B_vADB_StateShift; in mos6522_q800_via1_write()
1115 (ms->acr & VIA1ACR_vShiftOut) && in mos6522_q800_via1_write()
1118 adb_via_send(v1s, state, ms->sr); in mos6522_q800_via1_write()
1138 MOS6522State *ms = MOS6522(s); in mos6522_q800_via2_read() local
1142 val = mos6522_read(ms, addr, size); in mos6522_q800_via2_read()
1154 val |= (~ms->last_irq_levels & VIA2_IRQ_SCSI_DATA); in mos6522_q800_via2_read()
1165 MOS6522State *ms = MOS6522(s); in mos6522_q800_via2_write() local
1168 mos6522_write(ms, addr, val, size); in mos6522_q800_via2_write()
1185 qemu_del_vm_change_state_handler(v1s->vmstate); in via1_postload_update_cb()
1186 v1s->vmstate = NULL; in via1_postload_update_cb()
1195 if (v1s->blk) { in via1_post_load()
1196 v1s->vmstate = qemu_add_vm_change_state_handler( in via1_post_load()
1207 MOS6522State *ms = MOS6522(v1s); in mos6522_q800_via1_reset_hold() local
1208 MOS6522DeviceClass *mdc = MOS6522_GET_CLASS(ms); in mos6522_q800_via1_reset_hold()
1209 ADBBusState *adb_bus = &v1s->adb_bus; in mos6522_q800_via1_reset_hold()
1211 if (mdc->parent_phases.hold) { in mos6522_q800_via1_reset_hold()
1212 mdc->parent_phases.hold(obj, type); in mos6522_q800_via1_reset_hold()
1215 ms->timers[0].frequency = VIA_TIMER_FREQ; in mos6522_q800_via1_reset_hold()
1216 ms->timers[1].frequency = VIA_TIMER_FREQ; in mos6522_q800_via1_reset_hold()
1218 ms->b = VIA1B_vADB_StateMask | VIA1B_vADBInt | VIA1B_vRTCEnb; in mos6522_q800_via1_reset_hold()
1222 v1s->cmd = REG_EMPTY; in mos6522_q800_via1_reset_hold()
1223 v1s->alt = REG_EMPTY; in mos6522_q800_via1_reset_hold()
1226 v1s->timer_hack_state = 0; in mos6522_q800_via1_reset_hold()
1232 ADBBusState *adb_bus = &v1s->adb_bus; in mos6522_q800_via1_realize()
1236 v1s->one_second_timer = timer_new_ms(QEMU_CLOCK_VIRTUAL, via1_one_second, in mos6522_q800_via1_realize()
1239 v1s->sixty_hz_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, via1_sixty_hz, in mos6522_q800_via1_realize()
1244 v1s->tick_offset = (uint32_t)mktimegm(&tm) + RTC_OFFSET; in mos6522_q800_via1_realize()
1247 v1s->adb_data_ready = qdev_get_gpio_in(dev, VIA1_IRQ_ADB_READY_BIT); in mos6522_q800_via1_realize()
1249 if (v1s->blk) { in mos6522_q800_via1_realize()
1250 int64_t len = blk_getlength(v1s->blk); in mos6522_q800_via1_realize()
1252 error_setg_errno(errp, -len, in mos6522_q800_via1_realize()
1256 ret = blk_set_perm(v1s->blk, in mos6522_q800_via1_realize()
1263 ret = blk_pread(v1s->blk, 0, sizeof(v1s->PRAM), v1s->PRAM, 0); in mos6522_q800_via1_realize()
1276 memory_region_init_io(&v1s->via_mem, obj, &mos6522_q800_via1_ops, v1s, in mos6522_q800_via1_init()
1278 sysbus_init_mmio(sbd, &v1s->via_mem); in mos6522_q800_via1_init()
1281 qbus_init((BusState *)&v1s->adb_bus, sizeof(v1s->adb_bus), in mos6522_q800_via1_init()
1285 qdev_init_gpio_out(DEVICE(obj), &v1s->auxmode_irq, 1); in mos6522_q800_via1_init()
1289 .name = "q800-via1",
1336 dc->realize = mos6522_q800_via1_realize; in mos6522_q800_via1_class_init()
1338 NULL, &mdc->parent_phases); in mos6522_q800_via1_class_init()
1339 dc->vmsd = &vmstate_q800_via1; in mos6522_q800_via1_class_init()
1354 if (s->dirb & VIA2B_vPower && (s->b & VIA2B_vPower) == 0) { in mos6522_q800_via2_portB_write()
1362 MOS6522State *ms = MOS6522(obj); in mos6522_q800_via2_reset_hold() local
1363 MOS6522DeviceClass *mdc = MOS6522_GET_CLASS(ms); in mos6522_q800_via2_reset_hold()
1365 if (mdc->parent_phases.hold) { in mos6522_q800_via2_reset_hold()
1366 mdc->parent_phases.hold(obj, type); in mos6522_q800_via2_reset_hold()
1369 ms->timers[0].frequency = VIA_TIMER_FREQ; in mos6522_q800_via2_reset_hold()
1370 ms->timers[1].frequency = VIA_TIMER_FREQ; in mos6522_q800_via2_reset_hold()
1372 ms->dirb = 0; in mos6522_q800_via2_reset_hold()
1373 ms->b = 0; in mos6522_q800_via2_reset_hold()
1374 ms->dira = 0; in mos6522_q800_via2_reset_hold()
1375 ms->a = 0x7f; in mos6522_q800_via2_reset_hold()
1386 s->a &= ~(1 << n); in via2_nubus_irq_request()
1388 s->a |= (1 << n); in via2_nubus_irq_request()
1400 memory_region_init_io(&v2s->via_mem, obj, &mos6522_q800_via2_ops, v2s, in mos6522_q800_via2_init()
1402 sysbus_init_mmio(sbd, &v2s->via_mem); in mos6522_q800_via2_init()
1404 qdev_init_gpio_in_named(DEVICE(obj), via2_nubus_irq_request, "nubus-irq", in mos6522_q800_via2_init()
1409 .name = "q800-via2",
1426 NULL, &mdc->parent_phases); in mos6522_q800_via2_class_init()
1427 dc->vmsd = &vmstate_q800_via2; in mos6522_q800_via2_class_init()
1428 mdc->portB_write = mos6522_q800_via2_portB_write; in mos6522_q800_via2_class_init()