LOCAL_SHARED_LIBRARIES := \
libcutils liblog libutils
+LOCAL_C_INCLUDES := \
+ system/core/include
+
ifneq ($(WIFI_DRIVER_MODULE_NAME),)
LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_NAME=\"$(WIFI_DRIVER_MODULE_NAME)\"
endif
LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_PATH=\"$(WIFI_DRIVER_MODULE_PATH)\"
endif
+ifneq ($(WIFI_DRIVER_FW_PATH_PARAM),)
+LOCAL_CFLAGS += -DWIFI_DRIVER_FW_PATH_PARAM=\"$(WIFI_DRIVER_FW_PATH_PARAM)\"
+endif
+
LOCAL_MODULE := wifiloader
LOCAL_MODULE_TAGS := optional
#include <sys/stat.h>
#include <sys/syscall.h>
+#include <private/android_filesystem_config.h>
+
#define DEFERRED_INITCALLS "/proc/deferred_initcalls"
#ifndef WIFI_DRIVER_MODULE_NAME
#define WIFI_DRIVER_MODULE_PATH "/system/lib/modules/" WIFI_DRIVER_MODULE_NAME ".ko"
#endif
+#ifndef WIFI_DRIVER_FW_PATH_PARAM
+#define WIFI_DRIVER_FW_PATH_PARAM "/sys/module/wlan/parameters/fwpath"
+#endif
+
#define finit_module(fd, params, flags) syscall(__NR_finit_module, fd, params, flags)
return -errno;
}
+ // setup proper permissions for firmware change
+ if (chown(WIFI_DRIVER_FW_PATH_PARAM, AID_WIFI, AID_WIFI) != 0) {
+ ALOGE("Failed to chown firmware path %s - error: %s",
+ WIFI_DRIVER_FW_PATH_PARAM, strerror(errno));
+ close(fd);
+ return -errno;
+ }
+
// let wifi HAL know we succeeded
ALOGV("Successfully loaded WLAN module: %s", WIFI_DRIVER_MODULE_NAME);
property_set("wlan.driver.status", "ok");