From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757419Ab3BGDbC (ORCPT ); Wed, 6 Feb 2013 22:31:02 -0500 Received: from bear.ext.ti.com ([192.94.94.41]:60139 "EHLO bear.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752435Ab3BGDbA (ORCPT ); Wed, 6 Feb 2013 22:31:00 -0500 From: "Kumar, Anil" To: , , CC: , , Subject: [PATCH] watchdog: davinci_wdt: update to devm_* API Date: Thu, 7 Feb 2013 09:02:15 +0530 Message-ID: <1360207935-24325-1-git-send-email-anilkumar.v@ti.com> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Update the code to use devm_* API so that driver core will manage resources. Signed-off-by: Kumar, Anil --- This patch applies on top of v3.8-rc6. Tested on da850 EVM. :100644 100644 e8e8724... 6ad76a3... M drivers/watchdog/davinci_wdt.c drivers/watchdog/davinci_wdt.c | 34 +++++++++------------------------- 1 files changed, 9 insertions(+), 25 deletions(-) diff --git a/drivers/watchdog/davinci_wdt.c b/drivers/watchdog/davinci_wdt.c index e8e8724..6ad76a3 100644 --- a/drivers/watchdog/davinci_wdt.c +++ b/drivers/watchdog/davinci_wdt.c @@ -69,7 +69,6 @@ static unsigned long wdt_status; #define WDT_REGION_INITED 2 #define WDT_DEVICE_INITED 3 -static struct resource *wdt_mem; static void __iomem *wdt_base; struct clk *wdt_clk; @@ -201,10 +200,10 @@ static struct miscdevice davinci_wdt_miscdev = { static int davinci_wdt_probe(struct platform_device *pdev) { - int ret = 0, size; - struct device *dev = &pdev->dev; + int ret = 0; + static struct resource *wdt_mem; - wdt_clk = clk_get(dev, NULL); + wdt_clk = clk_get(&pdev->dev, NULL); if (WARN_ON(IS_ERR(wdt_clk))) return PTR_ERR(wdt_clk); @@ -213,49 +212,34 @@ static int davinci_wdt_probe(struct platform_device *pdev) if (heartbeat < 1 || heartbeat > MAX_HEARTBEAT) heartbeat = DEFAULT_HEARTBEAT; - dev_info(dev, "heartbeat %d sec\n", heartbeat); + dev_info(&pdev->dev, "heartbeat %d sec\n", heartbeat); wdt_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (wdt_mem == NULL) { - dev_err(dev, "failed to get memory region resource\n"); + dev_err(&pdev->dev, "failed to get memory region resource\n"); return -ENOENT; } - size = resource_size(wdt_mem); - if (!request_mem_region(wdt_mem->start, size, pdev->name)) { - dev_err(dev, "failed to get memory region\n"); - return -ENOENT; - } - - wdt_base = ioremap(wdt_mem->start, size); + wdt_base = devm_request_and_ioremap(&pdev->dev, wdt_mem); if (!wdt_base) { - dev_err(dev, "failed to map memory region\n"); - release_mem_region(wdt_mem->start, size); - wdt_mem = NULL; + dev_err(&pdev->dev, "ioremap failed\n"); return -ENOMEM; } ret = misc_register(&davinci_wdt_miscdev); if (ret < 0) { - dev_err(dev, "cannot register misc device\n"); - release_mem_region(wdt_mem->start, size); - wdt_mem = NULL; + dev_err(&pdev->dev, "cannot register misc device\n"); } else { set_bit(WDT_DEVICE_INITED, &wdt_status); + return ret; } - iounmap(wdt_base); return ret; } static int davinci_wdt_remove(struct platform_device *pdev) { misc_deregister(&davinci_wdt_miscdev); - if (wdt_mem) { - release_mem_region(wdt_mem->start, resource_size(wdt_mem)); - wdt_mem = NULL; - } - clk_disable_unprepare(wdt_clk); clk_put(wdt_clk); -- 1.7.4.1