diff options
Diffstat (limited to 'src/arch/x86/lib/pci_ops_mmconf.c')
-rw-r--r-- | src/arch/x86/lib/pci_ops_mmconf.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/arch/x86/lib/pci_ops_mmconf.c b/src/arch/x86/lib/pci_ops_mmconf.c index 4eaf2977c0..4853f6bc7e 100644 --- a/src/arch/x86/lib/pci_ops_mmconf.c +++ b/src/arch/x86/lib/pci_ops_mmconf.c @@ -9,46 +9,46 @@ * Functions for accessing PCI configuration space with mmconf accesses */ -#define PCI_MMIO_ADDR(SEGBUS, DEVFN, WHERE) \ - (CONFIG_MMCONF_BASE_ADDRESS |\ - (((SEGBUS) & 0xFFF) << 20) |\ - (((DEVFN) & 0xFF) << 12) |\ - ((WHERE) & 0xFFF)) +#define PCI_MMIO_ADDR(SEGBUS, DEVFN, WHERE, MASK) \ + ((void *)((CONFIG_MMCONF_BASE_ADDRESS |\ + (((SEGBUS) & 0xFFF) << 20) |\ + (((DEVFN) & 0xFF) << 12) |\ + ((WHERE) & 0xFFF)) & ~MASK)) static uint8_t pci_mmconf_read_config8(struct bus *pbus, int bus, int devfn, int where) { - return (read8(PCI_MMIO_ADDR(bus, devfn, where))); + return read8(PCI_MMIO_ADDR(bus, devfn, where, 0)); } static uint16_t pci_mmconf_read_config16(struct bus *pbus, int bus, int devfn, int where) { - return (read16(PCI_MMIO_ADDR(bus, devfn, where) & ~1)); + return read16(PCI_MMIO_ADDR(bus, devfn, where, 1)); } static uint32_t pci_mmconf_read_config32(struct bus *pbus, int bus, int devfn, int where) { - return (read32(PCI_MMIO_ADDR(bus, devfn, where) & ~3)); + return read32(PCI_MMIO_ADDR(bus, devfn, where, 3)); } static void pci_mmconf_write_config8(struct bus *pbus, int bus, int devfn, int where, uint8_t value) { - write8(PCI_MMIO_ADDR(bus, devfn, where), value); + write8(PCI_MMIO_ADDR(bus, devfn, where, 0), value); } static void pci_mmconf_write_config16(struct bus *pbus, int bus, int devfn, int where, uint16_t value) { - write16(PCI_MMIO_ADDR(bus, devfn, where) & ~1, value); + write16(PCI_MMIO_ADDR(bus, devfn, where, 1), value); } static void pci_mmconf_write_config32(struct bus *pbus, int bus, int devfn, int where, uint32_t value) { - write32(PCI_MMIO_ADDR(bus, devfn, where) & ~3, value); + write32(PCI_MMIO_ADDR(bus, devfn, where, 3), value); } const struct pci_bus_operations pci_ops_mmconf = { |