[PATCH v8 00/10] net: stmmac: dwmac-sun8i: Handle integrated PHY

Florian Fainelli f.fainelli at gmail.com
Mon Oct 23 12:04:48 PDT 2017


On 10/23/2017 11:56 AM, Corentin Labbe wrote:
> Hello
> 
> The current way to find if the PHY is internal is to compare DT phy-mode
> and emac_variant/internal_phy.
> But it will negate a possible future SoC where an external PHY use the
> same phy mode than the integrated one.
> 
> This patchs series adds a new way to handle this problem via a mdio-mux.
> 
> The first try was to create a new MDIO mux "mdio-mux-syscon".
> mdio-mux-syscon working the same way than mdio-mux-mmioreg with the exception
> that the register is used via syscon/regmap.
> But this solution does not work for two reason:
> - changing the MDIO selection need the reset of MAC which cannot be done by the
>         mdio-mux-syscon driver
> - There were driver loading order problem:
>         - mdio-mux-syscon needing that stmmac register the parent MDIO
>         - stmmac needing that child MDIO was registered just after registering parent MDIO
> 
> So we cannot use any external MDIO-mux.
> 
> The final solution was to represent the mdio-mux in MAC node and let the MAC handle all things.
> 
> Since DT bits was reverted in 4.13, this patch series include the revert of the revert.
> 
> I have let patch splited for easy review. (for seeing what's new)
> But the final serie could have some patch squashed if someone want.
> Like squashing patch and 1 and 2 (documentation)

I looked quickly through this, and the way you solved the mdio-mux is
looking great to me, thanks for your patience.

Acked-by: Florian Fainelli <f.fainelli at gmail.com>

> 
> Regards
> 
> Changes since v7:
> - moved mdio-mux ouf of mdio as asked by Andrew Lunn
> - reordered patchs order
> 
> Changes since v6:
> - renamed external mdio to "external_mdio"
> - added compatible to mdio-mux and internal-mdio
> - removed usage of phy-is-integrated
> - renamed do_not_scan to compatible_muxes (patch 10)
> - patch 8 9 of v6 are squashed
> 
> Changes since v5:
> - reordered patch 1 and 2
> - mdio-mux node is now a mdio's child
> - added patch 11 for removing unnecessary scan of mdio-mux
> 
> Changes since v4:
> - Update documentation for new bindings
> - Added 4 patchs for bring back reverted stuff of 4.13
> - dwmac-sun8i now handle mdio-mux
> - MDIO use now compatible = "snps,dwmac-mdio";
> 
> Changes since v3:
> - Added a patch for handling fixed-link
> - Updated documentation
> 
> Changes since v2:
> - Add a MDIO mux for creating distinction between integrated and external MDIO.
> - phy-is-integrated is not set in dtsi.
> 
> Changes since v1:
> - Dropped phy-is-integrated documentation patch since another same patch was already merged
> - Moved phy-is-integrated from SoC dtsi to final board DT.
> 
> 
> Corentin Labbe (10):
>   dt-bindings: net: Restore sun8i dwmac binding
>   dt-bindings: net: dwmac-sun8i: update documentation about integrated
>     PHY
>   arm: dts: sunxi: h3/h5: Restore EMAC changes
>   arm: dts: sunxi: h3/h5: represent the mdio switch used by
>     sun8i-h3-emac
>   arm: dts: sunxi: Restore EMAC changes (boards)
>   arm64: dts: allwinner: Restore EMAC changes
>   arm64: dts: allwinner: add snps,dwmac-mdio compatible to emac/mdio
>   net: stmmac: snps,dwmac-mdio MDIOs are automatically registered
>   net: stmmac: dwmac-sun8i: Handle integrated/external MDIOs
>   net: stmmac: sun8i: Restore the compatibles
> 
>  .../devicetree/bindings/net/dwmac-sun8i.txt        | 199 ++++++++++++
>  arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts  |   9 +
>  arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts    |  19 ++
>  arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts      |  19 ++
>  arch/arm/boot/dts/sun8i-h3-nanopi-neo.dts          |   7 +
>  arch/arm/boot/dts/sun8i-h3-orangepi-2.dts          |   8 +
>  arch/arm/boot/dts/sun8i-h3-orangepi-one.dts        |   8 +
>  arch/arm/boot/dts/sun8i-h3-orangepi-pc-plus.dts    |   5 +
>  arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts         |   8 +
>  arch/arm/boot/dts/sun8i-h3-orangepi-plus.dts       |  22 ++
>  arch/arm/boot/dts/sun8i-h3-orangepi-plus2e.dts     |  16 +
>  arch/arm/boot/dts/sunxi-h3-h5.dtsi                 |  47 +++
>  .../boot/dts/allwinner/sun50i-a64-bananapi-m64.dts |  16 +
>  .../boot/dts/allwinner/sun50i-a64-pine64-plus.dts  |  15 +
>  .../arm64/boot/dts/allwinner/sun50i-a64-pine64.dts |  17 +
>  .../dts/allwinner/sun50i-a64-sopine-baseboard.dts  |  16 +
>  arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi      |  21 ++
>  .../boot/dts/allwinner/sun50i-h5-nanopi-neo2.dts   |  17 +
>  .../boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts  |  17 +
>  .../dts/allwinner/sun50i-h5-orangepi-prime.dts     |  17 +
>  drivers/net/ethernet/stmicro/stmmac/Kconfig        |   1 +
>  drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c  | 361 +++++++++++++--------
>  .../net/ethernet/stmicro/stmmac/stmmac_platform.c  |   4 -
>  23 files changed, 735 insertions(+), 134 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/net/dwmac-sun8i.txt
> 


-- 
Florian



More information about the linux-arm-kernel mailing list