diff options
Diffstat (limited to 'src/devices/bus/pci/pci_slot.cpp')
-rw-r--r-- | src/devices/bus/pci/pci_slot.cpp | 90 |
1 files changed, 63 insertions, 27 deletions
diff --git a/src/devices/bus/pci/pci_slot.cpp b/src/devices/bus/pci/pci_slot.cpp index 5fd042f0b61..ae9d42afc63 100644 --- a/src/devices/bus/pci/pci_slot.cpp +++ b/src/devices/bus/pci/pci_slot.cpp @@ -5,19 +5,34 @@ #include "emu.h" #include "pci_slot.h" -#include "virge_pci.h" -#include "riva128.h" -#include "rivatnt.h" + +#include "aha2940au.h" +#include "audiowerk2.h" +#include "clgd5446.h" +#include "clgd546x_laguna.h" +#include "ds2416.h" +#include "ess_maestro.h" #include "geforce.h" #include "mga2064w.h" +#include "ncr53c825.h" +#include "neon250.h" +#include "opti82c861.h" +#include "oti_spitfire.h" +#include "pdc20262.h" #include "promotion.h" -#include "ds2416.h" +#include "riva128.h" +#include "rivatnt.h" +#include "rtl8029as_pci.h" +#include "rtl8139_pci.h" +#include "sis6326.h" #include "sonicvibes.h" #include "sw1000xg.h" +#include "virge_pci.h" +#include "vision.h" +#include "vt6306.h" +#include "wd9710_pci.h" #include "zr36057.h" -#include "rtl8029as_pci.h" -#include "rtl8139_pci.h" -#include "opti82c861.h" + DEFINE_DEVICE_TYPE(PCI_SLOT, pci_slot_device, "pci_slot", "PCI extension motherboard port") @@ -47,18 +62,10 @@ pci_card_device *pci_slot_device::get_card() const pci_card_interface::pci_card_interface(const machine_config &mconfig, device_t &device) : device_interface(device, "pci_card"), - m_pci_slot(nullptr) + m_pci_slot(dynamic_cast<pci_slot_device *>(device.owner())) // Beware, the owner may not be a pci_slot_device, in which case the cast returns nullptr { } -void pci_card_interface::interface_pre_start() -{ - // Beware, the owner may not be a pci_slot_device, in which case - // the cast is expected to return nullptr. - - m_pci_slot = dynamic_cast<pci_slot_device *>(device().owner()); -} - pci_card_device::pci_card_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : pci_device(mconfig, type, tag, owner, clock), pci_card_interface(mconfig, *this) @@ -98,37 +105,43 @@ void pci_card_device::irq_pin_w(offs_t line, int state) return; m_pin_state = (m_pin_state & ~(1 << line)) | (state << line); - m_pci_root->irq_pin_w(m_irq_map[line], state); + m_pci_root->irq_pin_w(m_irq_map[line], state); } void pci_cards(device_slot_interface &device) { + // 0x00 - backward compatible pre-class code +// device.option_add("voodoo1", VOODOO_1_PCI); + device.option_add("vision864", VISION864_PCI); + device.option_add("vision964", VISION964_PCI); + // 0x01 - mass storage controllers + device.option_add("aha2940au", AHA2940AU); + device.option_add("ncr53c825", NCR53C825_PCI); + device.option_add("pdc20262", PDC20262); + // 0x02 - network controllers device.option_add("rtl8029as", RTL8029AS_PCI); device.option_add("rtl8139", RTL8139_PCI); // 0x03 - display controllers + device.option_add("vision968", VISION968_PCI); device.option_add("virge", VIRGE_PCI); device.option_add("virgedx", VIRGEDX_PCI); - device.option_add("riva128", RIVA128); - device.option_add("riva128zx", RIVA128ZX); - device.option_add("rivatnt", RIVATNT); - device.option_add("rivatnt2", RIVATNT2); - device.option_add("rivatnt2_ultra", RIVATNT2_ULTRA); - device.option_add("vanta", VANTA); - device.option_add("rivatnt2_m64", RIVATNT2_M64); - device.option_add("geforce256", GEFORCE256); - device.option_add("geforce256_ddr", GEFORCE256_DDR); - device.option_add("quadro", QUADRO); + device.option_add("virgevx", VIRGEVX_PCI); device.option_add("mga2064w", MGA2064W); device.option_add("promotion3210", PROMOTION3210); + device.option_add("gd5446", GD5446_PCI); + device.option_add("oti64111", OTI64111_PCI); + device.option_add("wd9710", WD9710_PCI); // 0x04 - multimedia controllers device.option_add("sw1000xg", SW1000XG); device.option_add("ds2416", DS2416); device.option_add("sonicvibes", SONICVIBES); + device.option_add("ess_solo1", ES1946_SOLO1E); device.option_add("zr36057", ZR36057_PCI); + device.option_add("audiowerk2", AUDIOWERK2); // 0x05 - memory controllers // 0x06 - bridge devices @@ -138,6 +151,7 @@ void pci_cards(device_slot_interface &device) // 0x0a - docking stations // 0x0b - processors // 0x0c - Serial Bus controllers + device.option_add("vt6306", VT6306_PCI); device.option_add("opti82c861", OPTI_82C861); // 0x0d - wireless controllers @@ -148,3 +162,25 @@ void pci_cards(device_slot_interface &device) // 0x12 - Processing accelerators // 0x13 - Debug } + +// assume all natively with class code 03 +void agp_cards(device_slot_interface &device) +{ + // nVidia + device.option_add("riva128", RIVA128); + device.option_add("riva128zx", RIVA128ZX); + device.option_add("rivatnt", RIVATNT); + device.option_add("rivatnt2", RIVATNT2); + device.option_add("rivatnt2_ultra", RIVATNT2_ULTRA); + device.option_add("vanta", VANTA); + device.option_add("rivatnt2_m64", RIVATNT2_M64); + device.option_add("geforce256", GEFORCE256); + device.option_add("geforce256_ddr", GEFORCE256_DDR); + device.option_add("quadro", QUADRO); + // Cirrus Logic + device.option_add("laguna3d", GD5465_LAGUNA3D); + // PowerVR VideoLogic + device.option_add("neon250", NEON250); + // SiS + device.option_add("sis6326_agp", SIS6326_AGP); +} |