aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXia Kaixu <kaixu.xia@linaro.org>2014-09-03 09:18:12 -0400
committerArnd Bergmann <arnd@arndb.de>2014-09-04 17:39:57 -0400
commit0a2e912d296201c476fe5d7ba6ac23a66325935f (patch)
treeac87d60dde207d49e6c6da95e15c34e850603706
parentc96bfaffb783b86555e13d97e871c2adeb97d613 (diff)
ARM: cns3xxx: fix allmodconfig panic in pci driver
The kernel panic occurs when running an allmodconfig kernel on OMAP4460. The inicall "cns3xxx_pcie_init" does not check which hardware it's running on and just tries to access to its specific registers. Now call it from .init_late callback from the two machine descriptors. Signed-off-by: Xia Kaixu <kaixu.xia@linaro.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Cc: Anton Vorontsov <anton@enomsg.org> Cc: Felix Fietkau <nbd@openwrt.org> Cc: Imre Kaloz <kaloz@openwrt.org> Cc: linaro-kernel@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org
-rw-r--r--arch/arm/mach-cns3xxx/cns3420vb.c1
-rw-r--r--arch/arm/mach-cns3xxx/core.c1
-rw-r--r--arch/arm/mach-cns3xxx/core.h6
-rw-r--r--arch/arm/mach-cns3xxx/pcie.c5
-rw-r--r--drivers/cpufreq/Kconfig.arm2
5 files changed, 10 insertions, 5 deletions
diff --git a/arch/arm/mach-cns3xxx/cns3420vb.c b/arch/arm/mach-cns3xxx/cns3420vb.c
index d863d8729edc..6428bcc77e87 100644
--- a/arch/arm/mach-cns3xxx/cns3420vb.c
+++ b/arch/arm/mach-cns3xxx/cns3420vb.c
@@ -250,5 +250,6 @@ MACHINE_START(CNS3420VB, "Cavium Networks CNS3420 Validation Board")
250 .init_irq = cns3xxx_init_irq, 250 .init_irq = cns3xxx_init_irq,
251 .init_time = cns3xxx_timer_init, 251 .init_time = cns3xxx_timer_init,
252 .init_machine = cns3420_init, 252 .init_machine = cns3420_init,
253 .init_late = cns3xxx_pcie_init_late,
253 .restart = cns3xxx_restart, 254 .restart = cns3xxx_restart,
254MACHINE_END 255MACHINE_END
diff --git a/arch/arm/mach-cns3xxx/core.c b/arch/arm/mach-cns3xxx/core.c
index f85449a6accd..4e9837ded96d 100644
--- a/arch/arm/mach-cns3xxx/core.c
+++ b/arch/arm/mach-cns3xxx/core.c
@@ -404,5 +404,6 @@ DT_MACHINE_START(CNS3XXX_DT, "Cavium Networks CNS3xxx")
404 .init_irq = cns3xxx_init_irq, 404 .init_irq = cns3xxx_init_irq,
405 .init_time = cns3xxx_timer_init, 405 .init_time = cns3xxx_timer_init,
406 .init_machine = cns3xxx_init, 406 .init_machine = cns3xxx_init,
407 .init_late = cns3xxx_pcie_init_late,
407 .restart = cns3xxx_restart, 408 .restart = cns3xxx_restart,
408MACHINE_END 409MACHINE_END
diff --git a/arch/arm/mach-cns3xxx/core.h b/arch/arm/mach-cns3xxx/core.h
index 5218b6198dc2..dc5df7f1e39f 100644
--- a/arch/arm/mach-cns3xxx/core.h
+++ b/arch/arm/mach-cns3xxx/core.h
@@ -21,6 +21,12 @@ void __init cns3xxx_l2x0_init(void);
21static inline void cns3xxx_l2x0_init(void) {} 21static inline void cns3xxx_l2x0_init(void) {}
22#endif /* CONFIG_CACHE_L2X0 */ 22#endif /* CONFIG_CACHE_L2X0 */
23 23
24#ifdef CONFIG_PCI
25extern void __init cns3xxx_pcie_init_late(void);
26#else
27static inline void __init cns3xxx_pcie_init_late(void) {}
28#endif
29
24void __init cns3xxx_map_io(void); 30void __init cns3xxx_map_io(void);
25void __init cns3xxx_init_irq(void); 31void __init cns3xxx_init_irq(void);
26void cns3xxx_power_off(void); 32void cns3xxx_power_off(void);
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c
index 413134c54452..70fd81ea1828 100644
--- a/arch/arm/mach-cns3xxx/pcie.c
+++ b/arch/arm/mach-cns3xxx/pcie.c
@@ -318,7 +318,7 @@ static int cns3xxx_pcie_abort_handler(unsigned long addr, unsigned int fsr,
318 return 0; 318 return 0;
319} 319}
320 320
321static int __init cns3xxx_pcie_init(void) 321void __init cns3xxx_pcie_init_late(void)
322{ 322{
323 int i; 323 int i;
324 324
@@ -337,7 +337,4 @@ static int __init cns3xxx_pcie_init(void)
337 } 337 }
338 338
339 pci_assign_unassigned_resources(); 339 pci_assign_unassigned_resources();
340
341 return 0;
342} 340}
343device_initcall(cns3xxx_pcie_init);
diff --git a/drivers/cpufreq/Kconfig.arm b/drivers/cpufreq/Kconfig.arm
index 7364a538e056..18ad141907ff 100644
--- a/drivers/cpufreq/Kconfig.arm
+++ b/drivers/cpufreq/Kconfig.arm
@@ -77,7 +77,7 @@ config ARM_EXYNOS5440_CPUFREQ
77 77
78config ARM_EXYNOS_CPU_FREQ_BOOST_SW 78config ARM_EXYNOS_CPU_FREQ_BOOST_SW
79 bool "EXYNOS Frequency Overclocking - Software" 79 bool "EXYNOS Frequency Overclocking - Software"
80 depends on ARM_EXYNOS_CPUFREQ 80 depends on ARM_EXYNOS_CPUFREQ && THERMAL
81 select CPU_FREQ_BOOST_SW 81 select CPU_FREQ_BOOST_SW
82 select EXYNOS_THERMAL 82 select EXYNOS_THERMAL
83 help 83 help