[Feature][ZXW-185][POWER]add gmac power off instructions
Only Configure: No
Affected branch: master
Affected module: power
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: no
Change-Id: I0d7a5e8492746ca9496ca29d6a8de4a667979d0b
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;
}