.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
---|
1 | 2 | /* |
---|
2 | 3 | * Watchdog driver for CSR SiRFprimaII and SiRFatlasVI |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (c) 2013 Cambridge Silicon Radio Limited, a CSR plc group company. |
---|
5 | | - * |
---|
6 | | - * Licensed under GPLv2 or later. |
---|
7 | 6 | */ |
---|
8 | 7 | |
---|
9 | 8 | #include <linux/module.h> |
---|
.. | .. |
---|
146 | 145 | |
---|
147 | 146 | static int sirfsoc_wdt_probe(struct platform_device *pdev) |
---|
148 | 147 | { |
---|
149 | | - struct resource *res; |
---|
| 148 | + struct device *dev = &pdev->dev; |
---|
150 | 149 | int ret; |
---|
151 | 150 | void __iomem *base; |
---|
152 | 151 | |
---|
153 | | - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
---|
154 | | - base = devm_ioremap_resource(&pdev->dev, res); |
---|
| 152 | + base = devm_platform_ioremap_resource(pdev, 0); |
---|
155 | 153 | if (IS_ERR(base)) |
---|
156 | 154 | return PTR_ERR(base); |
---|
157 | 155 | |
---|
158 | 156 | watchdog_set_drvdata(&sirfsoc_wdd, (__force void *)base); |
---|
159 | 157 | |
---|
160 | | - watchdog_init_timeout(&sirfsoc_wdd, timeout, &pdev->dev); |
---|
| 158 | + watchdog_init_timeout(&sirfsoc_wdd, timeout, dev); |
---|
161 | 159 | watchdog_set_nowayout(&sirfsoc_wdd, nowayout); |
---|
162 | | - sirfsoc_wdd.parent = &pdev->dev; |
---|
| 160 | + sirfsoc_wdd.parent = dev; |
---|
163 | 161 | |
---|
164 | | - ret = watchdog_register_device(&sirfsoc_wdd); |
---|
| 162 | + watchdog_stop_on_reboot(&sirfsoc_wdd); |
---|
| 163 | + watchdog_stop_on_unregister(&sirfsoc_wdd); |
---|
| 164 | + ret = devm_watchdog_register_device(dev, &sirfsoc_wdd); |
---|
165 | 165 | if (ret) |
---|
166 | 166 | return ret; |
---|
167 | 167 | |
---|
168 | 168 | platform_set_drvdata(pdev, &sirfsoc_wdd); |
---|
169 | 169 | |
---|
170 | | - return 0; |
---|
171 | | -} |
---|
172 | | - |
---|
173 | | -static void sirfsoc_wdt_shutdown(struct platform_device *pdev) |
---|
174 | | -{ |
---|
175 | | - struct watchdog_device *wdd = platform_get_drvdata(pdev); |
---|
176 | | - |
---|
177 | | - sirfsoc_wdt_disable(wdd); |
---|
178 | | -} |
---|
179 | | - |
---|
180 | | -static int sirfsoc_wdt_remove(struct platform_device *pdev) |
---|
181 | | -{ |
---|
182 | | - sirfsoc_wdt_shutdown(pdev); |
---|
183 | 170 | return 0; |
---|
184 | 171 | } |
---|
185 | 172 | |
---|
.. | .. |
---|
220 | 207 | .of_match_table = sirfsoc_wdt_of_match, |
---|
221 | 208 | }, |
---|
222 | 209 | .probe = sirfsoc_wdt_probe, |
---|
223 | | - .remove = sirfsoc_wdt_remove, |
---|
224 | | - .shutdown = sirfsoc_wdt_shutdown, |
---|
225 | 210 | }; |
---|
226 | 211 | module_platform_driver(sirfsoc_wdt_driver); |
---|
227 | 212 | |
---|