.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * Ralink RT288x/RT3xxx/MT76xx built-in hardware watchdog timer |
---|
3 | 4 | * |
---|
.. | .. |
---|
5 | 6 | * Copyright (C) 2013 John Crispin <john@phrozen.org> |
---|
6 | 7 | * |
---|
7 | 8 | * This driver was based on: drivers/watchdog/softdog.c |
---|
8 | | - * |
---|
9 | | - * This program is free software; you can redistribute it and/or modify it |
---|
10 | | - * under the terms of the GNU General Public License version 2 as published |
---|
11 | | - * by the Free Software Foundation. |
---|
12 | 9 | */ |
---|
13 | 10 | |
---|
14 | 11 | #include <linux/clk.h> |
---|
.. | .. |
---|
141 | 138 | |
---|
142 | 139 | static int rt288x_wdt_probe(struct platform_device *pdev) |
---|
143 | 140 | { |
---|
144 | | - struct resource *res; |
---|
| 141 | + struct device *dev = &pdev->dev; |
---|
145 | 142 | int ret; |
---|
146 | 143 | |
---|
147 | | - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
---|
148 | | - rt288x_wdt_base = devm_ioremap_resource(&pdev->dev, res); |
---|
| 144 | + rt288x_wdt_base = devm_platform_ioremap_resource(pdev, 0); |
---|
149 | 145 | if (IS_ERR(rt288x_wdt_base)) |
---|
150 | 146 | return PTR_ERR(rt288x_wdt_base); |
---|
151 | 147 | |
---|
152 | | - rt288x_wdt_clk = devm_clk_get(&pdev->dev, NULL); |
---|
| 148 | + rt288x_wdt_clk = devm_clk_get(dev, NULL); |
---|
153 | 149 | if (IS_ERR(rt288x_wdt_clk)) |
---|
154 | 150 | return PTR_ERR(rt288x_wdt_clk); |
---|
155 | 151 | |
---|
156 | | - rt288x_wdt_reset = devm_reset_control_get_exclusive(&pdev->dev, NULL); |
---|
| 152 | + rt288x_wdt_reset = devm_reset_control_get_exclusive(dev, NULL); |
---|
157 | 153 | if (!IS_ERR(rt288x_wdt_reset)) |
---|
158 | 154 | reset_control_deassert(rt288x_wdt_reset); |
---|
159 | 155 | |
---|
.. | .. |
---|
161 | 157 | |
---|
162 | 158 | rt288x_wdt_dev.bootstatus = rt288x_wdt_bootcause(); |
---|
163 | 159 | rt288x_wdt_dev.max_timeout = (0xfffful / rt288x_wdt_freq); |
---|
164 | | - rt288x_wdt_dev.parent = &pdev->dev; |
---|
| 160 | + rt288x_wdt_dev.parent = dev; |
---|
165 | 161 | |
---|
166 | 162 | watchdog_init_timeout(&rt288x_wdt_dev, rt288x_wdt_dev.max_timeout, |
---|
167 | | - &pdev->dev); |
---|
| 163 | + dev); |
---|
168 | 164 | watchdog_set_nowayout(&rt288x_wdt_dev, nowayout); |
---|
169 | 165 | |
---|
170 | | - ret = watchdog_register_device(&rt288x_wdt_dev); |
---|
| 166 | + watchdog_stop_on_reboot(&rt288x_wdt_dev); |
---|
| 167 | + ret = devm_watchdog_register_device(dev, &rt288x_wdt_dev); |
---|
171 | 168 | if (!ret) |
---|
172 | | - dev_info(&pdev->dev, "Initialized\n"); |
---|
| 169 | + dev_info(dev, "Initialized\n"); |
---|
173 | 170 | |
---|
174 | 171 | return 0; |
---|
175 | | -} |
---|
176 | | - |
---|
177 | | -static int rt288x_wdt_remove(struct platform_device *pdev) |
---|
178 | | -{ |
---|
179 | | - watchdog_unregister_device(&rt288x_wdt_dev); |
---|
180 | | - |
---|
181 | | - return 0; |
---|
182 | | -} |
---|
183 | | - |
---|
184 | | -static void rt288x_wdt_shutdown(struct platform_device *pdev) |
---|
185 | | -{ |
---|
186 | | - rt288x_wdt_stop(&rt288x_wdt_dev); |
---|
187 | 172 | } |
---|
188 | 173 | |
---|
189 | 174 | static const struct of_device_id rt288x_wdt_match[] = { |
---|
.. | .. |
---|
194 | 179 | |
---|
195 | 180 | static struct platform_driver rt288x_wdt_driver = { |
---|
196 | 181 | .probe = rt288x_wdt_probe, |
---|
197 | | - .remove = rt288x_wdt_remove, |
---|
198 | | - .shutdown = rt288x_wdt_shutdown, |
---|
199 | 182 | .driver = { |
---|
200 | 183 | .name = KBUILD_MODNAME, |
---|
201 | 184 | .of_match_table = rt288x_wdt_match, |
---|