Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -163,6 +163,5 @@ DT_MACHINE_START(TEGRA_DT, "NVIDIA Tegra SoC (Flattened Device Tree)")
	.init_irq	= tegra_dt_init_irq,
	.init_machine	= tegra_dt_init,
	.init_late	= tegra_dt_init_late,
	.restart	= tegra_pmc_restart,
	.dt_compat	= tegra_dt_board_compat,
MACHINE_END
+17 −6
Original line number Diff line number Diff line
@@ -377,13 +377,10 @@ int tegra_pmc_cpu_remove_clamping(int cpuid)
}
#endif /* CONFIG_SMP */

/**
 * tegra_pmc_restart() - reboot the system
 * @mode: which mode to reboot in
 * @cmd: reboot command
 */
void tegra_pmc_restart(enum reboot_mode mode, const char *cmd)
static int tegra_pmc_restart_notify(struct notifier_block *this,
				    unsigned long action, void *data)
{
	const char *cmd = data;
	u32 value;

	value = tegra_pmc_readl(PMC_SCRATCH0);
@@ -405,8 +402,15 @@ void tegra_pmc_restart(enum reboot_mode mode, const char *cmd)
	value = tegra_pmc_readl(0);
	value |= 0x10;
	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)
{
	unsigned int i;
@@ -837,6 +841,13 @@ static int tegra_pmc_probe(struct platform_device *pdev)
			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;
}

+0 −2
Original line number Diff line number Diff line
@@ -26,8 +26,6 @@
struct clk;
struct reset_control;

void tegra_pmc_restart(enum reboot_mode mode, const char *cmd);

#ifdef CONFIG_PM_SLEEP
enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void);
void tegra_pmc_set_suspend_mode(enum tegra_suspend_mode mode);