--- a/workspace/wl12xx/drivers/net/wireless/wl12xx/sdio.c +++ b/workspace/wl12xx/drivers/net/wireless/wl12xx/sdio.c @@ -37,6 +37,10 @@ #include "wl12xx_80211.h" #include "io.h" +#if 1 +#include "debug.h" +#endif + #ifndef SDIO_VENDOR_ID_TI #define SDIO_VENDOR_ID_TI 0x0097 #endif @@ -134,7 +138,12 @@ static int wl12xx_sdio_power_on(struct wl12xx_sdio_glue *glue) int ret; struct sdio_func *func = dev_to_sdio_func(glue->dev); struct mmc_card *card = func->card; +#if 1 + struct wl1271 *wl = platform_get_drvdata(glue->core); + if(wl->set_power) wl->set_power(true); + wl1271_info("wl12xx_sdio_power_on()"); +#endif ret = pm_runtime_get_sync(&card->dev); if (ret) { /* @@ -145,6 +154,9 @@ static int wl12xx_sdio_power_on(struct wl12xx_sdio_glue *glue) ret = mmc_power_restore_host(card->host); if (ret < 0) { pm_runtime_put_sync(&card->dev); +#if 1 + if(wl->set_power) wl->set_power(false); +#endif goto out; } } @@ -162,6 +174,9 @@ static int wl12xx_sdio_power_off(struct wl12xx_sdio_glue *glue) int ret; struct sdio_func *func = dev_to_sdio_func(glue->dev); struct mmc_card *card = func->card; +#if 1 + struct wl1271 *wl = platform_get_drvdata(glue->core); +#endif sdio_claim_host(func); sdio_disable_func(func); @@ -174,6 +189,10 @@ static int wl12xx_sdio_power_off(struct wl12xx_sdio_glue *glue) /* Let runtime PM know the card is powered off */ pm_runtime_put_sync(&card->dev); +#if 1 + if(wl->set_power) wl->set_power(false); + wl1271_info("wl12xx_sdio_power_off()"); +#endif out: return ret; @@ -364,12 +383,37 @@ static struct sdio_driver wl1271_sdio_driver = { static int __init wl1271_init(void) { +#if 1 + const struct wl12xx_platform_data *wlan_data; + wlan_data = wl12xx_get_platform_data(); + + wl1271_info("sdio init"); + + if(!IS_ERR(wlan_data) && wlan_data->set_power) { + wlan_data->set_power(true); + } +#endif return sdio_register_driver(&wl1271_sdio_driver); } static void __exit wl1271_exit(void) { +#if 1 + const struct wl12xx_platform_data *wlan_data; + wlan_data = wl12xx_get_platform_data(); + + wl1271_info("sdio exit"); + + if (!IS_ERR(wlan_data) && wlan_data->set_power) { + wlan_data->set_power(true); + } +#endif sdio_unregister_driver(&wl1271_sdio_driver); +#if 1 + if (!IS_ERR(wlan_data) && wlan_data->set_power) { + wlan_data->set_power(false); + } +#endif } module_init(wl1271_init); @@ -383,4 +427,4 @@ MODULE_FIRMWARE(WL127X_FW_NAME_MULTI); MODULE_FIRMWARE(WL128X_FW_NAME_SINGLE); MODULE_FIRMWARE(WL128X_FW_NAME_MULTI); MODULE_FIRMWARE(WL127X_PLT_FW_NAME); -MODULE_FIRMWARE(WL128X_PLT_FW_NAME); \ No newline at end of file +MODULE_FIRMWARE(WL128X_PLT_FW_NAME);