18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2014 NVIDIA Corporation 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#ifndef __SOC_TEGRA_PM_H__ 78c2ecf20Sopenharmony_ci#define __SOC_TEGRA_PM_H__ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <linux/errno.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cienum tegra_suspend_mode { 128c2ecf20Sopenharmony_ci TEGRA_SUSPEND_NONE = 0, 138c2ecf20Sopenharmony_ci TEGRA_SUSPEND_LP2, /* CPU voltage off */ 148c2ecf20Sopenharmony_ci TEGRA_SUSPEND_LP1, /* CPU voltage off, DRAM self-refresh */ 158c2ecf20Sopenharmony_ci TEGRA_SUSPEND_LP0, /* CPU + core voltage off, DRAM self-refresh */ 168c2ecf20Sopenharmony_ci TEGRA_MAX_SUSPEND_MODE, 178c2ecf20Sopenharmony_ci}; 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_ARM) 208c2ecf20Sopenharmony_cienum tegra_suspend_mode 218c2ecf20Sopenharmony_citegra_pm_validate_suspend_mode(enum tegra_suspend_mode mode); 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci/* low-level resume entry point */ 248c2ecf20Sopenharmony_civoid tegra_resume(void); 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ciint tegra30_pm_secondary_cpu_suspend(unsigned long arg); 278c2ecf20Sopenharmony_civoid tegra_pm_clear_cpu_in_lp2(void); 288c2ecf20Sopenharmony_civoid tegra_pm_set_cpu_in_lp2(void); 298c2ecf20Sopenharmony_ciint tegra_pm_enter_lp2(void); 308c2ecf20Sopenharmony_ciint tegra_pm_park_secondary_cpu(unsigned long cpu); 318c2ecf20Sopenharmony_ci#else 328c2ecf20Sopenharmony_cistatic inline enum tegra_suspend_mode 338c2ecf20Sopenharmony_citegra_pm_validate_suspend_mode(enum tegra_suspend_mode mode) 348c2ecf20Sopenharmony_ci{ 358c2ecf20Sopenharmony_ci return TEGRA_SUSPEND_NONE; 368c2ecf20Sopenharmony_ci} 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_cistatic inline void tegra_resume(void) 398c2ecf20Sopenharmony_ci{ 408c2ecf20Sopenharmony_ci} 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_cistatic inline int tegra30_pm_secondary_cpu_suspend(unsigned long arg) 438c2ecf20Sopenharmony_ci{ 448c2ecf20Sopenharmony_ci return -ENOTSUPP; 458c2ecf20Sopenharmony_ci} 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cistatic inline void tegra_pm_clear_cpu_in_lp2(void) 488c2ecf20Sopenharmony_ci{ 498c2ecf20Sopenharmony_ci} 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_cistatic inline void tegra_pm_set_cpu_in_lp2(void) 528c2ecf20Sopenharmony_ci{ 538c2ecf20Sopenharmony_ci} 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_cistatic inline int tegra_pm_enter_lp2(void) 568c2ecf20Sopenharmony_ci{ 578c2ecf20Sopenharmony_ci return -ENOTSUPP; 588c2ecf20Sopenharmony_ci} 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_cistatic inline int tegra_pm_park_secondary_cpu(unsigned long cpu) 618c2ecf20Sopenharmony_ci{ 628c2ecf20Sopenharmony_ci return -ENOTSUPP; 638c2ecf20Sopenharmony_ci} 648c2ecf20Sopenharmony_ci#endif /* CONFIG_PM_SLEEP */ 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci#endif /* __SOC_TEGRA_PM_H__ */ 67