1ef2ee5d0SMichal Meloun /*- 2ef2ee5d0SMichal Meloun * Copyright (c) 2016 Michal Meloun <mmel@FreeBSD.org> 3ef2ee5d0SMichal Meloun * All rights reserved. 4ef2ee5d0SMichal Meloun * 5ef2ee5d0SMichal Meloun * Redistribution and use in source and binary forms, with or without 6ef2ee5d0SMichal Meloun * modification, are permitted provided that the following conditions 7ef2ee5d0SMichal Meloun * are met: 8ef2ee5d0SMichal Meloun * 1. Redistributions of source code must retain the above copyright 9ef2ee5d0SMichal Meloun * notice, this list of conditions and the following disclaimer. 10ef2ee5d0SMichal Meloun * 2. Redistributions in binary form must reproduce the above copyright 11ef2ee5d0SMichal Meloun * notice, this list of conditions and the following disclaimer in the 12ef2ee5d0SMichal Meloun * documentation and/or other materials provided with the distribution. 13ef2ee5d0SMichal Meloun * 14ef2ee5d0SMichal Meloun * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15ef2ee5d0SMichal Meloun * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16ef2ee5d0SMichal Meloun * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17ef2ee5d0SMichal Meloun * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18ef2ee5d0SMichal Meloun * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19ef2ee5d0SMichal Meloun * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20ef2ee5d0SMichal Meloun * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21ef2ee5d0SMichal Meloun * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22ef2ee5d0SMichal Meloun * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23ef2ee5d0SMichal Meloun * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24ef2ee5d0SMichal Meloun * SUCH DAMAGE. 25ef2ee5d0SMichal Meloun */ 26ef2ee5d0SMichal Meloun 27ef2ee5d0SMichal Meloun #ifndef _TEGRA_PMC_H_ 28ef2ee5d0SMichal Meloun #define _TEGRA_PMC_H_ 29ef2ee5d0SMichal Meloun 30ef2ee5d0SMichal Meloun enum tegra_suspend_mode { 31ef2ee5d0SMichal Meloun TEGRA_SUSPEND_NONE = 0, 32ef2ee5d0SMichal Meloun TEGRA_SUSPEND_LP2, /* CPU voltage off */ 33ef2ee5d0SMichal Meloun TEGRA_SUSPEND_LP1, /* CPU voltage off, DRAM self-refresh */ 34ef2ee5d0SMichal Meloun TEGRA_SUSPEND_LP0, /* CPU + core voltage off, DRAM self-refresh */ 35ef2ee5d0SMichal Meloun }; 36ef2ee5d0SMichal Meloun 37ef2ee5d0SMichal Meloun /* PARTIDs for powergate */ 38ef2ee5d0SMichal Meloun enum tegra_powergate_id { 39ef2ee5d0SMichal Meloun TEGRA_POWERGATE_CRAIL = 0, 40*b9cbd68dSMichal Meloun TEGRA_POWERGATE_TD = 1, /* Tegra124 only */ 41ef2ee5d0SMichal Meloun TEGRA_POWERGATE_VE = 2, 42ef2ee5d0SMichal Meloun TEGRA_POWERGATE_PCX = 3, 43*b9cbd68dSMichal Meloun TEGRA_POWERGATE_VDE = 4, /* Tegra124 only */ 44*b9cbd68dSMichal Meloun TEGRA_POWERGATE_L2C = 5, /* Tegra124 only */ 45ef2ee5d0SMichal Meloun TEGRA_POWERGATE_MPE = 6, 46*b9cbd68dSMichal Meloun TEGRA_POWERGATE_HEG = 7, /* Tegra124 only */ 47ef2ee5d0SMichal Meloun TEGRA_POWERGATE_SAX = 8, 48ef2ee5d0SMichal Meloun TEGRA_POWERGATE_CE1 = 9, 49ef2ee5d0SMichal Meloun TEGRA_POWERGATE_CE2 = 10, 50ef2ee5d0SMichal Meloun TEGRA_POWERGATE_CE3 = 11, 51*b9cbd68dSMichal Meloun TEGRA_POWERGATE_CELP = 12, /* Tegra124 only */ 52ef2ee5d0SMichal Meloun /* */ 53ef2ee5d0SMichal Meloun TEGRA_POWERGATE_CE0 = 14, 54ef2ee5d0SMichal Meloun TEGRA_POWERGATE_C0NC = 15, 55ef2ee5d0SMichal Meloun TEGRA_POWERGATE_C1NC = 16, 56ef2ee5d0SMichal Meloun TEGRA_POWERGATE_SOR = 17, 57ef2ee5d0SMichal Meloun TEGRA_POWERGATE_DIS = 18, 58ef2ee5d0SMichal Meloun TEGRA_POWERGATE_DISB = 19, 59ef2ee5d0SMichal Meloun TEGRA_POWERGATE_XUSBA = 20, 60ef2ee5d0SMichal Meloun TEGRA_POWERGATE_XUSBB = 21, 61ef2ee5d0SMichal Meloun TEGRA_POWERGATE_XUSBC = 22, 62ef2ee5d0SMichal Meloun TEGRA_POWERGATE_VIC = 23, 63ef2ee5d0SMichal Meloun TEGRA_POWERGATE_IRAM = 24, 64*b9cbd68dSMichal Meloun TEGRA_POWERGATE_NVDEC = 25, /* Tegra210 only */ 65*b9cbd68dSMichal Meloun TEGRA_POWERGATE_NVJPG = 26, /* Tegra210 only */ 66*b9cbd68dSMichal Meloun TEGRA_POWERGATE_AUD = 27, /* Tegra210 only */ 67*b9cbd68dSMichal Meloun TEGRA_POWERGATE_DFD = 28, /* Tegra210 only */ 68*b9cbd68dSMichal Meloun TEGRA_POWERGATE_VE2 = 29, /* Tegra210 only */ 69ef2ee5d0SMichal Meloun /* */ 70ef2ee5d0SMichal Meloun TEGRA_POWERGATE_3D = 32 71ef2ee5d0SMichal Meloun }; 72ef2ee5d0SMichal Meloun 73ef2ee5d0SMichal Meloun /* PARTIDs for power rails */ 74ef2ee5d0SMichal Meloun enum tegra_powerrail_id { 75ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_CSIA = 0, 76ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_CSIB = 1, 77ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_DSI = 2, 78ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_MIPI_BIAS = 3, 79ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_PEX_BIAS = 4, 80ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_PEX_CLK1 = 5, 81ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_PEX_CLK2 = 6, 82ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_USB0 = 9, 83ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_USB1 = 10, 84ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_USB2 = 11, 85ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_USB_BIAS = 12, 86ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_NAND = 13, 87ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_UART = 14, 88ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_BB = 15, 89ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_AUDIO = 17, 90ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_HSIC = 19, 91ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_COMP = 22, 92ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_HDMI = 28, 93ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_PEX_CNTRL = 32, 94ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_SDMMC1 = 33, 95ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_SDMMC3 = 34, 96ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_SDMMC4 = 35, 97ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_CAM = 36, 98ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_RES = 37, 99ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_HV = 38, 100ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_DSIB = 39, 101ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_DSIC = 40, 102ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_DSID = 41, 103ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_CSIE = 44, 104ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_LVDS = 57, 105ef2ee5d0SMichal Meloun TEGRA_IO_RAIL_SYS_DDC = 58, 106ef2ee5d0SMichal Meloun }; 107ef2ee5d0SMichal Meloun 108ef2ee5d0SMichal Meloun int tegra_powergate_is_powered(enum tegra_powergate_id id); 109ef2ee5d0SMichal Meloun int tegra_powergate_power_on(enum tegra_powergate_id id); 110ef2ee5d0SMichal Meloun int tegra_powergate_power_off(enum tegra_powergate_id id); 111ef2ee5d0SMichal Meloun int tegra_powergate_remove_clamping(enum tegra_powergate_id id); 112ef2ee5d0SMichal Meloun int tegra_powergate_sequence_power_up(enum tegra_powergate_id id, 113ef2ee5d0SMichal Meloun clk_t clk, hwreset_t rst); 114ef2ee5d0SMichal Meloun int tegra_io_rail_power_on(int tegra_powerrail_id); 115ef2ee5d0SMichal Meloun int tegra_io_rail_power_off(int tegra_powerrail_id); 116ef2ee5d0SMichal Meloun 117ef2ee5d0SMichal Meloun #endif /*_TEGRA_PMC_H_*/