[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <185fa856-0832-409c-84e6-357f4d14da3c@lunn.ch>
Date: Tue, 28 Mar 2023 14:09:48 +0200
From: Andrew Lunn <andrew@...n.ch>
To: Oleksij Rempel <o.rempel@...gutronix.de>
Cc: netdev <netdev@...r.kernel.org>,
Florian Fainelli <f.fainelli@...il.com>,
Heiner Kallweit <hkallweit1@...il.com>,
Russell King <rmk+kernel@...linux.org.uk>
Subject: Re: [RFC/RFT 03/23] net: phy: Add helper to set EEE Clock stop
enable bit
> > + */
> > +int phy_eee_clk_stop_enable(struct phy_device *phydev)
>
> this function should go to drivers/net/phy/phy-c45.c
> and renamed to genphy_c45_eee_clk_stop_enable()
> > +{
> > + int ret;
> > +
> > + mutex_lock(&phydev->lock);
>
> /* IEEE 802.3-2018 45.2.3.1.4 Clock stop enable (3.0.10) */
>
> > + ret = phy_set_bits_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1,
> > + MDIO_PCS_CTRL1_CLKSTOP_EN);
>
> It would be better to write it conditionally. Only if EEE is supported
> and only if this bit is supported as well. Support is indicated by the
> IEEE 802.3:2018 - 45.2.3.2.6 Clock stop capable (3.1.6)
O.K, i was too lazy. I just took the existing code in phy_eee_init()
and moved it here. I can rework it as requested.
> It looks like there are other registers for same functionality too but
> other types of PHYs:
> 45.2.4.1.4 Clock stop enable (4.0.10)
> 45.2.4.2.6 Clock stop capable (4.1.6)
> 45.2.5.1.4 Clock stop enable (5.0.10)
> 45.2.5.2.6 Clock stop capable (5.1.6)
>
> If I see it correctly, Clock-stop is possible only for GMII/RGMII.
> Integrated PHYs or EEE capable PHYs with RMII do not support it.
For the existing code, it is up to the MAC to decide if the clock
should be stopped. It is not clear why, but we do see some MACs where
the DMA engine stops working when the clock is stopped. So i don't
want to be overly eager to stop clocks and introduce regressions. So
i will keep with just one clock above. But make it conditional on the
capability.
Andrew
Powered by blists - more mailing lists