retu_wdt.c (0898782247ae533d1f4e47a06bc5d4870931b284) retu_wdt.c (a7d30f3f41cf40aad1c4557fa180fe320d5b7c74)
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Retu watchdog driver
4 *
5 * Copyright (C) 2004, 2005 Nokia Corporation
6 *
7 * Based on code written by Amit Kucheria and Michael Buesch.
8 * Rewritten by Aaro Koskinen.
9 */
10
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Retu watchdog driver
4 *
5 * Copyright (C) 2004, 2005 Nokia Corporation
6 *
7 * Based on code written by Amit Kucheria and Michael Buesch.
8 * Rewritten by Aaro Koskinen.
9 */
10
11#include <linux/devm-helpers.h>
11#include <linux/slab.h>
12#include <linux/errno.h>
13#include <linux/device.h>
14#include <linux/kernel.h>
15#include <linux/module.h>
16#include <linux/mfd/retu.h>
17#include <linux/watchdog.h>
18#include <linux/platform_device.h>

--- 103 unchanged lines hidden (view full) ---

122 retu_wdt->parent = &pdev->dev;
123
124 watchdog_set_drvdata(retu_wdt, wdev);
125 watchdog_set_nowayout(retu_wdt, nowayout);
126
127 wdev->rdev = rdev;
128 wdev->dev = &pdev->dev;
129
12#include <linux/slab.h>
13#include <linux/errno.h>
14#include <linux/device.h>
15#include <linux/kernel.h>
16#include <linux/module.h>
17#include <linux/mfd/retu.h>
18#include <linux/watchdog.h>
19#include <linux/platform_device.h>

--- 103 unchanged lines hidden (view full) ---

123 retu_wdt->parent = &pdev->dev;
124
125 watchdog_set_drvdata(retu_wdt, wdev);
126 watchdog_set_nowayout(retu_wdt, nowayout);
127
128 wdev->rdev = rdev;
129 wdev->dev = &pdev->dev;
130
130 INIT_DELAYED_WORK(&wdev->ping_work, retu_wdt_ping_work);
131 ret = devm_delayed_work_autocancel(&pdev->dev, &wdev->ping_work,
132 retu_wdt_ping_work);
133 if (ret)
134 return ret;
131
135
132 ret = watchdog_register_device(retu_wdt);
136 ret = devm_watchdog_register_device(&pdev->dev, retu_wdt);
133 if (ret < 0)
134 return ret;
135
136 if (nowayout)
137 retu_wdt_ping(retu_wdt);
138 else
139 retu_wdt_ping_enable(wdev);
140
137 if (ret < 0)
138 return ret;
139
140 if (nowayout)
141 retu_wdt_ping(retu_wdt);
142 else
143 retu_wdt_ping_enable(wdev);
144
141 platform_set_drvdata(pdev, retu_wdt);
142
143 return 0;
144}
145
145 return 0;
146}
147
146static int retu_wdt_remove(struct platform_device *pdev)
147{
148 struct watchdog_device *wdog = platform_get_drvdata(pdev);
149 struct retu_wdt_dev *wdev = watchdog_get_drvdata(wdog);
150
151 watchdog_unregister_device(wdog);
152 cancel_delayed_work_sync(&wdev->ping_work);
153
154 return 0;
155}
156
157static struct platform_driver retu_wdt_driver = {
158 .probe = retu_wdt_probe,
148static struct platform_driver retu_wdt_driver = {
149 .probe = retu_wdt_probe,
159 .remove = retu_wdt_remove,
160 .driver = {
161 .name = "retu-wdt",
162 },
163};
164module_platform_driver(retu_wdt_driver);
165
166MODULE_ALIAS("platform:retu-wdt");
167MODULE_DESCRIPTION("Retu watchdog");
168MODULE_AUTHOR("Amit Kucheria");
169MODULE_AUTHOR("Aaro Koskinen <aaro.koskinen@iki.fi>");
170MODULE_LICENSE("GPL");
150 .driver = {
151 .name = "retu-wdt",
152 },
153};
154module_platform_driver(retu_wdt_driver);
155
156MODULE_ALIAS("platform:retu-wdt");
157MODULE_DESCRIPTION("Retu watchdog");
158MODULE_AUTHOR("Amit Kucheria");
159MODULE_AUTHOR("Aaro Koskinen <aaro.koskinen@iki.fi>");
160MODULE_LICENSE("GPL");