9c93ccfc86
Both PMC and cpuidle drivers are probed at the same init level and cpuidle depends on the PMC suspend mode. Add new default suspend mode that indicates whether PMC driver has been probed and reset the mode in a case of deferred probe of the PMC driver. Signed-off-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
73 lines
1.5 KiB
C
73 lines
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2014 NVIDIA Corporation
|
|
*/
|
|
|
|
#ifndef __SOC_TEGRA_PM_H__
|
|
#define __SOC_TEGRA_PM_H__
|
|
|
|
#include <linux/errno.h>
|
|
|
|
enum tegra_suspend_mode {
|
|
TEGRA_SUSPEND_NONE = 0,
|
|
TEGRA_SUSPEND_LP2, /* CPU voltage off */
|
|
TEGRA_SUSPEND_LP1, /* CPU voltage off, DRAM self-refresh */
|
|
TEGRA_SUSPEND_LP0, /* CPU + core voltage off, DRAM self-refresh */
|
|
TEGRA_MAX_SUSPEND_MODE,
|
|
TEGRA_SUSPEND_NOT_READY,
|
|
};
|
|
|
|
#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_ARM)
|
|
enum tegra_suspend_mode
|
|
tegra_pm_validate_suspend_mode(enum tegra_suspend_mode mode);
|
|
|
|
/* low-level resume entry point */
|
|
void tegra_resume(void);
|
|
|
|
int tegra30_pm_secondary_cpu_suspend(unsigned long arg);
|
|
void tegra_pm_clear_cpu_in_lp2(void);
|
|
void tegra_pm_set_cpu_in_lp2(void);
|
|
int tegra_pm_enter_lp2(void);
|
|
int tegra_pm_park_secondary_cpu(unsigned long cpu);
|
|
void tegra_pm_init_suspend(void);
|
|
#else
|
|
static inline enum tegra_suspend_mode
|
|
tegra_pm_validate_suspend_mode(enum tegra_suspend_mode mode)
|
|
{
|
|
return TEGRA_SUSPEND_NONE;
|
|
}
|
|
|
|
static inline void tegra_resume(void)
|
|
{
|
|
}
|
|
|
|
static inline int tegra30_pm_secondary_cpu_suspend(unsigned long arg)
|
|
{
|
|
return -ENOTSUPP;
|
|
}
|
|
|
|
static inline void tegra_pm_clear_cpu_in_lp2(void)
|
|
{
|
|
}
|
|
|
|
static inline void tegra_pm_set_cpu_in_lp2(void)
|
|
{
|
|
}
|
|
|
|
static inline int tegra_pm_enter_lp2(void)
|
|
{
|
|
return -ENOTSUPP;
|
|
}
|
|
|
|
static inline int tegra_pm_park_secondary_cpu(unsigned long cpu)
|
|
{
|
|
return -ENOTSUPP;
|
|
}
|
|
|
|
static inline void tegra_pm_init_suspend(void)
|
|
{
|
|
}
|
|
#endif /* CONFIG_PM_SLEEP */
|
|
|
|
#endif /* __SOC_TEGRA_PM_H__ */
|