FROMLIST: 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.

Bug: 146512338
Change-Id: I7b1f295a8a68c75d502ce050429297c2644233fb
Link: https://lore.kernel.org/patchwork/patch/1139626/
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>
This commit is contained in:
Guenter Roeck 2019-10-15 16:51:42 +02:00 • committed by Elliot Berman
commit b0ac347088

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);