forked from Minki/linux
ath6kl: propagate errors on module setup
This propagates initial platform registration failures and also HIF initialization failures. Cc: Naveen Singh <nsingh@atheros.com> Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
0e7fd280fb
commit
711908df76
@ -125,31 +125,27 @@ ATH_DEBUG_INSTANTIATE_MODULE_VAR(hif,
|
||||
/* ------ Functions ------ */
|
||||
int HIFInit(OSDRV_CALLBACKS *callbacks)
|
||||
{
|
||||
int status;
|
||||
AR_DEBUG_ASSERT(callbacks != NULL);
|
||||
int r;
|
||||
AR_DEBUG_ASSERT(callbacks != NULL);
|
||||
|
||||
A_REGISTER_MODULE_DEBUG_INFO(hif);
|
||||
A_REGISTER_MODULE_DEBUG_INFO(hif);
|
||||
|
||||
/* store the callback handlers */
|
||||
osdrvCallbacks = *callbacks;
|
||||
/* store the callback handlers */
|
||||
osdrvCallbacks = *callbacks;
|
||||
|
||||
/* Register with bus driver core */
|
||||
registered = 1;
|
||||
|
||||
/* Register with bus driver core */
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_TRACE, ("AR6000: HIFInit registering\n"));
|
||||
registered = 1;
|
||||
#if defined(CONFIG_PM)
|
||||
if (callbacks->deviceSuspendHandler && callbacks->deviceResumeHandler) {
|
||||
ar6k_driver.drv.pm = &ar6k_device_pm_ops;
|
||||
}
|
||||
if (callbacks->deviceSuspendHandler && callbacks->deviceResumeHandler)
|
||||
ar6k_driver.drv.pm = &ar6k_device_pm_ops;
|
||||
#endif /* CONFIG_PM */
|
||||
status = sdio_register_driver(&ar6k_driver);
|
||||
AR_DEBUG_ASSERT(status==0);
|
||||
|
||||
if (status != 0) {
|
||||
return A_ERROR;
|
||||
}
|
||||
|
||||
return 0;
|
||||
r = sdio_register_driver(&ar6k_driver);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -603,7 +603,7 @@ static int __init
|
||||
ar6000_init_module(void)
|
||||
{
|
||||
static int probed = 0;
|
||||
int status;
|
||||
int r;
|
||||
OSDRV_CALLBACKS osdrvCallbacks;
|
||||
|
||||
a_module_debug_support_init();
|
||||
@ -636,7 +636,9 @@ ar6000_init_module(void)
|
||||
osdrvCallbacks.devicePowerChangeHandler = ar6000_power_change_ev;
|
||||
#endif
|
||||
|
||||
ar6000_pm_init();
|
||||
r = ar6000_pm_init();
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
#ifdef DEBUG
|
||||
/* Set the debug flags if specified at load time */
|
||||
@ -655,9 +657,9 @@ ar6000_init_module(void)
|
||||
memset(&aptcTR, 0, sizeof(APTC_TRAFFIC_RECORD));
|
||||
#endif /* ADAPTIVE_POWER_THROUGHPUT_CONTROL */
|
||||
|
||||
status = HIFInit(&osdrvCallbacks);
|
||||
if (status)
|
||||
return -ENODEV;
|
||||
r = HIFInit(&osdrvCallbacks);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -660,24 +660,28 @@ ar6000_set_wlan_state(struct ar6_softc *ar, AR6000_WLAN_STATE state)
|
||||
return status;
|
||||
}
|
||||
|
||||
void ar6000_pm_init()
|
||||
int ar6000_pm_init()
|
||||
{
|
||||
A_REGISTER_MODULE_DEBUG_INFO(pm);
|
||||
int r;
|
||||
A_REGISTER_MODULE_DEBUG_INFO(pm);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
/*
|
||||
* Register ar6000_pm_device into system.
|
||||
* We should also add platform_device into the first item of array
|
||||
* of devices[] in file arch/xxx/mach-xxx/board-xxxx.c
|
||||
*/
|
||||
if (platform_driver_register(&ar6000_pm_device)) {
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_ERR,("ar6000: fail to register the power control driver.\n"));
|
||||
}
|
||||
/*
|
||||
* Register ar6000_pm_device into system.
|
||||
* We should also add platform_device into the first item of array
|
||||
* of devices[] in file arch/xxx/mach-xxx/board-xxxx.c
|
||||
*/
|
||||
r = platform_driver_register(&ar6000_pm_device);
|
||||
if (r < 0)
|
||||
return -ENODEV;
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ar6000_pm_exit()
|
||||
{
|
||||
#ifdef CONFIG_PM
|
||||
platform_driver_unregister(&ar6000_pm_device);
|
||||
platform_driver_unregister(&ar6000_pm_device);
|
||||
#endif /* CONFIG_PM */
|
||||
}
|
||||
|
@ -178,7 +178,7 @@ int ar6000_power_change_ev(void *context, u32 config);
|
||||
void ar6000_check_wow_status(struct ar6_softc *ar, struct sk_buff *skb, bool isEvent);
|
||||
#endif
|
||||
|
||||
void ar6000_pm_init(void);
|
||||
int ar6000_pm_init(void);
|
||||
void ar6000_pm_exit(void);
|
||||
|
||||
#ifdef CONFIG_AP_VIRTUAL_ADAPTER_SUPPORT
|
||||
|
Loading…
Reference in New Issue
Block a user