diff --git a/src/bsp/lk/platform/mt2735/drivers/gpio/mt_gpio.c b/src/bsp/lk/platform/mt2735/drivers/gpio/mt_gpio.c
index 0915b9c..5276983 100755
--- a/src/bsp/lk/platform/mt2735/drivers/gpio/mt_gpio.c
+++ b/src/bsp/lk/platform/mt2735/drivers/gpio/mt_gpio.c
@@ -858,6 +858,11 @@
 //	mt_set_gpio_dir(GPIO24, GPIO_DIR_OUT);
 //	mt_set_gpio_out(GPIO24, GPIO_OUT_ZERO);
 //xf.li2023/03/07 modify for phy gpio end
+        /* GPIO26 */
+	mt_set_gpio_mode(GPIO26, 0);
+	mt_set_gpio_dir(GPIO26, GPIO_DIR_OUT);
+	mt_set_gpio_out(GPIO26, GPIO_OUT_ZERO);
+
 	mt_set_gpio_mode(GPIO25, 0);
 	mt_set_gpio_dir(GPIO25, GPIO_DIR_OUT);
 	mt_set_gpio_out(GPIO25, GPIO_OUT_ZERO);
diff --git a/src/kernel/linux/v4.19/arch/arm64/boot/dts/mediatek/auto2735evb.dts b/src/kernel/linux/v4.19/arch/arm64/boot/dts/mediatek/auto2735evb.dts
index 8bc1189..c1af865 100755
--- a/src/kernel/linux/v4.19/arch/arm64/boot/dts/mediatek/auto2735evb.dts
+++ b/src/kernel/linux/v4.19/arch/arm64/boot/dts/mediatek/auto2735evb.dts
@@ -1573,18 +1573,45 @@
 };
 /*Lxf add in 2022/12/2 for gpio init*/
 &gpio_init{
-	phy_power_gpio_24{
-		gpio_num = <24>;
-		gpio_mode = <0>;
-		gpio_dir = <1>;
-		gpio_dout = <1>;
-	};
-	phy_switch_gpio_178{
-		gpio_num = <178>;
-		gpio_mode = <0>;
-		gpio_dir = <1>;
-		gpio_dout = <1>;
-	};
+        phy_power_gpio_24_down{
+                gpio_num = <24>;
+                gpio_mode = <0>;
+                gpio_dir = <1>;
+                gpio_dout = <0>;
+        };
+        phy_switch_gpio_178_down{
+                gpio_num = <178>;
+                gpio_mode = <0>;
+                gpio_dir = <1>;
+                gpio_dout = <0>;
+        };
+        phy_switch_gpio_26_down{
+                gpio_num = <26>;
+                gpio_mode = <0>;
+                gpio_dir = <1>;
+                gpio_dout = <0>;
+                post_mdelay_time = <30>;
+        };
+        phy_power_gpio_24_up{
+                gpio_num = <24>;
+                gpio_mode = <0>;
+                gpio_dir = <1>;
+                gpio_dout = <1>;
+        };
+        phy_switch_gpio_178_up{
+                gpio_num = <178>;
+                gpio_mode = <0>;
+                gpio_dir = <1>;
+                gpio_dout = <1>;
+                post_mdelay_time = <30>;
+        };
+        phy_switch_gpio_26_up{
+                gpio_num = <26>;
+                gpio_mode = <0>;
+                gpio_dir = <1>;
+                gpio_dout = <1>;
+                post_mdelay_time = <15>;
+        };
 };
 /*Lxf add in 2022/12/2 for gpio init end*/
 /*youchen@2023-01-05 add for lpm suspend actions begin*/
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;
 }
 
