Merge "[Feature][ZXW-165] Move lynq-systime-demo to meta directory 1."
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
index 85fbc84..b1d03ff 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-autosuspend/files/autosuspend_wakeup_count.c
@@ -235,13 +235,26 @@
 }
 #endif
 
-static int suspend_ctrl(char *wakeup_count,int wakeup_count_len)
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+int t106_early_suspend(void)
 {
+    RLOGD("t106_early_suspend start\n");
+    system("/etc/init.d/syslog stop");
+    return 0;
+}
 
+void t106_early_resume(void)
+{
+    RLOGD("t106_early_resume start\n");
+    system("/etc/init.d/syslog start");
+    return NULL;
+}
+#endif
 
-    char buf[80];
-    int ret = 0;
 #ifdef MOBILETEK_SUSPEND_CFG
+int t800_early_suspend(char *wakeup_count, int wakeup_count_len)
+{
+    char buf[80];
     system("echo \"Sys standby mode\" >/dev/console");
     // sleep(1);
     system("echo 7 | emdlogger_ctrl");
@@ -278,6 +291,63 @@
             return -1;
         }    
     }
+    return 0;
+}
+
+void t800_early_resume(bool success)
+{
+    system("hwclock -s");
+    RLOGD("TIME: rtc to sys\n");
+    if (!success)
+    {
+
+       system("mdlogctl start");
+
+       system("echo 8 | emdlogger_ctrl");
+    
+       usleep(200000); 
+       ALOGI("Log on with failure\n");
+       return ;
+    }
+    
+    if (lynq_screen(1) != 0)  // notify ril for screen on
+    {
+        ALOGI("lynq_screen on fail\n");
+    }
+
+    system("mdlogctl start");
+
+    system("echo 8 | emdlogger_ctrl");
+    usleep(300000); //delay 2s for ril handling screen on,at least 70ms
+
+    return NULL;
+}
+#endif
+
+
+static int suspend_ctrl(char *wakeup_count,int wakeup_count_len)
+{
+
+
+    char buf[80];
+    int ret = 0;
+#ifdef MOBILETEK_SUSPEND_CFG
+    ret = t800_early_suspend(char *wakeup_count, wakeup_count_len);
+    if(ret != 0)
+    {
+	ALOGD("t800_early_suspend fail\n");
+        return -1;
+    }
+#endif
+
+
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+    ret = t106_early_suspend();
+    if(ret != 0)
+    {
+        ALOGD("t106_early_suspend fail\n");
+        return -1;
+    }
 #endif
 
     system("echo \"autosuspend:Sys suspend\" >/dev/console");
@@ -297,35 +367,14 @@
 
     char buf[80];
     long sleeptime = 0;
+
 #ifdef MOBILETEK_SUSPEND_CFG
-    system("hwclock -s");
-    RLOGD("TIME: rtc to sys\n");
-    if (!success)
-    {
+    t800_early_resume(bool success);
+#endif
 
-       system("mdlogctl start");
 
-       system("echo 8 | emdlogger_ctrl");
-    
-       usleep(200000); 
-       ALOGI("Log on with failure\n");
-       return ;
-    }
-
-    
-    if (lynq_screen(1) != 0)  // notify ril for screen on
-    {
-    ALOGI("lynq_screen on fail\n");
-
-    }
-
-    system("mdlogctl start");
-
-//  sleep(1);
-
-    system("echo 8 | emdlogger_ctrl");
-
-    usleep(300000); //delay 2s for ril handling screen on,at least 70ms
+#ifdef MOBILETEK_TARGET_PLATFORM_T106
+    t106_early_resume();
 #endif
 
     pthread_mutex_lock(&time_info_mutex);
diff --git a/cap/zx297520v3/sources/meta-zxic/conf/pub_esdk.inc b/cap/zx297520v3/sources/meta-zxic/conf/pub_esdk.inc
index b66ac77..8b7ec5a 100755
--- a/cap/zx297520v3/sources/meta-zxic/conf/pub_esdk.inc
+++ b/cap/zx297520v3/sources/meta-zxic/conf/pub_esdk.inc
@@ -7,6 +7,7 @@
 ZXIC_ZX297520V3_CFLAGS += "-I${BSPDIR}/pub/project/zx297520v3/include/drv "

 ZXIC_ZX297520V3_CFLAGS += "-I${BSPDIR}/pub/project/zx297520v3/include/nv "

 ZXIC_ZX297520V3_CFLAGS += "-D_CHIP_ZX297520V3 -DCPU_SHIFT=0 -D_USE_VEHICLE_DC -D_USE_ZXIC_DEBUG_INFO"

+ZXIC_ZX297520V3_CFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'vehicle_dc_ref', '-D_USE_VEHICLE_DC_REF', '', d)}"

 

 ZXIC_EXTRA_CFLAGS += "${@bb.utils.contains('MACHINE', 'zx297520v3', '${ZXIC_ZX297520V3_CFLAGS}', '', d)}"

 

diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-at-common/liblynq-at-common.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-at-common/liblynq-at-common.cpp
index cacdf2d..ccb8eaa 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-at-common/liblynq-at-common.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-at-common/liblynq-at-common.cpp
@@ -24,21 +24,21 @@
 
 void lynq_response_ok()
 {
-    char *str = "OK\n";
+    char *str = "OK\r\n";
     handle_output(str, strlen(str), Response);
 }
 
 void lynq_response_error(int error_code)
 {
     char str[32] = {0};
-    sprintf(str, "+CME ERROR: %d\n", error_code);
+    sprintf(str, "+CME ERROR: %d\r\n", error_code);
     handle_output(str, strlen(str), Response);
 }
 
 void lynq_handle_version()
 {
     char buf[64] = {0};
-    sprintf(buf,"%s\n",LYNQ_SW_INSIDE_VERSION);
+    sprintf(buf,"+CGIR:%s\r\n",LYNQ_SW_INSIDE_VERSION);
     handle_output(buf, strlen(buf), Response);
     lynq_response_ok();
     return;
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/gpio_T106.conf b/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/gpio_T106.conf
index 5133ad0..28dfd24 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/gpio_T106.conf
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/gpio_T106.conf
@@ -1,4 +1,4 @@
 platform:T106
 total:49
-gpio:16,17,18,20,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,45,46,48,52,53,54,64,72,73,74,75,76,77,84,87,88,89,90,91,92,119,120,121,122,123,124,127,128,129,130,131,132,
+gpio:16,17,18,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,45,46,48,52,53,54,66,67,68,69,70,71,84,87,88,89,90,91,92,119,120,121,122,123,124,127,128,129,130,131,132,
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/liblynq-at-factory.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/liblynq-at-factory.cpp
index b82cb42..ed8ca40 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/liblynq-at-factory.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-at-factory/liblynq-at-factory.cpp
@@ -42,14 +42,14 @@
 

 void lynq_response_ok()

 {

-    char *str = "OK\n";

+    char *str = "OK\r\n";

     handle_output(str, strlen(str), Response);

 }

 

 void lynq_response_error(int error_code)

 {

     char str[32] = {0};

-    sprintf(str, "+CME ERROR: %d\n", error_code);

+    sprintf(str, "+CME ERROR: %d\r\n", error_code);

     handle_output(str, strlen(str), Response);

 }

 

@@ -92,7 +92,7 @@
 

     fp=popen(lynq_adc_dev, "r");

     fgets(lynq_adc_buf,sizeof(lynq_adc_buf),fp);

-    sprintf(flag,"%s %s", "ADC:", lynq_adc_buf);

+    sprintf(flag,"%s %s\r\n", "+ADC:", lynq_adc_buf);

     if(handle_output != NULL)

     {

         handle_output(flag, strlen(flag), Response);

@@ -159,7 +159,7 @@
             }

             else

             {

-                handle_output("input error\r\n", strlen("input error\r\n"), Response);

+                handle_output("+GPIO:input error\r\n", strlen("input error\r\n"), Response);

                 return -1;

             }

         }

@@ -175,13 +175,13 @@
         if(k >= total_length)

         {

             bzero(res,64);

-            sprintf(res,"GPIO%d input error\r\n",num);

+            sprintf(res,"+GPIO:GPIO%d input error\r\n",num);

             handle_output(res, strlen(res), Response);

         }

     }

     if (lynq_gpio_arr == NULL)

     {

-        handle_output("input all gpio not exist\r\n", strlen("input all gpio not exist\r\n"), Response);

+        handle_output("+GPIO:input all gpio not exist\r\n", strlen("input all gpio not exist\r\n"), Response);

         return -1;

     }

     return size;

@@ -249,21 +249,8 @@
 {

     int ret;

     int value;

-    if(test_gpio_handle[50] != NULL)

-    {

-        ret = sc_gpio_uninit(test_gpio_handle[50]);

-        if(ret)

-        {

-            ALOGE("uninit 50 fail\n");

-            return -1;

-        }

-    }

-    test_gpio_handle[50] = sc_gpio_init(50, 0, 0, 0);

-    if(test_gpio_handle[50] == NULL)

-    {

-        ALOGE("init 50 fail\n");

-        return -1;

-    }

+

+    

     for(int m = 0; m < total_length; m++)

     {

         if(test_gpio_handle[lynq_gpio_arr[m]] != NULL)

@@ -285,6 +272,7 @@
     ret = sc_gpio_value_get(test_gpio_handle[50], &value);

     if(ret)

     {

+        ALOGE("RET = %d, value = %d\n",ret,value);

         return -1;

     }

     if(value != status)

@@ -297,13 +285,17 @@
 int all_gpio_uninit(int total_length, int lynq_gpio_total_arr[256])

 {

     int ret;

-    ret = sc_gpio_uninit(test_gpio_handle[50]);

-    if(ret)

+    if(test_gpio_handle[50] != NULL)

     {

-        return -1;

-        ALOGE("uninit 50 fail\n");

+        ret = sc_gpio_uninit(test_gpio_handle[50]);

+        if(ret)

+        {

+            ALOGE("uninit 50 fail\n");

+            return -1;

+        }

+        test_gpio_handle[50] = NULL;

     }

-    test_gpio_handle[50] = NULL;

+    

     for(int m = 0; m < total_length; m++)

     {

         ret = sc_gpio_uninit(test_gpio_handle[lynq_gpio_total_arr[m]]);

@@ -338,6 +330,12 @@
         ALOGE("Don't have this platform gpio configure\n");

         return;

     }

+    test_gpio_handle[50] = sc_gpio_init(50, 0, 0, 0);

+    ALOGE("50 youm:%p\n",test_gpio_handle[50]);

+    if(test_gpio_handle[50] == NULL)

+    {

+        ALOGE("uninit 50 fail\n");

+    }

     ALOGD("start function %s line %d input %s\n", __FUNCTION__, __LINE__, input);

     input = input + strlen("gpio");

     if((valid_length = lynq_gpio_analysis(input, lynq_gpio_arr, lynq_gpio_total_arr, total_length)) < 0)

@@ -346,7 +344,7 @@
         return;

     }

     ALOGE("The Valid count:%d\n",valid_length);

-    for(i=0; i < sizeof(lynq_gpio_arr)/sizeof(int); i++)

+    for(i=0; i < valid_length; i++)

     {

         for(j=0;j<3;j++)

         {

@@ -357,7 +355,7 @@
 

             if (need_int == 1)

             {

-                ret = set_all_gpio_status_and_check(lynq_gpio_total_arr, 0, total_length);

+                ret = set_all_gpio_status_and_check(lynq_gpio_arr, 0, valid_length);

                 if (ret == 1)

                 {

                     ALOGE("can't pull up or pull down gpio-50\n");

@@ -374,7 +372,7 @@
                     lynq_response_error(100);

                     return;

                 }

-                ALOGD("finsh configure function %s line %d input %s\n", __FUNCTION__, __LINE__, input);  

+                ALOGD("finsh configure function\n");  

             }

 

             lynq_gpio_low = 0;

@@ -382,25 +380,26 @@
 

             for(int n=0;n<3;n++)

             {

-                ret = sc_gpio_value_set(test_gpio_handle[lynq_gpio_arr[1]], 1);

+                ret = sc_gpio_value_set(test_gpio_handle[lynq_gpio_arr[i]], 1);

+                usleep(10000);

                 ret = sc_gpio_value_get(test_gpio_handle[50], &value);

                 if(ret)

                 {

-                    ALOGD("sc_gpio_value_get");

+                    ALOGE("sc_gpio_value_get\n");

                 }

                 if(value == 1)

                 {

-                    ALOGD("high function %s line %d input %s\n", __FUNCTION__, __LINE__, input);

+                    ALOGE("high function is OK,input %d\n",lynq_gpio_arr[i]);

                     lynq_gpio_high = 1;

                     lynq_gpio_test_env_error = 0;

                     break;

                 }

                 else

                 {

-                    ALOGD("high function %s line %d input %s num %d\n", __FUNCTION__, __LINE__, input,lynq_gpio_arr[i]);

+                    ALOGE("high function is Fail, input %d\n",lynq_gpio_arr[i]);

                     if(i == 0 && j == 0)

                     {

-                        lynq_gpio_test_env_error = set_all_gpio_status_and_check(lynq_gpio_total_arr, 1, total_length) == 0 ? 0 : 1;

+                        lynq_gpio_test_env_error = set_all_gpio_status_and_check(lynq_gpio_arr, 1, valid_length) == 0 ? 0 : 1;

                     }

                 }

             }

@@ -409,8 +408,9 @@
             ret = sc_gpio_value_set(test_gpio_handle[lynq_gpio_arr[i]], 0);

             if(ret)

                 {

-                    ALOGD("sc_gpio_value_set gpio%d fail\n",lynq_gpio_arr[i]);

+                    ALOGE("sc_gpio_value_set gpio%d fail\n",lynq_gpio_arr[i]);

                 }

+                usleep(10000);

             ret = sc_gpio_value_get(test_gpio_handle[50], &value);

             if(ret)

                 {

@@ -418,22 +418,22 @@
                 }

             if(value == 0)

             {

-                ALOGD("*low function %s line %d input %s\n", __FUNCTION__, __LINE__, input);

+                ALOGE("low function is OK,input %d\n",lynq_gpio_arr[i]);

                 lynq_gpio_low = 1;

             }

             else

             {

-                ALOGE("low function fail %s line %d input %s num %d\n", __FUNCTION__, __LINE__, input,lynq_gpio_arr[i]);

+                ALOGE("low function is fail,input %d\n",lynq_gpio_arr[i]);

             }

             bzero(lynq_show_gpio_state, 64);

             if((lynq_gpio_low != 1) || (lynq_gpio_high != 1))

             {

-                ALOGE("fail function %s line %d input %s\n", __FUNCTION__, __LINE__, input);

+                ALOGE("total fail function,input %d\n",lynq_gpio_arr[i]);

             }

             else

             {

-                ALOGD("success function %s line %d input %s\n", __FUNCTION__, __LINE__, input);

-                sprintf(lynq_show_gpio_state,"gpio%d\n",lynq_gpio_arr[i]);

+                ALOGE("success function,input:%d\n",lynq_gpio_arr[i]);

+                sprintf(lynq_show_gpio_state,"+GPIO:%d\r\n",lynq_gpio_arr[i]);

                 handle_output(lynq_show_gpio_state, strlen(lynq_show_gpio_state), Response);

                 break; // do not retry when pass

             }

@@ -446,7 +446,7 @@
         if (j >= 3 )

         {

             lynq_gpio_beta_state = 0;

-            sprintf(lynq_show_gpio_state,"[gpio%d][result]:FAIL \n",lynq_gpio_arr[i]);

+            sprintf(lynq_show_gpio_state,"+GPIO:%d FAIL\r\n",lynq_gpio_arr[i]);

             handle_output(lynq_show_gpio_state, strlen(lynq_show_gpio_state), Response);

         }

     } // for(i=0; i < sizeof(lynq_gpio_arr)/sizeof(lynq_gpio_arr[0]); i++)

@@ -454,17 +454,17 @@
     if(lynq_gpio_test_env_error == 1)

     {

         ALOGE("tool error\n");

-        handle_output("tool error\n", strlen("tool error\n"), Response);

+        handle_output("+GPIO:tool error\r\n", strlen("+GPIO:tool error\r\n"), Response);

     }

 

     if(lynq_gpio_beta_state == 1)

     {

-        ALOGD("total success function %s line %d input %s\n", __FUNCTION__, __LINE__, input);

+        ALOGD("total success function\n");

         lynq_response_ok();

     }

     else

     {

-        ALOGE("total fail function %s line %d input %s\n", __FUNCTION__, __LINE__, input);

+        ALOGE("total fail function\n");

         lynq_response_error(100);

     }

     ret = all_gpio_uninit(total_length, lynq_gpio_total_arr);

@@ -546,7 +546,7 @@
         }

         

     }

-    handle_output("can't receive correct data", strlen("can't receive correct data"), Response);

+    handle_output("+RMII:can't receive correct data\r\n", strlen("+RMII:can't receive correct data\r\n"), Response);

     return -1;

 }

 

