diff options
author | jerpelea <jerpelea@gmail.com> | 2011-11-22 09:40:37 +0200 |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2013-03-08 20:29:09 +0000 |
commit | 96a90d85586e6ff080ec1fd3a89d6ef05d99d56e (patch) | |
tree | c071ad4f79a5077d991955c4da0f729ef3c580c7 /wifi/wifi.c | |
parent | 0b80bd63c6b1b6970226913849c61836daa16af0 (diff) | |
download | hardware_libhardware_legacy-96a90d85586e6ff080ec1fd3a89d6ef05d99d56e.zip hardware_libhardware_legacy-96a90d85586e6ff080ec1fd3a89d6ef05d99d56e.tar.gz hardware_libhardware_legacy-96a90d85586e6ff080ec1fd3a89d6ef05d99d56e.tar.bz2 |
wifi: add suport for WIFI_EXT_MODULE
Some wifi modules have dependencies on others (for SDIO, usually).
Use WIFI_EXT_MODULE_PATH to specify such dependencies
Change-Id: Ie8e746c1e69712be78d420d8e8ae8b015564a03d
Conflicts:
wifi/wifi.c
Change-Id: I3fbc0065f76d91d170fb562159ea326caa4f3345
Diffstat (limited to 'wifi/wifi.c')
-rw-r--r-- | wifi/wifi.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/wifi/wifi.c b/wifi/wifi.c index b51dab0..f9179df 100644 --- a/wifi/wifi.c +++ b/wifi/wifi.c @@ -106,6 +106,18 @@ struct genl_family *nl80211; #define WIFI_DRIVER_FW_PATH_P2P NULL #endif +#ifdef WIFI_EXT_MODULE_NAME +static const char EXT_MODULE_NAME[] = WIFI_EXT_MODULE_NAME; +#ifdef WIFI_EXT_MODULE_ARG +static const char EXT_MODULE_ARG[] = WIFI_EXT_MODULE_ARG; +#else +static const char EXT_MODULE_ARG[] = ""; +#endif +#endif +#ifdef WIFI_EXT_MODULE_PATH +static const char EXT_MODULE_PATH[] = WIFI_EXT_MODULE_PATH; +#endif + #ifndef WIFI_DRIVER_FW_PATH_PARAM #define WIFI_DRIVER_FW_PATH_PARAM "/sys/module/wlan/parameters/fwpath" #endif @@ -277,7 +289,6 @@ int wifi_load_driver() char driver_status[PROPERTY_VALUE_MAX]; int count = 100; /* wait at most 20 seconds for completion */ char module_arg2[256]; - #ifdef SAMSUNG_WIFI char* type = get_samsung_wifi_type(); @@ -289,6 +300,13 @@ int wifi_load_driver() if (insmod(DRIVER_MODULE_PATH, module_arg2) < 0) { #else + +#ifdef WIFI_EXT_MODULE_PATH + if (insmod(EXT_MODULE_PATH, EXT_MODULE_ARG) < 0) + return -1; + usleep(200000); +#endif + if (insmod(DRIVER_MODULE_PATH, DRIVER_MODULE_ARG) < 0) { #endif @@ -341,6 +359,9 @@ int wifi_unload_driver() } usleep(500000); /* allow card removal */ if (count) { +#ifdef WIFI_EXT_MODULE_NAME + if (rmmod(EXT_MODULE_NAME) == 0) +#endif return 0; } return -1; |