hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/watchdog/sprd_wdt.c
....@@ -1,15 +1,7 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Spreadtrum watchdog driver
34 * Copyright (C) 2017 Spreadtrum - http://www.spreadtrum.com
4
- *
5
- * This program is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU General Public License
7
- * version 2 as published by the Free Software Foundation.
8
- *
9
- * This program is distributed in the hope that it will be useful, but
10
- * WITHOUT ANY WARRANTY; without even the implied warranty of
11
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
- * General Public License for more details.
135 */
146
157 #include <linux/bitops.h>
....@@ -246,9 +238,7 @@
246238 u32 val;
247239
248240 val = sprd_wdt_get_cnt_value(wdt);
249
- val = val / SPRD_WDT_CNT_STEP;
250
-
251
- return val;
241
+ return val / SPRD_WDT_CNT_STEP;
252242 }
253243
254244 static const struct watchdog_ops sprd_wdt_ops = {
....@@ -270,70 +260,65 @@
270260
271261 static int sprd_wdt_probe(struct platform_device *pdev)
272262 {
273
- struct resource *wdt_res;
263
+ struct device *dev = &pdev->dev;
274264 struct sprd_wdt *wdt;
275265 int ret;
276266
277
- wdt = devm_kzalloc(&pdev->dev, sizeof(*wdt), GFP_KERNEL);
267
+ wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL);
278268 if (!wdt)
279269 return -ENOMEM;
280270
281
- wdt_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
282
- wdt->base = devm_ioremap_resource(&pdev->dev, wdt_res);
271
+ wdt->base = devm_platform_ioremap_resource(pdev, 0);
283272 if (IS_ERR(wdt->base))
284273 return PTR_ERR(wdt->base);
285274
286
- wdt->enable = devm_clk_get(&pdev->dev, "enable");
275
+ wdt->enable = devm_clk_get(dev, "enable");
287276 if (IS_ERR(wdt->enable)) {
288
- dev_err(&pdev->dev, "can't get the enable clock\n");
277
+ dev_err(dev, "can't get the enable clock\n");
289278 return PTR_ERR(wdt->enable);
290279 }
291280
292
- wdt->rtc_enable = devm_clk_get(&pdev->dev, "rtc_enable");
281
+ wdt->rtc_enable = devm_clk_get(dev, "rtc_enable");
293282 if (IS_ERR(wdt->rtc_enable)) {
294
- dev_err(&pdev->dev, "can't get the rtc enable clock\n");
283
+ dev_err(dev, "can't get the rtc enable clock\n");
295284 return PTR_ERR(wdt->rtc_enable);
296285 }
297286
298287 wdt->irq = platform_get_irq(pdev, 0);
299
- if (wdt->irq < 0) {
300
- dev_err(&pdev->dev, "failed to get IRQ resource\n");
288
+ if (wdt->irq < 0)
301289 return wdt->irq;
302
- }
303290
304
- ret = devm_request_irq(&pdev->dev, wdt->irq, sprd_wdt_isr,
305
- IRQF_NO_SUSPEND, "sprd-wdt", (void *)wdt);
291
+ ret = devm_request_irq(dev, wdt->irq, sprd_wdt_isr, IRQF_NO_SUSPEND,
292
+ "sprd-wdt", (void *)wdt);
306293 if (ret) {
307
- dev_err(&pdev->dev, "failed to register irq\n");
294
+ dev_err(dev, "failed to register irq\n");
308295 return ret;
309296 }
310297
311298 wdt->wdd.info = &sprd_wdt_info;
312299 wdt->wdd.ops = &sprd_wdt_ops;
313
- wdt->wdd.parent = &pdev->dev;
300
+ wdt->wdd.parent = dev;
314301 wdt->wdd.min_timeout = SPRD_WDT_MIN_TIMEOUT;
315302 wdt->wdd.max_timeout = SPRD_WDT_MAX_TIMEOUT;
316303 wdt->wdd.timeout = SPRD_WDT_MAX_TIMEOUT;
317304
318305 ret = sprd_wdt_enable(wdt);
319306 if (ret) {
320
- dev_err(&pdev->dev, "failed to enable wdt\n");
307
+ dev_err(dev, "failed to enable wdt\n");
321308 return ret;
322309 }
323
- ret = devm_add_action(&pdev->dev, sprd_wdt_disable, wdt);
310
+ ret = devm_add_action_or_reset(dev, sprd_wdt_disable, wdt);
324311 if (ret) {
325
- sprd_wdt_disable(wdt);
326
- dev_err(&pdev->dev, "Failed to add wdt disable action\n");
312
+ dev_err(dev, "Failed to add wdt disable action\n");
327313 return ret;
328314 }
329315
330316 watchdog_set_nowayout(&wdt->wdd, WATCHDOG_NOWAYOUT);
331
- watchdog_init_timeout(&wdt->wdd, 0, &pdev->dev);
317
+ watchdog_init_timeout(&wdt->wdd, 0, dev);
332318
333
- ret = devm_watchdog_register_device(&pdev->dev, &wdt->wdd);
319
+ ret = devm_watchdog_register_device(dev, &wdt->wdd);
334320 if (ret) {
335321 sprd_wdt_disable(wdt);
336
- dev_err(&pdev->dev, "failed to register watchdog\n");
337322 return ret;
338323 }
339324 platform_set_drvdata(pdev, wdt);