diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/ethernet/zte/zx29_gmac.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/ethernet/zte/zx29_gmac.c
index 05a5b0b..7bc3ed0 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/ethernet/zte/zx29_gmac.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/drivers/net/ethernet/zte/zx29_gmac.c
@@ -1357,11 +1357,45 @@
     return 0;
 }
 
+/*jb.qi add for gamc power down on 20231116 start*/
+
+extern int gmac_power = 1;
+int gmac_power_flag = 0;
+
+ssize_t gmac_power_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count)
+{
+    int val = 0;
+    int ret;
+    ret = sscanf(buf, "%d", &val);
+    if(ret < 1)
+    {
+        printk(KERN_INFO "gmac: failed ti read user buf, ret=%d, input %d\n", ret,val);
+        return count;
+    }
+    gmac_power = val;
+    gpio_direction_output(gmac_power_flag, val);
+    return count;
+}
+
+ssize_t gmac_power_show(struct device *dev, struct device_attribute *attr, char *buf)
+{
+    if(gmac_power)
+        memcpy(buf, "on",3);
+    else
+        memcpy(buf, "off", 4);
+
+    printk("gmac_power %s\n", buf);
+    return 0;
+
+}
+/*jb.qi add for gamc power down on 20231116 end */
+
 static DEVICE_ATTR(gmac_test, 0664, show_fun, store_fun);
 static DEVICE_ATTR(mdio_test, 0664, mdio_show, mdio_store);
 static DEVICE_ATTR(free_mdio, 0664, free_mdio_show, free_mdio_store);
 static DEVICE_ATTR(debug_on, 0664, debug_on_show, debug_on_store);
-
+static DEVICE_ATTR(gmac_power, 0664, gmac_power_show, gmac_power_store);//jb.qi add for gamc power down on 20231116
+
 static int zx29_gmac_probe(struct platform_device *pdev)
 {
     struct zx29_gmac_dev *prv = NULL;
@@ -1387,6 +1421,7 @@
 	device_create_file(&pdev->dev, &dev_attr_mdio_test);
 	device_create_file(&pdev->dev, &dev_attr_free_mdio);
 	device_create_file(&pdev->dev, &dev_attr_debug_on);
+    device_create_file(&pdev->dev, &dev_attr_gmac_power);//jb.qi add for gamc power down on 20231116
 
 	prv = netdev_priv(ndev);
 	memset(prv, 0, sizeof(*prv));
@@ -1422,7 +1457,7 @@
 	gpio_direction_output(prv->gpio_power[1], 1);
 	mdelay(15);
 #endif    
-
+    gmac_power_flag = prv->gpio_power[0];
 	SET_NETDEV_DEV(ndev, &pdev->dev); //if not, will panic
 	
 	base = devm_platform_ioremap_resource(pdev, 0);
@@ -1630,7 +1665,8 @@
 		device_remove_file(&pdev->dev, &dev_attr_gmac_test);
 	    device_remove_file(&pdev->dev, &dev_attr_mdio_test);
 	    device_remove_file(&pdev->dev, &dev_attr_free_mdio);
-	    device_remove_file(&pdev->dev, &dev_attr_debug_on);		
+	    device_remove_file(&pdev->dev, &dev_attr_debug_on);
+        device_remove_file(&pdev->dev, &dev_attr_gmac_power);//jb.qi add for gamc power down on 20231116
 	}
 	return 0;
 }
