linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource()
@ 2021-06-05 12:36 Yang Yingliang
  2021-06-05 15:17 ` Linus Walleij
  0 siblings, 1 reply; 4+ messages in thread
From: Yang Yingliang @ 2021-06-05 12:36 UTC (permalink / raw)
  To: linux-kernel, netdev; +Cc: ulli.kroll, linus.walleij, davem, kuba

Use devm_platform_get_and_ioremap_resource() to simplify
code.

Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
---
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


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource()
  2021-06-05 12:36 [PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource() Yang Yingliang
@ 2021-06-05 15:17 ` Linus Walleij
  2021-06-07  1:05   ` Yang Yingliang
  0 siblings, 1 reply; 4+ messages in thread
From: Linus Walleij @ 2021-06-05 15:17 UTC (permalink / raw)
  To: Yang Yingliang
  Cc: linux-kernel, netdev, Hans Ulli Kroll, David S. Miller, Jakub Kicinski

On Sat, Jun 5, 2021 at 2:32 PM Yang Yingliang <yangyingliang@huawei.com> wrote:

> Use devm_platform_get_and_ioremap_resource() to simplify
> code.
>
> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
(...)
> -       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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource()
  2021-06-05 15:17 ` Linus Walleij
@ 2021-06-07  1:05   ` Yang Yingliang
  2021-06-07  6:49     ` Linus Walleij
  0 siblings, 1 reply; 4+ messages in thread
From: Yang Yingliang @ 2021-06-07  1:05 UTC (permalink / raw)
  To: Linus Walleij
  Cc: linux-kernel, netdev, Hans Ulli Kroll, David S. Miller, Jakub Kicinski

Hi,

On 2021/6/5 23:17, Linus Walleij wrote:
> On Sat, Jun 5, 2021 at 2:32 PM Yang Yingliang <yangyingliang@huawei.com> wrote:
>
>> Use devm_platform_get_and_ioremap_resource() to simplify
>> code.
>>
>> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> (...)
>> -       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
> .

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource()
  2021-06-07  1:05   ` Yang Yingliang
@ 2021-06-07  6:49     ` Linus Walleij
  0 siblings, 0 replies; 4+ messages in thread
From: Linus Walleij @ 2021-06-07  6:49 UTC (permalink / raw)
  To: Yang Yingliang
  Cc: linux-kernel, netdev, Hans Ulli Kroll, David S. Miller, Jakub Kicinski

On Mon, Jun 7, 2021 at 3:05 AM Yang Yingliang <yangyingliang@huawei.com> wrote:
> On 2021/6/5 23:17, Linus Walleij wrote:
> > On Sat, Jun 5, 2021 at 2:32 PM Yang Yingliang <yangyingliang@huawei.com> wrote:
> >
> >> Use devm_platform_get_and_ioremap_resource() to simplify
> >> code.
> >>
> >> Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
> > (...)
> >> -       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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-06-07  6:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-05 12:36 [PATCH net-next v2] net: gemini: Use devm_platform_get_and_ioremap_resource() Yang Yingliang
2021-06-05 15:17 ` Linus Walleij
2021-06-07  1:05   ` Yang Yingliang
2021-06-07  6:49     ` Linus Walleij

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).