diff mbox series

[v1,3/3] e1000e: Additional PHY power saving in s0ix

Message ID 20210624081908.568757-1-sasha.neftin@intel.com
State Accepted
Delegated to: Anthony Nguyen
Headers show
Series [v1,1/3] e1000e: Add handshake with the CSME to support s0ix | expand

Commit Message

Sasha Neftin June 24, 2021, 8:19 a.m. UTC
After transferring the MAC-PHY interface to the SMBus the PHY
will save power in S0ix low power idle mode.

Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
---
 drivers/net/ethernet/intel/e1000e/netdev.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Fuxbrumer, Devora July 13, 2021, 7:04 a.m. UTC | #1
On 6/24/2021 11:19, Sasha Neftin wrote:
> After transferring the MAC-PHY interface to the SMBus the PHY
> will save power in S0ix low power idle mode.
> 
> Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
> Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
> ---
>   drivers/net/ethernet/intel/e1000e/netdev.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
Tested-by: Dvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
Paul Menzel July 13, 2021, 7:12 a.m. UTC | #2
Dear Sasha, dear Dima,


Am 24.06.21 um 10:19 schrieb Sasha Neftin:

Could you please use a statement in the commit message summary? Maybe:

> Disable additional PHY features(?) in S0ix

> After transferring the MAC-PHY interface to the SMBus the PHY
> will save power in S0ix low power idle mode.

I do not understand this. Please rewrite, and mention the three PHY 
features(?) you change.

Please document how you tested this, and exactly how much power is saved.

> Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
> Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
> ---
>   drivers/net/ethernet/intel/e1000e/netdev.c | 6 ++++++
>   1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
> index 6e6e2e685e9d..c4f3e5ca7294 100644
> --- a/drivers/net/ethernet/intel/e1000e/netdev.c
> +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
> @@ -6380,10 +6380,16 @@ static void e1000e_s0ix_entry_flow(struct e1000_adapter *adapter)
>   		ew32(CTRL_EXT, mac_data);
>   
>   		/* DFT control: PHY bit: page769_20[0] = 1
> +		 * page769_20[7] - PHY PLL stop
> +		 * page769_20[8] - PHY go to the electrical idle
> +		 * page769_20[9] - PHY serdes disable
>   		 * Gate PPW via EXTCNF_CTRL - set 0x0F00[7] = 1
>   		 */
>   		e1e_rphy(hw, I82579_DFT_CTRL, &phy_data);
>   		phy_data |= BIT(0);
> +		phy_data |= BIT(7);
> +		phy_data |= BIT(8);
> +		phy_data |= BIT(9);
>   		e1e_wphy(hw, I82579_DFT_CTRL, phy_data);
>   
>   		mac_data = er32(EXTCNF_CTRL);
> 


Kind regards,

Paul
Sasha Neftin July 13, 2021, 4:40 p.m. UTC | #3
On 7/13/2021 10:12, Paul Menzel wrote:
> Dear Sasha, dear Dima,
>
>
> Am 24.06.21 um 10:19 schrieb Sasha Neftin:
>
> Could you please use a statement in the commit message summary? Maybe:
>
>> Disable additional PHY features(?) in S0ix
>
>> After transferring the MAC-PHY interface to the SMBus the PHY
>> will save power in S0ix low power idle mode.
>
> I do not understand this. Please rewrite, and mention the three PHY 
> features(?) you change.
>
> Please document how you tested this, and exactly how much power is saved.

Dear Paul,

The PHY will save 47-85mW in s0ix. It is tested (by our electrical 
validation team) on a sense resistor on a specific external board over 
the TGL platform.

This measurement could variate from platform to platform and depends on 
the specific platform design.