@@ -558,14 +558,14 @@
     sprintf(lynq_set_rgmii_arr,"echo 1,0x03,0x8800,0xc834 > /sys/devices/platform/soc/1307000.gmac/mdio_test");

     if(system(lynq_set_rgmii_arr))

     {

-        handle_output("Please checkout network_line", strlen("Please checkout network_line"), Response);

+        handle_output("+RMII:Please checkout network_line\r\n", strlen("+RMII:Please checkout network_line\r\n"), Response);

         return -1;

     }

     bzero(lynq_set_rgmii_arr, 128);

     sprintf(lynq_set_rgmii_arr,"echo 1,0x01,0x0,0xa000 > /sys/devices/platform/soc/1307000.gmac/mdio_test");

     if(system(lynq_set_rgmii_arr))

     {

-        handle_output("Please checkout network_line", strlen("Please checkout network_line"), Response);

+        handle_output("+RMII:Please checkout network_line\r\n", strlen("+RMII:Please checkout network_line\r\n"), Response);

         return -1;

     }

 

@@ -627,7 +627,6 @@
     int raw_socket = -1;

     char buf_init[1024];

     char buf_recv[1472];

-    char flag[256]={0};

     struct sockaddr_in ser_addr;

     struct sockaddr_in cli_addr;

     struct sockaddr_ll raw_addr;

