Commit 7892158a authored by David Riley's avatar David Riley Committed by Thierry Reding

soc/tegra: pmc: move to using a restart handler

The pmc driver was previously exporting tegra_pmc_restart, which was
assigned to machine_desc.init_machine, taking precedence over the
restart handlers registered through register_restart_handler().
Signed-off-by: default avatarDavid Riley <davidriley@chromium.org>
[tomeu.vizoso@collabora.com: Rebased]
Signed-off-by: default avatarTomeu Vizoso <tomeu.vizoso@collabora.com>
Acked-by: default avatarStephen Warren <swarren@nvidia.com>
Reviewed-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
[treding@nvidia.com: minor cleanups]
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
parent 4d48edb3
...@@ -163,6 +163,5 @@ DT_MACHINE_START(TEGRA_DT, "NVIDIA Tegra SoC (Flattened Device Tree)") ...@@ -163,6 +163,5 @@ DT_MACHINE_START(TEGRA_DT, "NVIDIA Tegra SoC (Flattened Device Tree)")
.init_irq = tegra_dt_init_irq, .init_irq = tegra_dt_init_irq,
.init_machine = tegra_dt_init, .init_machine = tegra_dt_init,
.init_late = tegra_dt_init_late, .init_late = tegra_dt_init_late,
.restart = tegra_pmc_restart,
.dt_compat = tegra_dt_board_compat, .dt_compat = tegra_dt_board_compat,
MACHINE_END MACHINE_END
...@@ -377,13 +377,10 @@ int tegra_pmc_cpu_remove_clamping(int cpuid) ...@@ -377,13 +377,10 @@ int tegra_pmc_cpu_remove_clamping(int cpuid)
} }
#endif /* CONFIG_SMP */ #endif /* CONFIG_SMP */
/** static int tegra_pmc_restart_notify(struct notifier_block *this,
* tegra_pmc_restart() - reboot the system unsigned long action, void *data)
* @mode: which mode to reboot in
* @cmd: reboot command
*/
void tegra_pmc_restart(enum reboot_mode mode, const char *cmd)
{ {
const char *cmd = data;
u32 value; u32 value;
value = tegra_pmc_readl(PMC_SCRATCH0); value = tegra_pmc_readl(PMC_SCRATCH0);
...@@ -405,8 +402,15 @@ void tegra_pmc_restart(enum reboot_mode mode, const char *cmd) ...@@ -405,8 +402,15 @@ void tegra_pmc_restart(enum reboot_mode mode, const char *cmd)
value = tegra_pmc_readl(0); value = tegra_pmc_readl(0);
value |= 0x10; value |= 0x10;
tegra_pmc_writel(value, 0); tegra_pmc_writel(value, 0);
return NOTIFY_DONE;
} }
static struct notifier_block tegra_pmc_restart_handler = {
.notifier_call = tegra_pmc_restart_notify,
.priority = 128,
};
static int powergate_show(struct seq_file *s, void *data) static int powergate_show(struct seq_file *s, void *data)
{ {
unsigned int i; unsigned int i;
...@@ -837,6 +841,13 @@ static int tegra_pmc_probe(struct platform_device *pdev) ...@@ -837,6 +841,13 @@ static int tegra_pmc_probe(struct platform_device *pdev)
return err; return err;
} }
err = register_restart_handler(&tegra_pmc_restart_handler);
if (err) {
dev_err(&pdev->dev, "unable to register restart handler, %d\n",
err);
return err;
}
return 0; return 0;
} }
......
...@@ -26,8 +26,6 @@ ...@@ -26,8 +26,6 @@
struct clk; struct clk;
struct reset_control; struct reset_control;
void tegra_pmc_restart(enum reboot_mode mode, const char *cmd);
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void); enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void);
void tegra_pmc_set_suspend_mode(enum tegra_suspend_mode mode); void tegra_pmc_set_suspend_mode(enum tegra_suspend_mode mode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment