diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
index 1fe5ab3..e02832b 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
@@ -114,7 +114,7 @@
 int qser_Gnss_Stop(uint32_t h_gnss);
 int qser_Gnss_Delete_Aiding_Data(uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags);
 int qser_Gnss_InjectTime(uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info);
-int qser_firmware_update(uint32_t* ph_gnss);
+int qser_firmware_update(uint32_t h_gnss);
 int qser_Gnss_injectEphemeris(uint32_t h_gnss);
 int qser_Gnss_download_tle();
 #ifdef __cplusplus
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 1c4f1bc..c66aafd 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
@@ -242,10 +242,10 @@
     return 0;
 }
 
-int qser_firmware_update(uint32_t* ph_gnss)
+int qser_firmware_update(uint32_t h_gnss)
 {
     int ret;
-    mopen_gnss_firmware_update(*ph_gnss);
+    mopen_gnss_firmware_update(h_gnss);
     if(ret < 0)
     {
         return -1;
@@ -466,7 +466,6 @@
                 return -1;
             }
             lynq_open_gps(1);
-
             if(gpio21_value == 1)
             {
                 ret = set_baudrate(tty_fd, B115200);
@@ -539,7 +538,7 @@
         }
         else if(at_gpsnmea_status == 1)
         {
-            ALOGD("gpsnmea_status = %d\n",at_gpsnmea_status);
+            ALOGE("gpsnmea_status = %d\n",at_gpsnmea_status);
             pthread_create(&thread, NULL, read_gps_data, NULL);
         }
 
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
index a9a0b67..6cc38c0 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/mbtk_gnss.cpp
@@ -1543,21 +1543,14 @@
 */
 int exec_cmd(const char *cmd, char *result)
 {
-    FILE *pipe = popen(cmd, "r");
-    if(!pipe)
-        return -1;
-
-    char buffer[256] = {0};
-    while(!feof(pipe))
+    /*result is not used temporarily*/
+    int ret = -1;
+    ret = system(cmd);
+    if(ret == -1)
     {
-        if(fgets(buffer, 256, pipe))
-        {
-            result[0] = buffer[0];
-            memset(buffer, 0, sizeof(buffer));
-        }
+        ALOGE("cmd system error\n");
+        return ret;
     }
-    
-    pclose(pipe);
     return 0;
 }
 
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/phy/jlsemi/jl3xxx.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/phy/jlsemi/jl3xxx.c
index dedebc3..223c6d3 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/phy/jlsemi/jl3xxx.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/phy/jlsemi/jl3xxx.c
@@ -15,7 +15,7 @@
 #include <linux/phy.h>
 #include <linux/module.h>
 #include <linux/gmac/gmac.h>
-#include "jl.h"
+#include "jlsemi/jl.h"
 
 
 #define DBG(fmt, ...)   printk("xxx: "fmt, ##__VA_ARGS__)
@@ -285,13 +285,12 @@
 	phydev->asym_pause = 0;
 
 	if ((i % 5 == 0) && debug_on) {
-        printk("[%s] link:%d\n", __func__, phydev->link);
-		mdiobus_write(phydev->mdio.bus, 7, 0x0d, 0x3);
-	    mdiobus_write(phydev->mdio.bus, 7, 0x0e, 0x8000);
-	    mdiobus_write(phydev->mdio.bus, 7, 0x0d, 0x4000 | 0x3);	    
-		printk("[%s] rmii config:0x%x\n", __func__, mdiobus_read(phydev->mdio.bus, 7, 0x0e));
-		
-    }
+            printk("[%s] link:%d\n", __func__, phydev->link);
+            mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0d, 0x3);
+            mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0e, 0x8000);
+            mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0d, 0x4000 | 0x3);
+            printk("[%s] cy rmii config:0x%x\n", __func__, mdiobus_read(phydev->mdio.bus, phydev->mdio.addr, 0x0e));
+        }
 	i++;
 
 	return 0;
@@ -300,17 +299,17 @@
 static int jl3_config_init(struct phy_device *phydev)
 {
 	DBG("%s(), an:= %d, if:= %d\n", __func__, phydev->autoneg, phydev->interface);
-	printk("[%s] addr:%d\n", __func__, phydev->mdio.addr);
+	printk("[%s] cy-addr:%d\n", __func__, phydev->mdio.addr);
 //	jl3113_config_init(phydev, ROLE, SPEED_1000);
-	mdiobus_write(phydev->mdio.bus, 7, 0x0d, 0x3);
-	mdiobus_write(phydev->mdio.bus, 7, 0x0e, 0x8000);
-	mdiobus_write(phydev->mdio.bus, 7, 0x0d, 0x4000 | 0x3);
-	mdiobus_write(phydev->mdio.bus, 7, 0x0e, 0x46);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0d, 0x3);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0e, 0x8000);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0d, 0x4000 | 0x3);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0e, 0x46);
 
-	mdiobus_write(phydev->mdio.bus, 7, 0x0d, 0x1);
-	mdiobus_write(phydev->mdio.bus, 7, 0x0e, 0x0000);
-	mdiobus_write(phydev->mdio.bus, 7, 0x0d, 0x4000 | 0x1);
-	mdiobus_write(phydev->mdio.bus, 7, 0x0e, 0xA000);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0d, 0x1);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0e, 0x0000);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0d, 0x4000 | 0x1);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0e, 0xA000);
 
 	return 0;
 }
@@ -334,15 +333,11 @@
 	if(islink == 1)
 		new_phy_status = 1;
 
-	if((org_phy_status == 0)&&(new_phy_status == 1)) {
-	    wt(phydev, 0x3, 0x8000, 0x46);
-        wt(phydev, 0x1, 0x0000, 0xA000);
-        gmac_event_notify(GMAC_ETH_PHY_PLUGIN, NULL);
-    }
-
+	if((org_phy_status == 0)&&(new_phy_status == 1))
+		gmac_event_notify(GMAC_ETH_PHY_PLUGIN, NULL);
 
 	if((org_phy_status == 1)&&(new_phy_status == 0))
-		gmac_event_notify(GMAC_ETH_PHY_PLUGOUT, NULL);
+                gmac_event_notify(GMAC_ETH_PHY_PLUGOUT, NULL);
 
 	return err;
 }
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/phy/jlsemi/jlsemi/jlapi.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/phy/jlsemi/jlsemi/jlapi.c
index 9fcd250..1da6846 100644
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/phy/jlsemi/jlsemi/jlapi.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/phy/jlsemi/jlsemi/jlapi.c
@@ -152,12 +152,11 @@
 {
     int tmp = 0;
 
-	mdiobus_write(phydev->mdio.bus, 7, 0x0d, 0x1);
-	mdiobus_write(phydev->mdio.bus, 7, 0x0e, 1);
-	mdiobus_write(phydev->mdio.bus, 7, 0x0d, 0x4000 | 0x1);
-	tmp = mdiobus_read(phydev->mdio.bus, 7, 0x0e);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0d, 0x1);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0e, 1);
+	mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, 0x0d, 0x4000 | 0x1);
+	tmp = mdiobus_read(phydev->mdio.bus, phydev->mdio.addr, 0x0e);
 	return !!(tmp & BIT2 );
-
 }
 
 void jl3113_config_init(struct phy_device *phydev, jl_role role, int speed/*SPEED_100*/)