@@ -653,7 +652,7 @@
     socketfd = rgmii_socket_init(&ser_addr,ser_ip);

     if(socketfd < 0)

     {

-        handle_output("init_failed", strlen("init_failed"), Response);

+        ALOGE("init_failed\n");

         lynq_response_error(2);

         return;

     }

@@ -661,7 +660,7 @@
     raw_socket = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));

     if(raw_socket < 0)

     {

-        handle_output("raw_socket init_failed", strlen("raw_socket init_failed"), Response);

+        ALOGE("raw_socket init_failed\n");

         lynq_response_error(2);

         return;

     }

@@ -673,7 +672,7 @@
     ret = bind(raw_socket, (struct sockaddr*)&raw_addr, sizeof(raw_addr));//bind network interface card

     if(ret < 0)

     {

-        handle_output("bind raw_socket init_failed", strlen("bind raw_socket init_failed"), Response);

+        ALOGE("bind raw_socket init_failed\n");

         lynq_response_error(3);

         return;

     }

@@ -726,8 +725,7 @@
     }

     else

     {

-        sprintf(flag,"sent %d, success %d\n", check_count, check_ok_count);

-        handle_output(flag, strlen(flag), Response);

+        ALOGE("sent %d, success %d\r\n", check_count, check_ok_count);

         lynq_response_error(100);

     }

 

diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
index b5b2f6c..85767bc 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
@@ -411,6 +411,11 @@
             sum_node = sum_node->next;
             continue;
         }
+        else if(strcmp((char *)xmlGetProp(sum_node, "apn_type"), apn->apn_type) == 0)
+        {
+            LYERRLOG("apntype already exists\n");
+            goto FAILED;
+        }
         node_num++;
         sum_node = sum_node->next;
     }
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
index 8884a7a..a238919 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
@@ -487,14 +487,14 @@
     char cgpsnmea_at_res[64]={};
     if (at_type == 0)
     {
-        strncpy(cgpsnmea_at_res,"+CGPSNMEA:(0,1)\r\n",64);
+        sprintf(cgpsnmea_at_res,"+CGPSNMEA:(0,1)\r\n");
         atsvc_gnss_outcb(cgpsnmea_at_res,strlen(cgpsnmea_at_res),0);
         return 0;
     }
     else if(at_type == 1)
     {
         bzero(cgpsnmea_at_res,64);
-        sprintf(cgpsnmea_at_res,"+CGPSNMEA:<%d>",at_gpsnmea_status);
+        sprintf(cgpsnmea_at_res,"+CGPSNMEA:<%d>\r\n",at_gpsnmea_status);
         atsvc_gnss_outcb(cgpsnmea_at_res,strlen(cgpsnmea_at_res),0);
         return 0;
     }
