* [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit
@ 2024-09-05 20:14 Rosen Penev
2024-09-05 20:14 ` [PATCHv3 net-next 1/9] net: ibm: emac: use devm for alloc_etherdev Rosen Penev
` (8 more replies)
0 siblings, 9 replies; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:14 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
It's a very old driver with a lot of potential for cleaning up code to
modern standards. This was a simple one dealing with mostly the probe
function and adding some devm to it.
v2: removed the waiting code in favor of EPROBE_DEFER.
v3: reverse xmas order fix, unnecessary assignment fix, wrong usage of
EPROBE_DEFER fix.
Rosen Penev (9):
net: ibm: emac: use devm for alloc_etherdev
net: ibm: emac: manage emac_irq with devm
net: ibm: emac: use devm for of_iomap
net: ibm: emac: remove mii_bus with devm
net: ibm: emac: use devm for register_netdev
net: ibm: emac: use netdev's phydev directly
net: ibm: emac: replace of_get_property
net: ibm: emac: remove all waiting code
net: ibm: emac: get rid of wol_irq
drivers/net/ethernet/ibm/emac/core.c | 214 +++++++++------------------
drivers/net/ethernet/ibm/emac/core.h | 4 -
2 files changed, 67 insertions(+), 151 deletions(-)
--
2.46.0
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCHv3 net-next 1/9] net: ibm: emac: use devm for alloc_etherdev
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
@ 2024-09-05 20:14 ` Rosen Penev
2024-09-05 21:16 ` Andrew Lunn
2024-09-05 20:14 ` [PATCHv3 net-next 2/9] net: ibm: emac: manage emac_irq with devm Rosen Penev
` (7 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:14 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
Allows to simplify the code slightly. This is safe to do as free_netdev
gets called last.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/core.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index a19d098f2e2b..348702f462bd 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -3053,7 +3053,7 @@ static int emac_probe(struct platform_device *ofdev)
/* Allocate our net_device structure */
err = -ENOMEM;
- ndev = alloc_etherdev(sizeof(struct emac_instance));
+ ndev = devm_alloc_etherdev(&ofdev->dev, sizeof(struct emac_instance));
if (!ndev)
goto err_gone;
@@ -3072,7 +3072,7 @@ static int emac_probe(struct platform_device *ofdev)
/* Init various config data based on device-tree */
err = emac_init_config(dev);
if (err)
- goto err_free;
+ goto err_gone;
/* Get interrupts. EMAC irq is mandatory, WOL irq is optional */
dev->emac_irq = irq_of_parse_and_map(np, 0);
@@ -3080,7 +3080,7 @@ static int emac_probe(struct platform_device *ofdev)
if (!dev->emac_irq) {
printk(KERN_ERR "%pOF: Can't map main interrupt\n", np);
err = -ENODEV;
- goto err_free;
+ goto err_gone;
}
ndev->irq = dev->emac_irq;
@@ -3239,8 +3239,6 @@ static int emac_probe(struct platform_device *ofdev)
irq_dispose_mapping(dev->wol_irq);
if (dev->emac_irq)
irq_dispose_mapping(dev->emac_irq);
- err_free:
- free_netdev(ndev);
err_gone:
/* if we were on the bootlist, remove us as we won't show up and
* wake up all waiters to notify them in case they were waiting
@@ -3289,7 +3287,6 @@ static void emac_remove(struct platform_device *ofdev)
if (dev->emac_irq)
irq_dispose_mapping(dev->emac_irq);
- free_netdev(dev->ndev);
}
/* XXX Features in here should be replaced by properties... */
--
2.46.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv3 net-next 2/9] net: ibm: emac: manage emac_irq with devm
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
2024-09-05 20:14 ` [PATCHv3 net-next 1/9] net: ibm: emac: use devm for alloc_etherdev Rosen Penev
@ 2024-09-05 20:14 ` Rosen Penev
2024-09-05 21:17 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 3/9] net: ibm: emac: use devm for of_iomap Rosen Penev
` (6 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:14 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
It's the last to go in remove. Safe to let devm handle it.
Also move request_irq to probe for clarity. It's removed in _remove not
close.
Use dev_err_probe instead of printk. Handles EPROBE_DEFER automatically.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/core.c | 27 +++++++++------------------
1 file changed, 9 insertions(+), 18 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index 348702f462bd..4e260abbaa56 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -1228,18 +1228,10 @@ static void emac_print_link_status(struct emac_instance *dev)
static int emac_open(struct net_device *ndev)
{
struct emac_instance *dev = netdev_priv(ndev);
- int err, i;
+ int i;
DBG(dev, "open" NL);
- /* Setup error IRQ handler */
- err = request_irq(dev->emac_irq, emac_irq, 0, "EMAC", dev);
- if (err) {
- printk(KERN_ERR "%s: failed to request IRQ %d\n",
- ndev->name, dev->emac_irq);
- return err;
- }
-
/* Allocate RX ring */
for (i = 0; i < NUM_RX_BUFF; ++i)
if (emac_alloc_rx_skb(dev, i)) {
@@ -1293,8 +1285,6 @@ static int emac_open(struct net_device *ndev)
return 0;
oom:
emac_clean_rx_ring(dev);
- free_irq(dev->emac_irq, dev);
-
return -ENOMEM;
}
@@ -1408,8 +1398,6 @@ static int emac_close(struct net_device *ndev)
emac_clean_tx_ring(dev);
emac_clean_rx_ring(dev);
- free_irq(dev->emac_irq, dev);
-
netif_carrier_off(ndev);
return 0;
@@ -3082,6 +3070,14 @@ static int emac_probe(struct platform_device *ofdev)
err = -ENODEV;
goto err_gone;
}
+
+ /* Setup error IRQ handler */
+ err = devm_request_irq(&ofdev->dev, dev->emac_irq, emac_irq, 0, "EMAC", dev);
+ if (err) {
+ dev_err_probe(&ofdev->dev, err, "failed to request IRQ %d", dev->emac_irq);
+ goto err_gone;
+ }
+
ndev->irq = dev->emac_irq;
/* Map EMAC regs */
@@ -3237,8 +3233,6 @@ static int emac_probe(struct platform_device *ofdev)
err_irq_unmap:
if (dev->wol_irq)
irq_dispose_mapping(dev->wol_irq);
- if (dev->emac_irq)
- irq_dispose_mapping(dev->emac_irq);
err_gone:
/* if we were on the bootlist, remove us as we won't show up and
* wake up all waiters to notify them in case they were waiting
@@ -3284,9 +3278,6 @@ static void emac_remove(struct platform_device *ofdev)
if (dev->wol_irq)
irq_dispose_mapping(dev->wol_irq);
- if (dev->emac_irq)
- irq_dispose_mapping(dev->emac_irq);
-
}
/* XXX Features in here should be replaced by properties... */
--
2.46.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv3 net-next 3/9] net: ibm: emac: use devm for of_iomap
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
2024-09-05 20:14 ` [PATCHv3 net-next 1/9] net: ibm: emac: use devm for alloc_etherdev Rosen Penev
2024-09-05 20:14 ` [PATCHv3 net-next 2/9] net: ibm: emac: manage emac_irq with devm Rosen Penev
@ 2024-09-05 20:15 ` Rosen Penev
2024-09-05 21:17 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 4/9] net: ibm: emac: remove mii_bus with devm Rosen Penev
` (5 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:15 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
Allows removing manual iounmap.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/core.c | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index 4e260abbaa56..459f893a0a56 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -3082,10 +3082,9 @@ static int emac_probe(struct platform_device *ofdev)
/* Map EMAC regs */
// TODO : platform_get_resource() and devm_ioremap_resource()
- dev->emacp = of_iomap(np, 0);
- if (dev->emacp == NULL) {
- printk(KERN_ERR "%pOF: Can't map device registers!\n", np);
- err = -ENOMEM;
+ dev->emacp = devm_of_iomap(&ofdev->dev, np, 0, NULL);
+ if (!dev->emacp) {
+ err = dev_err_probe(&ofdev->dev, -ENOMEM, "can't map device registers");
goto err_irq_unmap;
}
@@ -3095,7 +3094,7 @@ static int emac_probe(struct platform_device *ofdev)
printk(KERN_ERR
"%pOF: Timeout waiting for dependent devices\n", np);
/* display more info about what's missing ? */
- goto err_reg_unmap;
+ goto err_irq_unmap;
}
dev->mal = platform_get_drvdata(dev->mal_dev);
if (dev->mdio_dev != NULL)
@@ -3228,8 +3227,6 @@ static int emac_probe(struct platform_device *ofdev)
mal_unregister_commac(dev->mal, &dev->commac);
err_rel_deps:
emac_put_deps(dev);
- err_reg_unmap:
- iounmap(dev->emacp);
err_irq_unmap:
if (dev->wol_irq)
irq_dispose_mapping(dev->wol_irq);
@@ -3274,8 +3271,6 @@ static void emac_remove(struct platform_device *ofdev)
mal_unregister_commac(dev->mal, &dev->commac);
emac_put_deps(dev);
- iounmap(dev->emacp);
-
if (dev->wol_irq)
irq_dispose_mapping(dev->wol_irq);
}
--
2.46.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv3 net-next 4/9] net: ibm: emac: remove mii_bus with devm
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
` (2 preceding siblings ...)
2024-09-05 20:15 ` [PATCHv3 net-next 3/9] net: ibm: emac: use devm for of_iomap Rosen Penev
@ 2024-09-05 20:15 ` Rosen Penev
2024-09-05 21:19 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 5/9] net: ibm: emac: use devm for register_netdev Rosen Penev
` (4 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:15 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
Switching to devm management of mii_bus allows to remove
mdiobus_unregister calls and thus avoids needing a mii_bus global struct
member.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/core.c | 32 +++++++++++-----------------
drivers/net/ethernet/ibm/emac/core.h | 1 -
2 files changed, 13 insertions(+), 20 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index 459f893a0a56..66e8be73e09b 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -2581,6 +2581,7 @@ static const struct mii_phy_ops emac_dt_mdio_phy_ops = {
static int emac_dt_mdio_probe(struct emac_instance *dev)
{
struct device_node *mii_np;
+ struct mii_bus *bus;
int res;
mii_np = of_get_child_by_name(dev->ofdev->dev.of_node, "mdio");
@@ -2594,23 +2595,23 @@ static int emac_dt_mdio_probe(struct emac_instance *dev)
goto put_node;
}
- dev->mii_bus = devm_mdiobus_alloc(&dev->ofdev->dev);
- if (!dev->mii_bus) {
+ bus = devm_mdiobus_alloc(&dev->ofdev->dev);
+ if (!bus) {
res = -ENOMEM;
goto put_node;
}
- dev->mii_bus->priv = dev->ndev;
- dev->mii_bus->parent = dev->ndev->dev.parent;
- dev->mii_bus->name = "emac_mdio";
- dev->mii_bus->read = &emac_mii_bus_read;
- dev->mii_bus->write = &emac_mii_bus_write;
- dev->mii_bus->reset = &emac_mii_bus_reset;
- snprintf(dev->mii_bus->id, MII_BUS_ID_SIZE, "%s", dev->ofdev->name);
- res = of_mdiobus_register(dev->mii_bus, mii_np);
+ bus->priv = dev->ndev;
+ bus->parent = dev->ndev->dev.parent;
+ bus->name = "emac_mdio";
+ bus->read = &emac_mii_bus_read;
+ bus->write = &emac_mii_bus_write;
+ bus->reset = &emac_mii_bus_reset;
+ snprintf(bus->id, MII_BUS_ID_SIZE, "%s", dev->ofdev->name);
+ res = devm_of_mdiobus_register(&dev->ofdev->dev, bus, mii_np);
if (res) {
dev_err(&dev->ofdev->dev, "cannot register MDIO bus %s (%d)",
- dev->mii_bus->name, res);
+ bus->name, res);
}
put_node:
@@ -2656,8 +2657,6 @@ static int emac_dt_phy_probe(struct emac_instance *dev)
res = emac_dt_mdio_probe(dev);
if (!res) {
res = emac_dt_phy_connect(dev, phy_handle);
- if (res)
- mdiobus_unregister(dev->mii_bus);
}
}
@@ -2697,10 +2696,8 @@ static int emac_init_phy(struct emac_instance *dev)
res = of_phy_register_fixed_link(np);
dev->phy_dev = of_phy_find_device(np);
- if (res || !dev->phy_dev) {
- mdiobus_unregister(dev->mii_bus);
+ if (res || !dev->phy_dev)
return res ? res : -EINVAL;
- }
emac_adjust_link(dev->ndev);
put_device(&dev->phy_dev->mdio.dev);
}
@@ -3262,9 +3259,6 @@ static void emac_remove(struct platform_device *ofdev)
if (dev->phy_dev)
phy_disconnect(dev->phy_dev);
- if (dev->mii_bus)
- mdiobus_unregister(dev->mii_bus);
-
busy_phy_map &= ~(1 << dev->phy.address);
DBG(dev, "busy_phy_map now %#x" NL, busy_phy_map);
diff --git a/drivers/net/ethernet/ibm/emac/core.h b/drivers/net/ethernet/ibm/emac/core.h
index 295516b07662..f4bd4cd8ac4a 100644
--- a/drivers/net/ethernet/ibm/emac/core.h
+++ b/drivers/net/ethernet/ibm/emac/core.h
@@ -189,7 +189,6 @@ struct emac_instance {
struct mutex mdio_lock;
/* Device-tree based phy configuration */
- struct mii_bus *mii_bus;
struct phy_device *phy_dev;
/* ZMII infos if any */
--
2.46.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv3 net-next 5/9] net: ibm: emac: use devm for register_netdev
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
` (3 preceding siblings ...)
2024-09-05 20:15 ` [PATCHv3 net-next 4/9] net: ibm: emac: remove mii_bus with devm Rosen Penev
@ 2024-09-05 20:15 ` Rosen Penev
2024-09-05 21:19 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 6/9] net: ibm: emac: use netdev's phydev directly Rosen Penev
` (3 subsequent siblings)
8 siblings, 1 reply; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:15 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
Cleans it up automatically. No need to handle manually.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/core.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index 66e8be73e09b..e2abda947a51 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -3179,7 +3179,7 @@ static int emac_probe(struct platform_device *ofdev)
netif_carrier_off(ndev);
- err = register_netdev(ndev);
+ err = devm_register_netdev(&ofdev->dev, ndev);
if (err) {
printk(KERN_ERR "%pOF: failed to register net device (%d)!\n",
np, err);
@@ -3245,8 +3245,6 @@ static void emac_remove(struct platform_device *ofdev)
DBG(dev, "remove" NL);
- unregister_netdev(dev->ndev);
-
cancel_work_sync(&dev->reset_work);
if (emac_has_feature(dev, EMAC_FTR_HAS_TAH))
--
2.46.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv3 net-next 6/9] net: ibm: emac: use netdev's phydev directly
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
` (4 preceding siblings ...)
2024-09-05 20:15 ` [PATCHv3 net-next 5/9] net: ibm: emac: use devm for register_netdev Rosen Penev
@ 2024-09-05 20:15 ` Rosen Penev
2024-09-05 21:21 ` Andrew Lunn
2024-09-07 19:32 ` Christophe JAILLET
2024-09-05 20:15 ` [PATCHv3 net-next 7/9] net: ibm: emac: replace of_get_property Rosen Penev
` (2 subsequent siblings)
8 siblings, 2 replies; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:15 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
Avoids having to use own struct member.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/core.c | 47 +++++++++++++---------------
drivers/net/ethernet/ibm/emac/core.h | 3 --
2 files changed, 21 insertions(+), 29 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index e2abda947a51..cda368701ae4 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -2459,7 +2459,7 @@ static int emac_read_uint_prop(struct device_node *np, const char *name,
static void emac_adjust_link(struct net_device *ndev)
{
struct emac_instance *dev = netdev_priv(ndev);
- struct phy_device *phy = dev->phy_dev;
+ struct phy_device *phy = ndev->phydev;
dev->phy.autoneg = phy->autoneg;
dev->phy.speed = phy->speed;
@@ -2510,22 +2510,20 @@ static int emac_mdio_phy_start_aneg(struct mii_phy *phy,
static int emac_mdio_setup_aneg(struct mii_phy *phy, u32 advertise)
{
struct net_device *ndev = phy->dev;
- struct emac_instance *dev = netdev_priv(ndev);
phy->autoneg = AUTONEG_ENABLE;
phy->advertising = advertise;
- return emac_mdio_phy_start_aneg(phy, dev->phy_dev);
+ return emac_mdio_phy_start_aneg(phy, ndev->phydev);
}
static int emac_mdio_setup_forced(struct mii_phy *phy, int speed, int fd)
{
struct net_device *ndev = phy->dev;
- struct emac_instance *dev = netdev_priv(ndev);
phy->autoneg = AUTONEG_DISABLE;
phy->speed = speed;
phy->duplex = fd;
- return emac_mdio_phy_start_aneg(phy, dev->phy_dev);
+ return emac_mdio_phy_start_aneg(phy, ndev->phydev);
}
static int emac_mdio_poll_link(struct mii_phy *phy)
@@ -2534,20 +2532,19 @@ static int emac_mdio_poll_link(struct mii_phy *phy)
struct emac_instance *dev = netdev_priv(ndev);
int res;
- res = phy_read_status(dev->phy_dev);
+ res = phy_read_status(ndev->phydev);
if (res) {
dev_err(&dev->ofdev->dev, "link update failed (%d).", res);
return ethtool_op_get_link(ndev);
}
- return dev->phy_dev->link;
+ return ndev->phydev->link;
}
static int emac_mdio_read_link(struct mii_phy *phy)
{
struct net_device *ndev = phy->dev;
- struct emac_instance *dev = netdev_priv(ndev);
- struct phy_device *phy_dev = dev->phy_dev;
+ struct phy_device *phy_dev = ndev->phydev;
int res;
res = phy_read_status(phy_dev);
@@ -2564,10 +2561,9 @@ static int emac_mdio_read_link(struct mii_phy *phy)
static int emac_mdio_init_phy(struct mii_phy *phy)
{
struct net_device *ndev = phy->dev;
- struct emac_instance *dev = netdev_priv(ndev);
- phy_start(dev->phy_dev);
- return phy_init_hw(dev->phy_dev);
+ phy_start(ndev->phydev);
+ return phy_init_hw(ndev->phydev);
}
static const struct mii_phy_ops emac_dt_mdio_phy_ops = {
@@ -2622,26 +2618,28 @@ static int emac_dt_mdio_probe(struct emac_instance *dev)
static int emac_dt_phy_connect(struct emac_instance *dev,
struct device_node *phy_handle)
{
+ struct phy_device *phy_dev;
+
dev->phy.def = devm_kzalloc(&dev->ofdev->dev, sizeof(*dev->phy.def),
GFP_KERNEL);
if (!dev->phy.def)
return -ENOMEM;
- dev->phy_dev = of_phy_connect(dev->ndev, phy_handle, &emac_adjust_link,
+ phy_dev = of_phy_connect(dev->ndev, phy_handle, &emac_adjust_link,
0, dev->phy_mode);
- if (!dev->phy_dev) {
+ if (!phy_dev) {
dev_err(&dev->ofdev->dev, "failed to connect to PHY.\n");
return -ENODEV;
}
- dev->phy.def->phy_id = dev->phy_dev->drv->phy_id;
- dev->phy.def->phy_id_mask = dev->phy_dev->drv->phy_id_mask;
- dev->phy.def->name = dev->phy_dev->drv->name;
+ dev->phy.def->phy_id = phy_dev->drv->phy_id;
+ dev->phy.def->phy_id_mask = phy_dev->drv->phy_id_mask;
+ dev->phy.def->name = phy_dev->drv->name;
dev->phy.def->ops = &emac_dt_mdio_phy_ops;
ethtool_convert_link_mode_to_legacy_u32(&dev->phy.features,
- dev->phy_dev->supported);
- dev->phy.address = dev->phy_dev->mdio.addr;
- dev->phy.mode = dev->phy_dev->interface;
+ phy_dev->supported);
+ dev->phy.address = phy_dev->mdio.addr;
+ dev->phy.mode = phy_dev->interface;
return 0;
}
@@ -2695,11 +2693,11 @@ static int emac_init_phy(struct emac_instance *dev)
return res;
res = of_phy_register_fixed_link(np);
- dev->phy_dev = of_phy_find_device(np);
- if (res || !dev->phy_dev)
+ ndev->phydev = of_phy_find_device(np);
+ if (res || !ndev->phydev)
return res ? res : -EINVAL;
emac_adjust_link(dev->ndev);
- put_device(&dev->phy_dev->mdio.dev);
+ put_device(&ndev->phydev->mdio.dev);
}
return 0;
}
@@ -3254,9 +3252,6 @@ static void emac_remove(struct platform_device *ofdev)
if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))
zmii_detach(dev->zmii_dev, dev->zmii_port);
- if (dev->phy_dev)
- phy_disconnect(dev->phy_dev);
-
busy_phy_map &= ~(1 << dev->phy.address);
DBG(dev, "busy_phy_map now %#x" NL, busy_phy_map);
diff --git a/drivers/net/ethernet/ibm/emac/core.h b/drivers/net/ethernet/ibm/emac/core.h
index f4bd4cd8ac4a..b820a4f6e8c7 100644
--- a/drivers/net/ethernet/ibm/emac/core.h
+++ b/drivers/net/ethernet/ibm/emac/core.h
@@ -188,9 +188,6 @@ struct emac_instance {
struct emac_instance *mdio_instance;
struct mutex mdio_lock;
- /* Device-tree based phy configuration */
- struct phy_device *phy_dev;
-
/* ZMII infos if any */
u32 zmii_ph;
u32 zmii_port;
--
2.46.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv3 net-next 7/9] net: ibm: emac: replace of_get_property
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
` (5 preceding siblings ...)
2024-09-05 20:15 ` [PATCHv3 net-next 6/9] net: ibm: emac: use netdev's phydev directly Rosen Penev
@ 2024-09-05 20:15 ` Rosen Penev
2024-09-05 21:22 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 8/9] net: ibm: emac: remove all waiting code Rosen Penev
2024-09-05 20:15 ` [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq Rosen Penev
8 siblings, 1 reply; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:15 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
of_property_read_u32 can be used.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/core.c | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index cda368701ae4..f4126a1f1fff 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -2444,15 +2444,14 @@ static int emac_wait_deps(struct emac_instance *dev)
static int emac_read_uint_prop(struct device_node *np, const char *name,
u32 *val, int fatal)
{
- int len;
- const u32 *prop = of_get_property(np, name, &len);
- if (prop == NULL || len < sizeof(u32)) {
+ int err;
+
+ err = of_property_read_u32(np, name, val);
+ if (err) {
if (fatal)
- printk(KERN_ERR "%pOF: missing %s property\n",
- np, name);
- return -ENODEV;
+ pr_err("%pOF: missing %s property", np, name);
+ return err;
}
- *val = *prop;
return 0;
}
@@ -3298,16 +3297,15 @@ static void __init emac_make_bootlist(void)
/* Collect EMACs */
while((np = of_find_all_nodes(np)) != NULL) {
- const u32 *idx;
+ u32 idx;
if (of_match_node(emac_match, np) == NULL)
continue;
if (of_property_read_bool(np, "unused"))
continue;
- idx = of_get_property(np, "cell-index", NULL);
- if (idx == NULL)
+ if (of_property_read_u32(np, "cell-index", &idx))
continue;
- cell_indices[i] = *idx;
+ cell_indices[i] = idx;
emac_boot_list[i++] = of_node_get(np);
if (i >= EMAC_BOOT_LIST_SIZE) {
of_node_put(np);
--
2.46.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv3 net-next 8/9] net: ibm: emac: remove all waiting code
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
` (6 preceding siblings ...)
2024-09-05 20:15 ` [PATCHv3 net-next 7/9] net: ibm: emac: replace of_get_property Rosen Penev
@ 2024-09-05 20:15 ` Rosen Penev
2024-09-05 20:15 ` [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq Rosen Penev
8 siblings, 0 replies; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:15 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
EPROBE_DEFER, which probably wasn't available when this driver was
written, can be used instead of waiting manually.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/core.c | 55 ++++------------------------
1 file changed, 7 insertions(+), 48 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index f4126a1f1fff..c643e99e77d9 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -32,7 +32,6 @@
#include <linux/ethtool.h>
#include <linux/mii.h>
#include <linux/bitops.h>
-#include <linux/workqueue.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -96,11 +95,6 @@ MODULE_LICENSE("GPL");
static u32 busy_phy_map;
static DEFINE_MUTEX(emac_phy_map_lock);
-/* This is the wait queue used to wait on any event related to probe, that
- * is discovery of MALs, other EMACs, ZMII/RGMIIs, etc...
- */
-static DECLARE_WAIT_QUEUE_HEAD(emac_probe_wait);
-
/* Having stable interface names is a doomed idea. However, it would be nice
* if we didn't have completely random interface names at boot too :-) It's
* just a matter of making everybody's life easier. Since we are doing
@@ -116,9 +110,6 @@ static DECLARE_WAIT_QUEUE_HEAD(emac_probe_wait);
#define EMAC_BOOT_LIST_SIZE 4
static struct device_node *emac_boot_list[EMAC_BOOT_LIST_SIZE];
-/* How long should I wait for dependent devices ? */
-#define EMAC_PROBE_DEP_TIMEOUT (HZ * 5)
-
/* I don't want to litter system log with timeout errors
* when we have brain-damaged PHY.
*/
@@ -973,8 +964,6 @@ static void __emac_set_multicast_list(struct emac_instance *dev)
* we need is just to stop RX channel. This seems to work on all
* tested SoCs. --ebs
*
- * If we need the full reset, we might just trigger the workqueue
- * and do it async... a bit nasty but should work --BenH
*/
dev->mcast_pending = 0;
emac_rx_disable(dev);
@@ -2378,7 +2367,9 @@ static int emac_check_deps(struct emac_instance *dev,
if (deps[i].drvdata != NULL)
there++;
}
- return there == EMAC_DEP_COUNT;
+ if (there != EMAC_DEP_COUNT)
+ return -EPROBE_DEFER;
+ return 0;
}
static void emac_put_deps(struct emac_instance *dev)
@@ -2390,19 +2381,6 @@ static void emac_put_deps(struct emac_instance *dev)
platform_device_put(dev->tah_dev);
}
-static int emac_of_bus_notify(struct notifier_block *nb, unsigned long action,
- void *data)
-{
- /* We are only intereted in device addition */
- if (action == BUS_NOTIFY_BOUND_DRIVER)
- wake_up_all(&emac_probe_wait);
- return 0;
-}
-
-static struct notifier_block emac_of_bus_notifier = {
- .notifier_call = emac_of_bus_notify
-};
-
static int emac_wait_deps(struct emac_instance *dev)
{
struct emac_depentry deps[EMAC_DEP_COUNT];
@@ -2419,18 +2397,13 @@ static int emac_wait_deps(struct emac_instance *dev)
deps[EMAC_DEP_MDIO_IDX].phandle = dev->mdio_ph;
if (dev->blist && dev->blist > emac_boot_list)
deps[EMAC_DEP_PREV_IDX].phandle = 0xffffffffu;
- bus_register_notifier(&platform_bus_type, &emac_of_bus_notifier);
- wait_event_timeout(emac_probe_wait,
- emac_check_deps(dev, deps),
- EMAC_PROBE_DEP_TIMEOUT);
- bus_unregister_notifier(&platform_bus_type, &emac_of_bus_notifier);
- err = emac_check_deps(dev, deps) ? 0 : -ENODEV;
+ err = emac_check_deps(dev, deps);
for (i = 0; i < EMAC_DEP_COUNT; i++) {
of_node_put(deps[i].node);
if (err)
platform_device_put(deps[i].ofdev);
}
- if (err == 0) {
+ if (!err) {
dev->mal_dev = deps[EMAC_DEP_MAL_IDX].ofdev;
dev->zmii_dev = deps[EMAC_DEP_ZMII_IDX].ofdev;
dev->rgmii_dev = deps[EMAC_DEP_RGMII_IDX].ofdev;
@@ -3084,12 +3057,8 @@ static int emac_probe(struct platform_device *ofdev)
/* Wait for dependent devices */
err = emac_wait_deps(dev);
- if (err) {
- printk(KERN_ERR
- "%pOF: Timeout waiting for dependent devices\n", np);
- /* display more info about what's missing ? */
+ if (err)
goto err_irq_unmap;
- }
dev->mal = platform_get_drvdata(dev->mal_dev);
if (dev->mdio_dev != NULL)
dev->mdio_instance = platform_get_drvdata(dev->mdio_dev);
@@ -3189,10 +3158,6 @@ static int emac_probe(struct platform_device *ofdev)
wmb();
platform_set_drvdata(ofdev, dev);
- /* There's a new kid in town ! Let's tell everybody */
- wake_up_all(&emac_probe_wait);
-
-
printk(KERN_INFO "%s: EMAC-%d %pOF, MAC %pM\n",
ndev->name, dev->cell_index, np, ndev->dev_addr);
@@ -3225,14 +3190,8 @@ static int emac_probe(struct platform_device *ofdev)
if (dev->wol_irq)
irq_dispose_mapping(dev->wol_irq);
err_gone:
- /* if we were on the bootlist, remove us as we won't show up and
- * wake up all waiters to notify them in case they were waiting
- * on us
- */
- if (blist) {
+ if (blist)
*blist = NULL;
- wake_up_all(&emac_probe_wait);
- }
return err;
}
--
2.46.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
` (7 preceding siblings ...)
2024-09-05 20:15 ` [PATCHv3 net-next 8/9] net: ibm: emac: remove all waiting code Rosen Penev
@ 2024-09-05 20:15 ` Rosen Penev
2024-09-05 21:27 ` Andrew Lunn
` (2 more replies)
8 siblings, 3 replies; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 20:15 UTC (permalink / raw)
To: netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
This is completely unused.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/core.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
index c643e99e77d9..249cb8e78a4b 100644
--- a/drivers/net/ethernet/ibm/emac/core.c
+++ b/drivers/net/ethernet/ibm/emac/core.c
@@ -3029,9 +3029,8 @@ static int emac_probe(struct platform_device *ofdev)
if (err)
goto err_gone;
- /* Get interrupts. EMAC irq is mandatory, WOL irq is optional */
+ /* Get interrupts. EMAC irq is mandatory */
dev->emac_irq = irq_of_parse_and_map(np, 0);
- dev->wol_irq = irq_of_parse_and_map(np, 1);
if (!dev->emac_irq) {
printk(KERN_ERR "%pOF: Can't map main interrupt\n", np);
err = -ENODEV;
@@ -3186,9 +3185,6 @@ static int emac_probe(struct platform_device *ofdev)
mal_unregister_commac(dev->mal, &dev->commac);
err_rel_deps:
emac_put_deps(dev);
- err_irq_unmap:
- if (dev->wol_irq)
- irq_dispose_mapping(dev->wol_irq);
err_gone:
if (blist)
*blist = NULL;
@@ -3215,9 +3211,6 @@ static void emac_remove(struct platform_device *ofdev)
mal_unregister_commac(dev->mal, &dev->commac);
emac_put_deps(dev);
-
- if (dev->wol_irq)
- irq_dispose_mapping(dev->wol_irq);
}
/* XXX Features in here should be replaced by properties... */
--
2.46.0
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 1/9] net: ibm: emac: use devm for alloc_etherdev
2024-09-05 20:14 ` [PATCHv3 net-next 1/9] net: ibm: emac: use devm for alloc_etherdev Rosen Penev
@ 2024-09-05 21:16 ` Andrew Lunn
0 siblings, 0 replies; 23+ messages in thread
From: Andrew Lunn @ 2024-09-05 21:16 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Thu, Sep 05, 2024 at 01:14:58PM -0700, Rosen Penev wrote:
> Allows to simplify the code slightly. This is safe to do as free_netdev
> gets called last.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 2/9] net: ibm: emac: manage emac_irq with devm
2024-09-05 20:14 ` [PATCHv3 net-next 2/9] net: ibm: emac: manage emac_irq with devm Rosen Penev
@ 2024-09-05 21:17 ` Andrew Lunn
0 siblings, 0 replies; 23+ messages in thread
From: Andrew Lunn @ 2024-09-05 21:17 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Thu, Sep 05, 2024 at 01:14:59PM -0700, Rosen Penev wrote:
> It's the last to go in remove. Safe to let devm handle it.
>
> Also move request_irq to probe for clarity. It's removed in _remove not
> close.
>
> Use dev_err_probe instead of printk. Handles EPROBE_DEFER automatically.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 3/9] net: ibm: emac: use devm for of_iomap
2024-09-05 20:15 ` [PATCHv3 net-next 3/9] net: ibm: emac: use devm for of_iomap Rosen Penev
@ 2024-09-05 21:17 ` Andrew Lunn
0 siblings, 0 replies; 23+ messages in thread
From: Andrew Lunn @ 2024-09-05 21:17 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Thu, Sep 05, 2024 at 01:15:00PM -0700, Rosen Penev wrote:
> Allows removing manual iounmap.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 4/9] net: ibm: emac: remove mii_bus with devm
2024-09-05 20:15 ` [PATCHv3 net-next 4/9] net: ibm: emac: remove mii_bus with devm Rosen Penev
@ 2024-09-05 21:19 ` Andrew Lunn
0 siblings, 0 replies; 23+ messages in thread
From: Andrew Lunn @ 2024-09-05 21:19 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Thu, Sep 05, 2024 at 01:15:01PM -0700, Rosen Penev wrote:
> Switching to devm management of mii_bus allows to remove
> mdiobus_unregister calls and thus avoids needing a mii_bus global struct
> member.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 5/9] net: ibm: emac: use devm for register_netdev
2024-09-05 20:15 ` [PATCHv3 net-next 5/9] net: ibm: emac: use devm for register_netdev Rosen Penev
@ 2024-09-05 21:19 ` Andrew Lunn
0 siblings, 0 replies; 23+ messages in thread
From: Andrew Lunn @ 2024-09-05 21:19 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Thu, Sep 05, 2024 at 01:15:02PM -0700, Rosen Penev wrote:
> Cleans it up automatically. No need to handle manually.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 6/9] net: ibm: emac: use netdev's phydev directly
2024-09-05 20:15 ` [PATCHv3 net-next 6/9] net: ibm: emac: use netdev's phydev directly Rosen Penev
@ 2024-09-05 21:21 ` Andrew Lunn
2024-09-07 19:32 ` Christophe JAILLET
1 sibling, 0 replies; 23+ messages in thread
From: Andrew Lunn @ 2024-09-05 21:21 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Thu, Sep 05, 2024 at 01:15:03PM -0700, Rosen Penev wrote:
> Avoids having to use own struct member.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 7/9] net: ibm: emac: replace of_get_property
2024-09-05 20:15 ` [PATCHv3 net-next 7/9] net: ibm: emac: replace of_get_property Rosen Penev
@ 2024-09-05 21:22 ` Andrew Lunn
0 siblings, 0 replies; 23+ messages in thread
From: Andrew Lunn @ 2024-09-05 21:22 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Thu, Sep 05, 2024 at 01:15:04PM -0700, Rosen Penev wrote:
> of_property_read_u32 can be used.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq
2024-09-05 20:15 ` [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq Rosen Penev
@ 2024-09-05 21:27 ` Andrew Lunn
2024-09-05 22:28 ` Rosen Penev
2024-09-07 18:29 ` kernel test robot
2024-09-07 23:11 ` kernel test robot
2 siblings, 1 reply; 23+ messages in thread
From: Andrew Lunn @ 2024-09-05 21:27 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Thu, Sep 05, 2024 at 01:15:06PM -0700, Rosen Penev wrote:
> This is completely unused.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
Seems reasonable, since there does not appear to be any WoL
support.
However, it might be possible to wire it up? You might then need the
interrupt? This patch could then be reverted if it is actually needed.
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq
2024-09-05 21:27 ` Andrew Lunn
@ 2024-09-05 22:28 ` Rosen Penev
0 siblings, 0 replies; 23+ messages in thread
From: Rosen Penev @ 2024-09-05 22:28 UTC (permalink / raw)
To: Andrew Lunn
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Thu, Sep 5, 2024 at 2:27 PM Andrew Lunn <andrew@lunn.ch> wrote:
>
> On Thu, Sep 05, 2024 at 01:15:06PM -0700, Rosen Penev wrote:
> > This is completely unused.
> >
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
>
> Seems reasonable, since there does not appear to be any WoL
> support.
>
> However, it might be possible to wire it up? You might then need the
> interrupt? This patch could then be reverted if it is actually needed.
I have no idea how to do so. Actually the device I have probably
doesn't support WoL. I'll leave that for someone else to figure out.
>
> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
>
> Andrew
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq
2024-09-05 20:15 ` [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq Rosen Penev
2024-09-05 21:27 ` Andrew Lunn
@ 2024-09-07 18:29 ` kernel test robot
2024-09-07 23:11 ` kernel test robot
2 siblings, 0 replies; 23+ messages in thread
From: kernel test robot @ 2024-09-07 18:29 UTC (permalink / raw)
To: Rosen Penev, netdev
Cc: oe-kbuild-all, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Hi Rosen,
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/Rosen-Penev/net-ibm-emac-use-devm-for-alloc_etherdev/20240906-042738
base: net-next/main
patch link: https://lore.kernel.org/r/20240905201506.12679-10-rosenp%40gmail.com
patch subject: [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq
config: powerpc-redwood_defconfig (https://download.01.org/0day-ci/archive/20240908/202409080218.RmYLjpwK-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 13.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240908/202409080218.RmYLjpwK-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/202409080218.RmYLjpwK-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/net/ethernet/ibm/emac/core.c: In function 'emac_probe':
>> drivers/net/ethernet/ibm/emac/core.c:3060:17: error: label 'err_irq_unmap' used but not defined
3060 | goto err_irq_unmap;
| ^~~~
vim +/err_irq_unmap +3060 drivers/net/ethernet/ibm/emac/core.c
15efc02b2625f1 drivers/net/ibm_newemac/core.c Alexander Beregalov 2009-04-09 2988
fe17dc1e2bae85 drivers/net/ethernet/ibm/emac/core.c Bill Pemberton 2012-12-03 2989 static int emac_probe(struct platform_device *ofdev)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2990 {
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2991 struct net_device *ndev;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2992 struct emac_instance *dev;
61c7a080a5a061 drivers/net/ibm_newemac/core.c Grant Likely 2010-04-13 2993 struct device_node *np = ofdev->dev.of_node;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2994 struct device_node **blist = NULL;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2995 int err, i;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2996
be63c09afe9153 drivers/net/ibm_newemac/core.c Josh Boyer 2008-04-22 2997 /* Skip unused/unwired EMACS. We leave the check for an unused
be63c09afe9153 drivers/net/ibm_newemac/core.c Josh Boyer 2008-04-22 2998 * property here for now, but new flat device trees should set a
be63c09afe9153 drivers/net/ibm_newemac/core.c Josh Boyer 2008-04-22 2999 * status property to "disabled" instead.
be63c09afe9153 drivers/net/ibm_newemac/core.c Josh Boyer 2008-04-22 3000 */
1a87e641d8a50c drivers/net/ethernet/ibm/emac/core.c Rob Herring 2023-03-14 3001 if (of_property_read_bool(np, "unused") || !of_device_is_available(np))
3d722562d73483 drivers/net/ibm_newemac/core.c Hugh Blemings 2007-12-05 3002 return -ENODEV;
3d722562d73483 drivers/net/ibm_newemac/core.c Hugh Blemings 2007-12-05 3003
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3004 /* Find ourselves in the bootlist if we are there */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3005 for (i = 0; i < EMAC_BOOT_LIST_SIZE; i++)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3006 if (emac_boot_list[i] == np)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3007 blist = &emac_boot_list[i];
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3008
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3009 /* Allocate our net_device structure */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3010 err = -ENOMEM;
c7de481bca2013 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3011 ndev = devm_alloc_etherdev(&ofdev->dev, sizeof(struct emac_instance));
41de8d4cff21a2 drivers/net/ethernet/ibm/emac/core.c Joe Perches 2012-01-29 3012 if (!ndev)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3013 goto err_gone;
41de8d4cff21a2 drivers/net/ethernet/ibm/emac/core.c Joe Perches 2012-01-29 3014
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3015 dev = netdev_priv(ndev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3016 dev->ndev = ndev;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3017 dev->ofdev = ofdev;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3018 dev->blist = blist;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3019 SET_NETDEV_DEV(ndev, &ofdev->dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3020
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3021 /* Initialize some embedded data structures */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3022 mutex_init(&dev->mdio_lock);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3023 mutex_init(&dev->link_lock);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3024 spin_lock_init(&dev->lock);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3025 INIT_WORK(&dev->reset_work, emac_reset_work);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3026
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3027 /* Init various config data based on device-tree */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3028 err = emac_init_config(dev);
138b57f0f89387 drivers/net/ethernet/ibm/emac/core.c Christophe Jaillet 2017-08-20 3029 if (err)
c7de481bca2013 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3030 goto err_gone;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3031
cabb2424d4d5d4 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3032 /* Get interrupts. EMAC irq is mandatory */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3033 dev->emac_irq = irq_of_parse_and_map(np, 0);
99c1790e5bbd31 drivers/net/ethernet/ibm/emac/core.c Michael Ellerman 2016-09-10 3034 if (!dev->emac_irq) {
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3035 printk(KERN_ERR "%pOF: Can't map main interrupt\n", np);
138b57f0f89387 drivers/net/ethernet/ibm/emac/core.c Christophe Jaillet 2017-08-20 3036 err = -ENODEV;
c7de481bca2013 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3037 goto err_gone;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3038 }
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3039
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3040 /* Setup error IRQ handler */
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3041 err = devm_request_irq(&ofdev->dev, dev->emac_irq, emac_irq, 0, "EMAC", dev);
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3042 if (err) {
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3043 dev_err_probe(&ofdev->dev, err, "failed to request IRQ %d", dev->emac_irq);
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3044 goto err_gone;
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3045 }
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3046
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3047 ndev->irq = dev->emac_irq;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3048
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3049 /* Map EMAC regs */
138b57f0f89387 drivers/net/ethernet/ibm/emac/core.c Christophe Jaillet 2017-08-20 3050 // TODO : platform_get_resource() and devm_ioremap_resource()
154cc24d587dd8 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3051 dev->emacp = devm_of_iomap(&ofdev->dev, np, 0, NULL);
154cc24d587dd8 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3052 if (!dev->emacp) {
154cc24d587dd8 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3053 err = dev_err_probe(&ofdev->dev, -ENOMEM, "can't map device registers");
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3054 goto err_irq_unmap;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3055 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3056
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3057 /* Wait for dependent devices */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3058 err = emac_wait_deps(dev);
b941327b6eb37f drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3059 if (err)
154cc24d587dd8 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 @3060 goto err_irq_unmap;
bc353832565635 drivers/net/ethernet/ibm/emac/core.c Jingoo Han 2013-09-02 3061 dev->mal = platform_get_drvdata(dev->mal_dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3062 if (dev->mdio_dev != NULL)
bc353832565635 drivers/net/ethernet/ibm/emac/core.c Jingoo Han 2013-09-02 3063 dev->mdio_instance = platform_get_drvdata(dev->mdio_dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3064
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3065 /* Register with MAL */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3066 dev->commac.ops = &emac_commac_ops;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3067 dev->commac.dev = dev;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3068 dev->commac.tx_chan_mask = MAL_CHAN_MASK(dev->mal_tx_chan);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3069 dev->commac.rx_chan_mask = MAL_CHAN_MASK(dev->mal_rx_chan);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3070 err = mal_register_commac(dev->mal, &dev->commac);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3071 if (err) {
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3072 printk(KERN_ERR "%pOF: failed to register with mal %pOF!\n",
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3073 np, dev->mal_dev->dev.of_node);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3074 goto err_rel_deps;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3075 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3076 dev->rx_skb_size = emac_rx_skb_size(ndev->mtu);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3077 dev->rx_sync_size = emac_rx_sync_size(ndev->mtu);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3078
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3079 /* Get pointers to BD rings */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3080 dev->tx_desc =
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3081 dev->mal->bd_virt + mal_tx_bd_offset(dev->mal, dev->mal_tx_chan);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3082 dev->rx_desc =
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3083 dev->mal->bd_virt + mal_rx_bd_offset(dev->mal, dev->mal_rx_chan);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3084
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3085 DBG(dev, "tx_desc %p" NL, dev->tx_desc);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3086 DBG(dev, "rx_desc %p" NL, dev->rx_desc);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3087
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3088 /* Clean rings */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3089 memset(dev->tx_desc, 0, NUM_TX_BUFF * sizeof(struct mal_descriptor));
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3090 memset(dev->rx_desc, 0, NUM_RX_BUFF * sizeof(struct mal_descriptor));
ab9b30cc3ec868 drivers/net/ibm_newemac/core.c Sathya Narayanan 2008-07-01 3091 memset(dev->tx_skb, 0, NUM_TX_BUFF * sizeof(struct sk_buff *));
ab9b30cc3ec868 drivers/net/ibm_newemac/core.c Sathya Narayanan 2008-07-01 3092 memset(dev->rx_skb, 0, NUM_RX_BUFF * sizeof(struct sk_buff *));
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3093
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3094 /* Attach to ZMII, if needed */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3095 if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII) &&
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3096 (err = zmii_attach(dev->zmii_dev, dev->zmii_port, &dev->phy_mode)) != 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3097 goto err_unreg_commac;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3098
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3099 /* Attach to RGMII, if needed */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3100 if (emac_has_feature(dev, EMAC_FTR_HAS_RGMII) &&
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3101 (err = rgmii_attach(dev->rgmii_dev, dev->rgmii_port, dev->phy_mode)) != 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3102 goto err_detach_zmii;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3103
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3104 /* Attach to TAH, if needed */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3105 if (emac_has_feature(dev, EMAC_FTR_HAS_TAH) &&
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3106 (err = tah_attach(dev->tah_dev, dev->tah_port)) != 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3107 goto err_detach_rgmii;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3108
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3109 /* Set some link defaults before we can find out real parameters */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3110 dev->phy.speed = SPEED_100;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3111 dev->phy.duplex = DUPLEX_FULL;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3112 dev->phy.autoneg = AUTONEG_DISABLE;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3113 dev->phy.pause = dev->phy.asym_pause = 0;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3114 dev->stop_timeout = STOP_TIMEOUT_100;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3115 INIT_DELAYED_WORK(&dev->link_work, emac_link_timer);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3116
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3117 /* Some SoCs like APM821xx does not support Half Duplex mode. */
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3118 if (emac_has_feature(dev, EMAC_FTR_APM821XX_NO_HALF_DUPLEX)) {
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3119 dev->phy_feat_exc = (SUPPORTED_1000baseT_Half |
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3120 SUPPORTED_100baseT_Half |
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3121 SUPPORTED_10baseT_Half);
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3122 }
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3123
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3124 /* Find PHY if any */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3125 err = emac_init_phy(dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3126 if (err != 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3127 goto err_detach_tah;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3128
5e4011e2b8032c drivers/net/ibm_newemac/core.c Michał Mirosław 2011-04-17 3129 if (dev->tah_dev) {
5e4011e2b8032c drivers/net/ibm_newemac/core.c Michał Mirosław 2011-04-17 3130 ndev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG;
5e4011e2b8032c drivers/net/ibm_newemac/core.c Michał Mirosław 2011-04-17 3131 ndev->features |= ndev->hw_features | NETIF_F_RXCSUM;
5e4011e2b8032c drivers/net/ibm_newemac/core.c Michał Mirosław 2011-04-17 3132 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3133 ndev->watchdog_timeo = 5 * HZ;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3134 if (emac_phy_supports_gige(dev->phy_mode)) {
15efc02b2625f1 drivers/net/ibm_newemac/core.c Alexander Beregalov 2009-04-09 3135 ndev->netdev_ops = &emac_gige_netdev_ops;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3136 dev->commac.ops = &emac_commac_sg_ops;
15efc02b2625f1 drivers/net/ibm_newemac/core.c Alexander Beregalov 2009-04-09 3137 } else
15efc02b2625f1 drivers/net/ibm_newemac/core.c Alexander Beregalov 2009-04-09 3138 ndev->netdev_ops = &emac_netdev_ops;
7ad24ea4bf620a drivers/net/ethernet/ibm/emac/core.c Wilfried Klaebe 2014-05-11 3139 ndev->ethtool_ops = &emac_ethtool_ops;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3140
3d5d96acfeb9dd drivers/net/ethernet/ibm/emac/core.c Jarod Wilson 2016-10-17 3141 /* MTU range: 46 - 1500 or whatever is in OF */
3d5d96acfeb9dd drivers/net/ethernet/ibm/emac/core.c Jarod Wilson 2016-10-17 3142 ndev->min_mtu = EMAC_MIN_MTU;
3d5d96acfeb9dd drivers/net/ethernet/ibm/emac/core.c Jarod Wilson 2016-10-17 3143 ndev->max_mtu = dev->max_mtu;
3d5d96acfeb9dd drivers/net/ethernet/ibm/emac/core.c Jarod Wilson 2016-10-17 3144
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3145 netif_carrier_off(ndev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3146
19245845d17958 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3147 err = devm_register_netdev(&ofdev->dev, ndev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3148 if (err) {
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3149 printk(KERN_ERR "%pOF: failed to register net device (%d)!\n",
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3150 np, err);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3151 goto err_detach_tah;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3152 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3153
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3154 /* Set our drvdata last as we don't want them visible until we are
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3155 * fully initialized
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3156 */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3157 wmb();
bc353832565635 drivers/net/ethernet/ibm/emac/core.c Jingoo Han 2013-09-02 3158 platform_set_drvdata(ofdev, dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3159
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3160 printk(KERN_INFO "%s: EMAC-%d %pOF, MAC %pM\n",
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3161 ndev->name, dev->cell_index, np, ndev->dev_addr);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3162
78b69921a12568 drivers/net/ethernet/ibm/emac/core.c Christian Lamparter 2017-12-20 3163 if (dev->phy_mode == PHY_INTERFACE_MODE_SGMII)
9e3cb29497561c drivers/net/ibm_newemac/core.c Victor Gallardo 2008-10-01 3164 printk(KERN_NOTICE "%s: in SGMII mode\n", ndev->name);
9e3cb29497561c drivers/net/ibm_newemac/core.c Victor Gallardo 2008-10-01 3165
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3166 if (dev->phy.address >= 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3167 printk("%s: found %s PHY (0x%02x)\n", ndev->name,
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3168 dev->phy.def->name, dev->phy.address);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3169
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3170 /* Life is good */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3171 return 0;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3172
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3173 /* I have a bad feeling about this ... */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3174
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3175 err_detach_tah:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3176 if (emac_has_feature(dev, EMAC_FTR_HAS_TAH))
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3177 tah_detach(dev->tah_dev, dev->tah_port);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3178 err_detach_rgmii:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3179 if (emac_has_feature(dev, EMAC_FTR_HAS_RGMII))
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3180 rgmii_detach(dev->rgmii_dev, dev->rgmii_port);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3181 err_detach_zmii:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3182 if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3183 zmii_detach(dev->zmii_dev, dev->zmii_port);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3184 err_unreg_commac:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3185 mal_unregister_commac(dev->mal, &dev->commac);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3186 err_rel_deps:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3187 emac_put_deps(dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3188 err_gone:
b941327b6eb37f drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3189 if (blist)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3190 *blist = NULL;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3191 return err;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3192 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3193
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 6/9] net: ibm: emac: use netdev's phydev directly
2024-09-05 20:15 ` [PATCHv3 net-next 6/9] net: ibm: emac: use netdev's phydev directly Rosen Penev
2024-09-05 21:21 ` Andrew Lunn
@ 2024-09-07 19:32 ` Christophe JAILLET
2024-09-07 19:58 ` Rosen Penev
1 sibling, 1 reply; 23+ messages in thread
From: Christophe JAILLET @ 2024-09-07 19:32 UTC (permalink / raw)
To: Rosen Penev, netdev
Cc: davem, edumazet, kuba, pabeni, linux-kernel, jacob.e.keller,
horms, sd, chunkeey
Le 05/09/2024 à 22:15, Rosen Penev a écrit :
> Avoids having to use own struct member.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
> drivers/net/ethernet/ibm/emac/core.c | 47 +++++++++++++---------------
> drivers/net/ethernet/ibm/emac/core.h | 3 --
> 2 files changed, 21 insertions(+), 29 deletions(-)
>
> diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
> index e2abda947a51..cda368701ae4 100644
> --- a/drivers/net/ethernet/ibm/emac/core.c
> +++ b/drivers/net/ethernet/ibm/emac/core.c
> @@ -2459,7 +2459,7 @@ static int emac_read_uint_prop(struct device_node *np, const char *name,
> static void emac_adjust_link(struct net_device *ndev)
> {
> struct emac_instance *dev = netdev_priv(ndev);
> - struct phy_device *phy = dev->phy_dev;
> + struct phy_device *phy = ndev->phydev;
>
> dev->phy.autoneg = phy->autoneg;
> dev->phy.speed = phy->speed;
> @@ -2510,22 +2510,20 @@ static int emac_mdio_phy_start_aneg(struct mii_phy *phy,
> static int emac_mdio_setup_aneg(struct mii_phy *phy, u32 advertise)
> {
> struct net_device *ndev = phy->dev;
> - struct emac_instance *dev = netdev_priv(ndev);
>
> phy->autoneg = AUTONEG_ENABLE;
> phy->advertising = advertise;
> - return emac_mdio_phy_start_aneg(phy, dev->phy_dev);
> + return emac_mdio_phy_start_aneg(phy, ndev->phydev);
> }
>
> static int emac_mdio_setup_forced(struct mii_phy *phy, int speed, int fd)
> {
> struct net_device *ndev = phy->dev;
> - struct emac_instance *dev = netdev_priv(ndev);
>
> phy->autoneg = AUTONEG_DISABLE;
> phy->speed = speed;
> phy->duplex = fd;
> - return emac_mdio_phy_start_aneg(phy, dev->phy_dev);
> + return emac_mdio_phy_start_aneg(phy, ndev->phydev);
> }
>
> static int emac_mdio_poll_link(struct mii_phy *phy)
> @@ -2534,20 +2532,19 @@ static int emac_mdio_poll_link(struct mii_phy *phy)
> struct emac_instance *dev = netdev_priv(ndev);
> int res;
>
> - res = phy_read_status(dev->phy_dev);
> + res = phy_read_status(ndev->phydev);
> if (res) {
> dev_err(&dev->ofdev->dev, "link update failed (%d).", res);
> return ethtool_op_get_link(ndev);
> }
>
> - return dev->phy_dev->link;
> + return ndev->phydev->link;
> }
>
> static int emac_mdio_read_link(struct mii_phy *phy)
> {
> struct net_device *ndev = phy->dev;
> - struct emac_instance *dev = netdev_priv(ndev);
> - struct phy_device *phy_dev = dev->phy_dev;
> + struct phy_device *phy_dev = ndev->phydev;
> int res;
>
> res = phy_read_status(phy_dev);
> @@ -2564,10 +2561,9 @@ static int emac_mdio_read_link(struct mii_phy *phy)
> static int emac_mdio_init_phy(struct mii_phy *phy)
> {
> struct net_device *ndev = phy->dev;
> - struct emac_instance *dev = netdev_priv(ndev);
>
> - phy_start(dev->phy_dev);
> - return phy_init_hw(dev->phy_dev);
> + phy_start(ndev->phydev);
> + return phy_init_hw(ndev->phydev);
> }
>
> static const struct mii_phy_ops emac_dt_mdio_phy_ops = {
> @@ -2622,26 +2618,28 @@ static int emac_dt_mdio_probe(struct emac_instance *dev)
> static int emac_dt_phy_connect(struct emac_instance *dev,
> struct device_node *phy_handle)
> {
> + struct phy_device *phy_dev;
> +
> dev->phy.def = devm_kzalloc(&dev->ofdev->dev, sizeof(*dev->phy.def),
> GFP_KERNEL);
> if (!dev->phy.def)
> return -ENOMEM;
>
> - dev->phy_dev = of_phy_connect(dev->ndev, phy_handle, &emac_adjust_link,
> + phy_dev = of_phy_connect(dev->ndev, phy_handle, &emac_adjust_link,
> 0, dev->phy_mode);
> - if (!dev->phy_dev) {
> + if (!phy_dev) {
> dev_err(&dev->ofdev->dev, "failed to connect to PHY.\n");
> return -ENODEV;
> }
>
> - dev->phy.def->phy_id = dev->phy_dev->drv->phy_id;
> - dev->phy.def->phy_id_mask = dev->phy_dev->drv->phy_id_mask;
> - dev->phy.def->name = dev->phy_dev->drv->name;
> + dev->phy.def->phy_id = phy_dev->drv->phy_id;
> + dev->phy.def->phy_id_mask = phy_dev->drv->phy_id_mask;
> + dev->phy.def->name = phy_dev->drv->name;
> dev->phy.def->ops = &emac_dt_mdio_phy_ops;
> ethtool_convert_link_mode_to_legacy_u32(&dev->phy.features,
> - dev->phy_dev->supported);
> - dev->phy.address = dev->phy_dev->mdio.addr;
> - dev->phy.mode = dev->phy_dev->interface;
> + phy_dev->supported);
> + dev->phy.address = phy_dev->mdio.addr;
> + dev->phy.mode = phy_dev->interface;
> return 0;
> }
>
> @@ -2695,11 +2693,11 @@ static int emac_init_phy(struct emac_instance *dev)
> return res;
>
> res = of_phy_register_fixed_link(np);
> - dev->phy_dev = of_phy_find_device(np);
> - if (res || !dev->phy_dev)
> + ndev->phydev = of_phy_find_device(np);
> + if (res || !ndev->phydev)
> return res ? res : -EINVAL;
> emac_adjust_link(dev->ndev);
> - put_device(&dev->phy_dev->mdio.dev);
> + put_device(&ndev->phydev->mdio.dev);
> }
> return 0;
> }
> @@ -3254,9 +3252,6 @@ static void emac_remove(struct platform_device *ofdev)
> if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))
> zmii_detach(dev->zmii_dev, dev->zmii_port);
>
> - if (dev->phy_dev)
> - phy_disconnect(dev->phy_dev);
> -
Hi,
I guess that this call was to balance the of_phy_connect() from
emac_dt_phy_connect().
Is it ok to just remove this phy_disconnect()?
CJ
> busy_phy_map &= ~(1 << dev->phy.address);
> DBG(dev, "busy_phy_map now %#x" NL, busy_phy_map);
>
> diff --git a/drivers/net/ethernet/ibm/emac/core.h b/drivers/net/ethernet/ibm/emac/core.h
> index f4bd4cd8ac4a..b820a4f6e8c7 100644
> --- a/drivers/net/ethernet/ibm/emac/core.h
> +++ b/drivers/net/ethernet/ibm/emac/core.h
> @@ -188,9 +188,6 @@ struct emac_instance {
> struct emac_instance *mdio_instance;
> struct mutex mdio_lock;
>
> - /* Device-tree based phy configuration */
> - struct phy_device *phy_dev;
> -
> /* ZMII infos if any */
> u32 zmii_ph;
> u32 zmii_port;
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 6/9] net: ibm: emac: use netdev's phydev directly
2024-09-07 19:32 ` Christophe JAILLET
@ 2024-09-07 19:58 ` Rosen Penev
0 siblings, 0 replies; 23+ messages in thread
From: Rosen Penev @ 2024-09-07 19:58 UTC (permalink / raw)
To: Christophe JAILLET
Cc: netdev, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Sat, Sep 7, 2024 at 12:32 PM Christophe JAILLET
<christophe.jaillet@wanadoo.fr> wrote:
>
> Le 05/09/2024 à 22:15, Rosen Penev a écrit :
> > Avoids having to use own struct member.
> >
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > ---
> > drivers/net/ethernet/ibm/emac/core.c | 47 +++++++++++++---------------
> > drivers/net/ethernet/ibm/emac/core.h | 3 --
> > 2 files changed, 21 insertions(+), 29 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/ibm/emac/core.c b/drivers/net/ethernet/ibm/emac/core.c
> > index e2abda947a51..cda368701ae4 100644
> > --- a/drivers/net/ethernet/ibm/emac/core.c
> > +++ b/drivers/net/ethernet/ibm/emac/core.c
> > @@ -2459,7 +2459,7 @@ static int emac_read_uint_prop(struct device_node *np, const char *name,
> > static void emac_adjust_link(struct net_device *ndev)
> > {
> > struct emac_instance *dev = netdev_priv(ndev);
> > - struct phy_device *phy = dev->phy_dev;
> > + struct phy_device *phy = ndev->phydev;
> >
> > dev->phy.autoneg = phy->autoneg;
> > dev->phy.speed = phy->speed;
> > @@ -2510,22 +2510,20 @@ static int emac_mdio_phy_start_aneg(struct mii_phy *phy,
> > static int emac_mdio_setup_aneg(struct mii_phy *phy, u32 advertise)
> > {
> > struct net_device *ndev = phy->dev;
> > - struct emac_instance *dev = netdev_priv(ndev);
> >
> > phy->autoneg = AUTONEG_ENABLE;
> > phy->advertising = advertise;
> > - return emac_mdio_phy_start_aneg(phy, dev->phy_dev);
> > + return emac_mdio_phy_start_aneg(phy, ndev->phydev);
> > }
> >
> > static int emac_mdio_setup_forced(struct mii_phy *phy, int speed, int fd)
> > {
> > struct net_device *ndev = phy->dev;
> > - struct emac_instance *dev = netdev_priv(ndev);
> >
> > phy->autoneg = AUTONEG_DISABLE;
> > phy->speed = speed;
> > phy->duplex = fd;
> > - return emac_mdio_phy_start_aneg(phy, dev->phy_dev);
> > + return emac_mdio_phy_start_aneg(phy, ndev->phydev);
> > }
> >
> > static int emac_mdio_poll_link(struct mii_phy *phy)
> > @@ -2534,20 +2532,19 @@ static int emac_mdio_poll_link(struct mii_phy *phy)
> > struct emac_instance *dev = netdev_priv(ndev);
> > int res;
> >
> > - res = phy_read_status(dev->phy_dev);
> > + res = phy_read_status(ndev->phydev);
> > if (res) {
> > dev_err(&dev->ofdev->dev, "link update failed (%d).", res);
> > return ethtool_op_get_link(ndev);
> > }
> >
> > - return dev->phy_dev->link;
> > + return ndev->phydev->link;
> > }
> >
> > static int emac_mdio_read_link(struct mii_phy *phy)
> > {
> > struct net_device *ndev = phy->dev;
> > - struct emac_instance *dev = netdev_priv(ndev);
> > - struct phy_device *phy_dev = dev->phy_dev;
> > + struct phy_device *phy_dev = ndev->phydev;
> > int res;
> >
> > res = phy_read_status(phy_dev);
> > @@ -2564,10 +2561,9 @@ static int emac_mdio_read_link(struct mii_phy *phy)
> > static int emac_mdio_init_phy(struct mii_phy *phy)
> > {
> > struct net_device *ndev = phy->dev;
> > - struct emac_instance *dev = netdev_priv(ndev);
> >
> > - phy_start(dev->phy_dev);
> > - return phy_init_hw(dev->phy_dev);
> > + phy_start(ndev->phydev);
> > + return phy_init_hw(ndev->phydev);
> > }
> >
> > static const struct mii_phy_ops emac_dt_mdio_phy_ops = {
> > @@ -2622,26 +2618,28 @@ static int emac_dt_mdio_probe(struct emac_instance *dev)
> > static int emac_dt_phy_connect(struct emac_instance *dev,
> > struct device_node *phy_handle)
> > {
> > + struct phy_device *phy_dev;
> > +
> > dev->phy.def = devm_kzalloc(&dev->ofdev->dev, sizeof(*dev->phy.def),
> > GFP_KERNEL);
> > if (!dev->phy.def)
> > return -ENOMEM;
> >
> > - dev->phy_dev = of_phy_connect(dev->ndev, phy_handle, &emac_adjust_link,
> > + phy_dev = of_phy_connect(dev->ndev, phy_handle, &emac_adjust_link,
> > 0, dev->phy_mode);
> > - if (!dev->phy_dev) {
> > + if (!phy_dev) {
> > dev_err(&dev->ofdev->dev, "failed to connect to PHY.\n");
> > return -ENODEV;
> > }
> >
> > - dev->phy.def->phy_id = dev->phy_dev->drv->phy_id;
> > - dev->phy.def->phy_id_mask = dev->phy_dev->drv->phy_id_mask;
> > - dev->phy.def->name = dev->phy_dev->drv->name;
> > + dev->phy.def->phy_id = phy_dev->drv->phy_id;
> > + dev->phy.def->phy_id_mask = phy_dev->drv->phy_id_mask;
> > + dev->phy.def->name = phy_dev->drv->name;
> > dev->phy.def->ops = &emac_dt_mdio_phy_ops;
> > ethtool_convert_link_mode_to_legacy_u32(&dev->phy.features,
> > - dev->phy_dev->supported);
> > - dev->phy.address = dev->phy_dev->mdio.addr;
> > - dev->phy.mode = dev->phy_dev->interface;
> > + phy_dev->supported);
> > + dev->phy.address = phy_dev->mdio.addr;
> > + dev->phy.mode = phy_dev->interface;
> > return 0;
> > }
> >
> > @@ -2695,11 +2693,11 @@ static int emac_init_phy(struct emac_instance *dev)
> > return res;
> >
> > res = of_phy_register_fixed_link(np);
> > - dev->phy_dev = of_phy_find_device(np);
> > - if (res || !dev->phy_dev)
> > + ndev->phydev = of_phy_find_device(np);
> > + if (res || !ndev->phydev)
> > return res ? res : -EINVAL;
> > emac_adjust_link(dev->ndev);
> > - put_device(&dev->phy_dev->mdio.dev);
> > + put_device(&ndev->phydev->mdio.dev);
> > }
> > return 0;
> > }
> > @@ -3254,9 +3252,6 @@ static void emac_remove(struct platform_device *ofdev)
> > if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))
> > zmii_detach(dev->zmii_dev, dev->zmii_port);
> >
> > - if (dev->phy_dev)
> > - phy_disconnect(dev->phy_dev);
> > -
>
> Hi,
>
> I guess that this call was to balance the of_phy_connect() from
> emac_dt_phy_connect().
>
> Is it ok to just remove this phy_disconnect()?
I would think free or unregister_netdev handles it given that phydev
is a member of netdev.
On a separate note, A lot of drivers seem to do this in open/close as
opposed to probe/remove.
>
> CJ
>
> > busy_phy_map &= ~(1 << dev->phy.address);
> > DBG(dev, "busy_phy_map now %#x" NL, busy_phy_map);
> >
> > diff --git a/drivers/net/ethernet/ibm/emac/core.h b/drivers/net/ethernet/ibm/emac/core.h
> > index f4bd4cd8ac4a..b820a4f6e8c7 100644
> > --- a/drivers/net/ethernet/ibm/emac/core.h
> > +++ b/drivers/net/ethernet/ibm/emac/core.h
> > @@ -188,9 +188,6 @@ struct emac_instance {
> > struct emac_instance *mdio_instance;
> > struct mutex mdio_lock;
> >
> > - /* Device-tree based phy configuration */
> > - struct phy_device *phy_dev;
> > -
> > /* ZMII infos if any */
> > u32 zmii_ph;
> > u32 zmii_port;
>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq
2024-09-05 20:15 ` [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq Rosen Penev
2024-09-05 21:27 ` Andrew Lunn
2024-09-07 18:29 ` kernel test robot
@ 2024-09-07 23:11 ` kernel test robot
2 siblings, 0 replies; 23+ messages in thread
From: kernel test robot @ 2024-09-07 23:11 UTC (permalink / raw)
To: Rosen Penev, netdev
Cc: llvm, oe-kbuild-all, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Hi Rosen,
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/Rosen-Penev/net-ibm-emac-use-devm-for-alloc_etherdev/20240906-042738
base: net-next/main
patch link: https://lore.kernel.org/r/20240905201506.12679-10-rosenp%40gmail.com
patch subject: [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq
config: powerpc-ebony_defconfig (https://download.01.org/0day-ci/archive/20240908/202409080648.nbPtsrf6-lkp@intel.com/config)
compiler: clang version 20.0.0git (https://github.com/llvm/llvm-project 05f5a91d00b02f4369f46d076411c700755ae041)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240908/202409080648.nbPtsrf6-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/202409080648.nbPtsrf6-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/net/ethernet/ibm/emac/core.c:28:
In file included from include/linux/pci.h:38:
In file included from include/linux/interrupt.h:11:
In file included from include/linux/hardirq.h:11:
In file included from arch/powerpc/include/asm/hardirq.h:6:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:14:
In file included from arch/powerpc/include/asm/io.h:24:
In file included from include/linux/mm.h:2228:
include/linux/vmstat.h:517:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
517 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
>> drivers/net/ethernet/ibm/emac/core.c:3054:8: error: use of undeclared label 'err_irq_unmap'
3054 | goto err_irq_unmap;
| ^
1 warning and 1 error generated.
vim +/err_irq_unmap +3054 drivers/net/ethernet/ibm/emac/core.c
15efc02b2625f1 drivers/net/ibm_newemac/core.c Alexander Beregalov 2009-04-09 2988
fe17dc1e2bae85 drivers/net/ethernet/ibm/emac/core.c Bill Pemberton 2012-12-03 2989 static int emac_probe(struct platform_device *ofdev)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2990 {
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2991 struct net_device *ndev;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2992 struct emac_instance *dev;
61c7a080a5a061 drivers/net/ibm_newemac/core.c Grant Likely 2010-04-13 2993 struct device_node *np = ofdev->dev.of_node;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2994 struct device_node **blist = NULL;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2995 int err, i;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 2996
be63c09afe9153 drivers/net/ibm_newemac/core.c Josh Boyer 2008-04-22 2997 /* Skip unused/unwired EMACS. We leave the check for an unused
be63c09afe9153 drivers/net/ibm_newemac/core.c Josh Boyer 2008-04-22 2998 * property here for now, but new flat device trees should set a
be63c09afe9153 drivers/net/ibm_newemac/core.c Josh Boyer 2008-04-22 2999 * status property to "disabled" instead.
be63c09afe9153 drivers/net/ibm_newemac/core.c Josh Boyer 2008-04-22 3000 */
1a87e641d8a50c drivers/net/ethernet/ibm/emac/core.c Rob Herring 2023-03-14 3001 if (of_property_read_bool(np, "unused") || !of_device_is_available(np))
3d722562d73483 drivers/net/ibm_newemac/core.c Hugh Blemings 2007-12-05 3002 return -ENODEV;
3d722562d73483 drivers/net/ibm_newemac/core.c Hugh Blemings 2007-12-05 3003
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3004 /* Find ourselves in the bootlist if we are there */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3005 for (i = 0; i < EMAC_BOOT_LIST_SIZE; i++)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3006 if (emac_boot_list[i] == np)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3007 blist = &emac_boot_list[i];
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3008
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3009 /* Allocate our net_device structure */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3010 err = -ENOMEM;
c7de481bca2013 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3011 ndev = devm_alloc_etherdev(&ofdev->dev, sizeof(struct emac_instance));
41de8d4cff21a2 drivers/net/ethernet/ibm/emac/core.c Joe Perches 2012-01-29 3012 if (!ndev)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3013 goto err_gone;
41de8d4cff21a2 drivers/net/ethernet/ibm/emac/core.c Joe Perches 2012-01-29 3014
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3015 dev = netdev_priv(ndev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3016 dev->ndev = ndev;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3017 dev->ofdev = ofdev;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3018 dev->blist = blist;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3019 SET_NETDEV_DEV(ndev, &ofdev->dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3020
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3021 /* Initialize some embedded data structures */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3022 mutex_init(&dev->mdio_lock);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3023 mutex_init(&dev->link_lock);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3024 spin_lock_init(&dev->lock);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3025 INIT_WORK(&dev->reset_work, emac_reset_work);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3026
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3027 /* Init various config data based on device-tree */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3028 err = emac_init_config(dev);
138b57f0f89387 drivers/net/ethernet/ibm/emac/core.c Christophe Jaillet 2017-08-20 3029 if (err)
c7de481bca2013 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3030 goto err_gone;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3031
cabb2424d4d5d4 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3032 /* Get interrupts. EMAC irq is mandatory */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3033 dev->emac_irq = irq_of_parse_and_map(np, 0);
99c1790e5bbd31 drivers/net/ethernet/ibm/emac/core.c Michael Ellerman 2016-09-10 3034 if (!dev->emac_irq) {
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3035 printk(KERN_ERR "%pOF: Can't map main interrupt\n", np);
138b57f0f89387 drivers/net/ethernet/ibm/emac/core.c Christophe Jaillet 2017-08-20 3036 err = -ENODEV;
c7de481bca2013 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3037 goto err_gone;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3038 }
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3039
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3040 /* Setup error IRQ handler */
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3041 err = devm_request_irq(&ofdev->dev, dev->emac_irq, emac_irq, 0, "EMAC", dev);
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3042 if (err) {
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3043 dev_err_probe(&ofdev->dev, err, "failed to request IRQ %d", dev->emac_irq);
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3044 goto err_gone;
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3045 }
55b3f1525a5443 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3046
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3047 ndev->irq = dev->emac_irq;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3048
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3049 /* Map EMAC regs */
138b57f0f89387 drivers/net/ethernet/ibm/emac/core.c Christophe Jaillet 2017-08-20 3050 // TODO : platform_get_resource() and devm_ioremap_resource()
154cc24d587dd8 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3051 dev->emacp = devm_of_iomap(&ofdev->dev, np, 0, NULL);
154cc24d587dd8 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3052 if (!dev->emacp) {
154cc24d587dd8 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3053 err = dev_err_probe(&ofdev->dev, -ENOMEM, "can't map device registers");
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 @3054 goto err_irq_unmap;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3055 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3056
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3057 /* Wait for dependent devices */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3058 err = emac_wait_deps(dev);
b941327b6eb37f drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3059 if (err)
154cc24d587dd8 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3060 goto err_irq_unmap;
bc353832565635 drivers/net/ethernet/ibm/emac/core.c Jingoo Han 2013-09-02 3061 dev->mal = platform_get_drvdata(dev->mal_dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3062 if (dev->mdio_dev != NULL)
bc353832565635 drivers/net/ethernet/ibm/emac/core.c Jingoo Han 2013-09-02 3063 dev->mdio_instance = platform_get_drvdata(dev->mdio_dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3064
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3065 /* Register with MAL */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3066 dev->commac.ops = &emac_commac_ops;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3067 dev->commac.dev = dev;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3068 dev->commac.tx_chan_mask = MAL_CHAN_MASK(dev->mal_tx_chan);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3069 dev->commac.rx_chan_mask = MAL_CHAN_MASK(dev->mal_rx_chan);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3070 err = mal_register_commac(dev->mal, &dev->commac);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3071 if (err) {
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3072 printk(KERN_ERR "%pOF: failed to register with mal %pOF!\n",
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3073 np, dev->mal_dev->dev.of_node);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3074 goto err_rel_deps;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3075 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3076 dev->rx_skb_size = emac_rx_skb_size(ndev->mtu);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3077 dev->rx_sync_size = emac_rx_sync_size(ndev->mtu);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3078
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3079 /* Get pointers to BD rings */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3080 dev->tx_desc =
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3081 dev->mal->bd_virt + mal_tx_bd_offset(dev->mal, dev->mal_tx_chan);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3082 dev->rx_desc =
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3083 dev->mal->bd_virt + mal_rx_bd_offset(dev->mal, dev->mal_rx_chan);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3084
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3085 DBG(dev, "tx_desc %p" NL, dev->tx_desc);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3086 DBG(dev, "rx_desc %p" NL, dev->rx_desc);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3087
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3088 /* Clean rings */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3089 memset(dev->tx_desc, 0, NUM_TX_BUFF * sizeof(struct mal_descriptor));
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3090 memset(dev->rx_desc, 0, NUM_RX_BUFF * sizeof(struct mal_descriptor));
ab9b30cc3ec868 drivers/net/ibm_newemac/core.c Sathya Narayanan 2008-07-01 3091 memset(dev->tx_skb, 0, NUM_TX_BUFF * sizeof(struct sk_buff *));
ab9b30cc3ec868 drivers/net/ibm_newemac/core.c Sathya Narayanan 2008-07-01 3092 memset(dev->rx_skb, 0, NUM_RX_BUFF * sizeof(struct sk_buff *));
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3093
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3094 /* Attach to ZMII, if needed */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3095 if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII) &&
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3096 (err = zmii_attach(dev->zmii_dev, dev->zmii_port, &dev->phy_mode)) != 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3097 goto err_unreg_commac;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3098
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3099 /* Attach to RGMII, if needed */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3100 if (emac_has_feature(dev, EMAC_FTR_HAS_RGMII) &&
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3101 (err = rgmii_attach(dev->rgmii_dev, dev->rgmii_port, dev->phy_mode)) != 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3102 goto err_detach_zmii;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3103
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3104 /* Attach to TAH, if needed */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3105 if (emac_has_feature(dev, EMAC_FTR_HAS_TAH) &&
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3106 (err = tah_attach(dev->tah_dev, dev->tah_port)) != 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3107 goto err_detach_rgmii;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3108
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3109 /* Set some link defaults before we can find out real parameters */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3110 dev->phy.speed = SPEED_100;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3111 dev->phy.duplex = DUPLEX_FULL;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3112 dev->phy.autoneg = AUTONEG_DISABLE;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3113 dev->phy.pause = dev->phy.asym_pause = 0;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3114 dev->stop_timeout = STOP_TIMEOUT_100;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3115 INIT_DELAYED_WORK(&dev->link_work, emac_link_timer);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3116
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3117 /* Some SoCs like APM821xx does not support Half Duplex mode. */
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3118 if (emac_has_feature(dev, EMAC_FTR_APM821XX_NO_HALF_DUPLEX)) {
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3119 dev->phy_feat_exc = (SUPPORTED_1000baseT_Half |
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3120 SUPPORTED_100baseT_Half |
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3121 SUPPORTED_10baseT_Half);
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3122 }
ae5d33723e3253 drivers/net/ethernet/ibm/emac/core.c Duc Dang 2012-03-05 3123
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3124 /* Find PHY if any */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3125 err = emac_init_phy(dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3126 if (err != 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3127 goto err_detach_tah;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3128
5e4011e2b8032c drivers/net/ibm_newemac/core.c Michał Mirosław 2011-04-17 3129 if (dev->tah_dev) {
5e4011e2b8032c drivers/net/ibm_newemac/core.c Michał Mirosław 2011-04-17 3130 ndev->hw_features = NETIF_F_IP_CSUM | NETIF_F_SG;
5e4011e2b8032c drivers/net/ibm_newemac/core.c Michał Mirosław 2011-04-17 3131 ndev->features |= ndev->hw_features | NETIF_F_RXCSUM;
5e4011e2b8032c drivers/net/ibm_newemac/core.c Michał Mirosław 2011-04-17 3132 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3133 ndev->watchdog_timeo = 5 * HZ;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3134 if (emac_phy_supports_gige(dev->phy_mode)) {
15efc02b2625f1 drivers/net/ibm_newemac/core.c Alexander Beregalov 2009-04-09 3135 ndev->netdev_ops = &emac_gige_netdev_ops;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3136 dev->commac.ops = &emac_commac_sg_ops;
15efc02b2625f1 drivers/net/ibm_newemac/core.c Alexander Beregalov 2009-04-09 3137 } else
15efc02b2625f1 drivers/net/ibm_newemac/core.c Alexander Beregalov 2009-04-09 3138 ndev->netdev_ops = &emac_netdev_ops;
7ad24ea4bf620a drivers/net/ethernet/ibm/emac/core.c Wilfried Klaebe 2014-05-11 3139 ndev->ethtool_ops = &emac_ethtool_ops;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3140
3d5d96acfeb9dd drivers/net/ethernet/ibm/emac/core.c Jarod Wilson 2016-10-17 3141 /* MTU range: 46 - 1500 or whatever is in OF */
3d5d96acfeb9dd drivers/net/ethernet/ibm/emac/core.c Jarod Wilson 2016-10-17 3142 ndev->min_mtu = EMAC_MIN_MTU;
3d5d96acfeb9dd drivers/net/ethernet/ibm/emac/core.c Jarod Wilson 2016-10-17 3143 ndev->max_mtu = dev->max_mtu;
3d5d96acfeb9dd drivers/net/ethernet/ibm/emac/core.c Jarod Wilson 2016-10-17 3144
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3145 netif_carrier_off(ndev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3146
19245845d17958 drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3147 err = devm_register_netdev(&ofdev->dev, ndev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3148 if (err) {
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3149 printk(KERN_ERR "%pOF: failed to register net device (%d)!\n",
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3150 np, err);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3151 goto err_detach_tah;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3152 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3153
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3154 /* Set our drvdata last as we don't want them visible until we are
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3155 * fully initialized
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3156 */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3157 wmb();
bc353832565635 drivers/net/ethernet/ibm/emac/core.c Jingoo Han 2013-09-02 3158 platform_set_drvdata(ofdev, dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3159
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3160 printk(KERN_INFO "%s: EMAC-%d %pOF, MAC %pM\n",
f7ce91038d5278 drivers/net/ethernet/ibm/emac/core.c Rob Herring 2017-07-18 3161 ndev->name, dev->cell_index, np, ndev->dev_addr);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3162
78b69921a12568 drivers/net/ethernet/ibm/emac/core.c Christian Lamparter 2017-12-20 3163 if (dev->phy_mode == PHY_INTERFACE_MODE_SGMII)
9e3cb29497561c drivers/net/ibm_newemac/core.c Victor Gallardo 2008-10-01 3164 printk(KERN_NOTICE "%s: in SGMII mode\n", ndev->name);
9e3cb29497561c drivers/net/ibm_newemac/core.c Victor Gallardo 2008-10-01 3165
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3166 if (dev->phy.address >= 0)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3167 printk("%s: found %s PHY (0x%02x)\n", ndev->name,
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3168 dev->phy.def->name, dev->phy.address);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3169
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3170 /* Life is good */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3171 return 0;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3172
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3173 /* I have a bad feeling about this ... */
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3174
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3175 err_detach_tah:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3176 if (emac_has_feature(dev, EMAC_FTR_HAS_TAH))
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3177 tah_detach(dev->tah_dev, dev->tah_port);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3178 err_detach_rgmii:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3179 if (emac_has_feature(dev, EMAC_FTR_HAS_RGMII))
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3180 rgmii_detach(dev->rgmii_dev, dev->rgmii_port);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3181 err_detach_zmii:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3182 if (emac_has_feature(dev, EMAC_FTR_HAS_ZMII))
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3183 zmii_detach(dev->zmii_dev, dev->zmii_port);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3184 err_unreg_commac:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3185 mal_unregister_commac(dev->mal, &dev->commac);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3186 err_rel_deps:
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3187 emac_put_deps(dev);
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3188 err_gone:
b941327b6eb37f drivers/net/ethernet/ibm/emac/core.c Rosen Penev 2024-09-05 3189 if (blist)
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3190 *blist = NULL;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3191 return err;
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3192 }
1d3bb996481e11 drivers/net/ibm_newemac/core.c David Gibson 2007-08-23 3193
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2024-09-07 23:12 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-05 20:14 [PATCHv3 net-next 0/9] net: ibm: emac: modernize a bit Rosen Penev
2024-09-05 20:14 ` [PATCHv3 net-next 1/9] net: ibm: emac: use devm for alloc_etherdev Rosen Penev
2024-09-05 21:16 ` Andrew Lunn
2024-09-05 20:14 ` [PATCHv3 net-next 2/9] net: ibm: emac: manage emac_irq with devm Rosen Penev
2024-09-05 21:17 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 3/9] net: ibm: emac: use devm for of_iomap Rosen Penev
2024-09-05 21:17 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 4/9] net: ibm: emac: remove mii_bus with devm Rosen Penev
2024-09-05 21:19 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 5/9] net: ibm: emac: use devm for register_netdev Rosen Penev
2024-09-05 21:19 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 6/9] net: ibm: emac: use netdev's phydev directly Rosen Penev
2024-09-05 21:21 ` Andrew Lunn
2024-09-07 19:32 ` Christophe JAILLET
2024-09-07 19:58 ` Rosen Penev
2024-09-05 20:15 ` [PATCHv3 net-next 7/9] net: ibm: emac: replace of_get_property Rosen Penev
2024-09-05 21:22 ` Andrew Lunn
2024-09-05 20:15 ` [PATCHv3 net-next 8/9] net: ibm: emac: remove all waiting code Rosen Penev
2024-09-05 20:15 ` [PATCHv3 net-next 9/9] net: ibm: emac: get rid of wol_irq Rosen Penev
2024-09-05 21:27 ` Andrew Lunn
2024-09-05 22:28 ` Rosen Penev
2024-09-07 18:29 ` kernel test robot
2024-09-07 23:11 ` kernel test robot
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).