Re: [PATCH 2/4] lan78xx: Read initial EEE setting from Device Tree

2018-04-12 Thread Phil Elwell
Andrew,

On 12/04/2018 15:16, Andrew Lunn wrote:
> On Thu, Apr 12, 2018 at 02:55:34PM +0100, Phil Elwell wrote:
>> Add two new Device Tree properties:
>> * microchip,eee-enabled  - a boolean to enable EEE
>> * microchip,tx-lpi-timer - time in microseconds to wait after TX goes
>>idle before entering the low power state
>>(default 600)
> 
> Hi Phil
> 
> This looks wrong.
> 
> What should happen is that the MAC driver calls phy_init_eee() to find
> out if the PHY supports EEE. There should be no need to look in device
> tree.

If the driver should be calling phy_init_eee to initialise EEE operation then 
I'm fine
with that (although I notice that the TI cpsw calls phy_ethtool_set_eee but I 
don't see
it calling phy_init_eee). However, it sounds like I need to keep my DT toggle 
of the
EEE enablement and parameters downstream.

Phil


Re: [PATCH 2/4] lan78xx: Read initial EEE setting from Device Tree

2018-04-12 Thread Andrew Lunn
On Thu, Apr 12, 2018 at 02:55:34PM +0100, Phil Elwell wrote:
> Add two new Device Tree properties:
> * microchip,eee-enabled  - a boolean to enable EEE
> * microchip,tx-lpi-timer - time in microseconds to wait after TX goes
>idle before entering the low power state
>(default 600)

Hi Phil

This looks wrong.

What should happen is that the MAC driver calls phy_init_eee() to find
out if the PHY supports EEE. There should be no need to look in device
tree.

Andrew


[PATCH 2/4] lan78xx: Read initial EEE setting from Device Tree

2018-04-12 Thread Phil Elwell
Add two new Device Tree properties:
* microchip,eee-enabled  - a boolean to enable EEE
* microchip,tx-lpi-timer - time in microseconds to wait after TX goes
   idle before entering the low power state
   (default 600)

Signed-off-by: Phil Elwell 
---
 drivers/net/usb/lan78xx.c | 17 +
 1 file changed, 17 insertions(+)

diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index d2727b5..d98397b 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -2080,6 +2080,23 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)
mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control);
phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv);
 
+   if (of_property_read_bool(dev->udev->dev.of_node,
+ "microchip,eee-enabled")) {
+   struct ethtool_eee edata;
+
+   memset(, 0, sizeof(edata));
+   edata.cmd = ETHTOOL_SEEE;
+   edata.advertised = ADVERTISED_1000baseT_Full |
+  ADVERTISED_100baseT_Full;
+   edata.eee_enabled = true;
+   edata.tx_lpi_enabled = true;
+   if (of_property_read_u32(dev->udev->dev.of_node,
+"microchip,tx-lpi-timer",
+_lpi_timer))
+   edata.tx_lpi_timer = 600; /* non-aggressive */
+   (void)lan78xx_set_eee(dev->net, );
+   }
+
genphy_config_aneg(phydev);
 
dev->fc_autoneg = phydev->autoneg;
-- 
2.7.4