soc/tegra: pmc: Use sys-off handler API to power off Nexus 7 properly
authorDmitry Osipenko <dmitry.osipenko@collabora.com>
Mon, 9 May 2022 23:32:33 +0000 (02:32 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 19 May 2022 17:30:31 +0000 (19:30 +0200)
commiteae813b755c46c74d65f52fa6b0b1a5476e13551
treea0b1159c7e986e69ab6cf5b4ddc64e68619f9eea
parent5b71808eb7c97815fc3b9c386ca0ef6daf2dc053
soc/tegra: pmc: Use sys-off handler API to power off Nexus 7 properly

Nexus 7 Android tablet can be turned off using a special bootloader
command which is conveyed to bootloader by putting magic value into the
special scratch register and then rebooting normally. This power-off
method should be invoked if USB cable is connected. Bootloader then will
display battery status and power off the device. This behaviour is
borrowed from downstream kernel and matches user expectations, otherwise
it looks like device got hung during power-off and it may wake up on
USB disconnect.

Switch PMC driver to sys-off handler API, which provides drivers with
chained power-off callbacks functionality that is required for powering-off
devices properly. It also brings resource-managed API for the restart
handler registration that makes PMC driver code cleaner.

Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/soc/tegra/pmc.c