@@ -192,13 +192,37 @@ static int pm8916_wdt_probe(struct platform_device *pdev)
192
192
wdt -> wdev .timeout = PM8916_WDT_DEFAULT_TIMEOUT ;
193
193
wdt -> wdev .pretimeout = 0 ;
194
194
watchdog_set_drvdata (& wdt -> wdev , wdt );
195
+ platform_set_drvdata (pdev , wdt );
195
196
196
197
watchdog_init_timeout (& wdt -> wdev , 0 , dev );
197
198
pm8916_wdt_configure_timers (& wdt -> wdev );
198
199
199
200
return devm_watchdog_register_device (dev , & wdt -> wdev );
200
201
}
201
202
203
+ static int __maybe_unused pm8916_wdt_suspend (struct device * dev )
204
+ {
205
+ struct pm8916_wdt * wdt = dev_get_drvdata (dev );
206
+
207
+ if (watchdog_active (& wdt -> wdev ))
208
+ return pm8916_wdt_stop (& wdt -> wdev );
209
+
210
+ return 0 ;
211
+ }
212
+
213
+ static int __maybe_unused pm8916_wdt_resume (struct device * dev )
214
+ {
215
+ struct pm8916_wdt * wdt = dev_get_drvdata (dev );
216
+
217
+ if (watchdog_active (& wdt -> wdev ))
218
+ return pm8916_wdt_start (& wdt -> wdev );
219
+
220
+ return 0 ;
221
+ }
222
+
223
+ static SIMPLE_DEV_PM_OPS (pm8916_wdt_pm_ops , pm8916_wdt_suspend ,
224
+ pm8916_wdt_resume ) ;
225
+
202
226
static const struct of_device_id pm8916_wdt_id_table [] = {
203
227
{ .compatible = "qcom,pm8916-wdt" },
204
228
{ }
@@ -210,6 +234,7 @@ static struct platform_driver pm8916_wdt_driver = {
210
234
.driver = {
211
235
.name = "pm8916-wdt" ,
212
236
.of_match_table = of_match_ptr (pm8916_wdt_id_table ),
237
+ .pm = & pm8916_wdt_pm_ops ,
213
238
},
214
239
};
215
240
module_platform_driver (pm8916_wdt_driver );
0 commit comments