>
>> Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
>> Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
>> ---
>>   drivers/net/ethernet/intel/e1000e/netdev.c | 6 ++++++
>>   1 file changed, 6 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c 
>> b/drivers/net/ethernet/intel/e1000e/netdev.c
>> index 6e6e2e685e9d..c4f3e5ca7294 100644
>> --- a/drivers/net/ethernet/intel/e1000e/netdev.c
>> +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
>> @@ -6380,10 +6380,16 @@ static void e1000e_s0ix_entry_flow(struct 
>> e1000_adapter *adapter)
>>           ew32(CTRL_EXT, mac_data);
>>             /* DFT control: PHY bit: page769_20[0] = 1
>> +         * page769_20[7] - PHY PLL stop
>> +         * page769_20[8] - PHY go to the electrical idle
>> +         * page769_20[9] - PHY serdes disable
>>            * Gate PPW via EXTCNF_CTRL - set 0x0F00[7] = 1
>>            */
>>           e1e_rphy(hw, I82579_DFT_CTRL, &phy_data);
>>           phy_data |= BIT(0);
>> +        phy_data |= BIT(7);
>> +        phy_data |= BIT(8);
>> +        phy_data |= BIT(9);
>>           e1e_wphy(hw, I82579_DFT_CTRL, phy_data);
>>             mac_data = er32(EXTCNF_CTRL);
>>
>
>
> Kind regards,
>
> Paul

Thanks,

Sasha
Paul Menzel July 14, 2021, 6:09 a.m. UTC | #4
Dear Sasha,


Am 13.07.21 um 18:40 schrieb Sasha Neftin:
> On 7/13/2021 10:12, Paul Menzel wrote:

>> Am 24.06.21 um 10:19 schrieb Sasha Neftin:
>>
>> Could you please use a statement in the commit message summary? Maybe:
>>
>>> Disable additional PHY features(?) in S0ix
>>
>>> After transferring the MAC-PHY interface to the SMBus the PHY
>>> will save power in S0ix low power idle mode.
>>
>> I do not understand this. Please rewrite, and mention the three PHY 
>> features(?) you change.
>>
>> Please document how you tested this, and exactly how much power is saved.

> The PHY will save 47-85mW in s0ix. It is tested (by our electrical 
> validation team) on a sense resistor on a specific external board over 
> the TGL platform.
> 
> This measurement could variate from platform to platform and depends on 
> the specific platform design.

Thank you for sharing the data. Please add it to the commit message in v2.

>>> Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
>>> Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
>>> ---
>>>   drivers/net/ethernet/intel/e1000e/netdev.c | 6 ++++++
>>>   1 file changed, 6 insertions(+)
>>>
>>> diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c 
>>> b/drivers/net/ethernet/intel/e1000e/netdev.c
>>> index 6e6e2e685e9d..c4f3e5ca7294 100644
>>> --- a/drivers/net/ethernet/intel/e1000e/netdev.c
>>> +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
>>> @@ -6380,10 +6380,16 @@ static void e1000e_s0ix_entry_flow(struct 
>>> e1000_adapter *adapter)
>>>           ew32(CTRL_EXT, mac_data);
>>>             /* DFT control: PHY bit: page769_20[0] = 1
>>> +         * page769_20[7] - PHY PLL stop
>>> +         * page769_20[8] - PHY go to the electrical idle
>>> +         * page769_20[9] - PHY serdes disable
>>>            * Gate PPW via EXTCNF_CTRL - set 0x0F00[7] = 1
>>>            */
>>>           e1e_rphy(hw, I82579_DFT_CTRL, &phy_data);
>>>           phy_data |= BIT(0);
>>> +        phy_data |= BIT(7);
>>> +        phy_data |= BIT(8);
>>> +        phy_data |= BIT(9);
>>>           e1e_wphy(hw, I82579_DFT_CTRL, phy_data);
>>>             mac_data = er32(EXTCNF_CTRL);
>>>


Kind regards,

