[PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource()

Subsystems: arm/cortina systems gemini arm architecture, networking drivers, the rest

STALE1889d

4 messages, 2 authors, 2021-06-07 · open the first message on its own page

[PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource()

From: Yang Yingliang <hidden>
Date: 2021-06-05 12:32:23

Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <redacted>
---
v2:
  Also use devm_platform_get_and_ioremap_resource() in gemini_ethernet_probe().
  Keep the error message to distinguish remap which address failed in
  gemini_ethernet_port_probe().
---
 drivers/net/ethernet/cortina/gemini.c | 28 +++++++++------------------
 1 file changed, 9 insertions(+), 19 deletions(-)
diff --git a/drivers/net/ethernet/cortina/gemini.c b/drivers/net/ethernet/cortina/gemini.c
index 8df6f081f244..6f7ff1f1fb2b 100644
--- a/drivers/net/ethernet/cortina/gemini.c
+++ b/drivers/net/ethernet/cortina/gemini.c
@@ -2390,24 +2390,18 @@ static int gemini_ethernet_port_probe(struct platform_device *pdev)
 	port->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE);
 
 	/* DMA memory */
-	dmares = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!dmares) {
-		dev_err(dev, "no DMA resource\n");
-		return -ENODEV;
-	}
-	port->dma_base = devm_ioremap_resource(dev, dmares);
-	if (IS_ERR(port->dma_base))
+	port->dma_base = devm_platform_get_and_ioremap_resource(pdev, 0, &dmares);
+	if (IS_ERR(port->dma_base)) {
+		dev_err(dev, "get DMA address failed\n");
 		return PTR_ERR(port->dma_base);
+	}
 
 	/* GMAC config memory */
-	gmacres = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	if (!gmacres) {
-		dev_err(dev, "no GMAC resource\n");
-		return -ENODEV;
-	}
-	port->gmac_base = devm_ioremap_resource(dev, gmacres);
-	if (IS_ERR(port->gmac_base))
+	port->gmac_base = devm_platform_get_and_ioremap_resource(pdev, 1, &gmacres);
+	if (IS_ERR(port->gmac_base)) {
+		dev_err(dev, "get GMAC address failed\n");
 		return PTR_ERR(port->gmac_base);
+	}
 
 	/* Interrupt */
 	irq = platform_get_irq(pdev, 0);
@@ -2544,17 +2538,13 @@ static int gemini_ethernet_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct gemini_ethernet *geth;
 	unsigned int retry = 5;
-	struct resource *res;
 	u32 val;
 
 	/* Global registers */
 	geth = devm_kzalloc(dev, sizeof(*geth), GFP_KERNEL);
 	if (!geth)
 		return -ENOMEM;
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	if (!res)
-		return -ENODEV;
-	geth->base = devm_ioremap_resource(dev, res);
+	geth->base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
 	if (IS_ERR(geth->base))
 		return PTR_ERR(geth->base);
 	geth->dev = dev;
-- 
2.25.1

Re: [PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource()

From: Linus Walleij <hidden>
Date: 2021-06-05 15:19:01

On Sat, Jun 5, 2021 at 2:32 PM Yang Yingliang [off-list ref] wrote:
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <redacted>
(...)
-       dmares = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       gmacres = platform_get_resource(pdev, IORESOURCE_MEM, 1);
Should you not also delete the local variables
dmares and gmacres? I doubt they are used
after this.

Yours,
Linus Walleij

Re: [PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource()

From: Yang Yingliang <hidden>
Date: 2021-06-07 01:05:26

Hi,

On 2021/6/5 23:17, Linus Walleij wrote:
On Sat, Jun 5, 2021 at 2:32 PM Yang Yingliang [off-list ref] wrote:
quoted
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <redacted>
(...)
quoted
-       dmares = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       gmacres = platform_get_resource(pdev, IORESOURCE_MEM, 1);
Should you not also delete the local variables
dmares and gmacres? I doubt they are used
after this.
They are used to print message before returning gemini_ethernet_port_probe()
static int gemini_ethernet_port_probe(struct platform_device *pdev)
{
[...]
         netdev_info(netdev,
                     "irq %d, DMA @ 0x%pap, GMAC @ 0x%pap\n",
                     port->irq, &dmares->start,
                     &gmacres->start);
         return 0;

unprepare:
         clk_disable_unprepare(port->pclk);
         return ret;
}

Thanks,
Yang
Yours,
Linus Walleij
.

Re: [PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource()

From: Linus Walleij <hidden>
Date: 2021-06-07 06:51:23

On Mon, Jun 7, 2021 at 3:05 AM Yang Yingliang [off-list ref] wrote:
On 2021/6/5 23:17, Linus Walleij wrote:
quoted
On Sat, Jun 5, 2021 at 2:32 PM Yang Yingliang [off-list ref] wrote:
quoted
Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <redacted>
(...)
quoted
-       dmares = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       gmacres = platform_get_resource(pdev, IORESOURCE_MEM, 1);
Should you not also delete the local variables
dmares and gmacres? I doubt they are used
after this.
They are used to print message before returning gemini_ethernet_port_probe()
static int gemini_ethernet_port_probe(struct platform_device *pdev)
Yes and after this they will print something undefined since you never
assign them anything, so the dmares and gmacres prints need to be
removed too. (Which is fine.)

Yours,
Linus Walleij
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help