diff options
Diffstat (limited to 'src/devices/video/voodoo_pci.cpp')
-rw-r--r-- | src/devices/video/voodoo_pci.cpp | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/src/devices/video/voodoo_pci.cpp b/src/devices/video/voodoo_pci.cpp index 856b5fcc589..69d5eb51451 100644 --- a/src/devices/video/voodoo_pci.cpp +++ b/src/devices/video/voodoo_pci.cpp @@ -99,33 +99,53 @@ void voodoo_pci_device::device_start() machine().save().register_postload(save_prepost_delegate(FUNC(voodoo_pci_device::postload), this)); } -//void set_ids(u32 main_id, u8 revision, u32 pclass, u32 subsystem_id); void voodoo_1_pci_device::device_start() { - set_ids(0x121a0001, 0x02, 0x030000, 0x000000); + // NOTE: class code = 0 (backward compatible non-VGA device) + set_ids(0x121a0001, 0x02, 0x000000, 0x000000); voodoo_pci_device::device_start(); add_map(16 * 1024 * 1024, M_MEM | M_PREF, *m_voodoo, FUNC(voodoo_1_device::core_map)); bank_infos[0].adr = 0xff000000; - // TODO: verify int settings across the arch (should be same, following is from Voodoo 3) - //intr_line = 5; + + command = 0; + command_mask = 2; + status = 0; + + // no max_gnt / max_lat (hardwired to 0, cannot bus master) + + intr_line = 5; // INTA# - //intr_pin = 1; + intr_pin = 1; } void voodoo_2_pci_device::device_start() { + // TODO: straps class code from fb_addr_a[6] (if =1 then 0x040000) set_ids(0x121a0002, 0x02, 0x038000, 0x000000); voodoo_pci_device::device_start(); add_map(16 * 1024 * 1024, M_MEM | M_PREF, *m_voodoo, FUNC(voodoo_2_device::core_map)); bank_infos[0].adr = 0xff000000; + + command = 0; + command_mask = 2; + // FIXME: straps from fb_addr_b[1] (AGP) / fb_addr_a[8] + // (fast back-to-back & fast/medium DEVSEL#) + //status = 0x0280; + status = 0; + + // reported with default 0 + intr_line = 0; + // INTA# + intr_pin = 1; } void voodoo_banshee_pci_device::device_start() { + // FIXME: proper PCI values (check manual) set_ids(0x121a0003, 0x02, 0x030000, 0x000000); voodoo_pci_device::device_start(); @@ -140,6 +160,7 @@ void voodoo_banshee_pci_device::device_start() void voodoo_3_pci_device::device_start() { + // FIXME: proper PCI values (check manual) set_ids(0x121a0005, 0x02, 0x030000, 0x000000); voodoo_pci_device::device_start(); |