[linux-yocto] [PATCH 16/30] arch/powerpc/sysdev: Fixed PCIe enumeration issue on AXM3500 emulation
Charlie Paul
cpaul.windriver at gmail.com
Thu Apr 17 19:37:04 PDT 2014
From: SangeethaRao <sangeetha.rao at lsi.com>
Signed-off-by: SangeethaRao <sangeetha.rao at lsi.com>
---
arch/powerpc/sysdev/lsi_pci.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/sysdev/lsi_pci.c b/arch/powerpc/sysdev/lsi_pci.c
index a25d396..75bdf53 100644
--- a/arch/powerpc/sysdev/lsi_pci.c
+++ b/arch/powerpc/sysdev/lsi_pci.c
@@ -20,6 +20,7 @@
#include <mm/mmu_decl.h>
#include "ppc4xx_pci.h"
+#include "../../../drivers/misc/lsi-ncr.h"
#include <linux/interrupt.h>
@@ -70,6 +71,7 @@ fixup_acp_pci_bridge(struct pci_dev *dev)
DECLARE_PCI_FIXUP_HEADER(0x1000, 0x5101, fixup_acp_pci_bridge);
DECLARE_PCI_FIXUP_HEADER(0x1000, 0x5108, fixup_acp_pci_bridge);
+DECLARE_PCI_FIXUP_HEADER(0x1000, 0x5102, fixup_acp_pci_bridge);
static int __init acp_parse_dma_ranges(struct pci_controller *hose,
void __iomem *reg,
@@ -954,6 +956,7 @@ acp_pciex_port_setup_hose(struct pciex_port *port)
u32 pci_status;
u32 link_state;
u32 pci_config;
+ u32 version;
/* Check if primary bridge */
if (of_get_property(port->node, "primary", NULL))
@@ -1060,6 +1063,17 @@ acp_pciex_port_setup_hose(struct pciex_port *port)
}
}
+ /* get the device version */
+ if (0 != ncr_read(NCP_REGION_ID(0x16, 0xff), 0x0, 4, &version)) {
+ printk(KERN_ERR "Unable to detect ACP revision!\n");
+ goto fail;
+ }
+
+ port->acpChipType = (version & 0xff);
+ printk(KERN_INFO "Using PEI register set for ACP chipType %d\n",
+ port->acpChipType);
+
+
/*
* Set bus numbers on our root port
*/
@@ -1171,11 +1185,6 @@ static void __init probe_acp_pciex_bridge(struct device_node *np)
return;
}
-
- port->acpChipType = 0x2;
- printk(KERN_INFO "Using PEI register set for ACP chipType %d\n",
- port->acpChipType);
-
/* Check for the PLX work-around. */
field = of_get_property(np, "plx", NULL);
--
1.7.9.5
More information about the linux-yocto
mailing list