diff mbox series

[v2,net-next] net: phy: realtek: enable ALDPS to save power for RTL8211F

Message ID 20200921091354.2bf0a039@xhacker.debian
State Accepted
Delegated to: David Miller
Headers show
Series [v2,net-next] net: phy: realtek: enable ALDPS to save power for RTL8211F | expand

Commit Message

Jisheng Zhang Sept. 21, 2020, 1:13 a.m. UTC
Enable ALDPS(Advanced Link Down Power Saving) to save power when
link down.

Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
---
Since v1:
 - add what does ALDPS mean.
 - replace magic number 0x18 with RTL8211F_PHYCR1 macro.

 drivers/net/phy/realtek.c | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Andrew Lunn Sept. 21, 2020, 3:13 p.m. UTC | #1
On Mon, Sep 21, 2020 at 09:13:54AM +0800, Jisheng Zhang wrote:
> Enable ALDPS(Advanced Link Down Power Saving) to save power when
> link down.
> 
> Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew
David Miller Sept. 21, 2020, 9:50 p.m. UTC | #2
From: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
Date: Mon, 21 Sep 2020 09:13:54 +0800

> Enable ALDPS(Advanced Link Down Power Saving) to save power when
> link down.
> 
> Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com>
> ---
> Since v1:
>  - add what does ALDPS mean.
>  - replace magic number 0x18 with RTL8211F_PHYCR1 macro.

Applied, thanks.
diff mbox series

Patch

diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index 95dbe5e8e1d8..4bf54cded48a 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -27,11 +27,16 @@ 
 #define RTL821x_EXT_PAGE_SELECT			0x1e
 #define RTL821x_PAGE_SELECT			0x1f
 
+#define RTL8211F_PHYCR1				0x18
 #define RTL8211F_INSR				0x1d
 
 #define RTL8211F_TX_DELAY			BIT(8)
 #define RTL8211F_RX_DELAY			BIT(3)
 
+#define RTL8211F_ALDPS_PLL_OFF			BIT(1)
+#define RTL8211F_ALDPS_ENABLE			BIT(2)
+#define RTL8211F_ALDPS_XTAL_OFF			BIT(12)
+
 #define RTL8211E_TX_DELAY			BIT(1)
 #define RTL8211E_RX_DELAY			BIT(2)
 #define RTL8211E_MODE_MII_GMII			BIT(3)
@@ -178,8 +183,12 @@  static int rtl8211f_config_init(struct phy_device *phydev)
 {
 	struct device *dev = &phydev->mdio.dev;
 	u16 val_txdly, val_rxdly;
+	u16 val;
 	int ret;
 
+	val = RTL8211F_ALDPS_ENABLE | RTL8211F_ALDPS_PLL_OFF | RTL8211F_ALDPS_XTAL_OFF;
+	phy_modify_paged_changed(phydev, 0xa43, RTL8211F_PHYCR1, val, val);
+
 	switch (phydev->interface) {
 	case PHY_INTERFACE_MODE_RGMII:
 		val_txdly = 0;