From: Michal Simek <michal.simek@xilinx.com> To: linux-kernel@vger.kernel.org, monstr@monstr.eu Cc: Guenter Roeck <linux@roeck-us.net>, Wim Van Sebroeck <wim@iguana.be>, linux-watchdog@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 03/11] watchdog: xilinx: Simplify probe and remove functions Date: Tue, 11 Feb 2014 07:55:46 +0100 [thread overview] Message-ID: <619599eff39de3551d53c75dd6c95678d9a81df1.1392101734.git.michal.simek@xilinx.com> (raw) In-Reply-To: <f298edd222c57b0ce1ebad3ae50c3f715406c631.1392101734.git.michal.simek@xilinx.com> In-Reply-To: <f298edd222c57b0ce1ebad3ae50c3f715406c631.1392101734.git.michal.simek@xilinx.com> [-- Attachment #1: Type: text/plain, Size: 2869 bytes --] Use devm_ helper function to simplify probe and error path. Move ioremap to the beginning of probe function. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> --- Changes in v2: None drivers/watchdog/of_xilinx_wdt.c | 41 +++++++++------------------------------- 1 file changed, 9 insertions(+), 32 deletions(-) diff --git a/drivers/watchdog/of_xilinx_wdt.c b/drivers/watchdog/of_xilinx_wdt.c index aca9bab..7f371ed 100644 --- a/drivers/watchdog/of_xilinx_wdt.c +++ b/drivers/watchdog/of_xilinx_wdt.c @@ -12,6 +12,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#include <linux/err.h> #include <linux/module.h> #include <linux/types.h> #include <linux/kernel.h> @@ -44,7 +45,6 @@ #define PFX WATCHDOG_NAME ": " struct xwdt_device { - struct resource res; void __iomem *base; u32 wdt_interval; }; @@ -159,9 +159,15 @@ static int xwdt_probe(struct platform_device *pdev) int rc; u32 *tmptr; u32 *pfreq; + struct resource *res; no_timeout = 0; + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + xdev.base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(xdev.base)) + return PTR_ERR(xdev.base); + pfreq = (u32 *)of_get_property(pdev->dev.of_node, "clock-frequency", NULL); @@ -170,12 +176,6 @@ static int xwdt_probe(struct platform_device *pdev) no_timeout = 1; } - rc = of_address_to_resource(pdev->dev.of_node, 0, &xdev.res); - if (rc) { - pr_warn("invalid address!\n"); - return rc; - } - tmptr = (u32 *)of_get_property(pdev->dev.of_node, "xlnx,wdt-interval", NULL); if (tmptr == NULL) { @@ -199,50 +199,27 @@ static int xwdt_probe(struct platform_device *pdev) if (!no_timeout) timeout = 2 * ((1<<xdev.wdt_interval) / *pfreq); - if (!request_mem_region(xdev.res.start, - xdev.res.end - xdev.res.start + 1, WATCHDOG_NAME)) { - rc = -ENXIO; - pr_err("memory request failure!\n"); - goto err_out; - } - - xdev.base = ioremap(xdev.res.start, xdev.res.end - xdev.res.start + 1); - if (xdev.base == NULL) { - rc = -ENOMEM; - pr_err("ioremap failure!\n"); - goto release_mem; - } - rc = xwdt_selftest(); if (rc == XWT_TIMER_FAILED) { pr_err("SelfTest routine error!\n"); - goto unmap_io; + return rc; } rc = watchdog_register_device(&xilinx_wdt_wdd); if (rc) { pr_err("cannot register watchdog (err=%d)\n", rc); - goto unmap_io; + return rc; } dev_info(&pdev->dev, "Xilinx Watchdog Timer at %p with timeout %ds\n", xdev.base, timeout); return 0; - -unmap_io: - iounmap(xdev.base); -release_mem: - release_mem_region(xdev.res.start, resource_size(&xdev.res)); -err_out: - return rc; } static int xwdt_remove(struct platform_device *dev) { watchdog_unregister_device(&xilinx_wdt_wdd); - iounmap(xdev.base); - release_mem_region(xdev.res.start, resource_size(&xdev.res)); return 0; } -- 1.8.2.3 [-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: michal.simek@xilinx.com (Michal Simek) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 03/11] watchdog: xilinx: Simplify probe and remove functions Date: Tue, 11 Feb 2014 07:55:46 +0100 [thread overview] Message-ID: <619599eff39de3551d53c75dd6c95678d9a81df1.1392101734.git.michal.simek@xilinx.com> (raw) In-Reply-To: <f298edd222c57b0ce1ebad3ae50c3f715406c631.1392101734.git.michal.simek@xilinx.com> Use devm_ helper function to simplify probe and error path. Move ioremap to the beginning of probe function. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> --- Changes in v2: None drivers/watchdog/of_xilinx_wdt.c | 41 +++++++++------------------------------- 1 file changed, 9 insertions(+), 32 deletions(-) diff --git a/drivers/watchdog/of_xilinx_wdt.c b/drivers/watchdog/of_xilinx_wdt.c index aca9bab..7f371ed 100644 --- a/drivers/watchdog/of_xilinx_wdt.c +++ b/drivers/watchdog/of_xilinx_wdt.c @@ -12,6 +12,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +#include <linux/err.h> #include <linux/module.h> #include <linux/types.h> #include <linux/kernel.h> @@ -44,7 +45,6 @@ #define PFX WATCHDOG_NAME ": " struct xwdt_device { - struct resource res; void __iomem *base; u32 wdt_interval; }; @@ -159,9 +159,15 @@ static int xwdt_probe(struct platform_device *pdev) int rc; u32 *tmptr; u32 *pfreq; + struct resource *res; no_timeout = 0; + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + xdev.base = devm_ioremap_resource(&pdev->dev, res); + if (IS_ERR(xdev.base)) + return PTR_ERR(xdev.base); + pfreq = (u32 *)of_get_property(pdev->dev.of_node, "clock-frequency", NULL); @@ -170,12 +176,6 @@ static int xwdt_probe(struct platform_device *pdev) no_timeout = 1; } - rc = of_address_to_resource(pdev->dev.of_node, 0, &xdev.res); - if (rc) { - pr_warn("invalid address!\n"); - return rc; - } - tmptr = (u32 *)of_get_property(pdev->dev.of_node, "xlnx,wdt-interval", NULL); if (tmptr == NULL) { @@ -199,50 +199,27 @@ static int xwdt_probe(struct platform_device *pdev) if (!no_timeout) timeout = 2 * ((1<<xdev.wdt_interval) / *pfreq); - if (!request_mem_region(xdev.res.start, - xdev.res.end - xdev.res.start + 1, WATCHDOG_NAME)) { - rc = -ENXIO; - pr_err("memory request failure!\n"); - goto err_out; - } - - xdev.base = ioremap(xdev.res.start, xdev.res.end - xdev.res.start + 1); - if (xdev.base == NULL) { - rc = -ENOMEM; - pr_err("ioremap failure!\n"); - goto release_mem; - } - rc = xwdt_selftest(); if (rc == XWT_TIMER_FAILED) { pr_err("SelfTest routine error!\n"); - goto unmap_io; + return rc; } rc = watchdog_register_device(&xilinx_wdt_wdd); if (rc) { pr_err("cannot register watchdog (err=%d)\n", rc); - goto unmap_io; + return rc; } dev_info(&pdev->dev, "Xilinx Watchdog Timer at %p with timeout %ds\n", xdev.base, timeout); return 0; - -unmap_io: - iounmap(xdev.base); -release_mem: - release_mem_region(xdev.res.start, resource_size(&xdev.res)); -err_out: - return rc; } static int xwdt_remove(struct platform_device *dev) { watchdog_unregister_device(&xilinx_wdt_wdd); - iounmap(xdev.base); - release_mem_region(xdev.res.start, resource_size(&xdev.res)); return 0; } -- 1.8.2.3 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 198 bytes Desc: not available URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20140211/0671e8fe/attachment-0001.sig>
next prev parent reply other threads:[~2014-02-11 6:56 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-02-11 6:55 [PATCH v2 01/11] watchdog: xilinx: Convert driver to the watchdog framework Michal Simek 2014-02-11 6:55 ` Michal Simek 2014-02-11 6:55 ` [PATCH v2 02/11] watchdog: xilinx: Move control_status_reg to functions Michal Simek 2014-02-11 6:55 ` Michal Simek 2014-02-11 6:55 ` Michal Simek [this message] 2014-02-11 6:55 ` [PATCH v2 03/11] watchdog: xilinx: Simplify probe and remove functions Michal Simek 2014-02-11 6:55 ` [PATCH v2 04/11] watchdog: xilinx: Move no_timeout to probe function Michal Simek 2014-02-11 6:55 ` Michal Simek 2014-02-11 6:55 ` [PATCH v2 05/11] watchdog: xilinx: Allocate private structure per device Michal Simek 2014-02-11 6:55 ` Michal Simek 2014-02-11 6:55 ` [PATCH v2 06/11] watchdog: xilinx: Fix all printk messages Michal Simek 2014-02-11 6:55 ` Michal Simek 2014-02-11 6:55 ` [PATCH v2 07/11] watchdog: xilinx: Use of_property_read_u32 Michal Simek 2014-02-11 6:55 ` Michal Simek 2014-02-11 20:20 ` Guenter Roeck 2014-02-11 20:20 ` Guenter Roeck 2014-02-11 20:20 ` Guenter Roeck 2014-02-12 8:13 ` Michal Simek 2014-02-12 8:13 ` Michal Simek 2014-02-11 6:55 ` [PATCH v2 08/11] watchdog: xilinx: Use correct comment indentation Michal Simek 2014-02-11 6:55 ` Michal Simek 2014-02-11 6:55 ` [PATCH v2 09/11] watchdog: xilinx: Add missing binding Michal Simek 2014-02-11 6:55 ` Michal Simek 2014-02-11 6:55 ` [PATCH v2 10/11] watchdog: xilinx: Enable this driver for Zynq Michal Simek 2014-02-11 6:55 ` [PATCH v2 11/11] watchdog: xilinx: Remove no_timeout variable Michal Simek 2014-02-11 6:55 ` Michal Simek 2014-02-11 20:17 ` Guenter Roeck 2014-02-11 20:17 ` Guenter Roeck
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=619599eff39de3551d53c75dd6c95678d9a81df1.1392101734.git.michal.simek@xilinx.com \ --to=michal.simek@xilinx.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-watchdog@vger.kernel.org \ --cc=linux@roeck-us.net \ --cc=monstr@monstr.eu \ --cc=wim@iguana.be \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.