Re: [PATCH v2 11/19] power: reset: mt6323-poweroff: Use devm_register_sys_off_handler(POWER_OFF)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Il 05/02/24 20:44, Andrew Davis ha scritto:
Use device life-cycle managed register function to simplify probe and
exit paths.

Signed-off-by: Andrew Davis <afd@xxxxxx>
---
  drivers/power/reset/mt6323-poweroff.c | 28 ++++++++++++++-------------
  1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/drivers/power/reset/mt6323-poweroff.c b/drivers/power/reset/mt6323-poweroff.c
index 57a63c0ab7fb7..ca5d11b17ff03 100644
--- a/drivers/power/reset/mt6323-poweroff.c
+++ b/drivers/power/reset/mt6323-poweroff.c
@@ -14,6 +14,7 @@
  #include <linux/platform_device.h>
  #include <linux/mfd/mt6397/core.h>
  #include <linux/mfd/mt6397/rtc.h>
+#include <linux/reboot.h>
struct mt6323_pwrc {
  	struct device *dev;
@@ -21,11 +22,9 @@ struct mt6323_pwrc {
  	u32 base;
  };
-static struct mt6323_pwrc *mt_pwrc;
-
-static void mt6323_do_pwroff(void)
+static int mt6323_do_pwroff(struct sys_off_data *data)
  {
-	struct mt6323_pwrc *pwrc = mt_pwrc;
+	struct mt6323_pwrc *pwrc = data->cb_data;
  	unsigned int val;
  	int ret;
@@ -44,6 +43,8 @@ static void mt6323_do_pwroff(void)
  	mdelay(1000);
WARN_ONCE(1, "Unable to power off system\n");
+
+	return NOTIFY_DONE;
  }
static int mt6323_pwrc_probe(struct platform_device *pdev)
@@ -51,6 +52,7 @@ static int mt6323_pwrc_probe(struct platform_device *pdev)
  	struct mt6397_chip *mt6397_chip = dev_get_drvdata(pdev->dev.parent);
  	struct mt6323_pwrc *pwrc;
  	struct resource *res;
+	int ret;
pwrc = devm_kzalloc(&pdev->dev, sizeof(*pwrc), GFP_KERNEL);
  	if (!pwrc)
@@ -63,19 +65,20 @@ static int mt6323_pwrc_probe(struct platform_device *pdev)
  	pwrc->base = res->start;
  	pwrc->regmap = mt6397_chip->regmap;
  	pwrc->dev = &pdev->dev;
-	mt_pwrc = pwrc;
- pm_power_off = &mt6323_do_pwroff;
+	ret = devm_register_sys_off_handler(pwrc->dev,
+					    SYS_OFF_MODE_POWER_OFF,
+					    SYS_OFF_PRIO_DEFAULT,
+					    mt6323_do_pwroff,
+					    pwrc);

	if (ret)
		return dev_err_probe(....);

Regards,
Angelo

+	if (ret) {
+		dev_err(pwrc->dev, "failed to register power-off handler: %d\n", ret);
+		return ret;
+	}





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux