Baseline update from LYNQ_SDK_ASR_T108_V05.03.01.00(kernel build error.)

Change-Id: I56fc72cd096e82c589920026553170e5cb9692eb
diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot
index d91f591..b98e302 100755
--- a/package/base-files/files/etc/init.d/boot
+++ b/package/base-files/files/etc/init.d/boot
@@ -25,6 +25,8 @@
 	chmod 1777 /var/lock
 	mkdir -p /var/log
 	mkdir -p /var/run
+	# Add by mbtk
+	mkdir -p /var/run/faillock
 	ln -s /var/run /run
 	ln -s /var/lock /run/lock
 	mkdir -p /var/state
diff --git a/package/base-files/files/etc/init.d/system b/package/base-files/files/etc/init.d/system
index 042e018..1e07f8a 100755
--- a/package/base-files/files/etc/init.d/system
+++ b/package/base-files/files/etc/init.d/system
@@ -28,6 +28,9 @@
 
 	# apply timezone to kernel
 	hwclock -u --systz
+
+	# Add by liubin
+	hwclock -s
 }
 
 reload_service() {
diff --git a/package/base-files/files/etc/inittab b/package/base-files/files/etc/inittab
old mode 100644
new mode 100755
index 9820e71..7a6c352
--- a/package/base-files/files/etc/inittab
+++ b/package/base-files/files/etc/inittab
@@ -1,3 +1,3 @@
 ::sysinit:/etc/init.d/rcS S boot
 ::shutdown:/etc/init.d/rcS K shutdown
-::askconsole:/usr/libexec/login.sh
+::askconsole:/bin/login
diff --git a/package/libs/asr_audio/Makefile b/package/libs/asr_audio/Makefile
old mode 100644
new mode 100755
index bb34749..3bd24d0
--- a/package/libs/asr_audio/Makefile
+++ b/package/libs/asr_audio/Makefile
@@ -65,10 +65,12 @@
 	prompt "Select Audio Codec Chip"
 	default KERNEL_CODEC_NONE
 	help
-	  There are 5 choices:
+	  There are 7 choices:
 	  - ASR PM812
 	  - ASR PM805
 	  - ASR NAU8810
+	  - MBTK ES8311
+	  - MBTK TLV320AIC3X
 	  - ASR ALC5616
 	  - No Codec
 config KERNEL_CODEC_PM812
@@ -77,6 +79,10 @@
 	bool "ASR PM805"
 config KERNEL_CODEC_NAU8810
 	bool "ASR NAU8810"
+config KERNEL_CODEC_ES8311
+	bool "MBTK ES8311"
+config KERNEL_CODEC_TLV320AIC3X
+	bool "MBTK TLV320AIC3X"
 config KERNEL_CODEC_ALC5616
 	bool "ASR ALC5616"
 config KERNEL_CODEC_NONE
@@ -164,6 +170,14 @@
 TARGET_CFLAGS += -DCODEC_ALC5616
 endif
 
+ifeq ($(CONFIG_KERNEL_CODEC_ES8311),y)
+TARGET_CFLAGS += -DCODEC_ES8311
+endif
+
+ifeq ($(CONFIG_KERNEL_CODEC_TLV320AIC3X),y)
+TARGET_CFLAGS += -DCODEC_TLV320AIC3X
+endif
+
 ifeq ($(CONFIG_KERNEL_CODEC_NONE),y)
 TARGET_CFLAGS += -DCODEC_NONE
 endif
diff --git a/package/network/config/firewall/files/firewall.config b/package/network/config/firewall/files/firewall.config
old mode 100644
new mode 100755
index 108e8b3..c027b5e
--- a/package/network/config/firewall/files/firewall.config
+++ b/package/network/config/firewall/files/firewall.config
@@ -49,6 +49,7 @@
 	list   network		'wan615'
 	list   network		'wlan'
 	list   network		'wlan6'
+	list   network          'autowan'
 	option input		REJECT
 	option output		ACCEPT
 	option forward		REJECT
diff --git a/package/network/services/lte-telephony/Makefile b/package/network/services/lte-telephony/Makefile
old mode 100644
new mode 100755
index d15c7d9..7af8941
--- a/package/network/services/lte-telephony/Makefile
+++ b/package/network/services/lte-telephony/Makefile
@@ -54,7 +54,7 @@
   SUBMENU:=Marvell Telephony
   SUBMENUDEP:=TARGET_mmp
   TITLE:=Marvell lte telephony appliction framework
-  DEPENDS:= +librt +libprop2uci +libuci +liblog +libml_utils +libubus \
+  DEPENDS:= +librt +libprop2uci +libuci +liblog +libml_utils +libubus +alsa-lib\
 	    +libmbedtls
 endef
 
diff --git a/package/network/services/lte-telephony/files/tel-asr4unify-sdtim.config b/package/network/services/lte-telephony/files/tel-asr4unify-sdtim.config
index a1abe21..59cbc97 100755
--- a/package/network/services/lte-telephony/files/tel-asr4unify-sdtim.config
+++ b/package/network/services/lte-telephony/files/tel-asr4unify-sdtim.config
@@ -125,4 +125,3 @@
 CONFIG_MBTK_YX_AT_SUPPORT=n
 
 CONFIG_MBTK_DATA_MODE_SUPPORT=n
-
diff --git a/package/services/con_mgr/files/etc/config/wan_default b/package/services/con_mgr/files/etc/config/wan_default
index 1029d5c..aa1c8a9 100755
--- a/package/services/con_mgr/files/etc/config/wan_default
+++ b/package/services/con_mgr/files/etc/config/wan_default
@@ -15,7 +15,7 @@
 	option authtype_4g NONE
 	option connect_mode 1
 	option lte_default 1
-	option auto_apn 1
+	option auto_apn 0
 	option data_on_roaming 1
 	option mtu 1500
 	option data_on_boot 1
diff --git a/package/services/optee_app/Makefile b/package/services/optee_app/Makefile
old mode 100644
new mode 100755
index 2e9d704..7faddc2
--- a/package/services/optee_app/Makefile
+++ b/package/services/optee_app/Makefile
@@ -18,7 +18,7 @@
 PKG_SOURCE_DIR:=$(SVC_SOURCE_DIR) $(STAGING_DIR)/usr/include $(STAGING_DIR)/usr/lib
 PKG_BUILD_PARALLEL:=0
 
-APP_LIST:=
+APP_LIST:= libsecure_storage
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -29,6 +29,10 @@
 	DEFAULT:=n
 endef
 
+define Package/optee_app/extra_provides
+	echo "libmbtk_lib.so"
+endef
+
 define Package/optee_app/config
 menu "OPTEE application Configuration"
 config HWRANDOM
@@ -75,6 +79,7 @@
 	$(MAKE) $(PKG_JOBS) -C $(SVC_SOURCE_DIR) HOST_CROSS_COMPILE="$(TARGET_CROSS)" \
 	TA_DEV_KIT_DIR=$(TOPDIR)/package/services/optee_os/export/asr18xx/export-ta_arm32\
 	TEEC_EXPORT=$(MRVLDIR)/services/optee_client/out/export/usr PLATFORM=$(ARCH_PROFILE)\
+	LOG_EXPORT=$(TOPDIR)/mbtk/rootfs \
 	TA_CROSS_COMPILE="$(TARGET_CROSS)" APP_LIST=$(APP_LIST)
 endef
 
@@ -93,7 +98,9 @@
 define Package/$(PKG_NAME)/install
 	$(INSTALL_DIR) $(1)/usr/sbin
 	$(INSTALL_DIR) $(1)/usr/lib/optee_armtz
+	$(INSTALL_DIR) $(1)/lib
 	$(CP) -rf $(SVC_SOURCE_DIR)/out/ca/* $(1)/usr/sbin
+	$(CP) -rf $(SVC_SOURCE_DIR)/out/lib/* $(1)/lib
 	find $(SVC_SOURCE_DIR)/out/ta -name "*.ta"	| xargs -i $(CP) {} $(1)/usr/lib/optee_armtz
 	find $(SVC_SOURCE_DIR)/out/ta -name "*.elf" | xargs -i $(CP) {} $(1)/usr/lib/optee_armtz
 endef
diff --git a/package/services/ota/files/etc/config/ota b/package/services/ota/files/etc/config/ota
old mode 100644
new mode 100755
index ad0b01c..dc16d28
--- a/package/services/ota/files/etc/config/ota
+++ b/package/services/ota/files/etc/config/ota
@@ -1,5 +1,5 @@
 config ota
-	option fbf_address 0x5940000
+	option fbf_address 0x2C40000
 	option progress_notify 10
 	option interval 5
 	option first_interval 1
diff --git a/package/utils/adbd/Makefile b/package/utils/adbd/Makefile
old mode 100644
new mode 100755
index 260b058..48c431d
--- a/package/utils/adbd/Makefile
+++ b/package/utils/adbd/Makefile
@@ -15,6 +15,10 @@
 endif
 TARGET_CFLAGS+= -D_GNU_SOURCE
 
+ifeq ($(CONFIG_MBTK_ADB_SEC_SUPPORT),y)
+TARGET_CFLAGS+= -DMBTK_ADB_SEC_SUPPORT
+endif
+
 ifeq ($(CONFIG_TARGET_mmp_asr1901_KSTR901),y)
 TARGET_CFLAGS+= -DANDROID_SMP
 endif
diff --git a/package/utils/adbd/src/adb/adb.c b/package/utils/adbd/src/adb/adb.c
old mode 100644
new mode 100755
index 8368ad4..c254959
--- a/package/utils/adbd/src/adb/adb.c
+++ b/package/utils/adbd/src/adb/adb.c
@@ -56,6 +56,10 @@
 
 static int auth_enabled = 0;
 
+#ifdef MBTK_ADB_SEC_SUPPORT
+FILE *log_file = NULL;
+#endif
+
 #if !ADB_HOST
 static const char *adb_device_banner = "device";
 // changed by feilv
@@ -1691,6 +1695,11 @@
 
 int main(int argc, char **argv)
 {
+
+#ifdef MBTK_ADB_SEC_SUPPORT
+    // log_file = fopen("/tmp/adb.log", "w");
+#endif
+
 #if ADB_HOST
     adb_sysdeps_init();
     adb_trace_init();
diff --git a/package/utils/adbd/src/adb/adb.h b/package/utils/adbd/src/adb/adb.h
old mode 100644
new mode 100755
index 4704abb..a3d348b
--- a/package/utils/adbd/src/adb/adb.h
+++ b/package/utils/adbd/src/adb/adb.h
@@ -18,6 +18,9 @@
 #define __ADB_H
 
 #include <limits.h>
+#ifdef MBTK_ADB_SEC_SUPPORT
+#include <stdio.h>
+#endif
 
 #include "transport.h"  /* readx(), writex() */
 
@@ -379,7 +382,39 @@
   extern int     adb_trace_mask;
   extern unsigned char    adb_trace_output_count;
   void    adb_trace_init(void);
+#ifdef MBTK_ADB_SEC_SUPPORT
+#  define ADB_TRACING 1
 
+extern FILE *log_file;
+
+  /* you must define TRACE_TAG before using this macro */
+#  define  D(...)                                      \
+        do {                                           \
+            if (ADB_TRACING && log_file) {                         \
+                int save_errno = errno;                \
+                adb_mutex_lock(&D_lock);               \
+                fprintf(log_file, "%s::%s():",           \
+                        __FILE__, __FUNCTION__);       \
+                errno = save_errno;                    \
+                fprintf(log_file, __VA_ARGS__ );         \
+                fflush(log_file);                        \
+                adb_mutex_unlock(&D_lock);             \
+                errno = save_errno;                    \
+           }                                           \
+        } while (0)
+#  define  DR(...)                                     \
+        do {                                           \
+            if (ADB_TRACING && log_file) {                         \
+                int save_errno = errno;                \
+                adb_mutex_lock(&D_lock);               \
+                errno = save_errno;                    \
+                fprintf(log_file, __VA_ARGS__ );         \
+                fflush(log_file);                        \
+                adb_mutex_unlock(&D_lock);             \
+                errno = save_errno;                    \
+           }                                           \
+        } while (0)
+#else
 #  define ADB_TRACING  ((adb_trace_mask & (1 << TRACE_TAG)) != 0)
 
   /* you must define TRACE_TAG before using this macro */
@@ -409,6 +444,7 @@
                 errno = save_errno;                    \
            }                                           \
         } while (0)
+#endif		
 #else
 #  define  D(...)          ((void)0)
 #  define  DR(...)         ((void)0)
diff --git a/package/utils/adbd/src/adb/file_sync_service.c b/package/utils/adbd/src/adb/file_sync_service.c
old mode 100644
new mode 100755
index 436ec02..3d83eb7
--- a/package/utils/adbd/src/adb/file_sync_service.c
+++ b/package/utils/adbd/src/adb/file_sync_service.c
@@ -33,6 +33,66 @@
 #include "adb.h"
 #include "file_sync_service.h"
 
+#ifdef MBTK_ADB_SEC_SUPPORT
+static char* mbtk_sec_files[] = {"/etc/passwd", "/etc/shadow", "/bin/adb_shell", "/bin/busybox", "/usr/bin/adbd", NULL};
+
+static bool file_name_cmp(const char *name1, const char *name2) {
+    char tmp_name1[1025] = {0};
+    char tmp_name2[1025] = {0};
+    int i = 0;
+    int j = 0;
+    while(i < strlen(name1)) {
+        if(name1[i] != '/')
+            tmp_name1[j++] = name1[i];
+        i++;
+    }
+
+    i = 0;
+    j = 0;
+    while(i < strlen(name2)) {
+        if(name2[i] != '/')
+            tmp_name2[j++] = name2[i];
+        i++;
+    }
+
+    return strcmp(tmp_name1, tmp_name2);
+}
+
+static bool mbtk_sec_file_check(bool is_pull, const char *name) {
+    struct stat file_stat;
+    memset(&file_stat, 0, sizeof(struct stat));
+    if(lstat(name, &file_stat)) { // Fail.
+        D("MBTK : lstat fail : %d\n", errno);
+        if(errno == ENOENT) { // File not exist.
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    if(S_ISREG(file_stat.st_mode)) {
+        D("MBTK : FILE REG.\n");
+        char **ptr = mbtk_sec_files;
+        while(*ptr) {
+            if(file_name_cmp(*ptr, name) == 0)
+                return false;
+            ptr++;
+        }
+        return true;
+    } else if(S_ISCHR(file_stat.st_mode)
+        || S_ISBLK(file_stat.st_mode)) {
+        D("MBTK : FILE CHR/BLK.\n");
+        if(is_pull) {
+            return true;
+        } else {
+            return false;
+        }
+    } else {
+        return false;
+    }
+}
+#endif
+
 /* TODO: use fs_config to configure permissions on /data */
 static bool is_on_system(const char *name) {
     const char *SYSTEM = "/system/";
@@ -423,6 +483,10 @@
     syncmsg msg;
     char name[1025];
     unsigned namelen;
+#ifdef MBTK_ADB_SEC_SUPPORT
+    mode_t mode = 0;
+    char file_name[1025] = {0};
+#endif
 
     char *buffer = malloc(SYNC_DATA_MAX);
     if(buffer == 0) goto fail;
@@ -447,6 +511,61 @@
 
         msg.req.namelen = 0;
         D("sync: '%s' '%s'\n", (char*) &msg.req, name);
+#ifdef MBTK_ADB_SEC_SUPPORT
+        if(msg.req.id == ID_SEND) { // push
+            // '/usr/bin/adbd,33206'
+            char *ptr = strstr(name, ",");
+            if(ptr && ptr > name) {
+                struct stat file_stat;
+                mode = 0;
+                memset(file_name, 0, sizeof(file_name));
+                memcpy(file_name, name, ptr - name);
+
+                if(!mbtk_sec_file_check(false, file_name)) {
+                    break;
+                }
+
+                memset(&file_stat, 0, sizeof(struct stat));
+                if(stat(file_name, &file_stat)) { // Fail.
+                    mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH/* | S_IXOTH*/;
+                } else {
+                    if(file_stat.st_mode & S_IRUSR) {
+                        mode |= S_IRUSR;
+                    }
+                    if(file_stat.st_mode & S_IWUSR) {
+                        mode |= S_IWUSR;
+                    }
+                    if(file_stat.st_mode & S_IXUSR) {
+                        mode |= S_IXUSR;
+                    }
+                    if(file_stat.st_mode & S_IRGRP) {
+                        mode |= S_IRGRP;
+                    }
+                    if(file_stat.st_mode & S_IWGRP) {
+                        mode |= S_IWGRP;
+                    }
+                    if(file_stat.st_mode & S_IXGRP) {
+                        mode |= S_IXGRP;
+                    }
+                    if(file_stat.st_mode & S_IROTH) {
+                        mode |= S_IROTH;
+                    }
+                    if(file_stat.st_mode & S_IWOTH) {
+                        mode |= S_IWOTH;
+                    }
+                    if(file_stat.st_mode & S_IXOTH) {
+                        mode |= S_IXOTH;
+                    }
+                }
+
+                D("MBTK : %s mode is %x\n", file_name, mode);
+            }
+        } else if(msg.req.id == ID_RECV) { // pull
+            if(!mbtk_sec_file_check(true, name)) {
+                break;
+            }
+        }
+#endif
 
         switch(msg.req.id) {
         case ID_STAT:
@@ -457,6 +576,16 @@
             break;
         case ID_SEND:
             if(do_send(fd, name, buffer)) goto fail;
+#ifdef MBTK_ADB_SEC_SUPPORT
+            if(strlen(file_name) > 0) {
+                if(chmod(file_name, mode)) {
+                    D("MBTK : chmod(%s, %x) fail.\n", file_name, mode);
+                } else {
+                    D("MBTK : chmod(%s, %x) success.\n", file_name, mode);
+                    system("sync");
+                }
+            }
+#endif
             break;
         case ID_RECV:
             if(do_recv(fd, name, buffer)) goto fail;
diff --git a/package/utils/adbd/src/adb/services.c b/package/utils/adbd/src/adb/services.c
old mode 100644
new mode 100755
index 0dbe4db..b57e891
--- a/package/utils/adbd/src/adb/services.c
+++ b/package/utils/adbd/src/adb/services.c
@@ -21,6 +21,12 @@
 #include <string.h>
 #include <errno.h>
 
+#ifdef MBTK_ADB_SEC_SUPPORT
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#endif
+
 #include "sysdeps.h"
 
 #define  TRACE_TAG  TRACE_SERVICES
@@ -300,15 +306,70 @@
 }
 #endif  /* !ABD_HOST */
 
-//#define ADB_PASSWD
 #if ADB_HOST
 #define SHELL_COMMAND "/bin/sh"
 #else
-#ifdef ADB_PASSWD
-#define SHELL_COMMAND "/bin/login"
+	
+#ifdef MBTK_ADB_SEC_SUPPORT
+#define SHELL_COMMAND "/bin/adb_shell"
 #else
 #define SHELL_COMMAND "/bin/sh"
-#endif //ADB_PASSWD
+#endif
+
+#endif
+
+#ifdef MBTK_ADB_SEC_SUPPORT
+#define MBTK_LOGIN_STATE_FILE "/tmp/mbtk_login_count"
+
+static int login_conf_read(const char *path, long *value)
+{
+    char buff[64];
+    int fd = adb_open(path, O_RDONLY);
+    if(fd <= 0)
+        return -1;
+    memset(buff, 0, sizeof(buff));
+    if(adb_read(fd, buff, sizeof(buff)) > 0) {
+        *value = atol(buff);
+    }
+    adb_close(fd);
+    return 0;
+}
+
+static int login_conf_write(const char *path, long value)
+{
+    char buff[64];
+    int fd = adb_open(path, O_WRONLY);
+    if(fd <= 0)
+        return -1;
+    memset(buff, 0, sizeof(buff));
+    snprintf(buff, sizeof(buff), "%ld\n", value);
+    if(adb_write(fd, buff, strlen(buff)) > 0) {
+        adb_close(fd);
+        return 0;
+    }
+    adb_close(fd);
+    return -1;
+}
+
+static int login_count_change(int add)
+{
+    long count = 0L;
+    if(login_conf_read(MBTK_LOGIN_STATE_FILE, &count)) {
+        count = 0L;
+    }
+    // printf("old count is %d\n", count);
+    if(add) {
+        count++;
+    } else {
+        count--;
+    }
+
+    if(count < 0) {
+        count = 0L;
+    }
+    return login_conf_write(MBTK_LOGIN_STATE_FILE, count);
+}
+
 #endif
 
 #if !ADB_HOST
@@ -334,6 +395,10 @@
             }
          }
     }
