[Feature]add MT2731_MP2_MR2_SVN388 baseline version
Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/connectivity/combo_tool/combo_loader/load_wifi.c b/src/connectivity/combo_tool/combo_loader/load_wifi.c
new file mode 100755
index 0000000..ac040b2
--- /dev/null
+++ b/src/connectivity/combo_tool/combo_loader/load_wifi.c
@@ -0,0 +1,113 @@
+/*
+*WIFI driver kernel module insmod file for wmt dynamic loader
+*/
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <cutils/log.h>
+#include <cutils/misc.h>
+#include <linux/module.h>
+//For directory operation
+#include <dirent.h>
+
+extern int load_wifi_module(int chip_id);
+extern int init_module(void *, unsigned long, const char *);
+extern int delete_module(const char *, unsigned int);
+
+static char DRIVER_MODULE_PATH[50] = "/system/lib/modules/wlan_";
+static char DRIVER_MODULE_ARG[50] = "";
+#ifndef WIFI_DRIVER_MODULE_ARG
+#define WIFI_DRIVER_MODULE_ARG ""
+#endif
+
+//insmod
+static int insmod(const char *filename, const char *args)
+{
+ void *module;
+ unsigned int size;
+ int ret;
+
+ module = load_file(filename, &size);
+ if (!module)
+ return -1;
+
+ ret = init_module(module, size, args);
+
+ free(module);
+
+ return ret;
+}
+
+static int rmmod(const char *modname)
+{
+ int ret = -1;
+ int maxtry = 10;
+
+ while (maxtry-- > 0) {
+ ret = delete_module(modname, O_NONBLOCK | O_EXCL);
+ if (ret < 0 && errno == EAGAIN)
+ usleep(500000);
+ else
+ break;
+ }
+
+ if (ret != 0)
+ ALOGD("Unable to unload driver module \"%s\": %s\n",
+ modname, strerror(errno));
+ return ret;
+}
+
+int load_wifi_module(int chip_id)
+{
+ int ret=-1;
+
+ if(chip_id == 0x6630){
+ //insert 6630 driver
+ if(0 == insmod("/system/lib/modules/mtk_wmt_wifi.ko", DRIVER_MODULE_ARG)){
+ ret = 0;
+ printf("Success to insmod wmt wifi module\n");
+ }else
+ printf("Fail to insmod wmt wifi module\n");
+
+ if(0 == insmod("/system/lib/modules/wlan_mt6630.ko", DRIVER_MODULE_ARG)){
+ ret = 0;
+ printf("Success to insmod wlan module\n");
+ }else
+ printf("Fail to insmod wlan module\n");
+ }
+ else if(chip_id == 0x6628){
+ //insert 6628 driver
+ if(0 == insmod("/system/lib/modules/mtk_wmt_wifi.ko", DRIVER_MODULE_ARG)){
+ ret = 0;
+ printf("Success to insmod wmt wifi module\n");
+ }else
+ printf("Fail to insmod wmt wifi module\n");
+
+ if(0 == insmod("/system/lib/modules/wlan_mt6628.ko", DRIVER_MODULE_ARG)){
+ ret = 0;
+ printf("Success to insmod wlan module\n");
+ }else
+ printf("Fail to insmod wlan module\n");
+ }
+ else if(chip_id == 0x6620){
+ //insert 6620 driver
+ }else { //for soc chip, same naming
+ //insert wmt_wifi => for temp naming
+ if(0 == insmod("/system/lib/modules/mtk_wmt_wifi_soc.ko", DRIVER_MODULE_ARG)){
+ ret = 0;
+ printf("Success to insmod wmt wifi module\n");
+ }else
+ printf("Fail to insmod wmt wifi module\n");
+
+ //insert wifi => for temp naming
+ if(0 == insmod("/system/lib/modules/wlan_mt.ko", DRIVER_MODULE_ARG)){
+ ret = 0;
+ printf("Success to insmod the %s\n", DRIVER_MODULE_PATH);
+ }else
+ printf("Fail to insmod the %s\n", DRIVER_MODULE_PATH);
+ }
+ return ret;
+}