Add suspend/resume support to hpwdt.
Changes from v1
---
1) dropped dev_dbg messages in suspend/resume.
2) switch from DEFINE_SIMPLE_DEV_PM_OPS to LATE_SYSTEM_SLEEP_PM_OPS
Jerry Hoemann (1):
watchdog/hpwdt: Support Suspend and Resume
drivers/watchdog/hpwdt.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
--
2.43.0
Add call backs to support suspend and resume.
Signed-off-by: Jerry Hoemann <[email protected]>
---
drivers/watchdog/hpwdt.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
index 138dc8d8ca3d..ae30e394d176 100644
--- a/drivers/watchdog/hpwdt.c
+++ b/drivers/watchdog/hpwdt.c
@@ -378,11 +378,36 @@ static void hpwdt_exit(struct pci_dev *dev)
pci_disable_device(dev);
}
+static int hpwdt_suspend(struct device *dev)
+{
+ if (watchdog_active(&hpwdt_dev))
+ hpwdt_stop();
+
+ return 0;
+}
+
+static int hpwdt_resume(struct device *dev)
+{
+ if (watchdog_active(&hpwdt_dev))
+ hpwdt_start(&hpwdt_dev);
+
+ return 0;
+}
+
+static const struct dev_pm_ops hpwdt_pm_ops = {
+ LATE_SYSTEM_SLEEP_PM_OPS(hpwdt_suspend, hpwdt_resume)
+};
+
static struct pci_driver hpwdt_driver = {
.name = "hpwdt",
.id_table = hpwdt_devices,
.probe = hpwdt_init_one,
.remove = hpwdt_exit,
+
+ .driver = {
+ .name = "hpwdt",
+ .pm = &hpwdt_pm_ops,
+ }
};
MODULE_AUTHOR("Tom Mingarelli");
--
2.43.0
On 2/14/24 08:49, Jerry Hoemann wrote:
> Add call backs to support suspend and resume.
>
> Signed-off-by: Jerry Hoemann <[email protected]>
Reviewed-by: Guenter Roeck <[email protected]>
> ---
> drivers/watchdog/hpwdt.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c
> index 138dc8d8ca3d..ae30e394d176 100644
> --- a/drivers/watchdog/hpwdt.c
> +++ b/drivers/watchdog/hpwdt.c
> @@ -378,11 +378,36 @@ static void hpwdt_exit(struct pci_dev *dev)
> pci_disable_device(dev);
> }
>
> +static int hpwdt_suspend(struct device *dev)
> +{
> + if (watchdog_active(&hpwdt_dev))
> + hpwdt_stop();
> +
> + return 0;
> +}
> +
> +static int hpwdt_resume(struct device *dev)
> +{
> + if (watchdog_active(&hpwdt_dev))
> + hpwdt_start(&hpwdt_dev);
> +
> + return 0;
> +}
> +
> +static const struct dev_pm_ops hpwdt_pm_ops = {
> + LATE_SYSTEM_SLEEP_PM_OPS(hpwdt_suspend, hpwdt_resume)
> +};
> +
> static struct pci_driver hpwdt_driver = {
> .name = "hpwdt",
> .id_table = hpwdt_devices,
> .probe = hpwdt_init_one,
> .remove = hpwdt_exit,
> +
> + .driver = {
> + .name = "hpwdt",
> + .pm = &hpwdt_pm_ops,
> + }
> };
>
> MODULE_AUTHOR("Tom Mingarelli");