diff --git a/src/kernel/linux/v4.19/drivers/lynq_gpio_init/lynq_gpio_init.h b/src/kernel/linux/v4.19/drivers/lynq_gpio_init/lynq_gpio_init.h
index 1d58455..e2e1241 100755
--- a/src/kernel/linux/v4.19/drivers/lynq_gpio_init/lynq_gpio_init.h
+++ b/src/kernel/linux/v4.19/drivers/lynq_gpio_init/lynq_gpio_init.h
@@ -11,6 +11,7 @@
 #include <linux/sysfs.h> 
 #include <linux/stat.h> 
 #include <linux/slab.h>
+#include <linux/delay.h>
 
 #include "../pinctrl/mediatek/pinctrl-mtk-common-v2_debug.h"
 #include "../pinctrl/mediatek/pinctrl-mtk-common-v2.h"
@@ -25,6 +26,8 @@
 	int gpio_dir;
 	int gpio_dout;
 	int gpio_din;
+    int pre_mdelay_time;
+    int post_mdelay_time;
 };
 
 //struct gpio_node *gpio_test;
@@ -112,7 +115,7 @@
 int set_gpio(struct device_node *gpio_node, int num)
 {
     int ret = 0;
-    unsigned int gpio_num, gpio_mode, gpio_dir, gpio_dout, gpio_din;
+    unsigned int gpio_num, gpio_mode, gpio_dir, gpio_dout, gpio_din, pre_mdelay_time, post_mdelay_time;
     int read_mode = -1;
 
     gpio_node_list[num].gpio_num = -1;
@@ -121,6 +124,23 @@
     gpio_node_list[num].gpio_din = -1;
     gpio_node_list[num].gpio_dout = -1;
 
+    ret = of_property_read_u32(gpio_node, "pre_mdelay_time", &pre_mdelay_time);
+    if(ret == -EINVAL || ret == -ENODATA)
+    {
+        printk("no value or no node");
+        log_offset += sprintf(log_info + log_offset,"No pre_mdelay_time\n");
+    }
+    else if(ret < 0)
+    {
+        printk("GPIO_INIT:READ ERROR: %d", ret);
+        log_offset += sprintf(log_info + log_offset, "GPIO_INIT: read num ERROR: %d\n", ret);
+        return ret;
+    }
+    else
+    {
+        mdelay(pre_mdelay_time);
+    }
+
     //get the gpio hw
     ret = of_property_read_u32(gpio_node, "gpio_num", &gpio_num);
     if(ret == -EINVAL || ret == -ENODATA)
@@ -311,5 +331,23 @@
             error_offset += sprintf(error_info + error_offset, "GPIO_INIT: din: %u out of the range 0-1\n", gpio_din);
         }
     }
+
+    ret = of_property_read_u32(gpio_node, "post_mdelay_time", &post_mdelay_time);
+    if(ret == -EINVAL || ret == -ENODATA)
+    {
+        printk("no value or no node");
+        log_offset += sprintf(log_info + log_offset,"No post_mdelay_time\n");
+    }
+    else if(ret < 0)
+    {
+        printk("GPIO_INIT:READ ERROR: %d", ret);
+        log_offset += sprintf(log_info + log_offset, "GPIO_INIT: read num ERROR: %d\n", ret);
+        return ret;
+    }
+    else
+    {
+        mdelay(post_mdelay_time);
+    }
+
     return ret;
 }
diff --git a/src/kernel/linux/v4.19/drivers/net/phy/marvell-88q.c b/src/kernel/linux/v4.19/drivers/net/phy/marvell-88q.c
index ab00fb0..930c382 100755
--- a/src/kernel/linux/v4.19/drivers/net/phy/marvell-88q.c
+++ b/src/kernel/linux/v4.19/drivers/net/phy/marvell-88q.c
@@ -153,6 +153,7 @@
 	phydev->state = PHY_NOLINK;
 	phydev->autoneg = AUTONEG_DISABLE;
 	phy_write(phydev, MII_ADDR_C45 | 0x038033, 0x6801);
+	phy_write(phydev, MII_ADDR_C45 | 0x070200, 0x0000U);
 	phy_write(phydev, MII_ADDR_C45 | 0x010000, 0x840);
 	phy_write(phydev, MII_ADDR_C45 | 0x03FE1B, 0x48);
 	phy_write(phydev, MII_ADDR_C45 | 0x01FFE4, 0x6B6);
@@ -169,6 +170,9 @@
 	phy_write(phydev, MII_ADDR_C45 | 0x078032, 0x2020);
 	phy_write(phydev, MII_ADDR_C45 | 0x078031, 0xA28);
 	phy_write(phydev, MII_ADDR_C45 | 0x078031, 0xC28);
+	phy_write(phydev, MII_ADDR_C45 | 0x03FFDB, 0xFC10);
+	phy_write(phydev, MII_ADDR_C45 | 0x03FE1B, 0x58);
+
 	phy_write(phydev, MII_ADDR_C45 | 0x03803A, 0xDA44);
 	phy_write(phydev, MII_ADDR_C45 | 0x038039, 0x2C0B);
 
@@ -176,7 +180,7 @@
 	q2110_timing_init(phydev);
 
 	q2110_dts_init(phydev);
-
+	printk("phy init ok\n");
 	return 0;
 }
 
