Merge branch 'omap-fixes-warnings' of git://git.linaro.org/people/rmk/linux-arm

This set of changes are fixing various section mismatch warnings which
look to be completely valid.  Primerily, those which are fixed are those
which can cause oopses by manipulation of driver binding via sysfs.  For
example: calling code marked __init from driver probe __devinit
functions.

Some of these changes will be reworked at the next merge window when the
underlying reasons are sorted out.  In the mean time, I think it's
important to have this fixed for correctness.

Also included in this set are fixes to various error messages in OMAP -
including making them gramatically correct, fixing a few spelling
errors, and more importantly, making them greppable by unwrapping them.

Tony Lindgren has acked all these patches, put them out for testing a
week ago, and I've tested them on the platforms I have.

* 'omap-fixes-warnings' of git://git.linaro.org/people/rmk/linux-arm:
  ARM: omap: resolve nebulous 'Error setting wl12xx data'
  ARM: omap: fix wrapped error messages in omap_hwmod.c
  ARM: omap: fix section mismatch warnings in mux.c caused by hsmmc.c
  ARM: omap: fix section mismatch warning for sdp3430_twl_gpio_setup()
  ARM: omap: fix section mismatch error for omap_4430sdp_display_init()
  ARM: omap: fix section mismatch warning for omap_secondary_startup()
  ARM: omap: preemptively fix section mismatch in omap4_sdp4430_wifi_mux_init()
  ARM: omap: fix section mismatch warning in mux.c
  ARM: omap: fix section mismatch errors in TWL PMIC driver
  ARM: omap: fix uninformative vc/i2c configuration error message
  ARM: omap: fix vc.c PMIC error message
  ARM: omap: fix prm44xx.c OMAP44XX_IRQ_PRCM build error
This commit is contained in:
Linus Torvalds 2012-02-13 14:16:07 -08:00
commit b14a29982a
11 changed files with 74 additions and 56 deletions

View file

