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"); |