Message ID | 20210605123636.2485041-1-yangyingliang@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next,v2] net: gemini: Use devm_platform_get_and_ioremap_resource() | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Clearly marked for net-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | warning | 1 maintainers not CCed: linux-arm-kernel@lists.infradead.org |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 0 this patch: 0 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | warning | WARNING: line length of 82 exceeds 80 columns WARNING: line length of 84 exceeds 80 columns |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
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
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 > .
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
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;
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(-)