diff options
author | David Riley <davidriley@chromium.org> | 2015-03-18 05:52:25 -0400 |
---|---|---|
committer | Thierry Reding <treding@nvidia.com> | 2015-05-04 08:21:45 -0400 |
commit | 7892158a96629c46c46dfae52eaf951f51222cf5 (patch) | |
tree | b8630cbec1b17f862c38c2905cdf4de441ee9803 | |
parent | 4d48edb3c3e1234d6b3fcdfb9ac24d7c6de449cb (diff) |
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: David Riley <davidriley@chromium.org>
[tomeu.vizoso@collabora.com: Rebased]
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
[treding@nvidia.com: minor cleanups]
Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r-- | arch/arm/mach-tegra/tegra.c | 1 | ||||
-rw-r--r-- | drivers/soc/tegra/pmc.c | 23 | ||||
-rw-r--r-- | include/soc/tegra/pmc.h | 2 |
3 files changed, 17 insertions, 9 deletions
diff --git a/arch/arm/mach-tegra/tegra.c b/arch/arm/mach-tegra/tegra.c index 861d88486dbe..2378fa560a21 100644 --- a/arch/arm/mach-tegra/tegra.c +++ b/arch/arm/mach-tegra/tegra.c | |||
@@ -163,6 +163,5 @@ DT_MACHINE_START(TEGRA_DT, "NVIDIA Tegra SoC (Flattened Device Tree)") | |||
163 | .init_irq = tegra_dt_init_irq, | 163 | .init_irq = tegra_dt_init_irq, |
164 | .init_machine = tegra_dt_init, | 164 | .init_machine = tegra_dt_init, |
165 | .init_late = tegra_dt_init_late, | 165 | .init_late = tegra_dt_init_late, |
166 | .restart = tegra_pmc_restart, | ||
167 | .dt_compat = tegra_dt_board_compat, | 166 | .dt_compat = tegra_dt_board_compat, |
168 | MACHINE_END | 167 | MACHINE_END |
diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c index c956395cf46f..cc119d15dd16 100644 --- a/drivers/soc/tegra/pmc.c +++ b/drivers/soc/tegra/pmc.c | |||
@@ -377,13 +377,10 @@ int tegra_pmc_cpu_remove_clamping(int cpuid) | |||
377 | } | 377 | } |
378 | #endif /* CONFIG_SMP */ | 378 | #endif /* CONFIG_SMP */ |
379 | 379 | ||
380 | /** | 380 | static int tegra_pmc_restart_notify(struct notifier_block *this, |
381 | * tegra_pmc_restart() - reboot the system | 381 | unsigned long action, void *data) |
382 | * @mode: which mode to reboot in | ||
383 | * @cmd: reboot command | ||
384 | */ | ||
385 | void tegra_pmc_restart(enum reboot_mode mode, const char *cmd) | ||
386 | { | 382 | { |
383 | const char *cmd = data; | ||
387 | u32 value; | 384 | u32 value; |
388 | 385 | ||
389 | value = tegra_pmc_readl(PMC_SCRATCH0); | 386 | value = tegra_pmc_readl(PMC_SCRATCH0); |
@@ -405,8 +402,15 @@ void tegra_pmc_restart(enum reboot_mode mode, const char *cmd) | |||
405 | value = tegra_pmc_readl(0); | 402 | value = tegra_pmc_readl(0); |
406 | value |= 0x10; | 403 | value |= 0x10; |
407 | tegra_pmc_writel(value, 0); | 404 | tegra_pmc_writel(value, 0); |
405 | |||
406 | return NOTIFY_DONE; | ||
408 | } | 407 | } |
409 | 408 | ||
409 | static struct notifier_block tegra_pmc_restart_handler = { | ||
410 | .notifier_call = tegra_pmc_restart_notify, | ||
411 | .priority = 128, | ||
412 | }; | ||
413 | |||
410 | static int powergate_show(struct seq_file *s, void *data) | 414 | static int powergate_show(struct seq_file *s, void *data) |
411 | { | 415 | { |
412 | unsigned int i; | 416 | unsigned int i; |
@@ -837,6 +841,13 @@ static int tegra_pmc_probe(struct platform_device *pdev) | |||
837 | return err; | 841 | return err; |
838 | } | 842 | } |
839 | 843 | ||
844 | err = register_restart_handler(&tegra_pmc_restart_handler); | ||
845 | if (err) { | ||
846 | dev_err(&pdev->dev, "unable to register restart handler, %d\n", | ||
847 | err); | ||
848 | return err; | ||
849 | } | ||
850 | |||
840 | return 0; | 851 | return 0; |
841 | } | 852 | } |
842 | 853 | ||
diff --git a/include/soc/tegra/pmc.h b/include/soc/tegra/pmc.h index 65a93273e72f..f5c0de43a5fa 100644 --- a/include/soc/tegra/pmc.h +++ b/include/soc/tegra/pmc.h | |||
@@ -26,8 +26,6 @@ | |||
26 | struct clk; | 26 | struct clk; |
27 | struct reset_control; | 27 | struct reset_control; |
28 | 28 | ||
29 | void tegra_pmc_restart(enum reboot_mode mode, const char *cmd); | ||
30 | |||
31 | #ifdef CONFIG_PM_SLEEP | 29 | #ifdef CONFIG_PM_SLEEP |
32 | enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void); | 30 | enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void); |
33 | void tegra_pmc_set_suspend_mode(enum tegra_suspend_mode mode); | 31 | void tegra_pmc_set_suspend_mode(enum tegra_suspend_mode mode); |