aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/watchdog/mpc8xxx_wdt.c
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2015-08-12 10:15:55 +0200
committerWim Van Sebroeck <wim@iguana.be>2015-09-09 21:37:15 +0200
commitde5f71222bd544558d81701454eb457b295de96e (patch)
treeba47083a02911e559325f1c9e2416911d7d56f9d /drivers/watchdog/mpc8xxx_wdt.c
parentwatchdog: mpc8xxx: make use of of_device_get_match_data (diff)
downloadlinux-dev-de5f71222bd544558d81701454eb457b295de96e.tar.xz
linux-dev-de5f71222bd544558d81701454eb457b295de96e.zip
watchdog: mpc8xxx: use devm_ioremap_resource to map memory
This simplifies the error paths and device unbinding. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Diffstat (limited to 'drivers/watchdog/mpc8xxx_wdt.c')
-rw-r--r--drivers/watchdog/mpc8xxx_wdt.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/drivers/watchdog/mpc8xxx_wdt.c b/drivers/watchdog/mpc8xxx_wdt.c
index fb1fe967cf57..a6790fcfa69b 100644
--- a/drivers/watchdog/mpc8xxx_wdt.c
+++ b/drivers/watchdog/mpc8xxx_wdt.c
@@ -142,8 +142,7 @@ static struct watchdog_device mpc8xxx_wdt_dev = {
static int mpc8xxx_wdt_probe(struct platform_device *ofdev)
{
int ret;
- const struct of_device_id *match;
- struct device_node *np = ofdev->dev.of_node;
+ struct resource *res;
const struct mpc8xxx_wdt_type *wdt_type;
u32 freq = fsl_get_sys_freq();
bool enabled;
@@ -156,15 +155,15 @@ static int mpc8xxx_wdt_probe(struct platform_device *ofdev)
if (!freq || freq == -1)
return -EINVAL;
- wd_base = of_iomap(np, 0);
- if (!wd_base)
- return -ENOMEM;
+ res = platform_get_resource(ofdev, IORESOURCE_MEM, 0);
+ wd_base = devm_ioremap_resource(&ofdev->dev, res);
+ if (IS_ERR(wd_base))
+ return PTR_ERR(wd_base);
enabled = in_be32(&wd_base->swcrr) & SWCRR_SWEN;
if (!enabled && wdt_type->hw_enabled) {
pr_info("could not be enabled in software\n");
- ret = -ENOSYS;
- goto err_unmap;
+ return -ENOSYS;
}
/* Calculate the timeout in seconds */
@@ -177,7 +176,7 @@ static int mpc8xxx_wdt_probe(struct platform_device *ofdev)
ret = watchdog_register_device(&mpc8xxx_wdt_dev);
if (ret) {
pr_err("cannot register watchdog device (err=%d)\n", ret);
- goto err_unmap;
+ return ret;
}
pr_info("WDT driver for MPC8xxx initialized. mode:%s timeout=%d (%d seconds)\n",
@@ -191,9 +190,6 @@ static int mpc8xxx_wdt_probe(struct platform_device *ofdev)
if (enabled)
mod_timer(&wdt_timer, jiffies);
return 0;
-err_unmap:
- iounmap(wd_base);
- return ret;
}
static int mpc8xxx_wdt_remove(struct platform_device *ofdev)
@@ -202,7 +198,6 @@ static int mpc8xxx_wdt_remove(struct platform_device *ofdev)
reset ? "reset" : "machine check exception");
del_timer_sync(&wdt_timer);
watchdog_unregister_device(&mpc8xxx_wdt_dev);
- iounmap(wd_base);
return 0;
}