| .. | .. |
|---|
| 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 | |
|---|