diff options
Diffstat (limited to 'arch/powerpc/sysdev/fsl_pci.c')
| -rw-r--r-- | arch/powerpc/sysdev/fsl_pci.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c index a7b2a600d0a..c37f4613632 100644 --- a/arch/powerpc/sysdev/fsl_pci.c +++ b/arch/powerpc/sysdev/fsl_pci.c @@ -465,7 +465,7 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)  			iounmap(hose->cfg_data);  		iounmap(hose->cfg_addr);  		pcibios_free_controller(hose); -		return 0; +		return -ENODEV;  	}  	setup_pci_cmd(hose); @@ -827,6 +827,7 @@ struct device_node *fsl_pci_primary;  void __devinit fsl_pci_init(void)  { +	int ret;  	struct device_node *node;  	struct pci_controller *hose;  	dma_addr_t max = 0xffffffff; @@ -855,10 +856,12 @@ void __devinit fsl_pci_init(void)  			if (!fsl_pci_primary)  				fsl_pci_primary = node; -			fsl_add_bridge(node, fsl_pci_primary == node); -			hose = pci_find_hose_for_OF_device(node); -			max = min(max, hose->dma_window_base_cur + -					hose->dma_window_size); +			ret = fsl_add_bridge(node, fsl_pci_primary == node); +			if (ret == 0) { +				hose = pci_find_hose_for_OF_device(node); +				max = min(max, hose->dma_window_base_cur + +						hose->dma_window_size); +			}  		}  	}  |