summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/pci-ide.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/pci-ide.h')
-rw-r--r--src/devices/machine/pci-ide.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/devices/machine/pci-ide.h b/src/devices/machine/pci-ide.h
index ed51a487d2f..bc736efd517 100644
--- a/src/devices/machine/pci-ide.h
+++ b/src/devices/machine/pci-ide.h
@@ -27,6 +27,10 @@ TODO:
#define MCFG_IDE_PCI_IRQ_HANDLER(_devcb) \
devcb = &ide_pci_device::set_irq_handler(*device, DEVCB_##_devcb);
+// This will set the top 12 bits for address decoding in legacy mode. Needed for seattle driver.
+#define MCFG_IDE_PCI_SET_LEGACY_TOP(_val) \
+ downcast<ide_pci_device *>(device)->set_legacy_top(_val);
+
class ide_pci_device : public pci_device {
public:
ide_pci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
@@ -40,7 +44,7 @@ public:
DECLARE_WRITE32_MEMBER(ide2_write_cs1);
void set_irq_info(const char *tag, const int irq_num);
template<class _Object> static devcb_base &set_irq_handler(device_t &device, _Object object) { return downcast<ide_pci_device &>(device).m_irq_handler.set_callback(object); }
-
+ void set_legacy_top(int val) { m_legacy_top = val & 0xfff; };
protected:
virtual void device_start() override;
virtual void device_reset() override;
@@ -54,6 +58,8 @@ private:
int m_irq_num;
devcb_write_line m_irq_handler;
uint32_t pci_bar[6];
+ // Bits 31-20 for legacy mode hack
+ uint32_t m_legacy_top;
uint32_t m_config_data[0x10];
DECLARE_ADDRESS_MAP(chan1_data_command_map, 32);