Paul
Sasha Neftin July 14, 2021, 7:04 a.m. UTC | #5
On 7/14/2021 09:09, Paul Menzel wrote:
> Dear Sasha,
> 
> 
> Am 13.07.21 um 18:40 schrieb Sasha Neftin:
>> On 7/13/2021 10:12, Paul Menzel wrote:
> 
>>> Am 24.06.21 um 10:19 schrieb Sasha Neftin:
>>>
>>> Could you please use a statement in the commit message summary? Maybe:
>>>
>>>> Disable additional PHY features(?) in S0ix
>>>
>>>> After transferring the MAC-PHY interface to the SMBus the PHY
>>>> will save power in S0ix low power idle mode.
>>>
>>> I do not understand this. Please rewrite, and mention the three PHY 
>>> features(?) you change.
>>>
>>> Please document how you tested this, and exactly how much power is 
>>> saved.
> 
>> The PHY will save 47-85mW in s0ix. It is tested (by our electrical 
>> validation team) on a sense resistor on a specific external board over 
>> the TGL platform.
>>
>> This measurement could variate from platform to platform and depends 
>> on the specific platform design.
> 
> Thank you for sharing the data. Please add it to the commit message in v2.
Paul, I will work on this with our HW architect. We will process 
specification updates. I will let you know and share since it will ready.
> 
>>>> Suggested-by: Dima Ruinskiy <dima.ruinskiy@intel.com>
>>>> Signed-off-by: Sasha Neftin <sasha.neftin@intel.com>
>>>> ---
>>>>   drivers/net/ethernet/intel/e1000e/netdev.c | 6 ++++++
>>>>   1 file changed, 6 insertions(+)
>>>>
>>>> diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c 
>>>> b/drivers/net/ethernet/intel/e1000e/netdev.c
>>>> index 6e6e2e685e9d..c4f3e5ca7294 100644
>>>> --- a/drivers/net/ethernet/intel/e1000e/netdev.c
>>>> +++ b/drivers/net/ethernet/intel/e1000e/netdev.c
>>>> @@ -6380,10 +6380,16 @@ static void e1000e_s0ix_entry_flow(struct 
>>>> e1000_adapter *adapter)
>>>>           ew32(CTRL_EXT, mac_data);
>>>>             /* DFT control: PHY bit: page769_20[0] = 1
>>>> +         * page769_20[7] - PHY PLL stop
>>>> +         * page769_20[8] - PHY go to the electrical idle
>>>> +         * page769_20[9] - PHY serdes disable
>>>>            * Gate PPW via EXTCNF_CTRL - set 0x0F00[7] = 1
>>>>            */
>>>>           e1e_rphy(hw, I82579_DFT_CTRL, &phy_data);
>>>>           phy_data |= BIT(0);
>>>> +        phy_data |= BIT(7);
>>>> +        phy_data |= BIT(8);
>>>> +        phy_data |= BIT(9);
>>>>           e1e_wphy(hw, I82579_DFT_CTRL, phy_data);
>>>>             mac_data = er32(EXTCNF_CTRL);
>>>>
> 
> 
> Kind regards,
> 
> Paul
Sasha
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 6e6e2e685e9d..c4f3e5ca7294 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -6380,10 +6380,16 @@  static void e1000e_s0ix_entry_flow(struct e1000_adapter *adapter)
 		ew32(CTRL_EXT, mac_data);
 
 		/* DFT control: PHY bit: page769_20[0] = 1
+		 * page769_20[7] - PHY PLL stop
+		 * page769_20[8] - PHY go to the electrical idle
+		 * page769_20[9] - PHY serdes disable
 		 * Gate PPW via EXTCNF_CTRL - set 0x0F00[7] = 1
 		 */
 		e1e_rphy(hw, I82579_DFT_CTRL, &phy_data);
 		phy_data |= BIT(0);
+		phy_data |= BIT(7);
+		phy_data |= BIT(8);
+		phy_data |= BIT(9);
 		e1e_wphy(hw, I82579_DFT_CTRL, phy_data);
 
 		mac_data = er32(EXTCNF_CTRL);