diff options
Diffstat (limited to 'arch')
| -rw-r--r-- | arch/powerpc/sysdev/indirect_pci.c | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/powerpc/sysdev/indirect_pci.c b/arch/powerpc/sysdev/indirect_pci.c index c7e6e859b39..bc5b4e22fa5 100644 --- a/arch/powerpc/sysdev/indirect_pci.c +++ b/arch/powerpc/sysdev/indirect_pci.c @@ -35,10 +35,17 @@ indirect_read_config(struct pci_bus *bus, unsigned int devfn, int offset,  	u8 cfg_type = 0;  	u32 bus_no, reg; +	if (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK) { +		if (bus->number != hose->first_busno) +			return PCIBIOS_DEVICE_NOT_FOUND; +		if (devfn != 0) +			return PCIBIOS_DEVICE_NOT_FOUND; +	} +  	if (ppc_md.pci_exclude_device)  		if (ppc_md.pci_exclude_device(hose, bus->number, devfn))  			return PCIBIOS_DEVICE_NOT_FOUND; -	 +  	if (hose->indirect_type & PPC_INDIRECT_TYPE_SET_CFG_TYPE)  		if (bus->number != hose->first_busno)  			cfg_type = 1; @@ -83,6 +90,13 @@ indirect_write_config(struct pci_bus *bus, unsigned int devfn, int offset,  	u8 cfg_type = 0;  	u32 bus_no, reg; +	if (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK) { +		if (bus->number != hose->first_busno) +			return PCIBIOS_DEVICE_NOT_FOUND; +		if (devfn != 0) +			return PCIBIOS_DEVICE_NOT_FOUND; +	} +  	if (ppc_md.pci_exclude_device)  		if (ppc_md.pci_exclude_device(hose, bus->number, devfn))  			return PCIBIOS_DEVICE_NOT_FOUND;  |