From 45aebb9465e22b236a201deef1b234693d99e174 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Sun, 6 May 2012 15:13:48 +0200 Subject: [PATCH 2/2] MIPS: BCM63XX: explicitly register the PCI bus Instead of setting a global variable toggling the PCI registration, register it in the device_register phase after setting the fallback sprom to ensure there cannot be a race between them. Signed-off-by: Jonas Gorski --- arch/mips/bcm63xx/boards/board_bcm963xx.c | 6 +++++- .../include/asm/mach-bcm63xx/bcm63xx_dev_pci.h | 4 +++- arch/mips/pci/pci-bcm63xx.c | 13 +------------ 3 files changed, 9 insertions(+), 14 deletions(-) --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c @@ -825,7 +825,6 @@ void __init board_prom_init(void) #ifdef CONFIG_PCI if (board.has_pci) { - bcm63xx_pci_enabled = 1; if (BCMCPU_IS_6348()) val |= GPIO_MODE_6348_G2_PCI; } @@ -997,5 +996,10 @@ int __init board_register_devices(void) platform_device_register(&bcm63xx_gpio_keys_device); } +#ifdef CONFIG_PCI + if (board.has_pci) + bcm63xx_pci_register(); +#endif + return 0; } --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pci.h +++ b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_pci.h @@ -1,6 +1,8 @@ #ifndef BCM63XX_DEV_PCI_H_ #define BCM63XX_DEV_PCI_H_ -extern int bcm63xx_pci_enabled; +#include + +int __init bcm63xx_pci_register(void); #endif /* BCM63XX_DEV_PCI_H_ */ --- a/arch/mips/pci/pci-bcm63xx.c +++ b/arch/mips/pci/pci-bcm63xx.c @@ -14,12 +14,6 @@ #include "pci-bcm63xx.h" -/* - * Allow PCI to be disabled at runtime depending on board nvram - * configuration - */ -int bcm63xx_pci_enabled; - static struct resource bcm_pci_mem_resource = { .name = "bcm63xx PCI memory space", .start = BCM_PCI_MEM_BASE_PA, @@ -94,7 +88,7 @@ static void bcm63xx_int_cfg_writel(u32 v void __iomem *pci_iospace_start; -static int __init bcm63xx_pci_init(void) +int __init bcm63xx_pci_register(void) { unsigned int mem_size; u32 val; @@ -102,9 +96,6 @@ static int __init bcm63xx_pci_init(void) if (!BCMCPU_IS_6348() && !BCMCPU_IS_6358() && !BCMCPU_IS_6368()) return -ENODEV; - if (!bcm63xx_pci_enabled) - return -ENODEV; - /* * configuration access are done through IO space, remap 4 * first bytes to access it from CPU. @@ -220,5 +211,3 @@ static int __init bcm63xx_pci_init(void) "bcm63xx PCI IO space"); return 0; } - -arch_initcall(bcm63xx_pci_init);