ANDROID: ARM: prima2: Register with kernel restart handler

Register with kernel restart handler instead of setting arm_pm_restart
directly. By doing this, the prima2 reset handler can be prioritized
among other restart methods available on a particular board.

Select a high priority of 192 since the original code overwrites the
default arm restart handler.

Acked-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Thierry Reding <treding@nvidia.com>

Bug: 163752725
Link: https://lore.kernel.org/lkml/20191015145147.1106247-2-thierry.reding@gmail.com/
Change-Id: I67834fb04f2c7dfae5e098bcf777e0405f2d415a
Signed-off-by: Elliot Berman <eberman@codeaurora.org>
This commit is contained in:
Guenter Roeck 2019-10-15 16:51:42 +02:00 committed by Elliot Berman
parent bf679b9412
commit 0e49e052ae

View File

@ -64,11 +64,18 @@ static struct reset_controller_dev sirfsoc_reset_controller = {
#define SIRFSOC_SYS_RST_BIT BIT(31)
static void sirfsoc_restart(enum reboot_mode mode, const char *cmd)
static int sirfsoc_restart(struct notifier_block *nb, unsigned long action,
void *data)
{
writel(SIRFSOC_SYS_RST_BIT, sirfsoc_rstc_base);
return NOTIFY_DONE;
}
static struct notifier_block sirfsoc_restart_nb = {
.notifier_call = sirfsoc_restart,
.priority = 192,
};
static int sirfsoc_rstc_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
@ -79,7 +86,7 @@ static int sirfsoc_rstc_probe(struct platform_device *pdev)
}
sirfsoc_reset_controller.of_node = np;
arm_pm_restart = sirfsoc_restart;
register_restart_handler(&sirfsoc_restart_nb);
if (IS_ENABLED(CONFIG_RESET_CONTROLLER))
reset_controller_register(&sirfsoc_reset_controller);