[v2,1/1] watchdog/hpwdt: Support Suspend and Resume

Message ID 20240214164941.630775-2-jerry.hoemann@hpe.com
State New
Headers
Series watchdog/hpwdt: Support Suspend and Resume |

Commit Message

Jerry Hoemann Feb. 14, 2024, 4:49 p.m. UTC
  Add call backs to support suspend and resume.

Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>
---
 drivers/watchdog/hpwdt.c | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
  

Comments

Guenter Roeck Feb. 14, 2024, 4:55 p.m. UTC | #1
On 2/14/24 08:49, Jerry Hoemann wrote:
> Add call backs to support suspend and resume.
> 
> Signed-off-by: Jerry Hoemann <jerry.hoemann@hpe.com>

Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
>   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");
  

Patch

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");