* [PATCH net-next 0/3] r8169: improve PLL power-down handling
@ 2021-01-10 19:46 Heiner Kallweit
2021-01-10 19:48 ` [PATCH net-next 1/3] r8169: enable PLL power-down for chip versions 34, 35, 36, 42 Heiner Kallweit
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Heiner Kallweit @ 2021-01-10 19:46 UTC (permalink / raw)
To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev
This series includes improvements to handling of PLL power-down.
Heiner Kallweit (3):
r8169: enable PLL power-down for chip versions 34, 35, 36, 42
r8169: improve handling D3 PLL power-down
r8169: clean up rtl_pll_power_down/up functions
drivers/net/ethernet/realtek/r8169_main.c | 65 +++++++++--------------
1 file changed, 25 insertions(+), 40 deletions(-)
--
2.30.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH net-next 1/3] r8169: enable PLL power-down for chip versions 34, 35, 36, 42
2021-01-10 19:46 [PATCH net-next 0/3] r8169: improve PLL power-down handling Heiner Kallweit
@ 2021-01-10 19:48 ` Heiner Kallweit
2021-01-10 19:50 ` [PATCH net-next 2/3] r8169: improve handling D3 PLL power-down Heiner Kallweit
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Heiner Kallweit @ 2021-01-10 19:48 UTC (permalink / raw)
To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev
There's no known reason why PLL powerdown on D3 shouldn't be enabled
on chip versions 34, 35, 36, and 42. At least the vendor driver doesn't
exclude any of these chip versions.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
drivers/net/ethernet/realtek/r8169_main.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index dbf0c2909..9c87fb9f1 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -2226,10 +2226,8 @@ static void rtl_pll_power_down(struct rtl8169_private *tp)
switch (tp->mac_version) {
case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26:
- case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_33:
- case RTL_GIGA_MAC_VER_37:
- case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_41:
- case RTL_GIGA_MAC_VER_43 ... RTL_GIGA_MAC_VER_63:
+ case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_37:
+ case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) & ~0x80);
break;
default:
@@ -2241,13 +2239,12 @@ static void rtl_pll_power_up(struct rtl8169_private *tp)
{
switch (tp->mac_version) {
case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26:
- case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_33:
- case RTL_GIGA_MAC_VER_37:
+ case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_37:
case RTL_GIGA_MAC_VER_39:
case RTL_GIGA_MAC_VER_43:
RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) | 0x80);
break;
- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_41:
+ case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_42:
case RTL_GIGA_MAC_VER_44 ... RTL_GIGA_MAC_VER_63:
RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) | 0xc0);
break;
--
2.30.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net-next 2/3] r8169: improve handling D3 PLL power-down
2021-01-10 19:46 [PATCH net-next 0/3] r8169: improve PLL power-down handling Heiner Kallweit
2021-01-10 19:48 ` [PATCH net-next 1/3] r8169: enable PLL power-down for chip versions 34, 35, 36, 42 Heiner Kallweit
@ 2021-01-10 19:50 ` Heiner Kallweit
2021-01-10 19:50 ` [PATCH net-next 3/3] r8169: clean up rtl_pll_power_down/up functions Heiner Kallweit
2021-01-12 1:20 ` [PATCH net-next 0/3] r8169: improve PLL power-down handling patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: Heiner Kallweit @ 2021-01-10 19:50 UTC (permalink / raw)
To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev
Realtek provided a description of bits 6 and 7 in register PMCH.
They configure whether the chip powers down certain PLL in D3hot and
D3cold respectively. They do not actually power down the PLL.
Reflect this in the code and configure D3 PLL powerdown based on
whether WOL is enabled.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
drivers/net/ethernet/realtek/r8169_main.c | 51 ++++++++++-------------
1 file changed, 22 insertions(+), 29 deletions(-)
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 9c87fb9f1..64fdc168f 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -261,6 +261,9 @@ enum rtl8168_8101_registers {
#define CSIAR_BYTE_ENABLE 0x0000f000
#define CSIAR_ADDR_MASK 0x00000fff
PMCH = 0x6f,
+#define D3COLD_NO_PLL_DOWN BIT(7)
+#define D3HOT_NO_PLL_DOWN BIT(6)
+#define D3_NO_PLL_DOWN (BIT(7) | BIT(6))
EPHYAR = 0x80,
#define EPHYAR_FLAG 0x80000000
#define EPHYAR_WRITE_CMD 0x80000000
@@ -1250,6 +1253,22 @@ static bool r8168_check_dash(struct rtl8169_private *tp)
}
}
+static void rtl_set_d3_pll_down(struct rtl8169_private *tp, bool enable)
+{
+ switch (tp->mac_version) {
+ case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26:
+ case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_37:
+ case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
+ if (enable)
+ RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) & ~D3_NO_PLL_DOWN);
+ else
+ RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) | D3_NO_PLL_DOWN);
+ break;
+ default:
+ break;
+ }
+}
+
static void rtl_reset_packet_filter(struct rtl8169_private *tp)
{
rtl_eri_clear_bits(tp, 0xdc, BIT(0));
@@ -1416,6 +1435,7 @@ static void __rtl8169_set_wol(struct rtl8169_private *tp, u32 wolopts)
rtl_lock_config_regs(tp);
device_set_wakeup_enable(tp_to_dev(tp), wolopts);
+ rtl_set_d3_pll_down(tp, !wolopts);
tp->dev->wol_enabled = wolopts ? 1 : 0;
}
@@ -2221,37 +2241,11 @@ static void rtl_pll_power_down(struct rtl8169_private *tp)
if (device_may_wakeup(tp_to_dev(tp))) {
phy_speed_down(tp->phydev, false);
rtl_wol_suspend_quirk(tp);
- return;
- }
-
- switch (tp->mac_version) {
- case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26:
- case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_37:
- case RTL_GIGA_MAC_VER_39 ... RTL_GIGA_MAC_VER_63:
- RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) & ~0x80);
- break;
- default:
- break;
}
}
static void rtl_pll_power_up(struct rtl8169_private *tp)
{
- switch (tp->mac_version) {
- case RTL_GIGA_MAC_VER_25 ... RTL_GIGA_MAC_VER_26:
- case RTL_GIGA_MAC_VER_32 ... RTL_GIGA_MAC_VER_37:
- case RTL_GIGA_MAC_VER_39:
- case RTL_GIGA_MAC_VER_43:
- RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) | 0x80);
- break;
- case RTL_GIGA_MAC_VER_40 ... RTL_GIGA_MAC_VER_42:
- case RTL_GIGA_MAC_VER_44 ... RTL_GIGA_MAC_VER_63:
- RTL_W8(tp, PMCH, RTL_R8(tp, PMCH) | 0xc0);
- break;
- default:
- break;
- }
-
phy_resume(tp->phydev);
}
@@ -5330,6 +5324,8 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
/* configure chip for default features */
rtl8169_set_features(dev, dev->features);
+ rtl_set_d3_pll_down(tp, true);
+
jumbo_max = rtl_jumbo_max(tp);
if (jumbo_max)
dev->max_mtu = jumbo_max;
@@ -5350,9 +5346,6 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
if (rc)
return rc;
- /* chip gets powered up in rtl_open() */
- rtl_pll_power_down(tp);
-
rc = register_netdev(dev);
if (rc)
return rc;
--
2.30.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH net-next 3/3] r8169: clean up rtl_pll_power_down/up functions
2021-01-10 19:46 [PATCH net-next 0/3] r8169: improve PLL power-down handling Heiner Kallweit
2021-01-10 19:48 ` [PATCH net-next 1/3] r8169: enable PLL power-down for chip versions 34, 35, 36, 42 Heiner Kallweit
2021-01-10 19:50 ` [PATCH net-next 2/3] r8169: improve handling D3 PLL power-down Heiner Kallweit
@ 2021-01-10 19:50 ` Heiner Kallweit
2021-01-12 1:20 ` [PATCH net-next 0/3] r8169: improve PLL power-down handling patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: Heiner Kallweit @ 2021-01-10 19:50 UTC (permalink / raw)
To: Jakub Kicinski, David Miller, Realtek linux nic maintainers; +Cc: netdev
Clean up the remainings of rtl_pll_power_down/up and rename
rtl_pll_power_down() to rtl_prepare_power_down().
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
drivers/net/ethernet/realtek/r8169_main.c | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 64fdc168f..33336098b 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -2229,7 +2229,7 @@ static void rtl_wol_suspend_quirk(struct rtl8169_private *tp)
}
}
-static void rtl_pll_power_down(struct rtl8169_private *tp)
+static void rtl_prepare_power_down(struct rtl8169_private *tp)
{
if (r8168_check_dash(tp))
return;
@@ -2244,11 +2244,6 @@ static void rtl_pll_power_down(struct rtl8169_private *tp)
}
}
-static void rtl_pll_power_up(struct rtl8169_private *tp)
-{
- phy_resume(tp->phydev);
-}
-
static void rtl_init_rxcfg(struct rtl8169_private *tp)
{
switch (tp->mac_version) {
@@ -4604,12 +4599,12 @@ static void rtl8169_down(struct rtl8169_private *tp)
rtl8169_cleanup(tp, true);
- rtl_pll_power_down(tp);
+ rtl_prepare_power_down(tp);
}
static void rtl8169_up(struct rtl8169_private *tp)
{
- rtl_pll_power_up(tp);
+ phy_resume(tp->phydev);
rtl8169_init_phy(tp);
napi_enable(&tp->napi);
set_bit(RTL_FLAG_TASK_ENABLED, tp->wk.flags);
--
2.30.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH net-next 0/3] r8169: improve PLL power-down handling
2021-01-10 19:46 [PATCH net-next 0/3] r8169: improve PLL power-down handling Heiner Kallweit
` (2 preceding siblings ...)
2021-01-10 19:50 ` [PATCH net-next 3/3] r8169: clean up rtl_pll_power_down/up functions Heiner Kallweit
@ 2021-01-12 1:20 ` patchwork-bot+netdevbpf
3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-01-12 1:20 UTC (permalink / raw)
To: Heiner Kallweit; +Cc: kuba, davem, nic_swsd, netdev
Hello:
This series was applied to netdev/net-next.git (refs/heads/master):
On Sun, 10 Jan 2021 20:46:58 +0100 you wrote:
> This series includes improvements to handling of PLL power-down.
>
> Heiner Kallweit (3):
> r8169: enable PLL power-down for chip versions 34, 35, 36, 42
> r8169: improve handling D3 PLL power-down
> r8169: clean up rtl_pll_power_down/up functions
>
> [...]
Here is the summary with links:
- [net-next,1/3] r8169: enable PLL power-down for chip versions 34, 35, 36, 42
https://git.kernel.org/netdev/net-next/c/9224d97183d9
- [net-next,2/3] r8169: improve handling D3 PLL power-down
https://git.kernel.org/netdev/net-next/c/128735a1530e
- [net-next,3/3] r8169: clean up rtl_pll_power_down/up functions
https://git.kernel.org/netdev/net-next/c/7257c977c811
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-01-12 1:20 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-10 19:46 [PATCH net-next 0/3] r8169: improve PLL power-down handling Heiner Kallweit
2021-01-10 19:48 ` [PATCH net-next 1/3] r8169: enable PLL power-down for chip versions 34, 35, 36, 42 Heiner Kallweit
2021-01-10 19:50 ` [PATCH net-next 2/3] r8169: improve handling D3 PLL power-down Heiner Kallweit
2021-01-10 19:50 ` [PATCH net-next 3/3] r8169: clean up rtl_pll_power_down/up functions Heiner Kallweit
2021-01-12 1:20 ` [PATCH net-next 0/3] r8169: improve PLL power-down handling patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).