Android-x86
Fork
Donation

  • R/O
  • HTTP
  • SSH
  • HTTPS

hardware-x86power: Commit

hardware/x86power


Commit MetaInfo

Revision338e1f465738acec2d2ca5f9ef2d390456a5d752 (tree)
Time2016-09-07 03:44:44
AuthorChih-Wei Huang <cwhuang@linu...>
CommiterChih-Wei Huang

Log Message

Unload/reload wifi driver on suspend/resume

Change Summary

Incremental Difference

--- a/Android.mk
+++ b/Android.mk
@@ -15,7 +15,7 @@ include $(CLEAR_VARS)
1515 LOCAL_MODULE := power.x86
1616 LOCAL_MODULE_RELATIVE_PATH := hw
1717 LOCAL_SRC_FILES := power.c
18-LOCAL_SHARED_LIBRARIES := liblog
18+LOCAL_SHARED_LIBRARIES := liblog libcutils
1919 LOCAL_MODULE_TAGS := optional
2020
2121 include $(BUILD_SHARED_LIBRARY)
--- a/power.c
+++ b/power.c
@@ -21,6 +21,10 @@
2121
2222 #include <hardware/hardware.h>
2323 #include <hardware/power.h>
24+#include <cutils/properties.h>
25+#include <cutils/probe_module.h>
26+
27+extern int delete_module(const char *, unsigned int);
2428
2529 #define SYS_CPU "/sys/devices/system/cpu"
2630 #define CPU_ONLINE "1"
@@ -51,6 +55,24 @@ static void power_init(struct power_module *module)
5155
5256 static void power_set_interactive(struct power_module *module, int on)
5357 {
58+ char mod[PROPERTY_VALUE_MAX];
59+ if ((!property_get("wlan.no-unload-driver", mod, NULL) || strcmp(mod, "1"))
60+ && property_get("wlan.modname", mod, NULL)) {
61+ if (on) {
62+ if (insmod_by_dep(mod, "", NULL, 0, NULL)) {
63+ ALOGE("insmod %s failed", mod);
64+ } else {
65+ ALOGD("reload %s OK", mod);
66+ }
67+ } else {
68+ if (delete_module(mod, O_NONBLOCK)) {
69+ ALOGE("rmmod %s failed", mod);
70+ } else {
71+ ALOGD("unload %s OK", mod);
72+ }
73+ }
74+ }
75+
5476 set_nonboot_cpu_state(on ? CPU_ONLINE : CPU_OFFLINE);
5577 }
5678
Show on old repository browser