Modify xf86BusAccWindowsFromOS and xf86AccResFromOS to use the
libpciaccess interfaces.
This commit is contained in:
parent
4b474cbc1a
commit
e487627992
|
@ -107,6 +107,12 @@ static pciBusInfo_t linuxPci0 = {
|
|||
/* bridge */ NULL
|
||||
};
|
||||
|
||||
static const struct pci_id_match match_host_bridge = {
|
||||
PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
|
||||
(PCI_CLASS_BRIDGE << 16) | (PCI_SUBCLASS_BRIDGE_HOST << 8),
|
||||
0x0000ffff00, 0
|
||||
};
|
||||
|
||||
/* from lnx_pci.c. */
|
||||
extern int lnxPciInit(void);
|
||||
|
||||
|
@ -775,20 +781,20 @@ xf86ReadDomainMemory(PCITAG Tag, ADDRESS Base, int Len, unsigned char *Buf)
|
|||
resPtr
|
||||
xf86BusAccWindowsFromOS(void)
|
||||
{
|
||||
pciConfigPtr *ppPCI, pPCI;
|
||||
struct pci_device *dev;
|
||||
sturct pci_device_iterator *iter;
|
||||
resPtr pRes = NULL;
|
||||
resRange range;
|
||||
unsigned long io_size, mem_size;
|
||||
int domain;
|
||||
|
||||
if ((ppPCI = xf86scanpci(0))) {
|
||||
for (; (pPCI = *ppPCI); ppPCI++) {
|
||||
if ((pPCI->pci_base_class != PCI_CLASS_BRIDGE) ||
|
||||
(pPCI->pci_sub_class != PCI_SUBCLASS_BRIDGE_HOST))
|
||||
continue;
|
||||
|
||||
domain = xf86GetPciDomain(pPCI->tag);
|
||||
linuxGetSizes(pPCI->tag, &io_size, &mem_size);
|
||||
iter = pci_id_match_iterator_create(& match_host_bridge);
|
||||
while ((dev = pci_device_next(iter)) != NULL) {
|
||||
const PCITAG tag = PCI_MAKE_TAG(PCI_MAKE_BUS(dev->domain, dev->bus),
|
||||
dev->dev, dev->func);
|
||||
const int domain = xf86GetPciDomain(tag);
|
||||
|
||||
linuxGetSizes(tag, &io_size, &mem_size);
|
||||
|
||||
RANGE(range, 0, (ADDRESS)(mem_size - 1),
|
||||
RANGE_TYPE(ResExcMemBlock, domain));
|
||||
|
@ -801,7 +807,8 @@ xf86BusAccWindowsFromOS(void)
|
|||
if (domain <= 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
pci_iterator_destroy(iter);
|
||||
|
||||
return pRes;
|
||||
}
|
||||
|
@ -816,19 +823,18 @@ xf86PciBusAccWindowsFromOS(void)
|
|||
resPtr
|
||||
xf86AccResFromOS(resPtr pRes)
|
||||
{
|
||||
pciConfigPtr *ppPCI, pPCI;
|
||||
struct pci_device *dev;
|
||||
sturct pci_device_iterator *iter;
|
||||
resRange range;
|
||||
unsigned long io_size, mem_size;
|
||||
int domain;
|
||||
|
||||
if ((ppPCI = xf86scanpci(0))) {
|
||||
for (; (pPCI = *ppPCI); ppPCI++) {
|
||||
if ((pPCI->pci_base_class != PCI_CLASS_BRIDGE) ||
|
||||
(pPCI->pci_sub_class != PCI_SUBCLASS_BRIDGE_HOST))
|
||||
continue;
|
||||
iter = pci_id_match_iterator_create(& match_host_bridge);
|
||||
while ((dev = pci_device_next(iter)) != NULL) {
|
||||
const PCITAG tag = PCI_MAKE_TAG(PCI_MAKE_BUS(dev->domain, dev->bus),
|
||||
dev->dev, dev->func);
|
||||
const int domain = xf86GetPciDomain(tag);
|
||||
|
||||
domain = xf86GetPciDomain(pPCI->tag);
|
||||
linuxGetSizes(pPCI->tag, &io_size, &mem_size);
|
||||
linuxGetSizes(tag, &io_size, &mem_size);
|
||||
|
||||
/*
|
||||
* At minimum, the top and bottom resources must be claimed, so
|
||||
|
@ -859,7 +865,8 @@ xf86AccResFromOS(resPtr pRes)
|
|||
if (domain <= 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
pci_iterator_destroy(iter);
|
||||
|
||||
return pRes;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue