* [PATCH net-next 00/14] ibm: emac: cleanup modules
@ 2024-10-06 2:28 Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 01/14] net: ibm: emac: tah: use devm for kzalloc Rosen Penev
` (14 more replies)
0 siblings, 15 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
The modules are fairly old and as such can benefit from devm management.
All except ZMII tested on a Cisco MX60W. No problems found.
Rosen Penev (14):
net: ibm: emac: tah: use devm for kzalloc
net: ibm: emac: tah: use devm for mutex_init
net: ibm: emac: tah: devm_platform_get_resources
net: ibm: emac: rgmii: use devm for kzalloc
net: ibm: emac: rgmii: use devm for mutex_init
net: ibm: emac: rgmii: devm_platform_get_resource
net: ibm: emac: zmii: use devm for kzalloc
net: ibm: emac: zmii: use devm for mutex_init
net: ibm: emac: zmii: devm_platform_get_resource
net: ibm: emac: mal: use devm for kzalloc
net: ibm: emac: mal: use devm for request_irq
net: ibm: emac: mal: move irq maps down
net: ibm: emac: mal: add dcr_unmap to _remove
net: ibm: emac: mal: move dcr map down
drivers/net/ethernet/ibm/emac/mal.c | 107 ++++++++++----------------
drivers/net/ethernet/ibm/emac/rgmii.c | 49 ++++--------
drivers/net/ethernet/ibm/emac/tah.c | 49 ++++--------
drivers/net/ethernet/ibm/emac/zmii.c | 49 ++++--------
4 files changed, 79 insertions(+), 175 deletions(-)
--
2.46.2
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH net-next 01/14] net: ibm: emac: tah: use devm for kzalloc
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 02/14] net: ibm: emac: tah: use devm for mutex_init Rosen Penev
` (13 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Simplifies the probe function by removing gotos.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/tah.c | 21 ++++++---------------
1 file changed, 6 insertions(+), 15 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/tah.c b/drivers/net/ethernet/ibm/emac/tah.c
index 8407ff83b1d3..03e0a4445569 100644
--- a/drivers/net/ethernet/ibm/emac/tah.c
+++ b/drivers/net/ethernet/ibm/emac/tah.c
@@ -90,28 +90,25 @@ static int tah_probe(struct platform_device *ofdev)
struct device_node *np = ofdev->dev.of_node;
struct tah_instance *dev;
struct resource regs;
- int rc;
- rc = -ENOMEM;
- dev = kzalloc(sizeof(struct tah_instance), GFP_KERNEL);
- if (dev == NULL)
- goto err_gone;
+ dev = devm_kzalloc(&ofdev->dev, sizeof(struct tah_instance),
+ GFP_KERNEL);
+ if (!dev)
+ return -ENOMEM;
mutex_init(&dev->lock);
dev->ofdev = ofdev;
- rc = -ENXIO;
if (of_address_to_resource(np, 0, ®s)) {
printk(KERN_ERR "%pOF: Can't get registers address\n", np);
- goto err_free;
+ return -ENXIO;
}
- rc = -ENOMEM;
dev->base = (struct tah_regs __iomem *)ioremap(regs.start,
sizeof(struct tah_regs));
if (dev->base == NULL) {
printk(KERN_ERR "%pOF: Can't map device registers!\n", np);
- goto err_free;
+ return -ENOMEM;
}
platform_set_drvdata(ofdev, dev);
@@ -123,11 +120,6 @@ static int tah_probe(struct platform_device *ofdev)
wmb();
return 0;
-
- err_free:
- kfree(dev);
- err_gone:
- return rc;
}
static void tah_remove(struct platform_device *ofdev)
@@ -137,7 +129,6 @@ static void tah_remove(struct platform_device *ofdev)
WARN_ON(dev->users != 0);
iounmap(dev->base);
- kfree(dev);
}
static const struct of_device_id tah_match[] =
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 02/14] net: ibm: emac: tah: use devm for mutex_init
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 01/14] net: ibm: emac: tah: use devm for kzalloc Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 03/14] net: ibm: emac: tah: devm_platform_get_resources Rosen Penev
` (12 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
It seems that since inception, this driver never called mutex_destroy in
_remove. Use devm to handle this automatically.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/tah.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/ibm/emac/tah.c b/drivers/net/ethernet/ibm/emac/tah.c
index 03e0a4445569..61f70066acb0 100644
--- a/drivers/net/ethernet/ibm/emac/tah.c
+++ b/drivers/net/ethernet/ibm/emac/tah.c
@@ -90,13 +90,17 @@ static int tah_probe(struct platform_device *ofdev)
struct device_node *np = ofdev->dev.of_node;
struct tah_instance *dev;
struct resource regs;
+ int err;
dev = devm_kzalloc(&ofdev->dev, sizeof(struct tah_instance),
GFP_KERNEL);
if (!dev)
return -ENOMEM;
- mutex_init(&dev->lock);
+ err = devm_mutex_init(&ofdev->dev, &dev->lock);
+ if (err)
+ return err;
+
dev->ofdev = ofdev;
if (of_address_to_resource(np, 0, ®s)) {
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 03/14] net: ibm: emac: tah: devm_platform_get_resources
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 01/14] net: ibm: emac: tah: use devm for kzalloc Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 02/14] net: ibm: emac: tah: use devm for mutex_init Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 04/14] net: ibm: emac: rgmii: use devm for kzalloc Rosen Penev
` (11 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Simplifies the probe function by a bit and allows removing the _remove
function such that devm now handles all cleanup.
printk gets converted to dev_err as np is now gone.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/tah.c | 26 ++++----------------------
1 file changed, 4 insertions(+), 22 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/tah.c b/drivers/net/ethernet/ibm/emac/tah.c
index 61f70066acb0..9e7d79e76a12 100644
--- a/drivers/net/ethernet/ibm/emac/tah.c
+++ b/drivers/net/ethernet/ibm/emac/tah.c
@@ -87,9 +87,7 @@ void *tah_dump_regs(struct platform_device *ofdev, void *buf)
static int tah_probe(struct platform_device *ofdev)
{
- struct device_node *np = ofdev->dev.of_node;
struct tah_instance *dev;
- struct resource regs;
int err;
dev = devm_kzalloc(&ofdev->dev, sizeof(struct tah_instance),
@@ -103,16 +101,10 @@ static int tah_probe(struct platform_device *ofdev)
dev->ofdev = ofdev;
- if (of_address_to_resource(np, 0, ®s)) {
- printk(KERN_ERR "%pOF: Can't get registers address\n", np);
- return -ENXIO;
- }
-
- dev->base = (struct tah_regs __iomem *)ioremap(regs.start,
- sizeof(struct tah_regs));
- if (dev->base == NULL) {
- printk(KERN_ERR "%pOF: Can't map device registers!\n", np);
- return -ENOMEM;
+ dev->base = devm_platform_ioremap_resource(ofdev, 0);
+ if (IS_ERR(dev->base)) {
+ dev_err(&ofdev->dev, "can't map device registers");
+ return PTR_ERR(dev->base);
}
platform_set_drvdata(ofdev, dev);
@@ -126,15 +118,6 @@ static int tah_probe(struct platform_device *ofdev)
return 0;
}
-static void tah_remove(struct platform_device *ofdev)
-{
- struct tah_instance *dev = platform_get_drvdata(ofdev);
-
- WARN_ON(dev->users != 0);
-
- iounmap(dev->base);
-}
-
static const struct of_device_id tah_match[] =
{
{
@@ -153,7 +136,6 @@ static struct platform_driver tah_driver = {
.of_match_table = tah_match,
},
.probe = tah_probe,
- .remove_new = tah_remove,
};
module_platform_driver(tah_driver);
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 04/14] net: ibm: emac: rgmii: use devm for kzalloc
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (2 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 03/14] net: ibm: emac: tah: devm_platform_get_resources Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 05/14] net: ibm: emac: rgmii: use devm for mutex_init Rosen Penev
` (10 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Simplifies the probe function by removing gotos.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/rgmii.c | 21 ++++++---------------
1 file changed, 6 insertions(+), 15 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/rgmii.c b/drivers/net/ethernet/ibm/emac/rgmii.c
index 52f080661f87..8c646a5e5c56 100644
--- a/drivers/net/ethernet/ibm/emac/rgmii.c
+++ b/drivers/net/ethernet/ibm/emac/rgmii.c
@@ -219,28 +219,25 @@ static int rgmii_probe(struct platform_device *ofdev)
struct device_node *np = ofdev->dev.of_node;
struct rgmii_instance *dev;
struct resource regs;
- int rc;
- rc = -ENOMEM;
- dev = kzalloc(sizeof(struct rgmii_instance), GFP_KERNEL);
- if (dev == NULL)
- goto err_gone;
+ dev = devm_kzalloc(&ofdev->dev, sizeof(struct rgmii_instance),
+ GFP_KERNEL);
+ if (!dev)
+ return -ENOMEM;
mutex_init(&dev->lock);
dev->ofdev = ofdev;
- rc = -ENXIO;
if (of_address_to_resource(np, 0, ®s)) {
printk(KERN_ERR "%pOF: Can't get registers address\n", np);
- goto err_free;
+ return -ENXIO;
}
- rc = -ENOMEM;
dev->base = (struct rgmii_regs __iomem *)ioremap(regs.start,
sizeof(struct rgmii_regs));
if (dev->base == NULL) {
printk(KERN_ERR "%pOF: Can't map device registers!\n", np);
- goto err_free;
+ return -ENOMEM;
}
/* Check for RGMII flags */
@@ -266,11 +263,6 @@ static int rgmii_probe(struct platform_device *ofdev)
platform_set_drvdata(ofdev, dev);
return 0;
-
- err_free:
- kfree(dev);
- err_gone:
- return rc;
}
static void rgmii_remove(struct platform_device *ofdev)
@@ -280,7 +272,6 @@ static void rgmii_remove(struct platform_device *ofdev)
WARN_ON(dev->users != 0);
iounmap(dev->base);
- kfree(dev);
}
static const struct of_device_id rgmii_match[] =
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 05/14] net: ibm: emac: rgmii: use devm for mutex_init
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (3 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 04/14] net: ibm: emac: rgmii: use devm for kzalloc Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 06/14] net: ibm: emac: rgmii: devm_platform_get_resource Rosen Penev
` (9 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
It seems that since inception, this driver never called mutex_destroy in
_remove. Use devm to handle this automatically.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/rgmii.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/ibm/emac/rgmii.c b/drivers/net/ethernet/ibm/emac/rgmii.c
index 8c646a5e5c56..c2d6db2e1d2d 100644
--- a/drivers/net/ethernet/ibm/emac/rgmii.c
+++ b/drivers/net/ethernet/ibm/emac/rgmii.c
@@ -219,13 +219,17 @@ static int rgmii_probe(struct platform_device *ofdev)
struct device_node *np = ofdev->dev.of_node;
struct rgmii_instance *dev;
struct resource regs;
+ int err;
dev = devm_kzalloc(&ofdev->dev, sizeof(struct rgmii_instance),
GFP_KERNEL);
if (!dev)
return -ENOMEM;
- mutex_init(&dev->lock);
+ err = devm_mutex_init(&ofdev->dev, &dev->lock);
+ if (err)
+ return err;
+
dev->ofdev = ofdev;
if (of_address_to_resource(np, 0, ®s)) {
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 06/14] net: ibm: emac: rgmii: devm_platform_get_resource
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (4 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 05/14] net: ibm: emac: rgmii: use devm for mutex_init Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 07/14] net: ibm: emac: zmii: use devm for kzalloc Rosen Penev
` (8 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Simplifies the probe function by a bit and allows removing the _remove
function such that devm now handles all cleanup.
printk gets converted to dev_err as np is now gone.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/rgmii.c | 26 ++++----------------------
1 file changed, 4 insertions(+), 22 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/rgmii.c b/drivers/net/ethernet/ibm/emac/rgmii.c
index c2d6db2e1d2d..6b61c49aa1f4 100644
--- a/drivers/net/ethernet/ibm/emac/rgmii.c
+++ b/drivers/net/ethernet/ibm/emac/rgmii.c
@@ -216,9 +216,7 @@ void *rgmii_dump_regs(struct platform_device *ofdev, void *buf)
static int rgmii_probe(struct platform_device *ofdev)
{
- struct device_node *np = ofdev->dev.of_node;
struct rgmii_instance *dev;
- struct resource regs;
int err;
dev = devm_kzalloc(&ofdev->dev, sizeof(struct rgmii_instance),
@@ -232,16 +230,10 @@ static int rgmii_probe(struct platform_device *ofdev)
dev->ofdev = ofdev;
- if (of_address_to_resource(np, 0, ®s)) {
- printk(KERN_ERR "%pOF: Can't get registers address\n", np);
- return -ENXIO;
- }
-
- dev->base = (struct rgmii_regs __iomem *)ioremap(regs.start,
- sizeof(struct rgmii_regs));
- if (dev->base == NULL) {
- printk(KERN_ERR "%pOF: Can't map device registers!\n", np);
- return -ENOMEM;
+ dev->base = devm_platform_ioremap_resource(ofdev, 0);
+ if (IS_ERR(dev->base)) {
+ dev_err(&ofdev->dev, "can't map device registers");
+ return PTR_ERR(dev->base);
}
/* Check for RGMII flags */
@@ -269,15 +261,6 @@ static int rgmii_probe(struct platform_device *ofdev)
return 0;
}
-static void rgmii_remove(struct platform_device *ofdev)
-{
- struct rgmii_instance *dev = platform_get_drvdata(ofdev);
-
- WARN_ON(dev->users != 0);
-
- iounmap(dev->base);
-}
-
static const struct of_device_id rgmii_match[] =
{
{
@@ -295,7 +278,6 @@ static struct platform_driver rgmii_driver = {
.of_match_table = rgmii_match,
},
.probe = rgmii_probe,
- .remove_new = rgmii_remove,
};
module_platform_driver(rgmii_driver);
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 07/14] net: ibm: emac: zmii: use devm for kzalloc
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (5 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 06/14] net: ibm: emac: rgmii: devm_platform_get_resource Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 08/14] net: ibm: emac: zmii: use devm for mutex_init Rosen Penev
` (7 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Simplifies the probe function by removing gotos.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/zmii.c | 23 +++++++----------------
1 file changed, 7 insertions(+), 16 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/zmii.c b/drivers/net/ethernet/ibm/emac/zmii.c
index 97cea64abe55..c38eb6b3173e 100644
--- a/drivers/net/ethernet/ibm/emac/zmii.c
+++ b/drivers/net/ethernet/ibm/emac/zmii.c
@@ -235,29 +235,26 @@ static int zmii_probe(struct platform_device *ofdev)
struct device_node *np = ofdev->dev.of_node;
struct zmii_instance *dev;
struct resource regs;
- int rc;
- rc = -ENOMEM;
- dev = kzalloc(sizeof(struct zmii_instance), GFP_KERNEL);
- if (dev == NULL)
- goto err_gone;
+ dev = devm_kzalloc(&ofdev->dev, sizeof(struct zmii_instance),
+ GFP_KERNEL);
+ if (!dev)
+ return -ENOMEM;
mutex_init(&dev->lock);
dev->ofdev = ofdev;
dev->mode = PHY_INTERFACE_MODE_NA;
- rc = -ENXIO;
if (of_address_to_resource(np, 0, ®s)) {
printk(KERN_ERR "%pOF: Can't get registers address\n", np);
- goto err_free;
+ return -ENXIO;
}
- rc = -ENOMEM;
dev->base = (struct zmii_regs __iomem *)ioremap(regs.start,
sizeof(struct zmii_regs));
- if (dev->base == NULL) {
+ if (!dev->base) {
printk(KERN_ERR "%pOF: Can't map device registers!\n", np);
- goto err_free;
+ return -ENOMEM;
}
/* We may need FER value for autodetection later */
@@ -271,11 +268,6 @@ static int zmii_probe(struct platform_device *ofdev)
platform_set_drvdata(ofdev, dev);
return 0;
-
- err_free:
- kfree(dev);
- err_gone:
- return rc;
}
static void zmii_remove(struct platform_device *ofdev)
@@ -285,7 +277,6 @@ static void zmii_remove(struct platform_device *ofdev)
WARN_ON(dev->users != 0);
iounmap(dev->base);
- kfree(dev);
}
static const struct of_device_id zmii_match[] =
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 08/14] net: ibm: emac: zmii: use devm for mutex_init
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (6 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 07/14] net: ibm: emac: zmii: use devm for kzalloc Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 09/14] net: ibm: emac: zmii: devm_platform_get_resource Rosen Penev
` (6 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
It seems that since inception, this driver never called mutex_destroy in
_remove. Use devm to handle this automatically.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/zmii.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/ibm/emac/zmii.c b/drivers/net/ethernet/ibm/emac/zmii.c
index c38eb6b3173e..b0c46dfe95b5 100644
--- a/drivers/net/ethernet/ibm/emac/zmii.c
+++ b/drivers/net/ethernet/ibm/emac/zmii.c
@@ -235,13 +235,17 @@ static int zmii_probe(struct platform_device *ofdev)
struct device_node *np = ofdev->dev.of_node;
struct zmii_instance *dev;
struct resource regs;
+ int err;
dev = devm_kzalloc(&ofdev->dev, sizeof(struct zmii_instance),
GFP_KERNEL);
if (!dev)
return -ENOMEM;
- mutex_init(&dev->lock);
+ err = devm_mutex_init(&ofdev->dev, &dev->lock);
+ if (err)
+ return err;
+
dev->ofdev = ofdev;
dev->mode = PHY_INTERFACE_MODE_NA;
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 09/14] net: ibm: emac: zmii: devm_platform_get_resource
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (7 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 08/14] net: ibm: emac: zmii: use devm for mutex_init Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 10/14] net: ibm: emac: mal: use devm for kzalloc Rosen Penev
` (5 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Simplifies the probe function by a bit and allows removing the _remove
function such that devm now handles all cleanup.
printk gets converted to dev_err as np is now gone.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/zmii.c | 26 ++++----------------------
1 file changed, 4 insertions(+), 22 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/zmii.c b/drivers/net/ethernet/ibm/emac/zmii.c
index b0c46dfe95b5..40744733fd02 100644
--- a/drivers/net/ethernet/ibm/emac/zmii.c
+++ b/drivers/net/ethernet/ibm/emac/zmii.c
@@ -232,9 +232,7 @@ void *zmii_dump_regs(struct platform_device *ofdev, void *buf)
static int zmii_probe(struct platform_device *ofdev)
{
- struct device_node *np = ofdev->dev.of_node;
struct zmii_instance *dev;
- struct resource regs;
int err;
dev = devm_kzalloc(&ofdev->dev, sizeof(struct zmii_instance),
@@ -249,16 +247,10 @@ static int zmii_probe(struct platform_device *ofdev)
dev->ofdev = ofdev;
dev->mode = PHY_INTERFACE_MODE_NA;
- if (of_address_to_resource(np, 0, ®s)) {
- printk(KERN_ERR "%pOF: Can't get registers address\n", np);
- return -ENXIO;
- }
-
- dev->base = (struct zmii_regs __iomem *)ioremap(regs.start,
- sizeof(struct zmii_regs));
- if (!dev->base) {
- printk(KERN_ERR "%pOF: Can't map device registers!\n", np);
- return -ENOMEM;
+ dev->base = devm_platform_ioremap_resource(ofdev, 0);
+ if (IS_ERR(dev->base)) {
+ dev_err(&ofdev->dev, "can't map device registers");
+ return PTR_ERR(dev->base);
}
/* We may need FER value for autodetection later */
@@ -274,15 +266,6 @@ static int zmii_probe(struct platform_device *ofdev)
return 0;
}
-static void zmii_remove(struct platform_device *ofdev)
-{
- struct zmii_instance *dev = platform_get_drvdata(ofdev);
-
- WARN_ON(dev->users != 0);
-
- iounmap(dev->base);
-}
-
static const struct of_device_id zmii_match[] =
{
{
@@ -301,7 +284,6 @@ static struct platform_driver zmii_driver = {
.of_match_table = zmii_match,
},
.probe = zmii_probe,
- .remove_new = zmii_remove,
};
module_platform_driver(zmii_driver);
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 10/14] net: ibm: emac: mal: use devm for kzalloc
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (8 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 09/14] net: ibm: emac: zmii: devm_platform_get_resource Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 11/14] net: ibm: emac: mal: use devm for request_irq Rosen Penev
` (4 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Simplifies the probe function by removing gotos.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/mal.c | 28 ++++++++++------------------
1 file changed, 10 insertions(+), 18 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c
index a632d3a207d3..70019ced47ff 100644
--- a/drivers/net/ethernet/ibm/emac/mal.c
+++ b/drivers/net/ethernet/ibm/emac/mal.c
@@ -524,7 +524,8 @@ static int mal_probe(struct platform_device *ofdev)
unsigned long irqflags;
irq_handler_t hdlr_serr, hdlr_txde, hdlr_rxde;
- mal = kzalloc(sizeof(struct mal_instance), GFP_KERNEL);
+ mal = devm_kzalloc(&ofdev->dev, sizeof(struct mal_instance),
+ GFP_KERNEL);
if (!mal)
return -ENOMEM;
@@ -539,8 +540,7 @@ static int mal_probe(struct platform_device *ofdev)
printk(KERN_ERR
"mal%d: can't find MAL num-tx-chans property!\n",
index);
- err = -ENODEV;
- goto fail;
+ return -ENODEV;
}
mal->num_tx_chans = prop[0];
@@ -549,8 +549,7 @@ static int mal_probe(struct platform_device *ofdev)
printk(KERN_ERR
"mal%d: can't find MAL num-rx-chans property!\n",
index);
- err = -ENODEV;
- goto fail;
+ return -ENODEV;
}
mal->num_rx_chans = prop[0];
@@ -558,15 +557,13 @@ static int mal_probe(struct platform_device *ofdev)
if (dcr_base == 0) {
printk(KERN_ERR
"mal%d: can't find DCR resource!\n", index);
- err = -ENODEV;
- goto fail;
+ return -ENODEV;
}
mal->dcr_host = dcr_map(ofdev->dev.of_node, dcr_base, 0x100);
if (!DCR_MAP_OK(mal->dcr_host)) {
printk(KERN_ERR
"mal%d: failed to map DCRs !\n", index);
- err = -ENODEV;
- goto fail;
+ return -ENODEV;
}
if (of_device_is_compatible(ofdev->dev.of_node, "ibm,mcmal-405ez")) {
@@ -577,8 +574,7 @@ static int mal_probe(struct platform_device *ofdev)
#else
printk(KERN_ERR "%pOF: Support for 405EZ not enabled!\n",
ofdev->dev.of_node);
- err = -ENODEV;
- goto fail;
+ return -ENODEV;
#endif
}
@@ -711,9 +707,6 @@ static int mal_probe(struct platform_device *ofdev)
free_netdev(mal->dummy_dev);
fail_unmap:
dcr_unmap(mal->dcr_host, 0x100);
- fail:
- kfree(mal);
-
return err;
}
@@ -744,10 +737,9 @@ static void mal_remove(struct platform_device *ofdev)
dma_free_coherent(&ofdev->dev,
sizeof(struct mal_descriptor) *
- (NUM_TX_BUFF * mal->num_tx_chans +
- NUM_RX_BUFF * mal->num_rx_chans), mal->bd_virt,
- mal->bd_dma);
- kfree(mal);
+ (NUM_TX_BUFF * mal->num_tx_chans +
+ NUM_RX_BUFF * mal->num_rx_chans),
+ mal->bd_virt, mal->bd_dma);
}
static const struct of_device_id mal_platform_match[] =
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 11/14] net: ibm: emac: mal: use devm for request_irq
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (9 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 10/14] net: ibm: emac: mal: use devm for kzalloc Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 12/14] net: ibm: emac: mal: move irq maps down Rosen Penev
` (3 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Avoids manual frees. Also replaced irq_of_parse_and_map with
platform_get_irq since it's simpler and does the same thing.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/mal.c | 51 ++++++++++++-----------------
1 file changed, 21 insertions(+), 30 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c
index 70019ced47ff..b07b2e0ce478 100644
--- a/drivers/net/ethernet/ibm/emac/mal.c
+++ b/drivers/net/ethernet/ibm/emac/mal.c
@@ -578,19 +578,19 @@ static int mal_probe(struct platform_device *ofdev)
#endif
}
- mal->txeob_irq = irq_of_parse_and_map(ofdev->dev.of_node, 0);
- mal->rxeob_irq = irq_of_parse_and_map(ofdev->dev.of_node, 1);
- mal->serr_irq = irq_of_parse_and_map(ofdev->dev.of_node, 2);
+ mal->txeob_irq = platform_get_irq(ofdev, 0);
+ mal->rxeob_irq = platform_get_irq(ofdev, 1);
+ mal->serr_irq = platform_get_irq(ofdev, 2);
if (mal_has_feature(mal, MAL_FTR_COMMON_ERR_INT)) {
mal->txde_irq = mal->rxde_irq = mal->serr_irq;
} else {
- mal->txde_irq = irq_of_parse_and_map(ofdev->dev.of_node, 3);
- mal->rxde_irq = irq_of_parse_and_map(ofdev->dev.of_node, 4);
+ mal->txde_irq = platform_get_irq(ofdev, 3);
+ mal->rxde_irq = platform_get_irq(ofdev, 4);
}
- if (!mal->txeob_irq || !mal->rxeob_irq || !mal->serr_irq ||
- !mal->txde_irq || !mal->rxde_irq) {
+ if (mal->txeob_irq < 0 || mal->rxeob_irq < 0 || mal->serr_irq < 0 ||
+ mal->txde_irq < 0 || mal->rxde_irq < 0) {
printk(KERN_ERR
"mal%d: failed to map interrupts !\n", index);
err = -ENODEV;
@@ -660,21 +660,26 @@ static int mal_probe(struct platform_device *ofdev)
hdlr_rxde = mal_rxde;
}
- err = request_irq(mal->serr_irq, hdlr_serr, irqflags, "MAL SERR", mal);
+ err = devm_request_irq(&ofdev->dev, mal->serr_irq, hdlr_serr, irqflags,
+ "MAL SERR", mal);
if (err)
goto fail2;
- err = request_irq(mal->txde_irq, hdlr_txde, irqflags, "MAL TX DE", mal);
+ err = devm_request_irq(&ofdev->dev, mal->txde_irq, hdlr_txde, irqflags,
+ "MAL TX DE", mal);
if (err)
- goto fail3;
- err = request_irq(mal->txeob_irq, mal_txeob, 0, "MAL TX EOB", mal);
+ goto fail2;
+ err = devm_request_irq(&ofdev->dev, mal->txeob_irq, mal_txeob, 0,
+ "MAL TX EOB", mal);
if (err)
- goto fail4;
- err = request_irq(mal->rxde_irq, hdlr_rxde, irqflags, "MAL RX DE", mal);
+ goto fail2;
+ err = devm_request_irq(&ofdev->dev, mal->rxde_irq, hdlr_rxde, irqflags,
+ "MAL RX DE", mal);
if (err)
- goto fail5;
- err = request_irq(mal->rxeob_irq, mal_rxeob, 0, "MAL RX EOB", mal);
+ goto fail2;
+ err = devm_request_irq(&ofdev->dev, mal->rxeob_irq, mal_rxeob, 0,
+ "MAL RX EOB", mal);
if (err)
- goto fail6;
+ goto fail2;
/* Enable all MAL SERR interrupt sources */
set_mal_dcrn(mal, MAL_IER, MAL_IER_EVENTS);
@@ -693,14 +698,6 @@ static int mal_probe(struct platform_device *ofdev)
return 0;
- fail6:
- free_irq(mal->rxde_irq, mal);
- fail5:
- free_irq(mal->txeob_irq, mal);
- fail4:
- free_irq(mal->txde_irq, mal);
- fail3:
- free_irq(mal->serr_irq, mal);
fail2:
dma_free_coherent(&ofdev->dev, bd_size, mal->bd_virt, mal->bd_dma);
fail_dummy:
@@ -725,12 +722,6 @@ static void mal_remove(struct platform_device *ofdev)
"mal%d: commac list is not empty on remove!\n",
mal->index);
- free_irq(mal->serr_irq, mal);
- free_irq(mal->txde_irq, mal);
- free_irq(mal->txeob_irq, mal);
- free_irq(mal->rxde_irq, mal);
- free_irq(mal->rxeob_irq, mal);
-
mal_reset(mal);
free_netdev(mal->dummy_dev);
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 12/14] net: ibm: emac: mal: move irq maps down
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (10 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 11/14] net: ibm: emac: mal: use devm for request_irq Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 13/14] net: ibm: emac: mal: add dcr_unmap to _remove Rosen Penev
` (2 subsequent siblings)
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
Moves the handling right before they are used and allows merging a
branch.
Also get rid of the error handling as devm_request_irq can handle that.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/mal.c | 26 +++++++-------------------
1 file changed, 7 insertions(+), 19 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c
index b07b2e0ce478..3fae1f0ec020 100644
--- a/drivers/net/ethernet/ibm/emac/mal.c
+++ b/drivers/net/ethernet/ibm/emac/mal.c
@@ -578,25 +578,6 @@ static int mal_probe(struct platform_device *ofdev)
#endif
}
- mal->txeob_irq = platform_get_irq(ofdev, 0);
- mal->rxeob_irq = platform_get_irq(ofdev, 1);
- mal->serr_irq = platform_get_irq(ofdev, 2);
-
- if (mal_has_feature(mal, MAL_FTR_COMMON_ERR_INT)) {
- mal->txde_irq = mal->rxde_irq = mal->serr_irq;
- } else {
- mal->txde_irq = platform_get_irq(ofdev, 3);
- mal->rxde_irq = platform_get_irq(ofdev, 4);
- }
-
- if (mal->txeob_irq < 0 || mal->rxeob_irq < 0 || mal->serr_irq < 0 ||
- mal->txde_irq < 0 || mal->rxde_irq < 0) {
- printk(KERN_ERR
- "mal%d: failed to map interrupts !\n", index);
- err = -ENODEV;
- goto fail_unmap;
- }
-
INIT_LIST_HEAD(&mal->poll_list);
INIT_LIST_HEAD(&mal->list);
spin_lock_init(&mal->lock);
@@ -650,10 +631,17 @@ static int mal_probe(struct platform_device *ofdev)
sizeof(struct mal_descriptor) *
mal_rx_bd_offset(mal, i));
+ mal->txeob_irq = platform_get_irq(ofdev, 0);
+ mal->rxeob_irq = platform_get_irq(ofdev, 1);
+ mal->serr_irq = platform_get_irq(ofdev, 2);
+
if (mal_has_feature(mal, MAL_FTR_COMMON_ERR_INT)) {
+ mal->txde_irq = mal->rxde_irq = mal->serr_irq;
irqflags = IRQF_SHARED;
hdlr_serr = hdlr_txde = hdlr_rxde = mal_int;
} else {
+ mal->txde_irq = platform_get_irq(ofdev, 3);
+ mal->rxde_irq = platform_get_irq(ofdev, 4);
irqflags = 0;
hdlr_serr = mal_serr;
hdlr_txde = mal_txde;
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 13/14] net: ibm: emac: mal: add dcr_unmap to _remove
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (11 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 12/14] net: ibm: emac: mal: move irq maps down Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 14/14] net: ibm: emac: mal: move dcr map down Rosen Penev
2024-10-07 14:31 ` [PATCH net-next 00/14] ibm: emac: cleanup modules Jakub Kicinski
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
It's done in probe so it should be done here.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/mal.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c
index 3fae1f0ec020..4f58a38f4b32 100644
--- a/drivers/net/ethernet/ibm/emac/mal.c
+++ b/drivers/net/ethernet/ibm/emac/mal.c
@@ -714,6 +714,8 @@ static void mal_remove(struct platform_device *ofdev)
free_netdev(mal->dummy_dev);
+ dcr_unmap(mal->dcr_host, 0x100);
+
dma_free_coherent(&ofdev->dev,
sizeof(struct mal_descriptor) *
(NUM_TX_BUFF * mal->num_tx_chans +
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH net-next 14/14] net: ibm: emac: mal: move dcr map down
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (12 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 13/14] net: ibm: emac: mal: add dcr_unmap to _remove Rosen Penev
@ 2024-10-06 2:28 ` Rosen Penev
2024-10-07 14:31 ` [PATCH net-next 00/14] ibm: emac: cleanup modules Jakub Kicinski
14 siblings, 0 replies; 16+ messages in thread
From: Rosen Penev @ 2024-10-06 2:28 UTC (permalink / raw)
To: netdev
Cc: andrew, davem, edumazet, kuba, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
There's actually a bug above where it returns instead of calling goto.
Instead of calling goto, move dcr_map and friends down as they're used
right after the spinlock in mal_reset.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
drivers/net/ethernet/ibm/emac/mal.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/ibm/emac/mal.c b/drivers/net/ethernet/ibm/emac/mal.c
index 4f58a38f4b32..e6354843d856 100644
--- a/drivers/net/ethernet/ibm/emac/mal.c
+++ b/drivers/net/ethernet/ibm/emac/mal.c
@@ -553,6 +553,18 @@ static int mal_probe(struct platform_device *ofdev)
}
mal->num_rx_chans = prop[0];
+ if (of_device_is_compatible(ofdev->dev.of_node, "ibm,mcmal-405ez")) {
+#if defined(CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT) && \
+ defined(CONFIG_IBM_EMAC_MAL_COMMON_ERR)
+ mal->features |= (MAL_FTR_CLEAR_ICINTSTAT |
+ MAL_FTR_COMMON_ERR_INT);
+#else
+ printk(KERN_ERR "%pOF: Support for 405EZ not enabled!\n",
+ ofdev->dev.of_node);
+ return -ENODEV;
+#endif
+ }
+
dcr_base = dcr_resource_start(ofdev->dev.of_node, 0);
if (dcr_base == 0) {
printk(KERN_ERR
@@ -566,18 +578,6 @@ static int mal_probe(struct platform_device *ofdev)
return -ENODEV;
}
- if (of_device_is_compatible(ofdev->dev.of_node, "ibm,mcmal-405ez")) {
-#if defined(CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT) && \
- defined(CONFIG_IBM_EMAC_MAL_COMMON_ERR)
- mal->features |= (MAL_FTR_CLEAR_ICINTSTAT |
- MAL_FTR_COMMON_ERR_INT);
-#else
- printk(KERN_ERR "%pOF: Support for 405EZ not enabled!\n",
- ofdev->dev.of_node);
- return -ENODEV;
-#endif
- }
-
INIT_LIST_HEAD(&mal->poll_list);
INIT_LIST_HEAD(&mal->list);
spin_lock_init(&mal->lock);
--
2.46.2
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH net-next 00/14] ibm: emac: cleanup modules
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
` (13 preceding siblings ...)
2024-10-06 2:28 ` [PATCH net-next 14/14] net: ibm: emac: mal: move dcr map down Rosen Penev
@ 2024-10-07 14:31 ` Jakub Kicinski
14 siblings, 0 replies; 16+ messages in thread
From: Jakub Kicinski @ 2024-10-07 14:31 UTC (permalink / raw)
To: Rosen Penev
Cc: netdev, andrew, davem, edumazet, pabeni, linux-kernel,
jacob.e.keller, horms, sd, chunkeey
On Sat, 5 Oct 2024 19:28:30 -0700 Rosen Penev wrote:
> The modules are fairly old and as such can benefit from devm management.
>
> All except ZMII tested on a Cisco MX60W. No problems found.
Only send the second batch once the first one is merged.
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-10-07 14:32 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-06 2:28 [PATCH net-next 00/14] ibm: emac: cleanup modules Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 01/14] net: ibm: emac: tah: use devm for kzalloc Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 02/14] net: ibm: emac: tah: use devm for mutex_init Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 03/14] net: ibm: emac: tah: devm_platform_get_resources Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 04/14] net: ibm: emac: rgmii: use devm for kzalloc Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 05/14] net: ibm: emac: rgmii: use devm for mutex_init Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 06/14] net: ibm: emac: rgmii: devm_platform_get_resource Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 07/14] net: ibm: emac: zmii: use devm for kzalloc Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 08/14] net: ibm: emac: zmii: use devm for mutex_init Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 09/14] net: ibm: emac: zmii: devm_platform_get_resource Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 10/14] net: ibm: emac: mal: use devm for kzalloc Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 11/14] net: ibm: emac: mal: use devm for request_irq Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 12/14] net: ibm: emac: mal: move irq maps down Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 13/14] net: ibm: emac: mal: add dcr_unmap to _remove Rosen Penev
2024-10-06 2:28 ` [PATCH net-next 14/14] net: ibm: emac: mal: move dcr map down Rosen Penev
2024-10-07 14:31 ` [PATCH net-next 00/14] ibm: emac: cleanup modules Jakub Kicinski
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.