From fe5344b3f8a8e1c52e1cd7108aa7e615123be4b2 Mon Sep 17 00:00:00 2001 From: Dmitry Osipenko <dmitry.osipenko@collabora.com> Date: Tue, 2 Nov 2021 14:57:26 +0300 Subject: [PATCH] x86/platform/olpc: Use register_platform_power_off() Utilize new register_platform_power_off() API that allows to register multiple power-off handlers and deprecates global pm_power_off callback. Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com> --- arch/x86/platform/olpc/olpc-xo1-pm.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/arch/x86/platform/olpc/olpc-xo1-pm.c b/arch/x86/platform/olpc/olpc-xo1-pm.c index f067ac780ba7a..8cbcf16f7d33b 100644 --- a/arch/x86/platform/olpc/olpc-xo1-pm.c +++ b/arch/x86/platform/olpc/olpc-xo1-pm.c @@ -10,6 +10,7 @@ #include <linux/cs5535.h> #include <linux/platform_device.h> +#include <linux/reboot.h> #include <linux/export.h> #include <linux/pm.h> #include <linux/suspend.h> @@ -137,7 +138,7 @@ static int xo1_pm_probe(struct platform_device *pdev) /* If we have both addresses, we can override the poweroff hook */ if (pms_base && acpi_base) { suspend_set_ops(&xo1_suspend_ops); - pm_power_off = xo1_power_off; + register_platform_power_off(xo1_power_off); printk(KERN_INFO "OLPC XO-1 support registered\n"); } @@ -146,12 +147,15 @@ static int xo1_pm_probe(struct platform_device *pdev) static int xo1_pm_remove(struct platform_device *pdev) { + if (pms_base && acpi_base) { + unregister_platform_power_off(xo1_power_off); + suspend_set_ops(NULL); + } + if (strcmp(pdev->name, "cs5535-pms") == 0) pms_base = 0; else if (strcmp(pdev->name, "olpc-xo1-pm-acpi") == 0) acpi_base = 0; - - pm_power_off = NULL; return 0; } -- GitLab