diff --git a/devices/common/pci/pcidevice.cpp b/devices/common/pci/pcidevice.cpp index 925a668..af9d0b9 100644 --- a/devices/common/pci/pcidevice.cpp +++ b/devices/common/pci/pcidevice.cpp @@ -240,6 +240,7 @@ void PCIDevice::finish_config_bars() if (bar_cfg & 1) { bars_typ[bar_num] = (bar_cfg & 0xffff0000) ? PCIBarType::Io_32_Bit : PCIBarType::Io_16_Bit; + has_io_space = true; } else { int pci_space_type = (bar_cfg >> 1) & 3; diff --git a/devices/common/pci/pcidevice.h b/devices/common/pci/pcidevice.h index 6061e67..44ea5e9 100644 --- a/devices/common/pci/pcidevice.h +++ b/devices/common/pci/pcidevice.h @@ -81,7 +81,7 @@ public: virtual ~PCIDevice() = default; virtual bool supports_io_space() { - return false; + return has_io_space; }; /* I/O space access methods */ @@ -156,6 +156,7 @@ protected: uint8_t irq_pin = 0; uint8_t irq_line = 0; + bool has_io_space = false; int num_bars = 6; uint32_t bars[6] = { 0 }; // base address registers uint32_t bars_cfg[6] = { 0 }; // configuration values for base address registers diff --git a/devices/memctrl/mpc106.h b/devices/memctrl/mpc106.h index c666721..077c30f 100644 --- a/devices/memctrl/mpc106.h +++ b/devices/memctrl/mpc106.h @@ -92,10 +92,6 @@ protected: uint32_t pci_cfg_read(uint32_t reg_offs, AccessDetails &details); void pci_cfg_write(uint32_t reg_offs, uint32_t value, AccessDetails &details); - bool supports_io_space(void) { - return true; - }; - void setup_ram(void); private: diff --git a/devices/video/atirage.h b/devices/video/atirage.h index 62dac2e..7c7f9b8 100644 --- a/devices/video/atirage.h +++ b/devices/video/atirage.h @@ -60,10 +60,6 @@ public: void write(uint32_t rgn_start, uint32_t offset, uint32_t value, int size); /* PCI device methods */ - bool supports_io_space(void) { - return true; - }; - uint32_t pci_cfg_read(uint32_t reg_offs, AccessDetails &details); void pci_cfg_write(uint32_t reg_offs, uint32_t value, AccessDetails &details);