summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/pci.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/pci.h')
-rw-r--r--src/devices/machine/pci.h67
1 files changed, 34 insertions, 33 deletions
diff --git a/src/devices/machine/pci.h b/src/devices/machine/pci.h
index a882f93b957..d1f16287043 100644
--- a/src/devices/machine/pci.h
+++ b/src/devices/machine/pci.h
@@ -1,7 +1,9 @@
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert
-#ifndef PCI_H
-#define PCI_H
+#ifndef MAME_MACHINE_PCI_H
+#define MAME_MACHINE_PCI_H
+
+#pragma once
#define MCFG_PCI_ROOT_ADD(_tag) \
@@ -29,8 +31,6 @@ public:
mapper_cb remap_cb, remap_config_cb;
- pci_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
void set_ids(uint32_t main_id, uint8_t revision, uint32_t pclass, uint32_t subsystem_id);
void set_multifunction_device(bool enable);
@@ -85,6 +85,8 @@ public:
DECLARE_WRITE8_MEMBER(interrupt_pin_w);
protected:
+ pci_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
optional_memory_region m_region;
enum {
@@ -142,10 +144,9 @@ protected:
};
class agp_device : public pci_device {
-public:
- agp_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
protected:
+ agp_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
};
@@ -153,7 +154,6 @@ protected:
class pci_bridge_device : public pci_device, public device_memory_interface {
public:
pci_bridge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- pci_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
virtual void set_remap_cb(mapper_cb _remap_cb) override;
virtual void map_device(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space,
@@ -200,13 +200,7 @@ public:
DECLARE_WRITE16_MEMBER(bridge_control_w);
protected:
- pci_device *sub_devices[32*8];
- std::vector<pci_device *> all_devices;
- std::vector<pci_bridge_device *> all_bridges;
-
- uint32_t prefetch_baseu, prefetch_limitu;
- uint16_t bridge_control, memory_base, memory_limit, prefetch_base, prefetch_limit, iobaseu, iolimitu;
- uint8_t primary_bus, secondary_bus, subordinate_bus, iobase, iolimit;
+ pci_bridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
virtual void device_start() override;
virtual void device_reset() override;
@@ -222,15 +216,22 @@ protected:
void propagate_config_write(uint8_t bus, uint8_t device, uint16_t reg, uint32_t data, uint32_t mem_mask);
void config_write(uint8_t bus, uint8_t device, uint16_t reg, uint32_t data, uint32_t mem_mask);
+ pci_device *sub_devices[32*8];
+ std::vector<pci_device *> all_devices;
+ std::vector<pci_bridge_device *> all_bridges;
+
+ uint32_t prefetch_baseu, prefetch_limitu;
+ uint16_t bridge_control, memory_base, memory_limit, prefetch_base, prefetch_limit, iobaseu, iolimitu;
+ uint8_t primary_bus, secondary_bus, subordinate_bus, iobase, iolimit;
+
private:
address_space_config configure_space_config;
};
class agp_bridge_device : public pci_bridge_device {
-public:
- agp_bridge_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
protected:
+ agp_bridge_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
+
virtual void device_start() override;
virtual void device_reset() override;
};
@@ -239,30 +240,30 @@ class pci_host_device : public pci_bridge_device {
public:
DECLARE_ADDRESS_MAP(io_configuration_access_map, 32);
- pci_host_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, const char *source);
-
protected:
- address_space *memory_space, *io_space;
+ pci_host_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
- uint64_t memory_window_start, memory_window_end, memory_offset;
- uint64_t io_window_start, io_window_end, io_offset;
+ DECLARE_READ32_MEMBER(config_address_r);
+ DECLARE_WRITE32_MEMBER(config_address_w);
+ DECLARE_READ32_MEMBER(config_data_r);
+ DECLARE_WRITE32_MEMBER(config_data_w);
virtual void device_start() override;
virtual void device_reset() override;
virtual device_t *bus_root() override;
- uint32_t config_address;
-
- DECLARE_READ32_MEMBER(config_address_r);
- DECLARE_WRITE32_MEMBER(config_address_w);
- DECLARE_READ32_MEMBER(config_data_r);
- DECLARE_WRITE32_MEMBER(config_data_w);
-
uint32_t root_config_read(uint8_t bus, uint8_t device, uint16_t reg, uint32_t mem_mask);
void root_config_write(uint8_t bus, uint8_t device, uint16_t reg, uint32_t data, uint32_t mem_mask);
void regenerate_mapping();
+
+ address_space *memory_space, *io_space;
+
+ uint64_t memory_window_start, memory_window_end, memory_offset;
+ uint64_t io_window_start, io_window_end, io_offset;
+
+ uint32_t config_address;
};
class pci_root_device : public device_t {
@@ -274,7 +275,7 @@ protected:
virtual void device_reset() override;
};
-extern const device_type PCI_ROOT;
-extern const device_type PCI_BRIDGE;
+DECLARE_DEVICE_TYPE(PCI_ROOT, pci_root_device)
+DECLARE_DEVICE_TYPE(PCI_BRIDGE, pci_bridge_device)
-#endif
+#endif // MAME_MACHINE_PCI_H