Message ID | 20220117070706.17853-1-biao.huang@mediatek.com |
---|---|
Headers | show |
Series | MediaTek Ethernet Patches on MT8195 | expand |
Il 17/01/22 08:07, Biao Huang ha scritto: > The rmii_internal clock is needed only when PHY > interface is RMII, and reference clock is from MAC. > > Re-arrange the clock setting as following: > 1. the optional "rmii_internal" is controlled by devm_clk_get(), > 2. other clocks still be configured by devm_clk_bulk_get(). > > Signed-off-by: Biao Huang <biao.huang@mediatek.com> > --- > .../ethernet/stmicro/stmmac/dwmac-mediatek.c | 72 +++++++++++++------ > 1 file changed, 49 insertions(+), 23 deletions(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c > index 8747aa4403e8..2678d2deb26a 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c > @@ -49,14 +49,15 @@ struct mac_delay_struct { > struct mediatek_dwmac_plat_data { > const struct mediatek_dwmac_variant *variant; > struct mac_delay_struct mac_delay; > + struct clk *rmii_internal_clk; > struct clk_bulk_data *clks; > - struct device_node *np; > struct regmap *peri_regmap; > + struct device_node *np; > struct device *dev; > phy_interface_t phy_mode; > - int num_clks_to_config; > bool rmii_clk_from_mac; > bool rmii_rxc; > + int num_clks; I don't see any need to get a num_clks here, at this point: since all functions reading this are getting passed a pointer to this entire structure, you can simply always access plat->variant->num_clks. Please, drop the addition of num_clks in this struct. Regards, Angelo
Dear Angelo, Thanks for your comments. On Mon, 2022-01-17 at 11:38 +0100, AngeloGioacchino Del Regno wrote: > Il 17/01/22 08:07, Biao Huang ha scritto: > > The rmii_internal clock is needed only when PHY > > interface is RMII, and reference clock is from MAC. > > > > Re-arrange the clock setting as following: > > 1. the optional "rmii_internal" is controlled by devm_clk_get(), > > 2. other clocks still be configured by devm_clk_bulk_get(). > > > > Signed-off-by: Biao Huang <biao.huang@mediatek.com> > > --- > > .../ethernet/stmicro/stmmac/dwmac-mediatek.c | 72 +++++++++++++- > > ----- > > 1 file changed, 49 insertions(+), 23 deletions(-) > > > > diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c > > b/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c > > index 8747aa4403e8..2678d2deb26a 100644 > > --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c > > +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c > > @@ -49,14 +49,15 @@ struct mac_delay_struct { > > struct mediatek_dwmac_plat_data { > > const struct mediatek_dwmac_variant *variant; > > struct mac_delay_struct mac_delay; > > + struct clk *rmii_internal_clk; > > struct clk_bulk_data *clks; > > - struct device_node *np; > > struct regmap *peri_regmap; > > + struct device_node *np; > > struct device *dev; > > phy_interface_t phy_mode; > > - int num_clks_to_config; > > bool rmii_clk_from_mac; > > bool rmii_rxc; > > + int num_clks; > > I don't see any need to get a num_clks here, at this point: since all > functions > reading this are getting passed a pointer to this entire structure, > you can > simply always access plat->variant->num_clks. > > Please, drop the addition of num_clks in this struct. > > Regards, > Angelo OK, will remove it in next send.
Dear Matthias, Any comments about this dts patch? Thanks in advance. Regards! Biao On Mon, 2022-01-17 at 15:07 +0800, Biao Huang wrote: > Since there are some changes in ethernet driver: > update ethernet device node in dts to accommodate to it. > > 1. stmmac_probe_config_dt() in stmmac_platform.c will initialize > specified > parameters according to compatible string "snps,dwmac-4.20a", > then, > dwmac-mediatek.c can skip the initialization if add compatible > string > "snps,dwmac-4.20a" in eth device node. > 2. commit 882007ed7832 ("net-next: dt-binding: dwmac-mediatek: add > more > description for RMII") added rmii internal support, we should add > corresponding clocks/clocks-names in eth device node. > 3. add "snps,reset-delays-us = <0 10000 10000>;" to ensure reset > delay > can meet PHY requirement. > > Signed-off-by: Biao Huang <biao.huang@mediatek.com> > --- > arch/arm64/boot/dts/mediatek/mt2712-evb.dts | 1 + > arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 14 +++++++++----- > 2 files changed, 10 insertions(+), 5 deletions(-) > > diff --git a/arch/arm64/boot/dts/mediatek/mt2712-evb.dts > b/arch/arm64/boot/dts/mediatek/mt2712-evb.dts > index 7d369fdd3117..11aa135aa0f3 100644 > --- a/arch/arm64/boot/dts/mediatek/mt2712-evb.dts > +++ b/arch/arm64/boot/dts/mediatek/mt2712-evb.dts > @@ -110,6 +110,7 @@ ð { > phy-handle = <ðernet_phy0>; > mediatek,tx-delay-ps = <1530>; > snps,reset-gpio = <&pio 87 GPIO_ACTIVE_LOW>; > + snps,reset-delays-us = <0 10000 10000>; > pinctrl-names = "default", "sleep"; > pinctrl-0 = <ð_default>; > pinctrl-1 = <ð_sleep>; > diff --git a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi > b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi > index a9cca9c146fd..9e850e04fffb 100644 > --- a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi > +++ b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi > @@ -726,7 +726,7 @@ queue2 { > }; > > eth: ethernet@1101c000 { > - compatible = "mediatek,mt2712-gmac"; > + compatible = "mediatek,mt2712-gmac", "snps,dwmac- > 4.20a"; > reg = <0 0x1101c000 0 0x1300>; > interrupts = <GIC_SPI 237 IRQ_TYPE_LEVEL_LOW>; > interrupt-names = "macirq"; > @@ -734,15 +734,19 @@ eth: ethernet@1101c000 { > clock-names = "axi", > "apb", > "mac_main", > - "ptp_ref"; > + "ptp_ref", > + "rmii_internal"; > clocks = <&pericfg CLK_PERI_GMAC>, > <&pericfg CLK_PERI_GMAC_PCLK>, > <&topckgen CLK_TOP_ETHER_125M_SEL>, > - <&topckgen CLK_TOP_ETHER_50M_SEL>; > + <&topckgen CLK_TOP_ETHER_50M_SEL>, > + <&topckgen CLK_TOP_ETHER_50M_RMII_SEL>; > assigned-clocks = <&topckgen CLK_TOP_ETHER_125M_SEL>, > - <&topckgen CLK_TOP_ETHER_50M_SEL>; > + <&topckgen CLK_TOP_ETHER_50M_SEL>, > + <&topckgen > CLK_TOP_ETHER_50M_RMII_SEL>; > assigned-clock-parents = <&topckgen > CLK_TOP_ETHERPLL_125M>, > - <&topckgen CLK_TOP_APLL1_D3>; > + <&topckgen CLK_TOP_APLL1_D3>, > + <&topckgen > CLK_TOP_ETHERPLL_50M>; > power-domains = <&scpsys MT2712_POWER_DOMAIN_AUDIO>; > mediatek,pericfg = <&pericfg>; > snps,axi-config = <&stmmac_axi_setup>;