[PATCH] mfd: axp20x: Add a 500ms delay at the end of axp20x_power_off
Chen-Yu Tsai
wens at csie.org
Sun Jun 5 08:03:44 PDT 2016
On Sun, Jun 5, 2016 at 9:50 PM, Hans de Goede <hdegoede at redhat.com> wrote:
> The kernel expects the power_off function to not return, and if it does
> it panics. At a slight delay after the i2c write which turns off power
^^^ Add?
Otherwise,
Acked-by: Chen-Yu Tsai <wens at csie.org>
> through the pmic, to give capacitors etc. some time to drain.
>
> Without this the kernel lives on long enough after the poweroff to
> print the following on the serial console on my Mele A1000G quad:
>
> [ 248.583588] reboot: Power down
> [ 248.600490] Kernel pa
>
> With the delay the start of printing "Kernel panic" is gone.
>
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
> drivers/mfd/axp20x.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
> index 6364dab..fd80b09 100644
> --- a/drivers/mfd/axp20x.c
> +++ b/drivers/mfd/axp20x.c
> @@ -17,6 +17,7 @@
> */
>
> #include <linux/err.h>
> +#include <linux/delay.h>
> #include <linux/interrupt.h>
> #include <linux/kernel.h>
> #include <linux/module.h>
> @@ -677,6 +678,9 @@ static void axp20x_power_off(void)
>
> regmap_write(axp20x_pm_power_off->regmap, AXP20X_OFF_CTRL,
> AXP20X_OFF);
> +
> + /* Give capacitors etc. time to drain to avoid kernel panic msg. */
> + msleep(500);
> }
>
> int axp20x_match_device(struct axp20x_dev *axp20x)
> --
> 2.7.4
>
More information about the linux-arm-kernel
mailing list