From 6a5d924689243efdd94628502bc39bb07bd43bfc Mon Sep 17 00:00:00 2001 From: Prabhakar Kushwaha Date: Mon, 23 May 2011 15:53:25 +0530 Subject: [PATCH] --- yaml --- r: 259103 b: refs/heads/master c: 08871c097ea5a11c95146ba8310272571d2bbfc4 h: refs/heads/master i: 259101: 597d53030b25b715e31d589cb1c439be4d995608 259099: 44bd6b71e2bc71bf03ea8f627fc30a01052f06e8 259095: 6e4f79b6973a39760bfc19db326cb80562c1c0ee 259087: 86c1ea293edd36db9209b0d38ff24b597bfcd206 259071: 7ea23c9bcc745b1b74d1dc0fd85bc5d4d694b719 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/sysdev/fsl_pci.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 7c83071aecc1..717555d35e16 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3907ab26866006087c4d1e48e9d1306e281ec955 +refs/heads/master: 08871c097ea5a11c95146ba8310272571d2bbfc4 diff --git a/trunk/arch/powerpc/sysdev/fsl_pci.c b/trunk/arch/powerpc/sysdev/fsl_pci.c index b4d6046deff8..80b8b7a04454 100644 --- a/trunk/arch/powerpc/sysdev/fsl_pci.c +++ b/trunk/arch/powerpc/sysdev/fsl_pci.c @@ -330,6 +330,7 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary) struct pci_controller *hose; struct resource rsrc; const int *bus_range; + u8 progif; if (!of_device_is_available(dev)) { pr_warning("%s: disabled\n", dev->full_name); @@ -360,6 +361,18 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary) setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4, PPC_INDIRECT_TYPE_BIG_ENDIAN); + + early_read_config_byte(hose, 0, 0, PCI_CLASS_PROG, &progif); + if ((progif & 1) == 1) { + /* unmap cfg_data & cfg_addr separately if not on same page */ + if (((unsigned long)hose->cfg_data & PAGE_MASK) != + ((unsigned long)hose->cfg_addr & PAGE_MASK)) + iounmap(hose->cfg_data); + iounmap(hose->cfg_addr); + pcibios_free_controller(hose); + return 0; + } + setup_pci_cmd(hose); /* check PCI express link status */