* [PATCH (net.git) 0/2] stmmac: MDIO fixes
@ 2016-03-09 9:00 Giuseppe Cavallaro
2016-03-09 9:00 ` [PATCH (net.git) 1/2] Revert "stmmac: Fix 'eth0: No PHY found' regression" Giuseppe Cavallaro
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Giuseppe Cavallaro @ 2016-03-09 9:00 UTC (permalink / raw)
To: netdev
Cc: gabriel.fernandez, afaerber, fschaefer.oss, dinh.linux, davem,
Giuseppe Cavallaro
These two patches are to fix the recent regressions raised
when test the stmmac on some platforms.
Please I kindly ask you to give me the feedback if it actually
covers all the cases and if the stmmac runs fine on the boxes.
I have tested on my side the H410 B2120 with an embedded switch
(so using the fixed-link).
Giuseppe Cavallaro (2):
Revert "stmmac: Fix 'eth0: No PHY found' regression"
stmmac: fix MDIO settings
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 ++-------
drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 11 +++++++++-
.../net/ethernet/stmicro/stmmac/stmmac_platform.c | 22 +++++--------------
include/linux/stmmac.h | 3 +-
4 files changed, 20 insertions(+), 27 deletions(-)
--
1.7.4.4
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH (net.git) 1/2] Revert "stmmac: Fix 'eth0: No PHY found' regression" 2016-03-09 9:00 [PATCH (net.git) 0/2] stmmac: MDIO fixes Giuseppe Cavallaro @ 2016-03-09 9:00 ` Giuseppe Cavallaro 2016-03-09 9:00 ` [PATCH (net.git) 2/2] stmmac: fix MDIO settings Giuseppe Cavallaro 2016-03-09 18:20 ` [PATCH (net.git) 0/2] stmmac: MDIO fixes Frank Schäfer 2 siblings, 0 replies; 7+ messages in thread From: Giuseppe Cavallaro @ 2016-03-09 9:00 UTC (permalink / raw) To: netdev Cc: gabriel.fernandez, afaerber, fschaefer.oss, dinh.linux, davem, Giuseppe Cavallaro This reverts commit 88f8b1bb41c6208f81b6a480244533ded7b59493. due to problems on GeekBox and Banana Pi M1 board when connected to a real transceiver instead of a switch via fixed-link. Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Cc: Gabriel Fernandez <gabriel.fernandez@linaro.org> Cc: Andreas Färber <afaerber@suse.de> Cc: Frank Schäfer <fschaefer.oss@googlemail.com> Cc: Dinh Nguyen <dinh.linux@gmail.com> Cc: David S. Miller <davem@davemloft.net> --- drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 11 ++++++++++- .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 9 +-------- include/linux/stmmac.h | 1 - 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c index efb54f3..0faf163 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c @@ -199,12 +199,21 @@ int stmmac_mdio_register(struct net_device *ndev) struct stmmac_priv *priv = netdev_priv(ndev); struct stmmac_mdio_bus_data *mdio_bus_data = priv->plat->mdio_bus_data; int addr, found; - struct device_node *mdio_node = priv->plat->mdio_node; + struct device_node *mdio_node = NULL; + struct device_node *child_node = NULL; if (!mdio_bus_data) return 0; if (IS_ENABLED(CONFIG_OF)) { + for_each_child_of_node(priv->device->of_node, child_node) { + if (of_device_is_compatible(child_node, + "snps,dwmac-mdio")) { + mdio_node = child_node; + break; + } + } + if (mdio_node) { netdev_dbg(ndev, "FOUND MDIO subnode\n"); } else { diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index 4514ba7..6a52fa1 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -110,7 +110,6 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) struct device_node *np = pdev->dev.of_node; struct plat_stmmacenet_data *plat; struct stmmac_dma_cfg *dma_cfg; - struct device_node *child_node = NULL; plat = devm_kzalloc(&pdev->dev, sizeof(*plat), GFP_KERNEL); if (!plat) @@ -141,19 +140,13 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) plat->phy_node = of_node_get(np); } - for_each_child_of_node(np, child_node) - if (of_device_is_compatible(child_node, "snps,dwmac-mdio")) { - plat->mdio_node = child_node; - break; - } - /* "snps,phy-addr" is not a standard property. Mark it as deprecated * and warn of its use. Remove this when phy node support is added. */ if (of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr) == 0) dev_warn(&pdev->dev, "snps,phy-addr property is deprecated\n"); - if ((plat->phy_node && !of_phy_is_fixed_link(np)) || !plat->mdio_node) + if ((plat->phy_node && !of_phy_is_fixed_link(np)) || plat->phy_bus_name) plat->mdio_bus_data = NULL; else plat->mdio_bus_data = diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index 881a79d..eead8ab 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -100,7 +100,6 @@ struct plat_stmmacenet_data { int interface; struct stmmac_mdio_bus_data *mdio_bus_data; struct device_node *phy_node; - struct device_node *mdio_node; struct stmmac_dma_cfg *dma_cfg; int clk_csr; int has_gmac; -- 1.7.4.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH (net.git) 2/2] stmmac: fix MDIO settings 2016-03-09 9:00 [PATCH (net.git) 0/2] stmmac: MDIO fixes Giuseppe Cavallaro 2016-03-09 9:00 ` [PATCH (net.git) 1/2] Revert "stmmac: Fix 'eth0: No PHY found' regression" Giuseppe Cavallaro @ 2016-03-09 9:00 ` Giuseppe Cavallaro 2016-03-09 10:27 ` Gabriel Fernandez 2016-03-09 14:39 ` Andrew Lunn 2016-03-09 18:20 ` [PATCH (net.git) 0/2] stmmac: MDIO fixes Frank Schäfer 2 siblings, 2 replies; 7+ messages in thread From: Giuseppe Cavallaro @ 2016-03-09 9:00 UTC (permalink / raw) To: netdev Cc: gabriel.fernandez, afaerber, fschaefer.oss, dinh.linux, davem, Giuseppe Cavallaro Initially the phy_bus_name was added to manipulate the driver name but It was recently just used to manage the fixed-link and then to take some decision at run-time inside the main (for example to skip EEE). So the patch now introduces a new platforms boolean to manage that and removes the phy_bus_name variable not necessary anymore. The driver can manage the mdio registration by using phy-handle, dwmac-mdio and own parameter e.g. snps,phy-addr. This patch takes care about all these possible configurations and fixes the mdio registration in case of there is a real transceiver or a switch (that needs to be managed by using fixed-link). Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> Cc: Gabriel Fernandez <gabriel.fernandez@linaro.org> Cc: Andreas Färber <afaerber@suse.de> Cc: Frank Schäfer <fschaefer.oss@googlemail.com> Cc: Dinh Nguyen <dinh.linux@gmail.com> Cc: David S. Miller <davem@davemloft.net> --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 +++-------- .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 15 ++++++--------- include/linux/stmmac.h | 2 +- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index c21015b..87e4643 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -271,7 +271,6 @@ static void stmmac_eee_ctrl_timer(unsigned long arg) */ bool stmmac_eee_init(struct stmmac_priv *priv) { - char *phy_bus_name = priv->plat->phy_bus_name; unsigned long flags; bool ret = false; @@ -283,7 +282,7 @@ bool stmmac_eee_init(struct stmmac_priv *priv) goto out; /* Never init EEE in case of a switch is attached */ - if (phy_bus_name && (!strcmp(phy_bus_name, "fixed"))) + if (priv->plat->is_fixed_link) goto out; /* MAC core supports the EEE feature. */ @@ -820,12 +819,8 @@ static int stmmac_init_phy(struct net_device *dev) phydev = of_phy_connect(dev, priv->plat->phy_node, &stmmac_adjust_link, 0, interface); } else { - if (priv->plat->phy_bus_name) - snprintf(bus_id, MII_BUS_ID_SIZE, "%s-%x", - priv->plat->phy_bus_name, priv->plat->bus_id); - else - snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x", - priv->plat->bus_id); + snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x", + priv->plat->bus_id); snprintf(phy_id_fmt, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, bus_id, priv->plat->phy_addr); diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c index 6a52fa1..09684dd 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c @@ -138,7 +138,12 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) return ERR_PTR(-ENODEV); plat->phy_node = of_node_get(np); - } + plat->is_fixed_link = true; + } else + plat->mdio_bus_data = + devm_kzalloc(&pdev->dev, + sizeof(struct stmmac_mdio_bus_data), + GFP_KERNEL); /* "snps,phy-addr" is not a standard property. Mark it as deprecated * and warn of its use. Remove this when phy node support is added. @@ -146,14 +151,6 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) if (of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr) == 0) dev_warn(&pdev->dev, "snps,phy-addr property is deprecated\n"); - if ((plat->phy_node && !of_phy_is_fixed_link(np)) || plat->phy_bus_name) - plat->mdio_bus_data = NULL; - else - plat->mdio_bus_data = - devm_kzalloc(&pdev->dev, - sizeof(struct stmmac_mdio_bus_data), - GFP_KERNEL); - of_property_read_u32(np, "tx-fifo-depth", &plat->tx_fifo_size); of_property_read_u32(np, "rx-fifo-depth", &plat->rx_fifo_size); diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h index eead8ab..1550558 100644 --- a/include/linux/stmmac.h +++ b/include/linux/stmmac.h @@ -94,10 +94,10 @@ struct stmmac_dma_cfg { }; struct plat_stmmacenet_data { - char *phy_bus_name; int bus_id; int phy_addr; int interface; + bool is_fixed_link; struct stmmac_mdio_bus_data *mdio_bus_data; struct device_node *phy_node; struct stmmac_dma_cfg *dma_cfg; -- 1.7.4.4 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH (net.git) 2/2] stmmac: fix MDIO settings 2016-03-09 9:00 ` [PATCH (net.git) 2/2] stmmac: fix MDIO settings Giuseppe Cavallaro @ 2016-03-09 10:27 ` Gabriel Fernandez 2016-03-09 10:39 ` Giuseppe CAVALLARO 2016-03-09 14:39 ` Andrew Lunn 1 sibling, 1 reply; 7+ messages in thread From: Gabriel Fernandez @ 2016-03-09 10:27 UTC (permalink / raw) To: Giuseppe Cavallaro Cc: netdev, Andreas Färber, fschaefer.oss, Dinh Nguyen, David S. Miller Hi Peppe, You missed something like that in stmmac_main.c ? @@ -864,13 +864,12 @@ static int stmmac_init_phy(struct net_device *dev) phy_disconnect(phydev); return -ENODEV; } /* If attached to a switch, there is no reason to poll phy handler */ - if (priv->plat->phy_bus_name) - if (!strcmp(priv->plat->phy_bus_name, "fixed")) - phydev->irq = PHY_IGNORE_INTERRUPT; + if (priv->plat->is_fixed_link) + phydev->irq = PHY_IGNORE_INTERRUPT; Best regards Gabriel On 9 March 2016 at 10:00, Giuseppe Cavallaro <peppe.cavallaro@st.com> wrote: > Initially the phy_bus_name was added to manipulate the > driver name but It was recently just used to manage the > fixed-link and then to take some decision at run-time > inside the main (for example to skip EEE). > > So the patch now introduces a new platforms boolean to > manage that and removes the phy_bus_name variable not > necessary anymore. > > The driver can manage the mdio registration by using phy-handle, > dwmac-mdio and own parameter e.g. snps,phy-addr. > This patch takes care about all these possible configurations > and fixes the mdio registration in case of there is a real > transceiver or a switch (that needs to be managed by using > fixed-link). > > Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> > Cc: Gabriel Fernandez <gabriel.fernandez@linaro.org> > Cc: Andreas Färber <afaerber@suse.de> > Cc: Frank Schäfer <fschaefer.oss@googlemail.com> > Cc: Dinh Nguyen <dinh.linux@gmail.com> > Cc: David S. Miller <davem@davemloft.net> > --- > drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 +++-------- > .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 15 ++++++--------- > include/linux/stmmac.h | 2 +- > 3 files changed, 10 insertions(+), 18 deletions(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > index c21015b..87e4643 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > @@ -271,7 +271,6 @@ static void stmmac_eee_ctrl_timer(unsigned long arg) > */ > bool stmmac_eee_init(struct stmmac_priv *priv) > { > - char *phy_bus_name = priv->plat->phy_bus_name; > unsigned long flags; > bool ret = false; > > @@ -283,7 +282,7 @@ bool stmmac_eee_init(struct stmmac_priv *priv) > goto out; > > /* Never init EEE in case of a switch is attached */ > - if (phy_bus_name && (!strcmp(phy_bus_name, "fixed"))) > + if (priv->plat->is_fixed_link) > goto out; > > /* MAC core supports the EEE feature. */ > @@ -820,12 +819,8 @@ static int stmmac_init_phy(struct net_device *dev) > phydev = of_phy_connect(dev, priv->plat->phy_node, > &stmmac_adjust_link, 0, interface); > } else { > - if (priv->plat->phy_bus_name) > - snprintf(bus_id, MII_BUS_ID_SIZE, "%s-%x", > - priv->plat->phy_bus_name, priv->plat->bus_id); > - else > - snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x", > - priv->plat->bus_id); > + snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x", > + priv->plat->bus_id); > > snprintf(phy_id_fmt, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, bus_id, > priv->plat->phy_addr); > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > index 6a52fa1..09684dd 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c > @@ -138,7 +138,12 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) > return ERR_PTR(-ENODEV); > > plat->phy_node = of_node_get(np); > - } > + plat->is_fixed_link = true; > + } else > + plat->mdio_bus_data = > + devm_kzalloc(&pdev->dev, > + sizeof(struct stmmac_mdio_bus_data), > + GFP_KERNEL); > > /* "snps,phy-addr" is not a standard property. Mark it as deprecated > * and warn of its use. Remove this when phy node support is added. > @@ -146,14 +151,6 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) > if (of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr) == 0) > dev_warn(&pdev->dev, "snps,phy-addr property is deprecated\n"); > > - if ((plat->phy_node && !of_phy_is_fixed_link(np)) || plat->phy_bus_name) > - plat->mdio_bus_data = NULL; > - else > - plat->mdio_bus_data = > - devm_kzalloc(&pdev->dev, > - sizeof(struct stmmac_mdio_bus_data), > - GFP_KERNEL); > - > of_property_read_u32(np, "tx-fifo-depth", &plat->tx_fifo_size); > > of_property_read_u32(np, "rx-fifo-depth", &plat->rx_fifo_size); > diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h > index eead8ab..1550558 100644 > --- a/include/linux/stmmac.h > +++ b/include/linux/stmmac.h > @@ -94,10 +94,10 @@ struct stmmac_dma_cfg { > }; > > struct plat_stmmacenet_data { > - char *phy_bus_name; > int bus_id; > int phy_addr; > int interface; > + bool is_fixed_link; > struct stmmac_mdio_bus_data *mdio_bus_data; > struct device_node *phy_node; > struct stmmac_dma_cfg *dma_cfg; > -- > 1.7.4.4 > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH (net.git) 2/2] stmmac: fix MDIO settings 2016-03-09 10:27 ` Gabriel Fernandez @ 2016-03-09 10:39 ` Giuseppe CAVALLARO 0 siblings, 0 replies; 7+ messages in thread From: Giuseppe CAVALLARO @ 2016-03-09 10:39 UTC (permalink / raw) To: Gabriel Fernandez Cc: netdev, Andreas Färber, fschaefer.oss, Dinh Nguyen, David S. Miller Hi Gabriel On 3/9/2016 11:27 AM, Gabriel Fernandez wrote: > Hi Peppe, > > You missed something like that in stmmac_main.c ? > > @@ -864,13 +864,12 @@ static int stmmac_init_phy(struct net_device *dev) > phy_disconnect(phydev); > return -ENODEV; > } > > /* If attached to a switch, there is no reason to poll phy handler */ > - if (priv->plat->phy_bus_name) > - if (!strcmp(priv->plat->phy_bus_name, "fixed")) > - phydev->irq = PHY_IGNORE_INTERRUPT; > + if (priv->plat->is_fixed_link) > + phydev->irq = PHY_IGNORE_INTERRUPT; this is for net.git where this if condition code is not present. I will propose a patch for net-next later. I'd like to try to fix the new regression on xmit. thx to have spot this. Regards peppe > > > Best regards > > Gabriel > > > On 9 March 2016 at 10:00, Giuseppe Cavallaro <peppe.cavallaro@st.com> wrote: >> Initially the phy_bus_name was added to manipulate the >> driver name but It was recently just used to manage the >> fixed-link and then to take some decision at run-time >> inside the main (for example to skip EEE). >> >> So the patch now introduces a new platforms boolean to >> manage that and removes the phy_bus_name variable not >> necessary anymore. >> >> The driver can manage the mdio registration by using phy-handle, >> dwmac-mdio and own parameter e.g. snps,phy-addr. >> This patch takes care about all these possible configurations >> and fixes the mdio registration in case of there is a real >> transceiver or a switch (that needs to be managed by using >> fixed-link). >> >> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> >> Cc: Gabriel Fernandez <gabriel.fernandez@linaro.org> >> Cc: Andreas Färber <afaerber@suse.de> >> Cc: Frank Schäfer <fschaefer.oss@googlemail.com> >> Cc: Dinh Nguyen <dinh.linux@gmail.com> >> Cc: David S. Miller <davem@davemloft.net> >> --- >> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 +++-------- >> .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 15 ++++++--------- >> include/linux/stmmac.h | 2 +- >> 3 files changed, 10 insertions(+), 18 deletions(-) >> >> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >> index c21015b..87e4643 100644 >> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c >> @@ -271,7 +271,6 @@ static void stmmac_eee_ctrl_timer(unsigned long arg) >> */ >> bool stmmac_eee_init(struct stmmac_priv *priv) >> { >> - char *phy_bus_name = priv->plat->phy_bus_name; >> unsigned long flags; >> bool ret = false; >> >> @@ -283,7 +282,7 @@ bool stmmac_eee_init(struct stmmac_priv *priv) >> goto out; >> >> /* Never init EEE in case of a switch is attached */ >> - if (phy_bus_name && (!strcmp(phy_bus_name, "fixed"))) >> + if (priv->plat->is_fixed_link) >> goto out; >> >> /* MAC core supports the EEE feature. */ >> @@ -820,12 +819,8 @@ static int stmmac_init_phy(struct net_device *dev) >> phydev = of_phy_connect(dev, priv->plat->phy_node, >> &stmmac_adjust_link, 0, interface); >> } else { >> - if (priv->plat->phy_bus_name) >> - snprintf(bus_id, MII_BUS_ID_SIZE, "%s-%x", >> - priv->plat->phy_bus_name, priv->plat->bus_id); >> - else >> - snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x", >> - priv->plat->bus_id); >> + snprintf(bus_id, MII_BUS_ID_SIZE, "stmmac-%x", >> + priv->plat->bus_id); >> >> snprintf(phy_id_fmt, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, bus_id, >> priv->plat->phy_addr); >> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c >> index 6a52fa1..09684dd 100644 >> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c >> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c >> @@ -138,7 +138,12 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) >> return ERR_PTR(-ENODEV); >> >> plat->phy_node = of_node_get(np); >> - } >> + plat->is_fixed_link = true; >> + } else >> + plat->mdio_bus_data = >> + devm_kzalloc(&pdev->dev, >> + sizeof(struct stmmac_mdio_bus_data), >> + GFP_KERNEL); >> >> /* "snps,phy-addr" is not a standard property. Mark it as deprecated >> * and warn of its use. Remove this when phy node support is added. >> @@ -146,14 +151,6 @@ stmmac_probe_config_dt(struct platform_device *pdev, const char **mac) >> if (of_property_read_u32(np, "snps,phy-addr", &plat->phy_addr) == 0) >> dev_warn(&pdev->dev, "snps,phy-addr property is deprecated\n"); >> >> - if ((plat->phy_node && !of_phy_is_fixed_link(np)) || plat->phy_bus_name) >> - plat->mdio_bus_data = NULL; >> - else >> - plat->mdio_bus_data = >> - devm_kzalloc(&pdev->dev, >> - sizeof(struct stmmac_mdio_bus_data), >> - GFP_KERNEL); >> - >> of_property_read_u32(np, "tx-fifo-depth", &plat->tx_fifo_size); >> >> of_property_read_u32(np, "rx-fifo-depth", &plat->rx_fifo_size); >> diff --git a/include/linux/stmmac.h b/include/linux/stmmac.h >> index eead8ab..1550558 100644 >> --- a/include/linux/stmmac.h >> +++ b/include/linux/stmmac.h >> @@ -94,10 +94,10 @@ struct stmmac_dma_cfg { >> }; >> >> struct plat_stmmacenet_data { >> - char *phy_bus_name; >> int bus_id; >> int phy_addr; >> int interface; >> + bool is_fixed_link; >> struct stmmac_mdio_bus_data *mdio_bus_data; >> struct device_node *phy_node; >> struct stmmac_dma_cfg *dma_cfg; >> -- >> 1.7.4.4 >> > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH (net.git) 2/2] stmmac: fix MDIO settings 2016-03-09 9:00 ` [PATCH (net.git) 2/2] stmmac: fix MDIO settings Giuseppe Cavallaro 2016-03-09 10:27 ` Gabriel Fernandez @ 2016-03-09 14:39 ` Andrew Lunn 1 sibling, 0 replies; 7+ messages in thread From: Andrew Lunn @ 2016-03-09 14:39 UTC (permalink / raw) To: Giuseppe Cavallaro Cc: netdev, gabriel.fernandez, afaerber, fschaefer.oss, dinh.linux, davem On Wed, Mar 09, 2016 at 10:00:07AM +0100, Giuseppe Cavallaro wrote: > Initially the phy_bus_name was added to manipulate the > driver name but It was recently just used to manage the > fixed-link and then to take some decision at run-time > inside the main (for example to skip EEE). > > So the patch now introduces a new platforms boolean to > manage that and removes the phy_bus_name variable not > necessary anymore. > > The driver can manage the mdio registration by using phy-handle, > dwmac-mdio and own parameter e.g. snps,phy-addr. > This patch takes care about all these possible configurations > and fixes the mdio registration in case of there is a real > transceiver or a switch (that needs to be managed by using > fixed-link). > > Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com> > Cc: Gabriel Fernandez <gabriel.fernandez@linaro.org> > Cc: Andreas Färber <afaerber@suse.de> > Cc: Frank Schäfer <fschaefer.oss@googlemail.com> > Cc: Dinh Nguyen <dinh.linux@gmail.com> > Cc: David S. Miller <davem@davemloft.net> > --- > drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 +++-------- > .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 15 ++++++--------- > include/linux/stmmac.h | 2 +- > 3 files changed, 10 insertions(+), 18 deletions(-) > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > index c21015b..87e4643 100644 > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c > @@ -271,7 +271,6 @@ static void stmmac_eee_ctrl_timer(unsigned long arg) > */ > bool stmmac_eee_init(struct stmmac_priv *priv) > { > - char *phy_bus_name = priv->plat->phy_bus_name; > unsigned long flags; > bool ret = false; > > @@ -283,7 +282,7 @@ bool stmmac_eee_init(struct stmmac_priv *priv) > goto out; > > /* Never init EEE in case of a switch is attached */ > - if (phy_bus_name && (!strcmp(phy_bus_name, "fixed"))) > + if (priv->plat->is_fixed_link) > goto out; Hi Giuseppe The phydev itself has a bool is_pseudo_fixed_link. You might be able to use this instead of adding your own. Andrew ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH (net.git) 0/2] stmmac: MDIO fixes 2016-03-09 9:00 [PATCH (net.git) 0/2] stmmac: MDIO fixes Giuseppe Cavallaro 2016-03-09 9:00 ` [PATCH (net.git) 1/2] Revert "stmmac: Fix 'eth0: No PHY found' regression" Giuseppe Cavallaro 2016-03-09 9:00 ` [PATCH (net.git) 2/2] stmmac: fix MDIO settings Giuseppe Cavallaro @ 2016-03-09 18:20 ` Frank Schäfer 2 siblings, 0 replies; 7+ messages in thread From: Frank Schäfer @ 2016-03-09 18:20 UTC (permalink / raw) To: Giuseppe Cavallaro, netdev; +Cc: gabriel.fernandez, afaerber, dinh.linux, davem Am 09.03.2016 um 10:00 schrieb Giuseppe Cavallaro: > These two patches are to fix the recent regressions raised > when test the stmmac on some platforms. > Please I kindly ask you to give me the feedback if it actually > covers all the cases and if the stmmac runs fine on the boxes. > I have tested on my side the H410 B2120 with an embedded switch > (so using the fixed-link). > > Giuseppe Cavallaro (2): > Revert "stmmac: Fix 'eth0: No PHY found' regression" > stmmac: fix MDIO settings > > drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 ++------- > drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 11 +++++++++- > .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 22 +++++-------------- > include/linux/stmmac.h | 3 +- > 4 files changed, 20 insertions(+), 27 deletions(-) Works fine on the Banana Pi M1 board. (Fixes "libphy: PHY stmmac-0:ffffffff not found") Regards, Frank ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-03-09 18:18 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-03-09 9:00 [PATCH (net.git) 0/2] stmmac: MDIO fixes Giuseppe Cavallaro 2016-03-09 9:00 ` [PATCH (net.git) 1/2] Revert "stmmac: Fix 'eth0: No PHY found' regression" Giuseppe Cavallaro 2016-03-09 9:00 ` [PATCH (net.git) 2/2] stmmac: fix MDIO settings Giuseppe Cavallaro 2016-03-09 10:27 ` Gabriel Fernandez 2016-03-09 10:39 ` Giuseppe CAVALLARO 2016-03-09 14:39 ` Andrew Lunn 2016-03-09 18:20 ` [PATCH (net.git) 0/2] stmmac: MDIO fixes Frank Schäfer
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.