Message ID | Y1qDMw+DJLAJHT40@shell.armlinux.org.uk (mailing list archive) |
---|---|
Headers | show |
Series | net: mtk_eth_soc: improve PCS implementation | expand |
On Thu, Oct 27, 2022 at 02:10:11PM +0100, Russell King (Oracle) wrote: > Hi, > > As a result of invesigations from Frank Wunderlich, we know a lot more > about the Mediatek "SGMII" PCS block, and can implement the PCS support > correctly. This series achieves that, and Frank has tested the final > result and reports that it works for him. The series could do with > further testing by others, but I suspect that is unlikely to happen > until it is merged based on past performances with this driver. I forgot to say, many thanks to Frank for his efforts and patience in testing various patches to discover how this PCS works. > > Briefly, the patches in order: > > 1. Add a new helper to get the link timer duration in nanoseconds > 2. Add definitions for the newly discovered registers and updates to > bit definitions, including bitmasks for the BMCR, BMSR and two > advertisement registers. > 3. Remove unnecessary/unused error handling (functions always returning > zero.) > 4. Adding the missing pcs_get_state() implementation. > 5. Converting the code to use regmap_update_bits() rather than > open-coding read-modify-write sequences. > 6. Adding out-of-band speed and duplex forcing for all non-inband modes > not just the 802.3z link modes the code currently does. > 7. Moving the release of the PHY power down to the main pcs_config() > function. > 8. Moving the interface speed selection to the main pcs_config() > function. > 9. Adding advertisement programming. > 10. Adding correct link timer programming using the new helper in the > first patch. > 11. Adding support for 802.3z negotiation. > > There is one remaining issue - when configuring the PCS for in-band, > for some reason the AN restart bit is always set. This should not be > necessary, but requires further investigation with the hardware to > find out whether it is really necessary. I suspect this was a work > around for a previous poor implementation. > > drivers/net/ethernet/mediatek/mtk_eth_soc.h | 13 ++- > drivers/net/ethernet/mediatek/mtk_sgmii.c | 174 ++++++++++++++++------------ > include/linux/phylink.h | 24 ++++ > 3 files changed, 134 insertions(+), 77 deletions(-) > > -- > RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ > FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last! >
Hello: This series was applied to netdev/net-next.git (master) by Jakub Kicinski <kuba@kernel.org>: On Thu, 27 Oct 2022 14:10:11 +0100 you wrote: > Hi, > > As a result of invesigations from Frank Wunderlich, we know a lot more > about the Mediatek "SGMII" PCS block, and can implement the PCS support > correctly. This series achieves that, and Frank has tested the final > result and reports that it works for him. The series could do with > further testing by others, but I suspect that is unlikely to happen > until it is merged based on past performances with this driver. > > [...] Here is the summary with links: - [net-next,01/11] net: phylink: add phylink_get_link_timer_ns() helper https://git.kernel.org/netdev/net-next/c/9c5a170677c3 - [net-next,02/11] net: mtk_eth_soc: add definitions for PCS https://git.kernel.org/netdev/net-next/c/b6a709cb51f7 - [net-next,03/11] net: mtk_eth_soc: eliminate unnecessary error handling https://git.kernel.org/netdev/net-next/c/5cf7797526ee - [net-next,04/11] net: mtk_eth_soc: add pcs_get_state() implementation https://git.kernel.org/netdev/net-next/c/c000dca09800 - [net-next,05/11] net: mtk_eth_soc: convert mtk_sgmii to use regmap_update_bits() https://git.kernel.org/netdev/net-next/c/0d2351dc2768 - [net-next,06/11] net: mtk_eth_soc: add out of band forcing of speed and duplex in pcs_link_up https://git.kernel.org/netdev/net-next/c/12198c3a410f - [net-next,07/11] net: mtk_eth_soc: move PHY power up https://git.kernel.org/netdev/net-next/c/6f38fffe2179 - [net-next,08/11] net: mtk_eth_soc: move interface speed selection https://git.kernel.org/netdev/net-next/c/f752c0df13df - [net-next,09/11] net: mtk_eth_soc: add advertisement programming https://git.kernel.org/netdev/net-next/c/c125c66ea71b - [net-next,10/11] net: mtk_eth_soc: move and correct link timer programming https://git.kernel.org/netdev/net-next/c/3027d89f8770 - [net-next,11/11] net: mtk_eth_soc: add support for in-band 802.3z negotiation https://git.kernel.org/netdev/net-next/c/81b0f12a2a8a You are awesome, thank you!