* [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr"
[not found] <20231205103559.9605-1-fancer.lancer@gmail.com>
@ 2023-12-05 10:35 ` Serge Semin
2023-12-05 23:03 ` kernel test robot
2023-12-06 0:29 ` kernel test robot
2023-12-05 10:35 ` [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device Serge Semin
` (3 subsequent siblings)
4 siblings, 2 replies; 10+ messages in thread
From: Serge Semin @ 2023-12-05 10:35 UTC (permalink / raw)
To: Andrew Lunn, Heiner Kallweit, Russell King, Alexandre Torgue,
Jose Abreu, Jose Abreu, Maxime Chevallier, Tomer Maimon,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Vladimir Oltean,
Florian Fainelli, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Maxime Coquelin
Cc: Serge Semin, openbmc, netdev, devicetree, linux-kernel,
linux-stm32, linux-arm-kernel
The fwnode-based way of creating XPCS descriptor is about to be added. In
order to have a function name distinguishable from the already implemented
xpcs_create_mdiodev() method convert the later name to be
xpcs_create_byaddr() which BTW better describes the method semantic in
anyway.
Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
---
drivers/net/dsa/sja1105/sja1105_mdio.c | 2 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 2 +-
drivers/net/pcs/pcs-xpcs.c | 6 +++---
include/linux/pcs/pcs-xpcs.h | 4 ++--
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/net/dsa/sja1105/sja1105_mdio.c b/drivers/net/dsa/sja1105/sja1105_mdio.c
index 833e55e4b961..9101079e365d 100644
--- a/drivers/net/dsa/sja1105/sja1105_mdio.c
+++ b/drivers/net/dsa/sja1105/sja1105_mdio.c
@@ -409,7 +409,7 @@ static int sja1105_mdiobus_pcs_register(struct sja1105_private *priv)
priv->phy_mode[port] != PHY_INTERFACE_MODE_2500BASEX)
continue;
- xpcs = xpcs_create_mdiodev(bus, port, priv->phy_mode[port]);
+ xpcs = xpcs_create_byaddr(bus, port, priv->phy_mode[port]);
if (IS_ERR(xpcs)) {
rc = PTR_ERR(xpcs);
goto out_pcs_free;
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
index fa9e7e7040b9..aa75e4f1e212 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
@@ -507,7 +507,7 @@ int stmmac_xpcs_setup(struct mii_bus *bus)
/* Try to probe the XPCS by scanning all addresses. */
for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
- xpcs = xpcs_create_mdiodev(bus, addr, mode);
+ xpcs = xpcs_create_byaddr(bus, addr, mode);
if (IS_ERR(xpcs))
continue;
diff --git a/drivers/net/pcs/pcs-xpcs.c b/drivers/net/pcs/pcs-xpcs.c
index 183a37929b60..e376e255f1d3 100644
--- a/drivers/net/pcs/pcs-xpcs.c
+++ b/drivers/net/pcs/pcs-xpcs.c
@@ -1511,8 +1511,8 @@ static struct dw_xpcs *xpcs_create(struct mdio_device *mdiodev,
return ERR_PTR(ret);
}
-struct dw_xpcs *xpcs_create_mdiodev(struct mii_bus *bus, int addr,
- phy_interface_t interface)
+struct dw_xpcs *xpcs_create_byaddr(struct mii_bus *bus, int addr,
+ phy_interface_t interface)
{
struct mdio_device *mdiodev;
struct dw_xpcs *xpcs;
@@ -1535,7 +1535,7 @@ struct dw_xpcs *xpcs_create_mdiodev(struct mii_bus *bus, int addr,
return xpcs;
}
-EXPORT_SYMBOL_GPL(xpcs_create_mdiodev);
+EXPORT_SYMBOL_GPL(xpcs_create_byaddr);
void xpcs_destroy(struct dw_xpcs *xpcs)
{
diff --git a/include/linux/pcs/pcs-xpcs.h b/include/linux/pcs/pcs-xpcs.h
index 53adbffb4c0a..b11bbb5e820a 100644
--- a/include/linux/pcs/pcs-xpcs.h
+++ b/include/linux/pcs/pcs-xpcs.h
@@ -73,8 +73,8 @@ int xpcs_do_config(struct dw_xpcs *xpcs, phy_interface_t interface,
void xpcs_get_interfaces(struct dw_xpcs *xpcs, unsigned long *interfaces);
int xpcs_config_eee(struct dw_xpcs *xpcs, int mult_fact_100ns,
int enable);
-struct dw_xpcs *xpcs_create_mdiodev(struct mii_bus *bus, int addr,
- phy_interface_t interface);
+struct dw_xpcs *xpcs_create_byaddr(struct mii_bus *bus, int addr,
+ phy_interface_t interface);
void xpcs_destroy(struct dw_xpcs *xpcs);
#endif /* __LINUX_PCS_XPCS_H */
--
2.42.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device
[not found] <20231205103559.9605-1-fancer.lancer@gmail.com>
2023-12-05 10:35 ` [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr" Serge Semin
@ 2023-12-05 10:35 ` Serge Semin
2023-12-06 0:19 ` kernel test robot
2023-12-05 10:35 ` [PATCH net-next 14/16] net: stmmac: Pass netdev to XPCS setup function Serge Semin
` (2 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Serge Semin @ 2023-12-05 10:35 UTC (permalink / raw)
To: Andrew Lunn, Heiner Kallweit, Russell King, Alexandre Torgue,
Jose Abreu, Jose Abreu, Maxime Chevallier, Tomer Maimon,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Coquelin
Cc: Serge Semin, openbmc, netdev, devicetree, linux-kernel,
linux-stm32, linux-arm-kernel
The DW XPCS driver has been updated to being bindable with the respective
MDIO device registered during the MDIO bus probe procedure. As an example
of using that feature let's convert the Intel mGBE low-level driver to
registering the MDIO-device board info. Thus the registered DW XPCS device
will be a subject of the fine-tunings performed during the MDIO-device
probe procedures.
Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
---
.../net/ethernet/stmicro/stmmac/dwmac-intel.c | 31 ++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
index 60283543ffc8..7642c11abc59 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
@@ -4,6 +4,7 @@
#include <linux/clk-provider.h>
#include <linux/pci.h>
+#include <linux/phy.h>
#include <linux/dmi.h>
#include "dwmac-intel.h"
#include "dwmac4.h"
@@ -585,6 +586,28 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,
/* Intel mgbe SGMII interface uses pcs-xcps */
if (plat->phy_interface == PHY_INTERFACE_MODE_SGMII ||
plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
+ struct mdio_board_info *xpcs_info;
+
+ xpcs_info = devm_kzalloc(&pdev->dev,
+ sizeof(*xpcs_info) + MII_BUS_ID_SIZE,
+ GFP_KERNEL);
+ if (!xpcs_info) {
+ ret = -ENOMEM;
+ goto err_alloc_info;
+ }
+
+ xpcs_info->bus_id = (void *)xpcs_info + sizeof(*xpcs_info);
+ snprintf((char *)xpcs_info->bus_id, MII_BUS_ID_SIZE,
+ "stmmac-%x", plat->bus_id);
+
+ snprintf(xpcs_info->modalias, MDIO_NAME_SIZE, "dwxpcs");
+
+ xpcs_info->mdio_addr = INTEL_MGBE_XPCS_ADDR;
+
+ ret = mdiobus_register_board_info(xpcs_info, 1);
+ if (ret)
+ goto err_alloc_info;
+
plat->mdio_bus_data->has_xpcs = true;
plat->mdio_bus_data->xpcs_an_inband = true;
}
@@ -600,7 +623,7 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,
fwnode_handle_put(fixed_node);
}
- /* Ensure mdio bus scan skips intel serdes and pcs-xpcs */
+ /* Ensure mdio bus PHY-scan skips intel serdes and pcs-xpcs */
plat->mdio_bus_data->phy_mask = 1 << INTEL_MGBE_ADHOC_ADDR;
plat->mdio_bus_data->phy_mask |= 1 << INTEL_MGBE_XPCS_ADDR;
@@ -618,6 +641,12 @@ static int intel_mgbe_common_data(struct pci_dev *pdev,
plat->msi_tx_base_vec = 1;
return 0;
+
+err_alloc_info:
+ clk_disable_unprepare(clk);
+ clk_unregister_fixed_rate(clk);
+
+ return ret;
}
static int ehl_common_data(struct pci_dev *pdev,
--
2.42.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 14/16] net: stmmac: Pass netdev to XPCS setup function
[not found] <20231205103559.9605-1-fancer.lancer@gmail.com>
2023-12-05 10:35 ` [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr" Serge Semin
2023-12-05 10:35 ` [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device Serge Semin
@ 2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 15/16] net: stmmac: Add dedicated XPCS cleanup method Serge Semin
2023-12-05 10:35 ` [PATCH net-next 16/16] net: stmmac: Add externally detected DW XPCS support Serge Semin
4 siblings, 0 replies; 10+ messages in thread
From: Serge Semin @ 2023-12-05 10:35 UTC (permalink / raw)
To: Andrew Lunn, Heiner Kallweit, Russell King, Alexandre Torgue,
Jose Abreu, Jose Abreu, Maxime Chevallier, Tomer Maimon,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Coquelin
Cc: Serge Semin, openbmc, netdev, devicetree, linux-kernel,
linux-stm32, linux-arm-kernel
It's possible to have the XPCS device accessible over a dedicated
management interface which makes the XPCS device available over the MMIO
space. In that case the management interface will be registered as a
separate MDIO bus and the DW xGMAC device will be equipped with the
"pcs-handle" property pointing to the XPCS device instead of
auto-detecting it on the internal MDIO bus. In such configurations the SMA
interface (embedded into the DW xGMAC MDIO interface) might be absent.
Thus passing the MII bus interface handler to the stmmac_xpcs_setup()
method won't let us reach the externally supplied XPCS device especially
if the SMA bus isn't configured. Let's fix it by converting the
stmmac_xpcs_setup(struct mii_bus *bus) prototype to
stmmac_xpcs_setup(struct net_device *ndev).
Note this is a preparation patch before adding the support of the XPCS
devices specified via the "pcs-handle" property.
Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 5 ++---
3 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
index cd7a9768de5f..d8a1c84880c5 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
@@ -343,7 +343,7 @@ enum stmmac_state {
int stmmac_mdio_unregister(struct net_device *ndev);
int stmmac_mdio_register(struct net_device *ndev);
int stmmac_mdio_reset(struct mii_bus *mii);
-int stmmac_xpcs_setup(struct mii_bus *mii);
+int stmmac_xpcs_setup(struct net_device *ndev);
void stmmac_set_ethtool_ops(struct net_device *netdev);
int stmmac_init_tstamp_counter(struct stmmac_priv *priv, u32 systime_flags);
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 3e50fd53a617..c3641db00f96 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -7605,7 +7605,7 @@ int stmmac_dvr_probe(struct device *device,
priv->plat->speed_mode_2500(ndev, priv->plat->bsp_priv);
if (priv->plat->mdio_bus_data && priv->plat->mdio_bus_data->has_xpcs) {
- ret = stmmac_xpcs_setup(priv->mii);
+ ret = stmmac_xpcs_setup(ndev);
if (ret)
goto error_xpcs_setup;
}
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
index aa75e4f1e212..e6133510e28d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
@@ -495,9 +495,8 @@ int stmmac_mdio_reset(struct mii_bus *bus)
return 0;
}
-int stmmac_xpcs_setup(struct mii_bus *bus)
+int stmmac_xpcs_setup(struct net_device *ndev)
{
- struct net_device *ndev = bus->priv;
struct stmmac_priv *priv;
struct dw_xpcs *xpcs;
int mode, addr;
@@ -507,7 +506,7 @@ int stmmac_xpcs_setup(struct mii_bus *bus)
/* Try to probe the XPCS by scanning all addresses. */
for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
- xpcs = xpcs_create_byaddr(bus, addr, mode);
+ xpcs = xpcs_create_byaddr(priv->mii, addr, mode);
if (IS_ERR(xpcs))
continue;
--
2.42.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 15/16] net: stmmac: Add dedicated XPCS cleanup method
[not found] <20231205103559.9605-1-fancer.lancer@gmail.com>
` (2 preceding siblings ...)
2023-12-05 10:35 ` [PATCH net-next 14/16] net: stmmac: Pass netdev to XPCS setup function Serge Semin
@ 2023-12-05 10:35 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 16/16] net: stmmac: Add externally detected DW XPCS support Serge Semin
4 siblings, 0 replies; 10+ messages in thread
From: Serge Semin @ 2023-12-05 10:35 UTC (permalink / raw)
To: Andrew Lunn, Heiner Kallweit, Russell King, Alexandre Torgue,
Jose Abreu, Jose Abreu, Maxime Chevallier, Tomer Maimon,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Coquelin
Cc: Serge Semin, openbmc, netdev, devicetree, linux-kernel,
linux-stm32, linux-arm-kernel
Currently the XPCS handler destruction is performed in the
stmmac_mdio_unregister() method. It doesn't look well because the handler
isn't originally created in the corresponding protagonist
stmmac_mdio_unregister(), but in the stmmac_xpcs_setup() function. In
order to have a bit more coherent MDIO and XPCS setup/cleanup procedures
let's move the DW XPCS destruction to the dedicated stmmac_xpcs_clean()
method.
Note besides of that this change is a preparation to adding the PCS device
supplied by means of the "pcs-handle" property. It's required since DW
XPCS IP-core can be synthesized embedded into the chip with directly
accessible CSRs. In that case the SMA interface can be absent so no
corresponding MDIO bus will be registered.
Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
---
drivers/net/ethernet/stmicro/stmmac/stmmac.h | 1 +
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 +++++-
drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c | 14 +++++++++++---
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac.h b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
index d8a1c84880c5..1709de519813 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac.h
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac.h
@@ -344,6 +344,7 @@ int stmmac_mdio_unregister(struct net_device *ndev);
int stmmac_mdio_register(struct net_device *ndev);
int stmmac_mdio_reset(struct mii_bus *mii);
int stmmac_xpcs_setup(struct net_device *ndev);
+void stmmac_xpcs_clean(struct net_device *ndev);
void stmmac_set_ethtool_ops(struct net_device *netdev);
int stmmac_init_tstamp_counter(struct stmmac_priv *priv, u32 systime_flags);
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index c3641db00f96..379552240ac9 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -7639,8 +7639,9 @@ int stmmac_dvr_probe(struct device *device,
error_netdev_register:
phylink_destroy(priv->phylink);
-error_xpcs_setup:
error_phy_setup:
+ stmmac_xpcs_clean(ndev);
+error_xpcs_setup:
if (priv->hw->pcs != STMMAC_PCS_TBI &&
priv->hw->pcs != STMMAC_PCS_RTBI)
stmmac_mdio_unregister(ndev);
@@ -7682,6 +7683,9 @@ void stmmac_dvr_remove(struct device *dev)
if (priv->plat->stmmac_rst)
reset_control_assert(priv->plat->stmmac_rst);
reset_control_assert(priv->plat->stmmac_ahb_rst);
+
+ stmmac_xpcs_clean(ndev);
+
if (priv->hw->pcs != STMMAC_PCS_TBI &&
priv->hw->pcs != STMMAC_PCS_RTBI)
stmmac_mdio_unregister(ndev);
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
index e6133510e28d..101fa50c3c96 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
@@ -522,6 +522,17 @@ int stmmac_xpcs_setup(struct net_device *ndev)
return 0;
}
+void stmmac_xpcs_clean(struct net_device *ndev)
+{
+ struct stmmac_priv *priv = netdev_priv(ndev);
+
+ if (!priv->hw->xpcs)
+ return;
+
+ xpcs_destroy(priv->hw->xpcs);
+ priv->hw->xpcs = NULL;
+}
+
/**
* stmmac_mdio_register
* @ndev: net device structure
@@ -674,9 +685,6 @@ int stmmac_mdio_unregister(struct net_device *ndev)
if (!priv->mii)
return 0;
- if (priv->hw->xpcs)
- xpcs_destroy(priv->hw->xpcs);
-
mdiobus_unregister(priv->mii);
priv->mii->priv = NULL;
mdiobus_free(priv->mii);
--
2.42.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH net-next 16/16] net: stmmac: Add externally detected DW XPCS support
[not found] <20231205103559.9605-1-fancer.lancer@gmail.com>
` (3 preceding siblings ...)
2023-12-05 10:35 ` [PATCH net-next 15/16] net: stmmac: Add dedicated XPCS cleanup method Serge Semin
@ 2023-12-05 10:35 ` Serge Semin
4 siblings, 0 replies; 10+ messages in thread
From: Serge Semin @ 2023-12-05 10:35 UTC (permalink / raw)
To: Andrew Lunn, Heiner Kallweit, Russell King, Alexandre Torgue,
Jose Abreu, Jose Abreu, Maxime Chevallier, Tomer Maimon,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Coquelin
Cc: Serge Semin, openbmc, netdev, devicetree, linux-kernel,
linux-stm32, linux-arm-kernel
It's possible to have the DW XPCS device accessible over an external bus
(external MDIO or DW XPCS management interface). Thus it will be futile to
try to detect the device on the local SMA interface. Besides such platform
setup isn't supported by the STMMAC driver anyway since the
stmmac_mdio_bus_data instance might not be created and even if it is there
is no code path which would set the stmmac_mdio_bus_data.has_xpcs flag
thus activating the XPCS device setup.
So in order to solve the denoted problem a pretty much standard approach
is implemented: DT "pcs-handle" property is used to get the phandle
referencing the DT-node describing the DW XPCS device; device node will be
parsed by the xpcs_create_bynode() method implemented in the DW XPCS
driver in a way as it's done for PHY-node; the node is used to find the
MDIO-device instance, which in its turn will be used to create the XPCS
descriptor.
Note as a nice side effect of the provided change the conditional
stmmac_xpcs_setup() method execution can be converted to the conditional
statements implemented in the function itself. Thus the stmmac_open() will
turn to look a bit simpler meanwhile stmmac_xpcs_setup() will provide the
optional XPCS device semantic.
Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
---
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 8 ++---
.../net/ethernet/stmicro/stmmac/stmmac_mdio.c | 34 ++++++++++++-------
2 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 379552240ac9..a33ba00d091d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -7604,11 +7604,9 @@ int stmmac_dvr_probe(struct device *device,
if (priv->plat->speed_mode_2500)
priv->plat->speed_mode_2500(ndev, priv->plat->bsp_priv);
- if (priv->plat->mdio_bus_data && priv->plat->mdio_bus_data->has_xpcs) {
- ret = stmmac_xpcs_setup(ndev);
- if (ret)
- goto error_xpcs_setup;
- }
+ ret = stmmac_xpcs_setup(ndev);
+ if (ret)
+ goto error_xpcs_setup;
ret = stmmac_phy_setup(priv);
if (ret) {
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
index 101fa50c3c96..b906be363b61 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
@@ -499,25 +499,33 @@ int stmmac_xpcs_setup(struct net_device *ndev)
{
struct stmmac_priv *priv;
struct dw_xpcs *xpcs;
- int mode, addr;
+ int ret, mode, addr;
priv = netdev_priv(ndev);
mode = priv->plat->phy_interface;
- /* Try to probe the XPCS by scanning all addresses. */
- for (addr = 0; addr < PHY_MAX_ADDR; addr++) {
- xpcs = xpcs_create_byaddr(priv->mii, addr, mode);
- if (IS_ERR(xpcs))
- continue;
-
- priv->hw->xpcs = xpcs;
- break;
+ /* If PCS-node is specified use it to create the XPCS descriptor */
+ if (fwnode_property_present(priv->plat->port_node, "pcs-handle")) {
+ xpcs = xpcs_create_bynode(priv->plat->port_node, mode);
+ ret = PTR_ERR_OR_ZERO(xpcs);
+ } else if (priv->plat->mdio_bus_data && priv->plat->mdio_bus_data->has_xpcs) {
+ /* Try to probe the XPCS by scanning all addresses */
+ for (ret = -ENODEV, addr = 0; addr < PHY_MAX_ADDR; addr++) {
+ xpcs = xpcs_create_byaddr(priv->mii, addr, mode);
+ if (IS_ERR(xpcs))
+ continue;
+
+ ret = 0;
+ break;
+ }
+ } else {
+ return 0;
}
- if (!priv->hw->xpcs) {
- dev_warn(priv->device, "No xPCS found\n");
- return -ENODEV;
- }
+ if (ret)
+ return dev_err_probe(priv->device, ret, "No xPCS found\n");
+
+ priv->hw->xpcs = xpcs;
return 0;
}
--
2.42.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr"
2023-12-05 10:35 ` [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr" Serge Semin
@ 2023-12-05 23:03 ` kernel test robot
2023-12-07 14:37 ` Serge Semin
2023-12-06 0:29 ` kernel test robot
1 sibling, 1 reply; 10+ messages in thread
From: kernel test robot @ 2023-12-05 23:03 UTC (permalink / raw)
To: Serge Semin, Andrew Lunn, Heiner Kallweit, Russell King,
Alexandre Torgue, Jose Abreu, Maxime Chevallier, Tomer Maimon,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Vladimir Oltean,
Florian Fainelli, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Maxime Coquelin
Cc: oe-kbuild-all, netdev, Serge Semin, openbmc, devicetree,
linux-kernel, linux-stm32, linux-arm-kernel
Hi Serge,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Serge-Semin/net-pcs-xpcs-Drop-sentinel-entry-from-2500basex-ifaces-list/20231205-183808
base: net-next/main
patch link: https://lore.kernel.org/r/20231205103559.9605-12-fancer.lancer%40gmail.com
patch subject: [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr"
config: arc-randconfig-001-20231206 (https://download.01.org/0day-ci/archive/20231206/202312060634.Cblfigt2-lkp@intel.com/config)
compiler: arc-elf-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231206/202312060634.Cblfigt2-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312060634.Cblfigt2-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c: In function 'txgbe_mdio_pcs_init':
>> drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c:150:16: error: implicit declaration of function 'xpcs_create_mdiodev'; did you mean 'xpcs_create_byaddr'? [-Werror=implicit-function-declaration]
150 | xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER);
| ^~~~~~~~~~~~~~~~~~~
| xpcs_create_byaddr
>> drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c:150:14: warning: assignment to 'struct dw_xpcs *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
150 | xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER);
| ^
cc1: some warnings being treated as errors
vim +150 drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
854cace61387b6 Jiawen Wu 2023-06-06 121
854cace61387b6 Jiawen Wu 2023-06-06 122 static int txgbe_mdio_pcs_init(struct txgbe *txgbe)
854cace61387b6 Jiawen Wu 2023-06-06 123 {
854cace61387b6 Jiawen Wu 2023-06-06 124 struct mii_bus *mii_bus;
854cace61387b6 Jiawen Wu 2023-06-06 125 struct dw_xpcs *xpcs;
854cace61387b6 Jiawen Wu 2023-06-06 126 struct pci_dev *pdev;
854cace61387b6 Jiawen Wu 2023-06-06 127 struct wx *wx;
854cace61387b6 Jiawen Wu 2023-06-06 128 int ret = 0;
854cace61387b6 Jiawen Wu 2023-06-06 129
854cace61387b6 Jiawen Wu 2023-06-06 130 wx = txgbe->wx;
854cace61387b6 Jiawen Wu 2023-06-06 131 pdev = wx->pdev;
854cace61387b6 Jiawen Wu 2023-06-06 132
854cace61387b6 Jiawen Wu 2023-06-06 133 mii_bus = devm_mdiobus_alloc(&pdev->dev);
854cace61387b6 Jiawen Wu 2023-06-06 134 if (!mii_bus)
854cace61387b6 Jiawen Wu 2023-06-06 135 return -ENOMEM;
854cace61387b6 Jiawen Wu 2023-06-06 136
854cace61387b6 Jiawen Wu 2023-06-06 137 mii_bus->name = "txgbe_pcs_mdio_bus";
854cace61387b6 Jiawen Wu 2023-06-06 138 mii_bus->read_c45 = &txgbe_pcs_read;
854cace61387b6 Jiawen Wu 2023-06-06 139 mii_bus->write_c45 = &txgbe_pcs_write;
854cace61387b6 Jiawen Wu 2023-06-06 140 mii_bus->parent = &pdev->dev;
854cace61387b6 Jiawen Wu 2023-06-06 141 mii_bus->phy_mask = ~0;
854cace61387b6 Jiawen Wu 2023-06-06 142 mii_bus->priv = wx;
854cace61387b6 Jiawen Wu 2023-06-06 143 snprintf(mii_bus->id, MII_BUS_ID_SIZE, "txgbe_pcs-%x",
d8c21ef7b2b147 Xiongfeng Wang 2023-08-08 144 pci_dev_id(pdev));
854cace61387b6 Jiawen Wu 2023-06-06 145
854cace61387b6 Jiawen Wu 2023-06-06 146 ret = devm_mdiobus_register(&pdev->dev, mii_bus);
854cace61387b6 Jiawen Wu 2023-06-06 147 if (ret)
854cace61387b6 Jiawen Wu 2023-06-06 148 return ret;
854cace61387b6 Jiawen Wu 2023-06-06 149
854cace61387b6 Jiawen Wu 2023-06-06 @150 xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER);
854cace61387b6 Jiawen Wu 2023-06-06 151 if (IS_ERR(xpcs))
854cace61387b6 Jiawen Wu 2023-06-06 152 return PTR_ERR(xpcs);
854cace61387b6 Jiawen Wu 2023-06-06 153
854cace61387b6 Jiawen Wu 2023-06-06 154 txgbe->xpcs = xpcs;
854cace61387b6 Jiawen Wu 2023-06-06 155
854cace61387b6 Jiawen Wu 2023-06-06 156 return 0;
854cace61387b6 Jiawen Wu 2023-06-06 157 }
854cace61387b6 Jiawen Wu 2023-06-06 158
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device
2023-12-05 10:35 ` [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device Serge Semin
@ 2023-12-06 0:19 ` kernel test robot
2023-12-07 14:47 ` Serge Semin
0 siblings, 1 reply; 10+ messages in thread
From: kernel test robot @ 2023-12-06 0:19 UTC (permalink / raw)
To: Serge Semin, Andrew Lunn, Heiner Kallweit, Russell King,
Alexandre Torgue, Jose Abreu, Maxime Chevallier, Tomer Maimon,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Coquelin
Cc: oe-kbuild-all, netdev, Serge Semin, openbmc, devicetree,
linux-kernel, linux-stm32, linux-arm-kernel
Hi Serge,
kernel test robot noticed the following build errors:
[auto build test ERROR on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Serge-Semin/net-pcs-xpcs-Drop-sentinel-entry-from-2500basex-ifaces-list/20231205-183808
base: net-next/main
patch link: https://lore.kernel.org/r/20231205103559.9605-14-fancer.lancer%40gmail.com
patch subject: [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20231206/202312060845.lDDRDWET-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231206/202312060845.lDDRDWET-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312060845.lDDRDWET-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c: In function 'intel_mgbe_common_data':
>> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:646:31: error: 'clk' undeclared (first use in this function)
646 | clk_disable_unprepare(clk);
| ^~~
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:646:31: note: each undeclared identifier is reported only once for each function it appears in
vim +/clk +646 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
446
447 static int intel_mgbe_common_data(struct pci_dev *pdev,
448 struct plat_stmmacenet_data *plat)
449 {
450 struct fwnode_handle *fwnode;
451 char clk_name[20];
452 int ret;
453 int i;
454
455 plat->pdev = pdev;
456 plat->phy_addr = -1;
457 plat->clk_csr = 5;
458 plat->has_gmac = 0;
459 plat->has_gmac4 = 1;
460 plat->force_sf_dma_mode = 0;
461 plat->flags |= (STMMAC_FLAG_TSO_EN | STMMAC_FLAG_SPH_DISABLE);
462
463 /* Multiplying factor to the clk_eee_i clock time
464 * period to make it closer to 100 ns. This value
465 * should be programmed such that the clk_eee_time_period *
466 * (MULT_FACT_100NS + 1) should be within 80 ns to 120 ns
467 * clk_eee frequency is 19.2Mhz
468 * clk_eee_time_period is 52ns
469 * 52ns * (1 + 1) = 104ns
470 * MULT_FACT_100NS = 1
471 */
472 plat->mult_fact_100ns = 1;
473
474 plat->rx_sched_algorithm = MTL_RX_ALGORITHM_SP;
475
476 for (i = 0; i < plat->rx_queues_to_use; i++) {
477 plat->rx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
478 plat->rx_queues_cfg[i].chan = i;
479
480 /* Disable Priority config by default */
481 plat->rx_queues_cfg[i].use_prio = false;
482
483 /* Disable RX queues routing by default */
484 plat->rx_queues_cfg[i].pkt_route = 0x0;
485 }
486
487 for (i = 0; i < plat->tx_queues_to_use; i++) {
488 plat->tx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
489
490 /* Disable Priority config by default */
491 plat->tx_queues_cfg[i].use_prio = false;
492 /* Default TX Q0 to use TSO and rest TXQ for TBS */
493 if (i > 0)
494 plat->tx_queues_cfg[i].tbs_en = 1;
495 }
496
497 /* FIFO size is 4096 bytes for 1 tx/rx queue */
498 plat->tx_fifo_size = plat->tx_queues_to_use * 4096;
499 plat->rx_fifo_size = plat->rx_queues_to_use * 4096;
500
501 plat->tx_sched_algorithm = MTL_TX_ALGORITHM_WRR;
502 plat->tx_queues_cfg[0].weight = 0x09;
503 plat->tx_queues_cfg[1].weight = 0x0A;
504 plat->tx_queues_cfg[2].weight = 0x0B;
505 plat->tx_queues_cfg[3].weight = 0x0C;
506 plat->tx_queues_cfg[4].weight = 0x0D;
507 plat->tx_queues_cfg[5].weight = 0x0E;
508 plat->tx_queues_cfg[6].weight = 0x0F;
509 plat->tx_queues_cfg[7].weight = 0x10;
510
511 plat->dma_cfg->pbl = 32;
512 plat->dma_cfg->pblx8 = true;
513 plat->dma_cfg->fixed_burst = 0;
514 plat->dma_cfg->mixed_burst = 0;
515 plat->dma_cfg->aal = 0;
516 plat->dma_cfg->dche = true;
517
518 plat->axi = devm_kzalloc(&pdev->dev, sizeof(*plat->axi),
519 GFP_KERNEL);
520 if (!plat->axi)
521 return -ENOMEM;
522
523 plat->axi->axi_lpi_en = 0;
524 plat->axi->axi_xit_frm = 0;
525 plat->axi->axi_wr_osr_lmt = 1;
526 plat->axi->axi_rd_osr_lmt = 1;
527 plat->axi->axi_blen[0] = 4;
528 plat->axi->axi_blen[1] = 8;
529 plat->axi->axi_blen[2] = 16;
530
531 plat->ptp_max_adj = plat->clk_ptp_rate;
532 plat->eee_usecs_rate = plat->clk_ptp_rate;
533
534 /* Set system clock */
535 sprintf(clk_name, "%s-%s", "stmmac", pci_name(pdev));
536
537 plat->stmmac_clk = clk_register_fixed_rate(&pdev->dev,
538 clk_name, NULL, 0,
539 plat->clk_ptp_rate);
540
541 if (IS_ERR(plat->stmmac_clk)) {
542 dev_warn(&pdev->dev, "Fail to register stmmac-clk\n");
543 plat->stmmac_clk = NULL;
544 }
545
546 ret = clk_prepare_enable(plat->stmmac_clk);
547 if (ret) {
548 clk_unregister_fixed_rate(plat->stmmac_clk);
549 return ret;
550 }
551
552 plat->ptp_clk_freq_config = intel_mgbe_ptp_clk_freq_config;
553
554 /* Set default value for multicast hash bins */
555 plat->multicast_filter_bins = HASH_TABLE_SIZE;
556
557 /* Set default value for unicast filter entries */
558 plat->unicast_filter_entries = 1;
559
560 /* Set the maxmtu to a default of JUMBO_LEN */
561 plat->maxmtu = JUMBO_LEN;
562
563 plat->flags |= STMMAC_FLAG_VLAN_FAIL_Q_EN;
564
565 /* Use the last Rx queue */
566 plat->vlan_fail_q = plat->rx_queues_to_use - 1;
567
568 /* For fixed-link setup, we allow phy-mode setting */
569 fwnode = dev_fwnode(&pdev->dev);
570 if (fwnode) {
571 int phy_mode;
572
573 /* "phy-mode" setting is optional. If it is set,
574 * we allow either sgmii or 1000base-x for now.
575 */
576 phy_mode = fwnode_get_phy_mode(fwnode);
577 if (phy_mode >= 0) {
578 if (phy_mode == PHY_INTERFACE_MODE_SGMII ||
579 phy_mode == PHY_INTERFACE_MODE_1000BASEX)
580 plat->phy_interface = phy_mode;
581 else
582 dev_warn(&pdev->dev, "Invalid phy-mode\n");
583 }
584 }
585
586 /* Intel mgbe SGMII interface uses pcs-xcps */
587 if (plat->phy_interface == PHY_INTERFACE_MODE_SGMII ||
588 plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
589 struct mdio_board_info *xpcs_info;
590
591 xpcs_info = devm_kzalloc(&pdev->dev,
592 sizeof(*xpcs_info) + MII_BUS_ID_SIZE,
593 GFP_KERNEL);
594 if (!xpcs_info) {
595 ret = -ENOMEM;
596 goto err_alloc_info;
597 }
598
599 xpcs_info->bus_id = (void *)xpcs_info + sizeof(*xpcs_info);
600 snprintf((char *)xpcs_info->bus_id, MII_BUS_ID_SIZE,
601 "stmmac-%x", plat->bus_id);
602
603 snprintf(xpcs_info->modalias, MDIO_NAME_SIZE, "dwxpcs");
604
605 xpcs_info->mdio_addr = INTEL_MGBE_XPCS_ADDR;
606
607 ret = mdiobus_register_board_info(xpcs_info, 1);
608 if (ret)
609 goto err_alloc_info;
610
611 plat->mdio_bus_data->has_xpcs = true;
612 plat->mdio_bus_data->xpcs_an_inband = true;
613 }
614
615 /* For fixed-link setup, we clear xpcs_an_inband */
616 if (fwnode) {
617 struct fwnode_handle *fixed_node;
618
619 fixed_node = fwnode_get_named_child_node(fwnode, "fixed-link");
620 if (fixed_node)
621 plat->mdio_bus_data->xpcs_an_inband = false;
622
623 fwnode_handle_put(fixed_node);
624 }
625
626 /* Ensure mdio bus PHY-scan skips intel serdes and pcs-xpcs */
627 plat->mdio_bus_data->phy_mask = 1 << INTEL_MGBE_ADHOC_ADDR;
628 plat->mdio_bus_data->phy_mask |= 1 << INTEL_MGBE_XPCS_ADDR;
629
630 plat->int_snapshot_num = AUX_SNAPSHOT1;
631
632 plat->crosststamp = intel_crosststamp;
633 plat->flags &= ~STMMAC_FLAG_INT_SNAPSHOT_EN;
634
635 /* Setup MSI vector offset specific to Intel mGbE controller */
636 plat->msi_mac_vec = 29;
637 plat->msi_lpi_vec = 28;
638 plat->msi_sfty_ce_vec = 27;
639 plat->msi_sfty_ue_vec = 26;
640 plat->msi_rx_base_vec = 0;
641 plat->msi_tx_base_vec = 1;
642
643 return 0;
644
645 err_alloc_info:
> 646 clk_disable_unprepare(clk);
647 clk_unregister_fixed_rate(clk);
648
649 return ret;
650 }
651
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr"
2023-12-05 10:35 ` [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr" Serge Semin
2023-12-05 23:03 ` kernel test robot
@ 2023-12-06 0:29 ` kernel test robot
1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2023-12-06 0:29 UTC (permalink / raw)
To: Serge Semin, Andrew Lunn, Heiner Kallweit, Russell King,
Alexandre Torgue, Jose Abreu, Maxime Chevallier, Tomer Maimon,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Vladimir Oltean,
Florian Fainelli, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Maxime Coquelin
Cc: oe-kbuild-all, netdev, Serge Semin, openbmc, devicetree,
linux-kernel, linux-stm32, linux-arm-kernel
Hi Serge,
kernel test robot noticed the following build warnings:
[auto build test WARNING on net-next/main]
url: https://github.com/intel-lab-lkp/linux/commits/Serge-Semin/net-pcs-xpcs-Drop-sentinel-entry-from-2500basex-ifaces-list/20231205-183808
base: net-next/main
patch link: https://lore.kernel.org/r/20231205103559.9605-12-fancer.lancer%40gmail.com
patch subject: [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr"
config: x86_64-randconfig-006-20231206 (https://download.01.org/0day-ci/archive/20231206/202312060843.C3pV7P8b-lkp@intel.com/config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231206/202312060843.C3pV7P8b-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202312060843.C3pV7P8b-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c: In function 'txgbe_mdio_pcs_init':
drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c:150:9: error: implicit declaration of function 'xpcs_create_mdiodev'; did you mean 'xpcs_create_byaddr'? [-Werror=implicit-function-declaration]
xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER);
^~~~~~~~~~~~~~~~~~~
xpcs_create_byaddr
>> drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c:150:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER);
^
cc1: some warnings being treated as errors
vim +150 drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
854cace61387b6 Jiawen Wu 2023-06-06 121
854cace61387b6 Jiawen Wu 2023-06-06 122 static int txgbe_mdio_pcs_init(struct txgbe *txgbe)
854cace61387b6 Jiawen Wu 2023-06-06 123 {
854cace61387b6 Jiawen Wu 2023-06-06 124 struct mii_bus *mii_bus;
854cace61387b6 Jiawen Wu 2023-06-06 125 struct dw_xpcs *xpcs;
854cace61387b6 Jiawen Wu 2023-06-06 126 struct pci_dev *pdev;
854cace61387b6 Jiawen Wu 2023-06-06 127 struct wx *wx;
854cace61387b6 Jiawen Wu 2023-06-06 128 int ret = 0;
854cace61387b6 Jiawen Wu 2023-06-06 129
854cace61387b6 Jiawen Wu 2023-06-06 130 wx = txgbe->wx;
854cace61387b6 Jiawen Wu 2023-06-06 131 pdev = wx->pdev;
854cace61387b6 Jiawen Wu 2023-06-06 132
854cace61387b6 Jiawen Wu 2023-06-06 133 mii_bus = devm_mdiobus_alloc(&pdev->dev);
854cace61387b6 Jiawen Wu 2023-06-06 134 if (!mii_bus)
854cace61387b6 Jiawen Wu 2023-06-06 135 return -ENOMEM;
854cace61387b6 Jiawen Wu 2023-06-06 136
854cace61387b6 Jiawen Wu 2023-06-06 137 mii_bus->name = "txgbe_pcs_mdio_bus";
854cace61387b6 Jiawen Wu 2023-06-06 138 mii_bus->read_c45 = &txgbe_pcs_read;
854cace61387b6 Jiawen Wu 2023-06-06 139 mii_bus->write_c45 = &txgbe_pcs_write;
854cace61387b6 Jiawen Wu 2023-06-06 140 mii_bus->parent = &pdev->dev;
854cace61387b6 Jiawen Wu 2023-06-06 141 mii_bus->phy_mask = ~0;
854cace61387b6 Jiawen Wu 2023-06-06 142 mii_bus->priv = wx;
854cace61387b6 Jiawen Wu 2023-06-06 143 snprintf(mii_bus->id, MII_BUS_ID_SIZE, "txgbe_pcs-%x",
d8c21ef7b2b147 Xiongfeng Wang 2023-08-08 144 pci_dev_id(pdev));
854cace61387b6 Jiawen Wu 2023-06-06 145
854cace61387b6 Jiawen Wu 2023-06-06 146 ret = devm_mdiobus_register(&pdev->dev, mii_bus);
854cace61387b6 Jiawen Wu 2023-06-06 147 if (ret)
854cace61387b6 Jiawen Wu 2023-06-06 148 return ret;
854cace61387b6 Jiawen Wu 2023-06-06 149
854cace61387b6 Jiawen Wu 2023-06-06 @150 xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER);
854cace61387b6 Jiawen Wu 2023-06-06 151 if (IS_ERR(xpcs))
854cace61387b6 Jiawen Wu 2023-06-06 152 return PTR_ERR(xpcs);
854cace61387b6 Jiawen Wu 2023-06-06 153
854cace61387b6 Jiawen Wu 2023-06-06 154 txgbe->xpcs = xpcs;
854cace61387b6 Jiawen Wu 2023-06-06 155
854cace61387b6 Jiawen Wu 2023-06-06 156 return 0;
854cace61387b6 Jiawen Wu 2023-06-06 157 }
854cace61387b6 Jiawen Wu 2023-06-06 158
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr"
2023-12-05 23:03 ` kernel test robot
@ 2023-12-07 14:37 ` Serge Semin
0 siblings, 0 replies; 10+ messages in thread
From: Serge Semin @ 2023-12-07 14:37 UTC (permalink / raw)
To: kernel test robot
Cc: Andrew Lunn, Heiner Kallweit, Russell King, Alexandre Torgue,
Jose Abreu, Maxime Chevallier, Tomer Maimon, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Vladimir Oltean,
Florian Fainelli, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Maxime Coquelin, oe-kbuild-all, netdev, openbmc,
devicetree, linux-kernel, linux-stm32, linux-arm-kernel
On Wed, Dec 06, 2023 at 07:03:46AM +0800, kernel test robot wrote:
> Hi Serge,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on net-next/main]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Serge-Semin/net-pcs-xpcs-Drop-sentinel-entry-from-2500basex-ifaces-list/20231205-183808
> base: net-next/main
> patch link: https://lore.kernel.org/r/20231205103559.9605-12-fancer.lancer%40gmail.com
> patch subject: [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr"
> config: arc-randconfig-001-20231206 (https://download.01.org/0day-ci/archive/20231206/202312060634.Cblfigt2-lkp@intel.com/config)
> compiler: arc-elf-gcc (GCC) 13.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231206/202312060634.Cblfigt2-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202312060634.Cblfigt2-lkp@intel.com/
>
> All error/warnings (new ones prefixed by >>):
>
> drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c: In function 'txgbe_mdio_pcs_init':
> >> drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c:150:16: error: implicit declaration of function 'xpcs_create_mdiodev'; did you mean 'xpcs_create_byaddr'? [-Werror=implicit-function-declaration]
> 150 | xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER);
> | ^~~~~~~~~~~~~~~~~~~
> | xpcs_create_byaddr
> >> drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c:150:14: warning: assignment to 'struct dw_xpcs *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
> 150 | xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER);
> | ^
> cc1: some warnings being treated as errors
>
>
> vim +150 drivers/net/ethernet/wangxun/txgbe/txgbe_phy.c
Ah, right. I had been creating the series some times earlier than this
code was introduced and just missed it on the last rebase. I'll fix
this on v2.
-Serge(y)
>
> 854cace61387b6 Jiawen Wu 2023-06-06 121
> 854cace61387b6 Jiawen Wu 2023-06-06 122 static int txgbe_mdio_pcs_init(struct txgbe *txgbe)
> 854cace61387b6 Jiawen Wu 2023-06-06 123 {
> 854cace61387b6 Jiawen Wu 2023-06-06 124 struct mii_bus *mii_bus;
> 854cace61387b6 Jiawen Wu 2023-06-06 125 struct dw_xpcs *xpcs;
> 854cace61387b6 Jiawen Wu 2023-06-06 126 struct pci_dev *pdev;
> 854cace61387b6 Jiawen Wu 2023-06-06 127 struct wx *wx;
> 854cace61387b6 Jiawen Wu 2023-06-06 128 int ret = 0;
> 854cace61387b6 Jiawen Wu 2023-06-06 129
> 854cace61387b6 Jiawen Wu 2023-06-06 130 wx = txgbe->wx;
> 854cace61387b6 Jiawen Wu 2023-06-06 131 pdev = wx->pdev;
> 854cace61387b6 Jiawen Wu 2023-06-06 132
> 854cace61387b6 Jiawen Wu 2023-06-06 133 mii_bus = devm_mdiobus_alloc(&pdev->dev);
> 854cace61387b6 Jiawen Wu 2023-06-06 134 if (!mii_bus)
> 854cace61387b6 Jiawen Wu 2023-06-06 135 return -ENOMEM;
> 854cace61387b6 Jiawen Wu 2023-06-06 136
> 854cace61387b6 Jiawen Wu 2023-06-06 137 mii_bus->name = "txgbe_pcs_mdio_bus";
> 854cace61387b6 Jiawen Wu 2023-06-06 138 mii_bus->read_c45 = &txgbe_pcs_read;
> 854cace61387b6 Jiawen Wu 2023-06-06 139 mii_bus->write_c45 = &txgbe_pcs_write;
> 854cace61387b6 Jiawen Wu 2023-06-06 140 mii_bus->parent = &pdev->dev;
> 854cace61387b6 Jiawen Wu 2023-06-06 141 mii_bus->phy_mask = ~0;
> 854cace61387b6 Jiawen Wu 2023-06-06 142 mii_bus->priv = wx;
> 854cace61387b6 Jiawen Wu 2023-06-06 143 snprintf(mii_bus->id, MII_BUS_ID_SIZE, "txgbe_pcs-%x",
> d8c21ef7b2b147 Xiongfeng Wang 2023-08-08 144 pci_dev_id(pdev));
> 854cace61387b6 Jiawen Wu 2023-06-06 145
> 854cace61387b6 Jiawen Wu 2023-06-06 146 ret = devm_mdiobus_register(&pdev->dev, mii_bus);
> 854cace61387b6 Jiawen Wu 2023-06-06 147 if (ret)
> 854cace61387b6 Jiawen Wu 2023-06-06 148 return ret;
> 854cace61387b6 Jiawen Wu 2023-06-06 149
> 854cace61387b6 Jiawen Wu 2023-06-06 @150 xpcs = xpcs_create_mdiodev(mii_bus, 0, PHY_INTERFACE_MODE_10GBASER);
> 854cace61387b6 Jiawen Wu 2023-06-06 151 if (IS_ERR(xpcs))
> 854cace61387b6 Jiawen Wu 2023-06-06 152 return PTR_ERR(xpcs);
> 854cace61387b6 Jiawen Wu 2023-06-06 153
> 854cace61387b6 Jiawen Wu 2023-06-06 154 txgbe->xpcs = xpcs;
> 854cace61387b6 Jiawen Wu 2023-06-06 155
> 854cace61387b6 Jiawen Wu 2023-06-06 156 return 0;
> 854cace61387b6 Jiawen Wu 2023-06-06 157 }
> 854cace61387b6 Jiawen Wu 2023-06-06 158
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device
2023-12-06 0:19 ` kernel test robot
@ 2023-12-07 14:47 ` Serge Semin
0 siblings, 0 replies; 10+ messages in thread
From: Serge Semin @ 2023-12-07 14:47 UTC (permalink / raw)
To: kernel test robot
Cc: Andrew Lunn, Heiner Kallweit, Russell King, Alexandre Torgue,
Jose Abreu, Maxime Chevallier, Tomer Maimon, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, oe-kbuild-all,
netdev, openbmc, devicetree, linux-kernel, linux-stm32,
linux-arm-kernel
On Wed, Dec 06, 2023 at 08:19:07AM +0800, kernel test robot wrote:
> Hi Serge,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on net-next/main]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Serge-Semin/net-pcs-xpcs-Drop-sentinel-entry-from-2500basex-ifaces-list/20231205-183808
> base: net-next/main
> patch link: https://lore.kernel.org/r/20231205103559.9605-14-fancer.lancer%40gmail.com
> patch subject: [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device
> config: x86_64-kexec (https://download.01.org/0day-ci/archive/20231206/202312060845.lDDRDWET-lkp@intel.com/config)
> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231206/202312060845.lDDRDWET-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202312060845.lDDRDWET-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c: In function 'intel_mgbe_common_data':
> >> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:646:31: error: 'clk' undeclared (first use in this function)
> 646 | clk_disable_unprepare(clk);
> | ^~~
> drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c:646:31: note: each undeclared identifier is reported only once for each function it appears in
>
>
> vim +/clk +646 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
Right, my series had been originally based on a branch which had some
of this driver parts fixed. I should have more thoroughly performed
the re-base process. I'll make sure it's fixed on v2.
-Serge(y)
>
> 446
> 447 static int intel_mgbe_common_data(struct pci_dev *pdev,
> 448 struct plat_stmmacenet_data *plat)
> 449 {
> 450 struct fwnode_handle *fwnode;
> 451 char clk_name[20];
> 452 int ret;
> 453 int i;
> 454
> 455 plat->pdev = pdev;
> 456 plat->phy_addr = -1;
> 457 plat->clk_csr = 5;
> 458 plat->has_gmac = 0;
> 459 plat->has_gmac4 = 1;
> 460 plat->force_sf_dma_mode = 0;
> 461 plat->flags |= (STMMAC_FLAG_TSO_EN | STMMAC_FLAG_SPH_DISABLE);
> 462
> 463 /* Multiplying factor to the clk_eee_i clock time
> 464 * period to make it closer to 100 ns. This value
> 465 * should be programmed such that the clk_eee_time_period *
> 466 * (MULT_FACT_100NS + 1) should be within 80 ns to 120 ns
> 467 * clk_eee frequency is 19.2Mhz
> 468 * clk_eee_time_period is 52ns
> 469 * 52ns * (1 + 1) = 104ns
> 470 * MULT_FACT_100NS = 1
> 471 */
> 472 plat->mult_fact_100ns = 1;
> 473
> 474 plat->rx_sched_algorithm = MTL_RX_ALGORITHM_SP;
> 475
> 476 for (i = 0; i < plat->rx_queues_to_use; i++) {
> 477 plat->rx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
> 478 plat->rx_queues_cfg[i].chan = i;
> 479
> 480 /* Disable Priority config by default */
> 481 plat->rx_queues_cfg[i].use_prio = false;
> 482
> 483 /* Disable RX queues routing by default */
> 484 plat->rx_queues_cfg[i].pkt_route = 0x0;
> 485 }
> 486
> 487 for (i = 0; i < plat->tx_queues_to_use; i++) {
> 488 plat->tx_queues_cfg[i].mode_to_use = MTL_QUEUE_DCB;
> 489
> 490 /* Disable Priority config by default */
> 491 plat->tx_queues_cfg[i].use_prio = false;
> 492 /* Default TX Q0 to use TSO and rest TXQ for TBS */
> 493 if (i > 0)
> 494 plat->tx_queues_cfg[i].tbs_en = 1;
> 495 }
> 496
> 497 /* FIFO size is 4096 bytes for 1 tx/rx queue */
> 498 plat->tx_fifo_size = plat->tx_queues_to_use * 4096;
> 499 plat->rx_fifo_size = plat->rx_queues_to_use * 4096;
> 500
> 501 plat->tx_sched_algorithm = MTL_TX_ALGORITHM_WRR;
> 502 plat->tx_queues_cfg[0].weight = 0x09;
> 503 plat->tx_queues_cfg[1].weight = 0x0A;
> 504 plat->tx_queues_cfg[2].weight = 0x0B;
> 505 plat->tx_queues_cfg[3].weight = 0x0C;
> 506 plat->tx_queues_cfg[4].weight = 0x0D;
> 507 plat->tx_queues_cfg[5].weight = 0x0E;
> 508 plat->tx_queues_cfg[6].weight = 0x0F;
> 509 plat->tx_queues_cfg[7].weight = 0x10;
> 510
> 511 plat->dma_cfg->pbl = 32;
> 512 plat->dma_cfg->pblx8 = true;
> 513 plat->dma_cfg->fixed_burst = 0;
> 514 plat->dma_cfg->mixed_burst = 0;
> 515 plat->dma_cfg->aal = 0;
> 516 plat->dma_cfg->dche = true;
> 517
> 518 plat->axi = devm_kzalloc(&pdev->dev, sizeof(*plat->axi),
> 519 GFP_KERNEL);
> 520 if (!plat->axi)
> 521 return -ENOMEM;
> 522
> 523 plat->axi->axi_lpi_en = 0;
> 524 plat->axi->axi_xit_frm = 0;
> 525 plat->axi->axi_wr_osr_lmt = 1;
> 526 plat->axi->axi_rd_osr_lmt = 1;
> 527 plat->axi->axi_blen[0] = 4;
> 528 plat->axi->axi_blen[1] = 8;
> 529 plat->axi->axi_blen[2] = 16;
> 530
> 531 plat->ptp_max_adj = plat->clk_ptp_rate;
> 532 plat->eee_usecs_rate = plat->clk_ptp_rate;
> 533
> 534 /* Set system clock */
> 535 sprintf(clk_name, "%s-%s", "stmmac", pci_name(pdev));
> 536
> 537 plat->stmmac_clk = clk_register_fixed_rate(&pdev->dev,
> 538 clk_name, NULL, 0,
> 539 plat->clk_ptp_rate);
> 540
> 541 if (IS_ERR(plat->stmmac_clk)) {
> 542 dev_warn(&pdev->dev, "Fail to register stmmac-clk\n");
> 543 plat->stmmac_clk = NULL;
> 544 }
> 545
> 546 ret = clk_prepare_enable(plat->stmmac_clk);
> 547 if (ret) {
> 548 clk_unregister_fixed_rate(plat->stmmac_clk);
> 549 return ret;
> 550 }
> 551
> 552 plat->ptp_clk_freq_config = intel_mgbe_ptp_clk_freq_config;
> 553
> 554 /* Set default value for multicast hash bins */
> 555 plat->multicast_filter_bins = HASH_TABLE_SIZE;
> 556
> 557 /* Set default value for unicast filter entries */
> 558 plat->unicast_filter_entries = 1;
> 559
> 560 /* Set the maxmtu to a default of JUMBO_LEN */
> 561 plat->maxmtu = JUMBO_LEN;
> 562
> 563 plat->flags |= STMMAC_FLAG_VLAN_FAIL_Q_EN;
> 564
> 565 /* Use the last Rx queue */
> 566 plat->vlan_fail_q = plat->rx_queues_to_use - 1;
> 567
> 568 /* For fixed-link setup, we allow phy-mode setting */
> 569 fwnode = dev_fwnode(&pdev->dev);
> 570 if (fwnode) {
> 571 int phy_mode;
> 572
> 573 /* "phy-mode" setting is optional. If it is set,
> 574 * we allow either sgmii or 1000base-x for now.
> 575 */
> 576 phy_mode = fwnode_get_phy_mode(fwnode);
> 577 if (phy_mode >= 0) {
> 578 if (phy_mode == PHY_INTERFACE_MODE_SGMII ||
> 579 phy_mode == PHY_INTERFACE_MODE_1000BASEX)
> 580 plat->phy_interface = phy_mode;
> 581 else
> 582 dev_warn(&pdev->dev, "Invalid phy-mode\n");
> 583 }
> 584 }
> 585
> 586 /* Intel mgbe SGMII interface uses pcs-xcps */
> 587 if (plat->phy_interface == PHY_INTERFACE_MODE_SGMII ||
> 588 plat->phy_interface == PHY_INTERFACE_MODE_1000BASEX) {
> 589 struct mdio_board_info *xpcs_info;
> 590
> 591 xpcs_info = devm_kzalloc(&pdev->dev,
> 592 sizeof(*xpcs_info) + MII_BUS_ID_SIZE,
> 593 GFP_KERNEL);
> 594 if (!xpcs_info) {
> 595 ret = -ENOMEM;
> 596 goto err_alloc_info;
> 597 }
> 598
> 599 xpcs_info->bus_id = (void *)xpcs_info + sizeof(*xpcs_info);
> 600 snprintf((char *)xpcs_info->bus_id, MII_BUS_ID_SIZE,
> 601 "stmmac-%x", plat->bus_id);
> 602
> 603 snprintf(xpcs_info->modalias, MDIO_NAME_SIZE, "dwxpcs");
> 604
> 605 xpcs_info->mdio_addr = INTEL_MGBE_XPCS_ADDR;
> 606
> 607 ret = mdiobus_register_board_info(xpcs_info, 1);
> 608 if (ret)
> 609 goto err_alloc_info;
> 610
> 611 plat->mdio_bus_data->has_xpcs = true;
> 612 plat->mdio_bus_data->xpcs_an_inband = true;
> 613 }
> 614
> 615 /* For fixed-link setup, we clear xpcs_an_inband */
> 616 if (fwnode) {
> 617 struct fwnode_handle *fixed_node;
> 618
> 619 fixed_node = fwnode_get_named_child_node(fwnode, "fixed-link");
> 620 if (fixed_node)
> 621 plat->mdio_bus_data->xpcs_an_inband = false;
> 622
> 623 fwnode_handle_put(fixed_node);
> 624 }
> 625
> 626 /* Ensure mdio bus PHY-scan skips intel serdes and pcs-xpcs */
> 627 plat->mdio_bus_data->phy_mask = 1 << INTEL_MGBE_ADHOC_ADDR;
> 628 plat->mdio_bus_data->phy_mask |= 1 << INTEL_MGBE_XPCS_ADDR;
> 629
> 630 plat->int_snapshot_num = AUX_SNAPSHOT1;
> 631
> 632 plat->crosststamp = intel_crosststamp;
> 633 plat->flags &= ~STMMAC_FLAG_INT_SNAPSHOT_EN;
> 634
> 635 /* Setup MSI vector offset specific to Intel mGbE controller */
> 636 plat->msi_mac_vec = 29;
> 637 plat->msi_lpi_vec = 28;
> 638 plat->msi_sfty_ce_vec = 27;
> 639 plat->msi_sfty_ue_vec = 26;
> 640 plat->msi_rx_base_vec = 0;
> 641 plat->msi_tx_base_vec = 1;
> 642
> 643 return 0;
> 644
> 645 err_alloc_info:
> > 646 clk_disable_unprepare(clk);
> 647 clk_unregister_fixed_rate(clk);
> 648
> 649 return ret;
> 650 }
> 651
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2023-12-07 14:47 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20231205103559.9605-1-fancer.lancer@gmail.com>
2023-12-05 10:35 ` [PATCH net-next 11/16] net: pcs: xpcs: Change xpcs_create_mdiodev() suffix to "byaddr" Serge Semin
2023-12-05 23:03 ` kernel test robot
2023-12-07 14:37 ` Serge Semin
2023-12-06 0:29 ` kernel test robot
2023-12-05 10:35 ` [PATCH net-next 13/16] net: stmmac: intel: Register generic MDIO device Serge Semin
2023-12-06 0:19 ` kernel test robot
2023-12-07 14:47 ` Serge Semin
2023-12-05 10:35 ` [PATCH net-next 14/16] net: stmmac: Pass netdev to XPCS setup function Serge Semin
2023-12-05 10:35 ` [PATCH net-next 15/16] net: stmmac: Add dedicated XPCS cleanup method Serge Semin
2023-12-05 10:35 ` [PATCH net-next 16/16] net: stmmac: Add externally detected DW XPCS support Serge Semin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).