@ -814,7 +814,7 @@ static struct omap_dss_board_info sdp4430_dss_data = {
.default_device = &sdp4430_lcd_device, .default_device = &sdp4430_lcd_device,
}; };
static void omap_4430sdp_display_init(void) static void __init omap_4430sdp_display_init(void)
{ {
int r; int r;
@ -851,7 +851,7 @@ static struct omap_board_mux board_mux[] __initdata = {
#define board_mux NULL #define board_mux NULL
#endif #endif
static void omap4_sdp4430_wifi_mux_init(void) static void __init omap4_sdp4430_wifi_mux_init(void)
{ {
omap_mux_init_gpio(GPIO_WIFI_IRQ, OMAP_PIN_INPUT | omap_mux_init_gpio(GPIO_WIFI_IRQ, OMAP_PIN_INPUT |
OMAP_PIN_OFF_WAKEUPENABLE); OMAP_PIN_OFF_WAKEUPENABLE);
@ -878,12 +878,17 @@ static struct wl12xx_platform_data omap4_sdp4430_wlan_data __initdata = {
.board_tcxo_clock = WL12XX_TCXOCLOCK_26, .board_tcxo_clock = WL12XX_TCXOCLOCK_26,
}; };
static void omap4_sdp4430_wifi_init(void) static void __init omap4_sdp4430_wifi_init(void)
{ {
int ret;
omap4_sdp4430_wifi_mux_init(); omap4_sdp4430_wifi_mux_init();
if (wl12xx_set_platform_data(&omap4_sdp4430_wlan_data)) ret = wl12xx_set_platform_data(&omap4_sdp4430_wlan_data);
pr_err("Error setting wl12xx data\n"); if (ret)
platform_device_register(&omap_vwlan_device); pr_err("Error setting wl12xx data: %d\n", ret);
ret = platform_device_register(&omap_vwlan_device);
if (ret)
pr_err("Error registering wl12xx device: %d\n", ret);
} }
static void __init omap_4430sdp_init(void) static void __init omap_4430sdp_init(void)

View file

@ -617,6 +617,21 @@ static struct gpio omap3_evm_ehci_gpios[] __initdata = {
{ OMAP3_EVM_EHCI_SELECT, GPIOF_OUT_INIT_LOW, "select EHCI port" }, { OMAP3_EVM_EHCI_SELECT, GPIOF_OUT_INIT_LOW, "select EHCI port" },
}; };
static void __init omap3_evm_wl12xx_init(void)
{
#ifdef CONFIG_WL12XX_PLATFORM_DATA
int ret;
/* WL12xx WLAN Init */
ret = wl12xx_set_platform_data(&omap3evm_wlan_data);
if (ret)
pr_err("error setting wl12xx data: %d\n", ret);
ret = platform_device_register(&omap3evm_wlan_regulator);
if (ret)
pr_err("error registering wl12xx device: %d\n", ret);
#endif
}
static void __init omap3_evm_init(void) static void __init omap3_evm_init(void)
{ {
omap3_evm_get_revision(); omap3_evm_get_revision();
@ -665,13 +680,7 @@ static void __init omap3_evm_init(void)
omap_ads7846_init(1, OMAP3_EVM_TS_GPIO, 310, NULL); omap_ads7846_init(1, OMAP3_EVM_TS_GPIO, 310, NULL);
omap3evm_init_smsc911x(); omap3evm_init_smsc911x();
omap3_evm_display_init(); omap3_evm_display_init();
omap3_evm_wl12xx_init();
#ifdef CONFIG_WL12XX_PLATFORM_DATA
/* WL12xx WLAN Init */
if (wl12xx_set_platform_data(&omap3evm_wlan_data))
pr_err("error setting wl12xx data\n");
platform_device_register(&omap3evm_wlan_regulator);
#endif
} }
MACHINE_START(OMAP3EVM, "OMAP3 EVM") MACHINE_START(OMAP3EVM, "OMAP3 EVM")

View file

@ -488,13 +488,15 @@ void omap4_panda_display_init(void)
static void __init omap4_panda_init(void) static void __init omap4_panda_init(void)
{ {
int package = OMAP_PACKAGE_CBS; int package = OMAP_PACKAGE_CBS;
int ret;
if (omap_rev() == OMAP4430_REV_ES1_0) if (omap_rev() == OMAP4430_REV_ES1_0)
package = OMAP_PACKAGE_CBL; package = OMAP_PACKAGE_CBL;
omap4_mux_init(board_mux, NULL, package); omap4_mux_init(board_mux, NULL, package);
if (wl12xx_set_platform_data(&omap_panda_wlan_data)) ret = wl12xx_set_platform_data(&omap_panda_wlan_data);
pr_err("error setting wl12xx data\n"); if (ret)
pr_err("error setting wl12xx data: %d\n", ret);
omap4_panda_i2c_init(); omap4_panda_i2c_init();
platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices)); platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices));

View file

@ -296,8 +296,10 @@ static void enable_board_wakeup_source(void)
void __init zoom_peripherals_init(void) void __init zoom_peripherals_init(void)
{ {
if (wl12xx_set_platform_data(&omap_zoom_wlan_data)) int ret = wl12xx_set_platform_data(&omap_zoom_wlan_data);
pr_err("error setting wl12xx data\n");
if (ret)
pr_err("error setting wl12xx data: %d\n", ret);
omap_i2c_init(); omap_i2c_init();
platform_device_register(&omap_vwlan_device); platform_device_register(&omap_vwlan_device);

View file

@ -293,8 +293,8 @@ static inline void omap_hsmmc_mux(struct omap_mmc_platform_data *mmc_controller,
} }
} }
static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, static int omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
struct omap_mmc_platform_data *mmc) struct omap_mmc_platform_data *mmc)
{ {
char *hc_name; char *hc_name;
@ -430,7 +430,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
#define MAX_OMAP_MMC_HWMOD_NAME_LEN 16 #define MAX_OMAP_MMC_HWMOD_NAME_LEN 16
void __init omap_init_hsmmc(struct omap2_hsmmc_info *hsmmcinfo, int ctrl_nr) void omap_init_hsmmc(struct omap2_hsmmc_info *hsmmcinfo, int ctrl_nr)
{ {
struct omap_hwmod *oh; struct omap_hwmod *oh;
struct platform_device *pdev; struct platform_device *pdev;
@ -487,7 +487,7 @@ done:
kfree(mmc_data); kfree(mmc_data);
} }
void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers) void omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
{ {
u32 reg; u32 reg;

View file

@ -100,8 +100,8 @@ void omap_mux_write_array(struct omap_mux_partition *partition,
static char *omap_mux_options; static char *omap_mux_options;
static int __init _omap_mux_init_gpio(struct omap_mux_partition *partition, static int _omap_mux_init_gpio(struct omap_mux_partition *partition,
int gpio, int val) int gpio, int val)
{ {
struct omap_mux_entry *e; struct omap_mux_entry *e;
struct omap_mux *gpio_mux = NULL; struct omap_mux *gpio_mux = NULL;
@ -145,7 +145,7 @@ static int __init _omap_mux_init_gpio(struct omap_mux_partition *partition,
return 0; return 0;
} }
int __init omap_mux_init_gpio(int gpio, int val) int omap_mux_init_gpio(int gpio, int val)
{ {
struct omap_mux_partition *partition; struct omap_mux_partition *partition;
int ret; int ret;
@ -159,9 +159,9 @@ int __init omap_mux_init_gpio(int gpio, int val)
return -ENODEV; return -ENODEV;
} }
static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition, static int _omap_mux_get_by_name(struct omap_mux_partition *partition,
const char *muxname, const char *muxname,
struct omap_mux **found_mux) struct omap_mux **found_mux)
{ {
struct omap_mux *mux = NULL; struct omap_mux *mux = NULL;
struct omap_mux_entry *e; struct omap_mux_entry *e;
@ -240,7 +240,7 @@ omap_mux_get_by_name(const char *muxname,
return -ENODEV; return -ENODEV;
} }
int __init omap_mux_init_signal(const char *muxname, int val) int omap_mux_init_signal(const char *muxname, int val)
{ {
struct omap_mux_partition *partition = NULL; struct omap_mux_partition *partition = NULL;
struct omap_mux *mux = NULL; struct omap_mux *mux = NULL;
@ -1094,8 +1094,8 @@ static void omap_mux_init_package(struct omap_mux *superset,
omap_mux_package_init_balls(package_balls, superset); omap_mux_package_init_balls(package_balls, superset);
} }
static void omap_mux_init_signals(struct omap_mux_partition *partition, static void __init omap_mux_init_signals(struct omap_mux_partition *partition,
struct omap_board_mux *board_mux) struct omap_board_mux *board_mux)
{ {
omap_mux_set_cmdline_signals(); omap_mux_set_cmdline_signals();
omap_mux_write_array(partition, board_mux); omap_mux_write_array(partition, board_mux);
@ -1109,8 +1109,8 @@ static void omap_mux_init_package(struct omap_mux *superset,
{ {
} }
static void omap_mux_init_signals(struct omap_mux_partition *partition, static void __init omap_mux_init_signals(struct omap_mux_partition *partition,
struct omap_board_mux *board_mux) struct omap_board_mux *board_mux)
{ {
} }

View file

@ -18,6 +18,7 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/init.h> #include <linux/init.h>
__CPUINIT
/* /*
* OMAP4 specific entry point for secondary CPU to jump from ROM * OMAP4 specific entry point for secondary CPU to jump from ROM
* code. This routine also provides a holding flag into which * code. This routine also provides a holding flag into which

View file

@ -1517,8 +1517,8 @@ static int _enable(struct omap_hwmod *oh)
if (oh->_state != _HWMOD_STATE_INITIALIZED && if (oh->_state != _HWMOD_STATE_INITIALIZED &&
oh->_state != _HWMOD_STATE_IDLE && oh->_state != _HWMOD_STATE_IDLE &&
oh->_state != _HWMOD_STATE_DISABLED) { oh->_state != _HWMOD_STATE_DISABLED) {
WARN(1, "omap_hwmod: %s: enabled state can only be entered " WARN(1, "omap_hwmod: %s: enabled state can only be entered from initialized, idle, or disabled state\n",
"from initialized, idle, or disabled state\n", oh->name); oh->name);
return -EINVAL; return -EINVAL;
} }
@ -1600,8 +1600,8 @@ static int _idle(struct omap_hwmod *oh)
pr_debug("omap_hwmod: %s: idling\n", oh->name); pr_debug("omap_hwmod: %s: idling\n", oh->name);
if (oh->_state != _HWMOD_STATE_ENABLED) { if (oh->_state != _HWMOD_STATE_ENABLED) {
WARN(1, "omap_hwmod: %s: idle state can only be entered from " WARN(1, "omap_hwmod: %s: idle state can only be entered from enabled state\n",
"enabled state\n", oh->name); oh->name);
return -EINVAL; return -EINVAL;
} }
@ -1682,8 +1682,8 @@ static int _shutdown(struct omap_hwmod *oh)
if (oh->_state != _HWMOD_STATE_IDLE && if (oh->_state != _HWMOD_STATE_IDLE &&
oh->_state != _HWMOD_STATE_ENABLED) { oh->_state != _HWMOD_STATE_ENABLED) {
WARN(1, "omap_hwmod: %s: disabled state can only be entered " WARN(1, "omap_hwmod: %s: disabled state can only be entered from idle, or enabled state\n",
"from idle, or enabled state\n", oh->name); oh->name);
return -EINVAL; return -EINVAL;
} }
@ -2240,8 +2240,8 @@ void omap_hwmod_ocp_barrier(struct omap_hwmod *oh)
BUG_ON(!oh); BUG_ON(!oh);
if (!oh->class->sysc || !oh->class->sysc->sysc_flags) { if (!oh->class->sysc || !oh->class->sysc->sysc_flags) {
WARN(1, "omap_device: %s: OCP barrier impossible due to " WARN(1, "omap_device: %s: OCP barrier impossible due to device configuration\n",
"device configuration\n", oh->name); oh->name);
return; return;
} }

View file

@ -19,6 +19,7 @@
#include "common.h" #include "common.h"
#include <plat/cpu.h> #include <plat/cpu.h>
#include <plat/irqs.h>
#include <plat/prcm.h> #include <plat/prcm.h>
#include "vp.h" #include "vp.h"

View file

@ -247,7 +247,7 @@ static void __init omap4_vc_init_channel(struct voltagedomain *voltdm)
* omap_vc_i2c_init - initialize I2C interface to PMIC * omap_vc_i2c_init - initialize I2C interface to PMIC
* @voltdm: voltage domain containing VC data * @voltdm: voltage domain containing VC data
* *
* Use PMIC supplied seetings for I2C high-speed mode and * Use PMIC supplied settings for I2C high-speed mode and
* master code (if set) and program the VC I2C configuration * master code (if set) and program the VC I2C configuration
* register. * register.
* *
@ -265,8 +265,8 @@ static void __init omap_vc_i2c_init(struct voltagedomain *voltdm)
if (initialized) { if (initialized) {
if (voltdm->pmic->i2c_high_speed != i2c_high_speed) if (voltdm->pmic->i2c_high_speed != i2c_high_speed)
pr_warn("%s: I2C config for all channels must match.", pr_warn("%s: I2C config for vdd_%s does not match other channels (%u).",
__func__); __func__, voltdm->name, i2c_high_speed);
return; return;
} }
@ -292,9 +292,7 @@ void __init omap_vc_init_channel(struct voltagedomain *voltdm)
u32 val; u32 val;
if (!voltdm->pmic || !voltdm->pmic->uv_to_vsel) { if (!voltdm->pmic || !voltdm->pmic->uv_to_vsel) {
pr_err("%s: PMIC info requried to configure vc for" pr_err("%s: No PMIC info for vdd_%s\n", __func__, voltdm->name);
"vdd_%s not populated.Hence cannot initialize vc\n",
__func__, voltdm->name);
return; return;
} }

View file

@ -124,7 +124,7 @@ static u8 res_config_addrs[] = {
[RES_MAIN_REF] = 0x94, [RES_MAIN_REF] = 0x94,
}; };
static int __init twl4030_write_script_byte(u8 address, u8 byte) static int __devinit twl4030_write_script_byte(u8 address, u8 byte)
{ {
int err; int err;
@ -138,7 +138,7 @@ out:
return err; return err;
} }
static int __init twl4030_write_script_ins(u8 address, u16 pmb_message, static int __devinit twl4030_write_script_ins(u8 address, u16 pmb_message,
u8 delay, u8 next) u8 delay, u8 next)
{ {
int err; int err;
@ -158,7 +158,7 @@ out:
return err; return err;
} }
static int __init twl4030_write_script(u8 address, struct twl4030_ins *script, static int __devinit twl4030_write_script(u8 address, struct twl4030_ins *script,
int len) int len)
{ {
int err; int err;
@ -183,7 +183,7 @@ static int __init twl4030_write_script(u8 address, struct twl4030_ins *script,
return err; return err;
} }
static int __init twl4030_config_wakeup3_sequence(u8 address) static int __devinit twl4030_config_wakeup3_sequence(u8 address)
{ {
int err; int err;
u8 data; u8 data;
@ -208,7 +208,7 @@ out:
return err; return err;
} }
static int __init twl4030_config_wakeup12_sequence(u8 address) static int __devinit twl4030_config_wakeup12_sequence(u8 address)
{ {
int err = 0; int err = 0;
u8 data; u8 data;
@ -262,7 +262,7 @@ out:
return err; return err;
} }
static int __init twl4030_config_sleep_sequence(u8 address) static int __devinit twl4030_config_sleep_sequence(u8 address)
{ {
int err; int err;
@ -276,7 +276,7 @@ static int __init twl4030_config_sleep_sequence(u8 address)
return err; return err;
} }
static int __init twl4030_config_warmreset_sequence(u8 address) static int __devinit twl4030_config_warmreset_sequence(u8 address)
{ {
int err; int err;
u8 rd_data; u8 rd_data;
@ -324,7 +324,7 @@ out:
return err; return err;
} }
static int __init twl4030_configure_resource(struct twl4030_resconfig *rconfig) static int __devinit twl4030_configure_resource(struct twl4030_resconfig *rconfig)
{ {
int rconfig_addr; int rconfig_addr;
int err; int err;
@ -416,7 +416,7 @@ static int __init twl4030_configure_resource(struct twl4030_resconfig *rconfig)
return 0; return 0;
} }
static int __init load_twl4030_script(struct twl4030_script *tscript, static int __devinit load_twl4030_script(struct twl4030_script *tscript,
u8 address) u8 address)
{ {
int err; int err;
@ -527,7 +527,7 @@ void twl4030_power_off(void)
pr_err("TWL4030 Unable to power off\n"); pr_err("TWL4030 Unable to power off\n");
} }
void __init twl4030_power_init(struct twl4030_power_data *twl4030_scripts) void __devinit twl4030_power_init(struct twl4030_power_data *twl4030_scripts)
{ {
int err = 0; int err = 0;
int i; int i;