@@ -507,7 +507,7 @@
         }
         else
         {
-            strncpy(cgpsnmea_at_res,"+CGPSNMEA: same status\r\n",64);
+            sprintf(cgpsnmea_at_res,"+CGPSNMEA: same status\r\n");
             atsvc_gnss_outcb(cgpsnmea_at_res,strlen(cgpsnmea_at_res),0);
             return -1;
         }
@@ -546,22 +546,21 @@
     int res = 0;
     int income_at_type = 0;
     int gnss_state_type = -1;
-    char at_cmd[128]={0};
+    //char at_cmd[128]={0};
     char gnss_at_cmd[64] = {0};
     char parse_atcmd[128] = {0}; 
     if(NULL == input)
     {
-        strncpy(gnss_at_cmd,"+CME ERROR: 100\r\n",64);
+        sprintf(gnss_at_cmd,"+CME ERROR: 100\r\n");
         atsvc_gnss_outcb(gnss_at_cmd,strlen(gnss_at_cmd),0);
         return;
     }
-    bzero(at_cmd,128);
-    strncpy(at_cmd,input,strlen(input));
-    res = gnss_at_cmd_parse(at_cmd,parse_atcmd,&gnss_state_type,&income_at_type);
+
+    res = gnss_at_cmd_parse(input,parse_atcmd,&gnss_state_type,&income_at_type);
     if (res != 0)
     {
         ALOGE("parse at cmd error");
-        strncpy(gnss_at_cmd,"+CME ERROR: 100\r\n",64);
+        sprintf(gnss_at_cmd,"+CME ERROR: 100\r\n");
         atsvc_gnss_outcb(gnss_at_cmd,strlen(gnss_at_cmd),0);
         return;
     }
@@ -571,7 +570,7 @@
         res = lynq_at_cgps(income_at_type,gnss_state_type);
         if (res != 0)
         {
-            strncpy(gnss_at_cmd,"+CME ERROR: 100\r\n",64);
+            sprintf(gnss_at_cmd,"+CME ERROR: 100\r\n");
             atsvc_gnss_outcb(gnss_at_cmd,strlen(gnss_at_cmd),0);
             return;
         }
@@ -581,12 +580,12 @@
         res = lynq_at_cgpsnmea(income_at_type,gnss_state_type);
         if (res != 0)
         {
-            strncpy(gnss_at_cmd,"+CME ERROR: 100\r\n",64);
+            sprintf(gnss_at_cmd,"+CME ERROR: 100\r\n");
             atsvc_gnss_outcb(gnss_at_cmd,strlen(gnss_at_cmd),0);
             return;
         }
     }
-    strncpy(gnss_at_cmd,"ok\r\n",64);
+    sprintf(gnss_at_cmd,"OK\r\n");
     atsvc_gnss_outcb(gnss_at_cmd,strlen(gnss_at_cmd),0);
     return;
 }
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/arch/arm/boot/dts/zx297520v3.dtsi b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/arch/arm/boot/dts/zx297520v3.dtsi
index 29f581a..f8adc55 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/arch/arm/boot/dts/zx297520v3.dtsi
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/arch/arm/boot/dts/zx297520v3.dtsi
@@ -488,7 +488,7 @@
 			codec_ti3104: ti3104@18 {         
 				compatible = "ti,tlv320aic3104";
 				reg = <0x18>;		
-				reset-gpios = <&bgpio 119 GPIO_ACTIVE_HIGH>;/*RST*/
+				//reset-gpios = <&bgpio 119 GPIO_ACTIVE_HIGH>;/*RST*/
 				ai3x-micbias-vg = <MICBIAS_2_0V>;
 
 				clocks = <&clkc CLKOUT2_CLK>;