[brcm47xx]: bcma: do not initialize deactivated PCIe cores
Before it was tried to initialize the deactivated PCIe core in client mode, but this causes the SoC to hang. Just do not initialize it at all and ignore the core it is not working and nothing is connected to it when the specific bit is set in the boardflags. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33620 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
1f128d7c23
commit
6e36f40ae6
|
@ -0,0 +1,26 @@
|
|||
--- a/drivers/bcma/driver_pci_host.c
|
||||
+++ b/drivers/bcma/driver_pci_host.c
|
||||
@@ -35,11 +35,6 @@ bool __devinit bcma_core_pci_is_in_hostm
|
||||
chipid_top != 0x5300)
|
||||
return false;
|
||||
|
||||
- if (bus->sprom.boardflags_lo & BCMA_CORE_PCI_BFL_NOPCI) {
|
||||
- bcma_info(bus, "This PCI core is disabled and not working\n");
|
||||
- return false;
|
||||
- }
|
||||
-
|
||||
bcma_core_enable(pc->core, 0);
|
||||
|
||||
return !mips_busprobe32(tmp, pc->core->io_addr);
|
||||
@@ -396,6 +391,11 @@ void __devinit bcma_core_pci_hostmode_in
|
||||
|
||||
bcma_info(bus, "PCIEcore in host mode found\n");
|
||||
|
||||
+ if (bus->sprom.boardflags_lo & BCMA_CORE_PCI_BFL_NOPCI) {
|
||||
+ bcma_info(bus, "This PCIE core is disabled and not working\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
pc_host = kzalloc(sizeof(*pc_host), GFP_KERNEL);
|
||||
if (!pc_host) {
|
||||
bcma_err(bus, "can not allocate memory");
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/bcma/driver_pci_host.c
|
||||
+++ b/drivers/bcma/driver_pci_host.c
|
||||
@@ -99,19 +99,19 @@ static int bcma_extpci_read_config(struc
|
||||
@@ -94,19 +94,19 @@ static int bcma_extpci_read_config(struc
|
||||
if (dev == 0) {
|
||||
/* we support only two functions on device 0 */
|
||||
if (func > 1)
|
||||
|
@ -23,7 +23,7 @@
|
|||
val = pcicore_read32(pc, addr);
|
||||
}
|
||||
} else {
|
||||
@@ -127,8 +127,6 @@ static int bcma_extpci_read_config(struc
|
||||
@@ -122,8 +122,6 @@ static int bcma_extpci_read_config(struc
|
||||
val = 0xffffffff;
|
||||
goto unmap;
|
||||
}
|
||||
|
@ -32,7 +32,7 @@
|
|||
}
|
||||
val >>= (8 * (off & 3));
|
||||
|
||||
@@ -156,7 +154,7 @@ static int bcma_extpci_write_config(stru
|
||||
@@ -151,7 +149,7 @@ static int bcma_extpci_write_config(stru
|
||||
const void *buf, int len)
|
||||
{
|
||||
int err = -EINVAL;
|
||||
|
@ -41,7 +41,7 @@
|
|||
void __iomem *mmio = 0;
|
||||
u16 chipid = pc->core->bus->chipinfo.id;
|
||||
|
||||
@@ -164,16 +162,22 @@ static int bcma_extpci_write_config(stru
|
||||
@@ -159,16 +157,22 @@ static int bcma_extpci_write_config(stru
|
||||
if (unlikely(len != 1 && len != 2 && len != 4))
|
||||
goto out;
|
||||
if (dev == 0) {
|
||||
|
@ -70,7 +70,7 @@
|
|||
}
|
||||
} else {
|
||||
addr = bcma_get_cfgspace_addr(pc, dev, func, off);
|
||||
@@ -192,12 +196,10 @@ static int bcma_extpci_write_config(stru
|
||||
@@ -187,12 +191,10 @@ static int bcma_extpci_write_config(stru
|
||||
|
||||
switch (len) {
|
||||
case 1:
|
||||
|
@ -83,7 +83,7 @@
|
|||
val &= ~(0xFFFF << (8 * (off & 3)));
|
||||
val |= *((const u16 *)buf) << (8 * (off & 3));
|
||||
break;
|
||||
@@ -205,13 +207,14 @@ static int bcma_extpci_write_config(stru
|
||||
@@ -200,13 +202,14 @@ static int bcma_extpci_write_config(stru
|
||||
val = *((const u32 *)buf);
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue