summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/voodoo_pci.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/voodoo_pci.cpp')
-rw-r--r--src/devices/video/voodoo_pci.cpp31
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();