Merge "[Feature][ZXW-185][POWER]add gmac power off instructions"
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;

 }