diff options
Diffstat (limited to 'arch/powerpc/sysdev/ppc4xx_pci.c')
-rw-r--r-- | arch/powerpc/sysdev/ppc4xx_pci.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c index b4a54c52e880..fb368dfde5d4 100644 --- a/arch/powerpc/sysdev/ppc4xx_pci.c +++ b/arch/powerpc/sysdev/ppc4xx_pci.c | |||
@@ -75,6 +75,11 @@ static void fixup_ppc4xx_pci_bridge(struct pci_dev *dev) | |||
75 | !of_device_is_compatible(hose->dn, "ibm,plb-pci")) | 75 | !of_device_is_compatible(hose->dn, "ibm,plb-pci")) |
76 | return; | 76 | return; |
77 | 77 | ||
78 | if (of_device_is_compatible(hose->dn, "ibm,plb440epx-pci") || | ||
79 | of_device_is_compatible(hose->dn, "ibm,plb440grx-pci")) { | ||
80 | hose->indirect_type |= PPC_INDIRECT_TYPE_BROKEN_MRM; | ||
81 | } | ||
82 | |||
78 | /* Hide the PCI host BARs from the kernel as their content doesn't | 83 | /* Hide the PCI host BARs from the kernel as their content doesn't |
79 | * fit well in the resource management | 84 | * fit well in the resource management |
80 | */ | 85 | */ |
@@ -1634,6 +1639,15 @@ static void __init ppc4xx_probe_pciex_bridge(struct device_node *np) | |||
1634 | } | 1639 | } |
1635 | port = &ppc4xx_pciex_ports[portno]; | 1640 | port = &ppc4xx_pciex_ports[portno]; |
1636 | port->index = portno; | 1641 | port->index = portno; |
1642 | |||
1643 | /* | ||
1644 | * Check if device is enabled | ||
1645 | */ | ||
1646 | if (!of_device_is_available(np)) { | ||
1647 | printk(KERN_INFO "PCIE%d: Port disabled via device-tree\n", port->index); | ||
1648 | return; | ||
1649 | } | ||
1650 | |||
1637 | port->node = of_node_get(np); | 1651 | port->node = of_node_get(np); |
1638 | pval = of_get_property(np, "sdr-base", NULL); | 1652 | pval = of_get_property(np, "sdr-base", NULL); |
1639 | if (pval == NULL) { | 1653 | if (pval == NULL) { |