[Bugfix][API-647][ETH]No eth2 exists after the reboot for GSW
Change-Id: Ie4bde1e1cd96f93bc0a53dfbcfa5b2a3c5093899
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 c847653..467f4ae 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
@@ -41,6 +41,8 @@
/* Add delay on RX_CLK */
#define Q2110_RGMII_RX_TIMING_CTRL BIT(14)
+int if_suspend = 0;
+
/* Set and/or override some configuration registers based on the
* marvell,88q2110 property stored in the of_node for the phydev.
* marvell,88q2110 = <speed master>,...;
@@ -216,29 +218,38 @@
int q2220_suspend(struct phy_device *phydev)
{
- //xf.li 2022/9/9 modify for LPSD mode
+ //xf.li 2022/11/9 modify for API-647
printk("phy sleep start\n");
+ gpio_direction_output(7 + 268, 0);
+ mdelay(1);
phy_write(phydev, MII_ADDR_C45 | 0x038022, 0x1);
mdelay(10);
printk("reg 038022 = %x\n", phy_read(phydev, (MII_ADDR_C45 | 0x038022)));
phy_write(phydev, (MII_ADDR_C45 | 0x038020), 0x1);
printk("reg 038020 = %x\n", phy_read(phydev, (MII_ADDR_C45 | 0x038020)));
gpio_direction_output(26 + 268, 0);
-
+ if_suspend = 1;
return 0;
- //xf.li 2022/9/9 modify for LPSD mode
+ //xf.li 2022/11/9 modify for API-647
}
int q2220_resume(struct phy_device *phydev)
{
- //xf.li 2022/9/9 modify for LPSD mode
- printk("phy awake start\n");
- gpio_direction_output(7 + 268, 1);
- udelay(1100);
- gpio_direction_output(26 + 268, 1);
- gpio_direction_output(7 + 268, 0);
- q2110_config_init(phydev);
+ //xf.li 2022/11/9 modify for API-647
+ if(if_suspend == 1)
+ {
+ printk("phy awake start\n");
+ gpio_direction_output(7 + 268, 1);
+ udelay(1100);
+ gpio_direction_output(26 + 268, 1);
+ gpio_direction_output(7 + 268, 0);
+ if_suspend = 0;
+ }
+ else
+ {
+ printk("q2220_resume: no suspend! In boot state.");
+ }
return 0;
- //xf.li 2022/9/9 modify for LPSD mode
+ //xf.li 2022/11/9 modify for API-647
}