In file included from arch/arm/plat-omap/include/plat/omap_hwmod.h:37, from arch/arm/mach-omap2/io.c:45: arch/arm/plat-omap/include/plat/voltage.h: In function âomap_voltage_register_pmicâ: arch/arm/plat-omap/include/plat/voltage.h:137: warning: no return statement in function returning non-void which gets spammed out all through the build. voltage.h:137 says: static inline int omap_voltage_register_pmic(struct voltagedomain *voltdm, struct omap_volt_pmic_info *pmic_info) {} but no one checks the return value for this: arch/arm/mach-omap2/omap_twl.c: omap_voltage_register_pmic(voltdm, &omap4_mpu_volt_info); arch/arm/mach-omap2/omap_twl.c: omap_voltage_register_pmic(voltdm, &omap4_iva_volt_info); arch/arm/mach-omap2/omap_twl.c: omap_voltage_register_pmic(voltdm, &omap4_core_volt_info); arch/arm/mach-omap2/omap_twl.c: omap_voltage_register_pmic(voltdm, &omap3_mpu_volt_info); arch/arm/mach-omap2/omap_twl.c: omap_voltage_register_pmic(voltdm, &omap3_core_volt_info); so I don't see the point of it returning an 'int'. There's also: arch/arm/mach-omap2/io.c: In function âomap_irq_base_initâ: arch/arm/mach-omap2/io.c:322: warning: unused variable âomap_irq_baseâ This has never been built with !MULTI_OMAP2: +/* + * Initialize asm_irq_base for entry-macro.S + */ +static inline void omap_irq_base_init(void) +{ + extern void __iomem *omap_irq_base; + +#ifdef MULTI_OMAP2 + if (cpu_is_omap242x()) + omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP24XX_IC_BASE); + else if (cpu_is_omap34xx()) + omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP34XX_IC_BASE); + else if (cpu_is_omap44xx()) + omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP44XX_GIC_CPU_BASE); + else + pr_err("Could not initialize omap_irq_base\n"); +#endif +} and given the code and comment in entry-macros.S, it would be far better to define omap_irq_base in here, get rid of the ifdef and always initialize it, thereby eliminating that variability from needing multiple different configurations get proper build coverage. arch/arm/mach-omap2/mux.c: In function â_omap_mux_get_by_nameâ: arch/arm/mach-omap2/mux.c:163: warning: âfound_modeâ may be used uninitialized in this function The build ends with: In file included from arch/arm/plat-omap/include/plat/omap_hwmod.h:37, from arch/arm/mach-omap2/omap_hwmod_common_data.c:19: arch/arm/plat-omap/include/plat/voltage.h: In function âomap_voltage_register_pmicâ: arch/arm/plat-omap/include/plat/voltage.h:137: warning: no return statement in function returning non-void arch/arm/plat-omap/include/plat/voltage.h: In function âomap_voltage_late_initâ: arch/arm/plat-omap/include/plat/voltage.h:142: error: âEINVALâ undeclared (first use in this function) arch/arm/plat-omap/include/plat/voltage.h:142: error: (Each undeclared identifier is reported only once arch/arm/plat-omap/include/plat/voltage.h:142: error: for each function it appears in.) make[2]: *** [arch/arm/mach-omap2/omap_hwmod_common_data.o] Error 1 make[1]: *** [arch/arm/mach-omap2] Error 2 make[1]: *** Waiting for unfinished jobs.... Adding linux/errno.h to that header resolves that. That gets us down to the final link, which fails: arch/arm/mach-omap2/built-in.o: In function `omap2_set_init_voltage': arch/arm/mach-omap2/pm.c:181: undefined reference to `omap_voltage_domain_lookup' arch/arm/mach-omap2/built-in.o: In function `omap3_twl_init': arch/arm/mach-omap2/omap_twl.c:270: undefined reference to `omap_voltage_domain_lookup' arch/arm/mach-omap2/omap_twl.c:273: undefined reference to `omap_voltage_domain_lookup' So, this is what I currently have to get that far: diff --git a/arch/arm/mach-omap2/include/mach/entry-macro.S b/arch/arm/mach-omap2/include/mach/entry-macro.S index befa321..81985a6 100644 --- a/arch/arm/mach-omap2/include/mach/entry-macro.S +++ b/arch/arm/mach-omap2/include/mach/entry-macro.S @@ -38,20 +38,6 @@ */ #ifdef MULTI_OMAP2 - -/* - * We use __glue to avoid errors with multiple definitions of - * .globl omap_irq_base as it's included from entry-armv.S but not - * from entry-common.S. - */ -#ifdef __glue - .pushsection .data - .globl omap_irq_base -omap_irq_base: - .word 0 - .popsection -#endif - /* * Configure the interrupt base on the first interrupt. * See also omap_irq_base_init for setting omap_irq_base. diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index e66687b..c203204 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c @@ -314,14 +314,13 @@ static int _set_hwmod_postsetup_state(struct omap_hwmod *oh, void *data) return omap_hwmod_set_postsetup_state(oh, *(u8 *)data); } +void __iomem *omap_irq_base; + /* * Initialize asm_irq_base for entry-macro.S */ static inline void omap_irq_base_init(void) { - extern void __iomem *omap_irq_base; - -#ifdef MULTI_OMAP2 if (cpu_is_omap24xx()) omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP24XX_IC_BASE); else if (cpu_is_omap34xx()) @@ -330,7 +329,6 @@ static inline void omap_irq_base_init(void) omap_irq_base = OMAP2_L4_IO_ADDRESS(OMAP44XX_GIC_CPU_BASE); else pr_err("Could not initialize omap_irq_base\n"); -#endif } void __init omap2_init_common_infrastructure(void) diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 17bd639..9eaa28c 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c @@ -160,7 +160,7 @@ static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition, struct omap_mux *mux = NULL; struct omap_mux_entry *e; const char *mode_name; - int found = 0, found_mode, mode0_len = 0; + int found = 0, found_mode = 0, mode0_len = 0; struct list_head *muxmodes = &partition->muxmodes; mode_name = strchr(muxname, '.'); diff --git a/arch/arm/plat-omap/include/plat/voltage.h b/arch/arm/plat-omap/include/plat/voltage.h index 0ff1233..ffcdff9 100644 --- a/arch/arm/plat-omap/include/plat/voltage.h +++ b/arch/arm/plat-omap/include/plat/voltage.h @@ -14,6 +14,8 @@ #ifndef __ARCH_ARM_MACH_OMAP2_VOLTAGE_H #define __ARCH_ARM_MACH_OMAP2_VOLTAGE_H +#include <linux/errno.h> + #define VOLTSCALE_VPFORCEUPDATE 1 #define VOLTSCALE_VCBYPASS 2 @@ -133,9 +135,9 @@ void omap_change_voltscale_method(struct voltagedomain *voltdm, int voltscale_method); int omap_voltage_late_init(void); #else -static inline int omap_voltage_register_pmic(struct voltagedomain *voltdm, +static inline void omap_voltage_register_pmic(struct voltagedomain *voltdm, struct omap_volt_pmic_info *pmic_info) {} -static inline void omap_change_voltscale_method(struct voltagedomain *voltdm, +static inline void omap_change_voltscale_method(struct voltagedomain *voltdm, int voltscale_method) {} static inline int omap_voltage_late_init(void) { -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html