Lines Matching +full:pci +full:- +full:domain

1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
41 #include <dev/pci/pcivar.h>
42 #include <dev/pci/pcireg.h>
59 uint16_t domain; member
84 "Enable support for PCI-e memory mapped config access");
86 static uint32_t pci_docfgregread(int domain, int bus, int slot, int func,
88 static struct pcie_mcfg_region *pcie_lookup_region(int domain, int bus);
101 * numbers in the range 128-254 to indicate something strange and
128 PRVERB(("pcibios: BIOS_PRESENT didn't return 'PCI ' in edx\n")); in pcibios_get_version()
135 * Initialise access to PCI configuration space
156 /* $PIR requires PCI BIOS 2.10 or greater. */ in pci_cfgregopen()
164 pcie_lookup_region(int domain, int bus) in pcie_lookup_region() argument
167 if (mcfg_regions[i].domain == domain && in pcie_lookup_region()
175 pci_docfgregread(int domain, int bus, int slot, int func, int reg, int bytes) in pci_docfgregread() argument
177 if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) in pci_docfgregread()
183 region = pcie_lookup_region(domain, bus); in pci_docfgregread()
189 if (domain == 0) in pci_docfgregread()
192 return (-1); in pci_docfgregread()
199 pci_cfgregread(int domain, int bus, int slot, int func, int reg, int bytes) in pci_cfgregread() argument
209 line = pci_docfgregread(domain, bus, slot, func, PCIR_INTLINE, in pci_cfgregread()
213 return (pci_docfgregread(domain, bus, slot, func, reg, bytes)); in pci_cfgregread()
220 pci_cfgregwrite(int domain, int bus, int slot, int func, int reg, uint32_t data, in pci_cfgregwrite() argument
223 if (domain == 0 && bus == 0 && (1 << slot & pcie_badslots) != 0) { in pci_cfgregwrite()
231 region = pcie_lookup_region(domain, bus); in pci_cfgregwrite()
239 if (domain == 0) in pci_cfgregwrite()
259 && (reg & (bytes - 1)) == 0) { in pci_cfgenable()
301 int data = -1; in pcireg_cfgread()
390 printf("-- nothing found\n"); in pci_cfgcheck()
502 pcielist = &pcie_list[pc->pc_cpuid]; in pcie_init_cache()
509 elem->vapage = va + (i * PAGE_SIZE); in pcie_init_cache()
510 elem->papage = 0; in pcie_init_cache()
525 * inaccessible using memory-mapped PCI config access. Walk in pcie_init_badslots()
543 pcie_cfgregopen(uint64_t base, uint16_t domain, uint8_t minbus, uint8_t maxbus) in pcie_cfgregopen() argument
553 "PCI: MCFG domain %u bus %u-%u base 0x%jx too high\n", in pcie_cfgregopen()
554 domain, minbus, maxbus, (uintmax_t)base); in pcie_cfgregopen()
559 printf("PCI: MCFG domain %u bus %u-%u base @ 0x%jx\n", in pcie_cfgregopen()
560 domain, minbus, maxbus, (uintmax_t)base); in pcie_cfgregopen()
564 pcie_cache_initted = -1; in pcie_cfgregopen()
569 if (pcie_cache_initted == -1) in pcie_cfgregopen()
577 region->base = base + (minbus << 20); in pcie_cfgregopen()
578 region->domain = domain; in pcie_cfgregopen()
579 region->minbus = minbus; in pcie_cfgregopen()
580 region->maxbus = maxbus; in pcie_cfgregopen()
586 if (domain == 0 && minbus == 0) in pcie_cfgregopen()
607 MPASS(bus >= region->minbus && bus <= region->maxbus); in pciereg_findaddr()
609 pa = PCIE_PADDR(region->base, reg, bus - region->minbus, slot, func); in pciereg_findaddr()
620 if (elem->papage == papage) in pciereg_findaddr()
626 if (elem->papage != 0) { in pciereg_findaddr()
627 pmap_kremove(elem->vapage); in pciereg_findaddr()
628 invlpg(elem->vapage); in pciereg_findaddr()
630 pmap_kenter(elem->vapage, papage); in pciereg_findaddr()
631 elem->papage = papage; in pciereg_findaddr()
638 return (elem->vapage | (pa & PAGE_MASK)); in pciereg_findaddr()
643 * have a requirement that all accesses to the memory mapped PCI configuration
654 int data = -1; in pciereg_cfgread()
657 return (-1); in pciereg_cfgread()