regulator: act8945a-regulator: add shutdown function
authorClaudiu Beznea <claudiu.beznea@microchip.com>
Tue, 11 Dec 2018 15:56:50 +0000 (15:56 +0000)
committerMark Brown <broonie@kernel.org>
Wed, 12 Dec 2018 16:59:35 +0000 (16:59 +0000)
Implement shutdown method to make sure the PMIC will not enter the suspend
state when the system is shutdown.

This work is based on work done by Borris Brezillon on [1].

[1] https://www.spinics.net/lists/kernel/msg2942960.html

Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/act8945a-regulator.c

index f4d60743efb31f1c9c2ade194dc7b3e316769b72..90572b6370c696be40ee80fa8abf7db67ad40aa6 100644 (file)
@@ -339,12 +339,23 @@ static int act8945a_suspend(struct device *pdev)
 
 SIMPLE_DEV_PM_OPS(act8945a_pm, act8945a_suspend, NULL);
 
+static void act8945a_pmic_shutdown(struct platform_device *pdev)
+{
+       struct act8945a_pmic *act8945a = platform_get_drvdata(pdev);
+
+       /*
+        * Ask the PMIC to shutdown everything on the next PWRHLD transition.
+        */
+       regmap_write(act8945a->regmap, ACT8945A_SYS_CTRL, 0x0);
+}
+
 static struct platform_driver act8945a_pmic_driver = {
        .driver = {
                .name = "act8945a-regulator",
                .pm = &act8945a_pm,
        },
        .probe = act8945a_pmic_probe,
+       .shutdown = act8945a_pmic_shutdown,
 };
 module_platform_driver(act8945a_pmic_driver);