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