linux: Use pci_device_get_parent_bridge instead of open-coding it
Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com> Tested-by: Jeremy Huddleston <jeremyhu@apple.com> Signed-off-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Jamey Sharp <jamey@minilop.net>
This commit is contained in:
		
							parent
							
								
									858fbbb40d
								
							
						
					
					
						commit
						dd72b3c1f1
					
				| 
						 | 
				
			
			@ -160,45 +160,6 @@ linuxPciOpenFile(struct pci_device *dev, Bool write)
 | 
			
		|||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/* This probably shouldn't be Linux-specific */
 | 
			
		||||
static struct pci_device *
 | 
			
		||||
get_parent_bridge(struct pci_device *dev)
 | 
			
		||||
{
 | 
			
		||||
    struct pci_id_match bridge_match = {
 | 
			
		||||
	PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY,
 | 
			
		||||
	(PCI_CLASS_BRIDGE << 16) | (PCI_SUBCLASS_BRIDGE_PCI << 8),
 | 
			
		||||
	0
 | 
			
		||||
    };
 | 
			
		||||
    struct pci_device *bridge;
 | 
			
		||||
    struct pci_device_iterator *iter;
 | 
			
		||||
 | 
			
		||||
    if (dev == NULL) {
 | 
			
		||||
	return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    iter = pci_id_match_iterator_create(& bridge_match);
 | 
			
		||||
    if (iter == NULL) {
 | 
			
		||||
	return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    while ((bridge = pci_device_next(iter)) != NULL) {
 | 
			
		||||
	if (bridge->domain == dev->domain) {
 | 
			
		||||
	    const struct pci_bridge_info *info = 
 | 
			
		||||
		pci_device_get_bridge_info(bridge);
 | 
			
		||||
 | 
			
		||||
	    if (info != NULL) {
 | 
			
		||||
		if (info->secondary_bus == dev->bus) {
 | 
			
		||||
		    break;
 | 
			
		||||
		}
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pci_iterator_destroy(iter);
 | 
			
		||||
 | 
			
		||||
    return bridge;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static pointer
 | 
			
		||||
linuxMapPci(int ScreenNum, int Flags, struct pci_device *dev,
 | 
			
		||||
	    ADDRESS Base, unsigned long Size, int mmap_ioctl)
 | 
			
		||||
| 
						 | 
				
			
			@ -283,7 +244,7 @@ linuxOpenLegacy(struct pci_device *dev, char *name)
 | 
			
		|||
	    return fd;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dev = get_parent_bridge(dev);
 | 
			
		||||
	dev = pci_device_get_parent_bridge(dev);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return fd;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue