Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 044d71bc6cdee8980d0fdc35ec79a0d5818b2ce3 239 lines 6.0 kB view raw
1/* 2 * Copyright (c) 2010 Google, Inc 3 * Copyright (c) 2014 NVIDIA Corporation 4 * 5 * Author: 6 * Colin Cross <ccross@google.com> 7 * 8 * This software is licensed under the terms of the GNU General Public 9 * License version 2, as published by the Free Software Foundation, and 10 * may be copied, distributed, and modified under those terms. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 */ 18 19#ifndef __SOC_TEGRA_PMC_H__ 20#define __SOC_TEGRA_PMC_H__ 21 22#include <linux/reboot.h> 23 24#include <soc/tegra/pm.h> 25 26struct clk; 27struct reset_control; 28 29#ifdef CONFIG_SMP 30bool tegra_pmc_cpu_is_powered(unsigned int cpuid); 31int tegra_pmc_cpu_power_on(unsigned int cpuid); 32int tegra_pmc_cpu_remove_clamping(unsigned int cpuid); 33#endif /* CONFIG_SMP */ 34 35/* 36 * powergate and I/O rail APIs 37 */ 38 39#define TEGRA_POWERGATE_CPU 0 40#define TEGRA_POWERGATE_3D 1 41#define TEGRA_POWERGATE_VENC 2 42#define TEGRA_POWERGATE_PCIE 3 43#define TEGRA_POWERGATE_VDEC 4 44#define TEGRA_POWERGATE_L2 5 45#define TEGRA_POWERGATE_MPE 6 46#define TEGRA_POWERGATE_HEG 7 47#define TEGRA_POWERGATE_SATA 8 48#define TEGRA_POWERGATE_CPU1 9 49#define TEGRA_POWERGATE_CPU2 10 50#define TEGRA_POWERGATE_CPU3 11 51#define TEGRA_POWERGATE_CELP 12 52#define TEGRA_POWERGATE_3D1 13 53#define TEGRA_POWERGATE_CPU0 14 54#define TEGRA_POWERGATE_C0NC 15 55#define TEGRA_POWERGATE_C1NC 16 56#define TEGRA_POWERGATE_SOR 17 57#define TEGRA_POWERGATE_DIS 18 58#define TEGRA_POWERGATE_DISB 19 59#define TEGRA_POWERGATE_XUSBA 20 60#define TEGRA_POWERGATE_XUSBB 21 61#define TEGRA_POWERGATE_XUSBC 22 62#define TEGRA_POWERGATE_VIC 23 63#define TEGRA_POWERGATE_IRAM 24 64#define TEGRA_POWERGATE_NVDEC 25 65#define TEGRA_POWERGATE_NVJPG 26 66#define TEGRA_POWERGATE_AUD 27 67#define TEGRA_POWERGATE_DFD 28 68#define TEGRA_POWERGATE_VE2 29 69#define TEGRA_POWERGATE_MAX TEGRA_POWERGATE_VE2 70 71#define TEGRA_POWERGATE_3D0 TEGRA_POWERGATE_3D 72 73/** 74 * enum tegra_io_pad - I/O pad group identifier 75 * 76 * I/O pins on Tegra SoCs are grouped into so-called I/O pads. Each such pad 77 * can be used to control the common voltage signal level and power state of 78 * the pins of the given pad. 79 */ 80enum tegra_io_pad { 81 TEGRA_IO_PAD_AUDIO, 82 TEGRA_IO_PAD_AUDIO_HV, 83 TEGRA_IO_PAD_BB, 84 TEGRA_IO_PAD_CAM, 85 TEGRA_IO_PAD_COMP, 86 TEGRA_IO_PAD_CSIA, 87 TEGRA_IO_PAD_CSIB, 88 TEGRA_IO_PAD_CSIC, 89 TEGRA_IO_PAD_CSID, 90 TEGRA_IO_PAD_CSIE, 91 TEGRA_IO_PAD_CSIF, 92 TEGRA_IO_PAD_DBG, 93 TEGRA_IO_PAD_DEBUG_NONAO, 94 TEGRA_IO_PAD_DMIC, 95 TEGRA_IO_PAD_DP, 96 TEGRA_IO_PAD_DSI, 97 TEGRA_IO_PAD_DSIB, 98 TEGRA_IO_PAD_DSIC, 99 TEGRA_IO_PAD_DSID, 100 TEGRA_IO_PAD_EMMC, 101 TEGRA_IO_PAD_EMMC2, 102 TEGRA_IO_PAD_GPIO, 103 TEGRA_IO_PAD_HDMI, 104 TEGRA_IO_PAD_HSIC, 105 TEGRA_IO_PAD_HV, 106 TEGRA_IO_PAD_LVDS, 107 TEGRA_IO_PAD_MIPI_BIAS, 108 TEGRA_IO_PAD_NAND, 109 TEGRA_IO_PAD_PEX_BIAS, 110 TEGRA_IO_PAD_PEX_CLK1, 111 TEGRA_IO_PAD_PEX_CLK2, 112 TEGRA_IO_PAD_PEX_CNTRL, 113 TEGRA_IO_PAD_SDMMC1, 114 TEGRA_IO_PAD_SDMMC3, 115 TEGRA_IO_PAD_SDMMC4, 116 TEGRA_IO_PAD_SPI, 117 TEGRA_IO_PAD_SPI_HV, 118 TEGRA_IO_PAD_SYS_DDC, 119 TEGRA_IO_PAD_UART, 120 TEGRA_IO_PAD_USB0, 121 TEGRA_IO_PAD_USB1, 122 TEGRA_IO_PAD_USB2, 123 TEGRA_IO_PAD_USB3, 124 TEGRA_IO_PAD_USB_BIAS, 125}; 126 127/* deprecated, use TEGRA_IO_PAD_{HDMI,LVDS} instead */ 128#define TEGRA_IO_RAIL_HDMI TEGRA_IO_PAD_HDMI 129#define TEGRA_IO_RAIL_LVDS TEGRA_IO_PAD_LVDS 130 131/** 132 * enum tegra_io_pad_voltage - voltage level of the I/O pad's source rail 133 * @TEGRA_IO_PAD_1800000UV: 1.8 V 134 * @TEGRA_IO_PAD_3300000UV: 3.3 V 135 */ 136enum tegra_io_pad_voltage { 137 TEGRA_IO_PAD_1800000UV, 138 TEGRA_IO_PAD_3300000UV, 139}; 140 141#ifdef CONFIG_SOC_TEGRA_PMC 142int tegra_powergate_is_powered(unsigned int id); 143int tegra_powergate_power_on(unsigned int id); 144int tegra_powergate_power_off(unsigned int id); 145int tegra_powergate_remove_clamping(unsigned int id); 146 147/* Must be called with clk disabled, and returns with clk enabled */ 148int tegra_powergate_sequence_power_up(unsigned int id, struct clk *clk, 149 struct reset_control *rst); 150 151int tegra_io_pad_power_enable(enum tegra_io_pad id); 152int tegra_io_pad_power_disable(enum tegra_io_pad id); 153int tegra_io_pad_set_voltage(enum tegra_io_pad id, 154 enum tegra_io_pad_voltage voltage); 155int tegra_io_pad_get_voltage(enum tegra_io_pad id); 156 157/* deprecated, use tegra_io_pad_power_{enable,disable}() instead */ 158int tegra_io_rail_power_on(unsigned int id); 159int tegra_io_rail_power_off(unsigned int id); 160 161enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void); 162void tegra_pmc_set_suspend_mode(enum tegra_suspend_mode mode); 163void tegra_pmc_enter_suspend_mode(enum tegra_suspend_mode mode); 164 165#else 166static inline int tegra_powergate_is_powered(unsigned int id) 167{ 168 return -ENOSYS; 169} 170 171static inline int tegra_powergate_power_on(unsigned int id) 172{ 173 return -ENOSYS; 174} 175 176static inline int tegra_powergate_power_off(unsigned int id) 177{ 178 return -ENOSYS; 179} 180 181static inline int tegra_powergate_remove_clamping(unsigned int id) 182{ 183 return -ENOSYS; 184} 185 186static inline int tegra_powergate_sequence_power_up(unsigned int id, 187 struct clk *clk, 188 struct reset_control *rst) 189{ 190 return -ENOSYS; 191} 192 193static inline int tegra_io_pad_power_enable(enum tegra_io_pad id) 194{ 195 return -ENOSYS; 196} 197 198static inline int tegra_io_pad_power_disable(enum tegra_io_pad id) 199{ 200 return -ENOSYS; 201} 202 203static inline int tegra_io_pad_set_voltage(enum tegra_io_pad id, 204 enum tegra_io_pad_voltage voltage) 205{ 206 return -ENOSYS; 207} 208 209static inline int tegra_io_pad_get_voltage(enum tegra_io_pad id) 210{ 211 return -ENOSYS; 212} 213 214static inline int tegra_io_rail_power_on(unsigned int id) 215{ 216 return -ENOSYS; 217} 218 219static inline int tegra_io_rail_power_off(unsigned int id) 220{ 221 return -ENOSYS; 222} 223 224static inline enum tegra_suspend_mode tegra_pmc_get_suspend_mode(void) 225{ 226 return TEGRA_SUSPEND_NONE; 227} 228 229static inline void tegra_pmc_set_suspend_mode(enum tegra_suspend_mode mode) 230{ 231} 232 233static inline void tegra_pmc_enter_suspend_mode(enum tegra_suspend_mode mode) 234{ 235} 236 237#endif /* CONFIG_SOC_TEGRA_PMC */ 238 239#endif /* __SOC_TEGRA_PMC_H__ */