aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/common.h
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2016-11-07 18:50:11 -0500
committerTony Lindgren <tony@atomide.com>2016-11-07 18:51:58 -0500
commit8a8be46afeaa47aed1debe7e9b18152f9826a6b7 (patch)
treeae9adace4da3d45ec18232bbddead6ce462e4665 /arch/arm/mach-omap2/common.h
parentda6d5993bf951846956903bee4f0eafd918250db (diff)
ARM: OMAP5: Fix mpuss_early_init
We need to properly initialize mpuss also on omap5 like we do on omap4. Otherwise we run into similar kexec problems like we had on omap4 when trying to kexec from a kernel with PM initialized. Fixes: 0573b957fc21 ("ARM: OMAP4+: Prevent CPU1 related hang with kexec") Acked-by: Santosh Shilimkar <ssantosh@kernel.org> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/common.h')
-rw-r--r--arch/arm/mach-omap2/common.h38
1 files changed, 29 insertions, 9 deletions
diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index deed42e1dd9c..6dcca2957e23 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -262,8 +262,6 @@ extern void __iomem *omap4_get_sar_ram_base(void);
262extern void omap4_mpuss_early_init(void); 262extern void omap4_mpuss_early_init(void);
263extern void omap_do_wfi(void); 263extern void omap_do_wfi(void);
264 264
265extern void omap4_secondary_startup(void);
266extern void omap4460_secondary_startup(void);
267 265
268#ifdef CONFIG_SMP 266#ifdef CONFIG_SMP
269/* Needed for secondary core boot */ 267/* Needed for secondary core boot */
@@ -275,16 +273,11 @@ extern void omap4_cpu_die(unsigned int cpu);
275extern int omap4_cpu_kill(unsigned int cpu); 273extern int omap4_cpu_kill(unsigned int cpu);
276 274
277extern const struct smp_operations omap4_smp_ops; 275extern const struct smp_operations omap4_smp_ops;
278
279extern void omap5_secondary_startup(void);
280extern void omap5_secondary_hyp_startup(void);
281#endif 276#endif
282 277
283#if defined(CONFIG_SMP) && defined(CONFIG_PM) 278#if defined(CONFIG_SMP) && defined(CONFIG_PM)
284extern int omap4_mpuss_init(void); 279extern int omap4_mpuss_init(void);
285extern int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state); 280extern int omap4_enter_lowpower(unsigned int cpu, unsigned int power_state);
286extern int omap4_finish_suspend(unsigned long cpu_state);
287extern void omap4_cpu_resume(void);
288extern int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state); 281extern int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state);
289#else 282#else
290static inline int omap4_enter_lowpower(unsigned int cpu, 283static inline int omap4_enter_lowpower(unsigned int cpu,
@@ -305,14 +298,41 @@ static inline int omap4_mpuss_init(void)
305 return 0; 298 return 0;
306} 299}
307 300
301#endif
302
303#ifdef CONFIG_ARCH_OMAP4
304void omap4_secondary_startup(void);
305void omap4460_secondary_startup(void);
306int omap4_finish_suspend(unsigned long cpu_state);
307void omap4_cpu_resume(void);
308#else
309static inline void omap4_secondary_startup(void)
310{
311}
312
313static inline void omap4460_secondary_startup(void)
314{
315}
308static inline int omap4_finish_suspend(unsigned long cpu_state) 316static inline int omap4_finish_suspend(unsigned long cpu_state)
309{ 317{
310 return 0; 318 return 0;
311} 319}
312
313static inline void omap4_cpu_resume(void) 320static inline void omap4_cpu_resume(void)
314{} 321{
322}
323#endif
315 324
325#if defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX)
326void omap5_secondary_startup(void);
327void omap5_secondary_hyp_startup(void);
328#else
329static inline void omap5_secondary_startup(void)
330{
331}
332
333static inline void omap5_secondary_hyp_startup(void)
334{
335}
316#endif 336#endif
317 337
318void pdata_quirks_init(const struct of_device_id *); 338void pdata_quirks_init(const struct of_device_id *);