+
+#ifdef MBTK_ADB_SEC_SUPPORT
+    login_count_change(0);
+#endif
     D("shell exited fd=%d of pid=%d err=%d\n", fd, pid, errno);
     if (SHELL_EXIT_NOTIFY_FD >=0) {
       int res;
@@ -352,11 +417,7 @@
 
     const char *arg0, *arg1;
     if (name == 0 || *name == 0) {
-#ifdef ADB_PASSWD
-        arg0 = "-p"; arg1 = 0;
-#else
         arg0 = "-"; arg1 = 0;
-#endif //ADB_PASSWD
     } else {
         arg0 = "-c"; arg1 = name;
     }
@@ -436,7 +497,14 @@
     } else if(!HOST && !strncmp(name, "exec:", 5)) {
         ret = create_subproc_thread(name + 5, SUBPROC_RAW);
     } else if(!strncmp(name, "sync:", 5)) {
-        ret = create_service_thread(file_sync_service, NULL);
+#ifdef MBTK_ADB_SEC_SUPPORT
+        long login_success = 0L;
+        if(login_conf_read(MBTK_LOGIN_STATE_FILE, &login_success) == 0 && login_success > 0) {
+            ret = create_service_thread(file_sync_service, NULL);
+        }
+#else
+		ret = create_service_thread(file_sync_service, NULL);
+#endif
     } else if(!strncmp(name, "remount:", 8)) {
         ret = create_service_thread(remount_service, NULL);
     } else if(!strncmp(name, "reboot:", 7)) {