From patchwork Thu May 16 07:30:36 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Prabhakar X-Patchwork-Id: 244237 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 85EC82C0087 for ; Thu, 16 May 2013 17:32:08 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755775Ab3EPHbT (ORCPT ); Thu, 16 May 2013 03:31:19 -0400 Received: from mail-da0-f51.google.com ([209.85.210.51]:43658 "EHLO mail-da0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755750Ab3EPHbQ (ORCPT ); Thu, 16 May 2013 03:31:16 -0400 Received: by mail-da0-f51.google.com with SMTP id h15so1483880dan.10 for ; Thu, 16 May 2013 00:31:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=4TtB7qfgDGrpkVBYT9L5X1Dwk1V6Mco4v1/CMzZla18=; b=SeaV4pIK2dTu57CVMkR0kqV/qfN8bf4TmqpWJ0F2ZJUOUTVewYsT8EFf6Y8l0X2fkp Mc/KIUC7aHBEs5peOK9Ak/4btCttJHvGTI89hgje7IDYoaHAgprZs3cGsFbUswIZ/qAp 2rHv94L9hLledossCKnvXrUaT4z+hIARLljibtVY07xhbHGoMkFu1GsCJsjb6XZA49LV riSHgCPUK7zHotn46JCHLhzLi6kgf94Ww3Hah+YaOTNj4bun5CDL8jLc7Sfe0YkQ0nlb V3pKmFZMf78K0nTUxNjKT4eCceLkwsO74ksNI6XBa2Zu8v97lScvUsFdgQkxd4WGQ7pZ riaw== X-Received: by 10.66.216.225 with SMTP id ot1mr15265408pac.154.1368689476209; Thu, 16 May 2013 00:31:16 -0700 (PDT) Received: from localhost.localdomain ([59.98.240.128]) by mx.google.com with ESMTPSA id 10sm5737003pbr.45.2013.05.16.00.31.11 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Thu, 16 May 2013 00:31:15 -0700 (PDT) From: Lad Prabhakar To: DLOS , "David S. Miller" , Jiri Kosina , , Mugunthan V N Cc: LKML , "Lad, Prabhakar" Subject: [PATCH 3/5] net: davinci: emac: Convert to devm_* api Date: Thu, 16 May 2013 13:00:36 +0530 Message-Id: <1368689438-23889-4-git-send-email-prabhakar.csengg@gmail.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1368689438-23889-1-git-send-email-prabhakar.csengg@gmail.com> References: <1368689438-23889-1-git-send-email-prabhakar.csengg@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Lad, Prabhakar Use devm_ioremap_resource instead of devm_request_mem_region()/devm_ioremap() and devm_request_irq() instead of request_irq(). This ensures more consistent error values and simplifies error paths. Signed-off-by: Lad, Prabhakar --- drivers/net/ethernet/ti/davinci_emac.c | 50 ++++++-------------------------- 1 files changed, 9 insertions(+), 41 deletions(-) diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c index 609f6d1..a8b5c6b 100644 --- a/drivers/net/ethernet/ti/davinci_emac.c +++ b/drivers/net/ethernet/ti/davinci_emac.c @@ -1508,7 +1508,7 @@ static int emac_dev_open(struct net_device *ndev) struct device *emac_dev = &ndev->dev; u32 cnt; struct resource *res; - int q, m, ret; + int ret; int i = 0; int k = 0; struct emac_priv *priv = netdev_priv(ndev); @@ -1543,8 +1543,9 @@ static int emac_dev_open(struct net_device *ndev) while ((res = platform_get_resource(priv->pdev, IORESOURCE_IRQ, k))) { for (i = res->start; i <= res->end; i++) { - if (request_irq(i, emac_irq, IRQF_DISABLED, - ndev->name, ndev)) + if (devm_request_irq(&priv->pdev->dev, i, emac_irq, + IRQF_DISABLED, + ndev->name, ndev)) goto rollback; } k++; @@ -1617,15 +1618,7 @@ static int emac_dev_open(struct net_device *ndev) rollback: - dev_err(emac_dev, "DaVinci EMAC: request_irq() failed"); - - for (q = k; k >= 0; k--) { - for (m = i; m >= res->start; m--) - free_irq(m, ndev); - res = platform_get_resource(priv->pdev, IORESOURCE_IRQ, k-1); - m = res->end; - } - + dev_err(emac_dev, "DaVinci EMAC: devm_request_irq() failed"); ret = -EBUSY; err: pm_runtime_put(&priv->pdev->dev); @@ -1643,9 +1636,6 @@ err: */ static int emac_dev_stop(struct net_device *ndev) { - struct resource *res; - int i = 0; - int irq_num; struct emac_priv *priv = netdev_priv(ndev); struct device *emac_dev = &ndev->dev; @@ -1661,13 +1651,6 @@ static int emac_dev_stop(struct net_device *ndev) if (priv->phydev) phy_disconnect(priv->phydev); - /* Free IRQ */ - while ((res = platform_get_resource(priv->pdev, IORESOURCE_IRQ, i))) { - for (irq_num = res->start; irq_num <= res->end; irq_num++) - free_irq(irq_num, priv->ndev); - i++; - } - if (netif_msg_drv(priv)) dev_notice(emac_dev, "DaVinci EMAC: %s stopped\n", ndev->name); @@ -1832,7 +1815,7 @@ static int davinci_emac_probe(struct platform_device *pdev) struct resource *res; struct net_device *ndev; struct emac_priv *priv; - unsigned long size, hw_ram_addr; + unsigned long hw_ram_addr; struct emac_platform_data *pdata; struct device *emac_dev; struct cpdma_params dma_params; @@ -1883,25 +1866,10 @@ static int davinci_emac_probe(struct platform_device *pdev) emac_dev = &ndev->dev; /* Get EMAC platform data */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - dev_err(&pdev->dev,"error getting res\n"); - rc = -ENOENT; - goto no_pdata; - } - - priv->emac_base_phys = res->start + pdata->ctrl_reg_offset; - size = resource_size(res); - if (!devm_request_mem_region(&pdev->dev, res->start, - size, ndev->name)) { - dev_err(&pdev->dev, "failed request_mem_region() for regs\n"); - rc = -ENXIO; - goto no_pdata; - } - - priv->remap_addr = devm_ioremap(&pdev->dev, res->start, size); - if (!priv->remap_addr) { + priv->remap_addr = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(priv->remap_addr)) { dev_err(&pdev->dev, "unable to map IO\n"); - rc = -ENOMEM; + rc = PTR_ERR(priv->remap_addr); goto no_pdata; } priv->emac_base = priv->remap_addr + pdata->ctrl_reg_offset;