ARM: tegra12: set CPU rate to 2.2GHz for sku 0x87
[linux-3.10.git] / arch / arm / mach-tegra / pmc.h
1 /*
2  * Copyright (C) 2012 NVIDIA CORPORATION. All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms and conditions of the GNU General Public License,
6  * version 2, as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
11  * more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15  *
16  */
17
18 #ifndef __MACH_TEGRA_PMC_H
19 #define __MACH_TEGRA_PMC_H
20
21 enum tegra_suspend_mode {
22         TEGRA_SUSPEND_NONE = 0,
23         TEGRA_SUSPEND_LP2,      /* CPU voltage off */
24         TEGRA_SUSPEND_LP1,      /* CPU voltage off, DRAM self-refresh */
25         TEGRA_SUSPEND_LP0,      /* CPU + core voltage off, DRAM self-refresh */
26         TEGRA_MAX_SUSPEND_MODE,
27 };
28
29 #if defined(CONFIG_OF) && defined(CONFIG_COMMON_CLK) && defined(CONFIG_PM_SLEEP)
30 void set_power_timers(unsigned long us_on, unsigned long us_off);
31 #endif
32
33 bool tegra_pmc_cpu_is_powered(int cpuid);
34 int tegra_pmc_cpu_power_on(int cpuid);
35 int tegra_pmc_cpu_remove_clamping(int cpuid);
36
37 void tegra_pmc_init(void);
38
39 struct pmc_pm_data {
40         u32 cpu_good_time;      /* CPU power good time in uS */
41         u32 cpu_off_time;       /* CPU power off time in uS */
42         u32 core_osc_time;      /* Core power good osc time in uS */
43         u32 core_pmu_time;      /* Core power good pmu time in uS */
44         u32 core_off_time;      /* Core power off time in uS */
45         bool corereq_high;      /* Core power request active-high */
46         bool sysclkreq_high;    /* System clock request active-high */
47         bool combined_req;      /* Combined pwr req for CPU & Core */
48         bool cpu_pwr_good_en;   /* CPU power good signal is enabled */
49         u32 lp0_vec_phy_addr;   /* The phy addr of LP0 warm boot code */
50         u32 lp0_vec_size;       /* The size of LP0 warm boot code */
51         enum tegra_suspend_mode suspend_mode;
52 };
53 struct pmc_pm_data *tegra_get_pm_data(void);
54
55 #endif