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 27*ef2ee5d0SMichal Meloun #ifndef _TEGRA124_CAR_ 28*ef2ee5d0SMichal Meloun #define _TEGRA124_CAR_ 29*ef2ee5d0SMichal Meloun 30*ef2ee5d0SMichal Meloun #include "clkdev_if.h" 31*ef2ee5d0SMichal Meloun 32*ef2ee5d0SMichal Meloun #define RD4(sc, reg, val) CLKDEV_READ_4((sc)->clkdev, reg, val) 33*ef2ee5d0SMichal Meloun #define WR4(sc, reg, val) CLKDEV_WRITE_4((sc)->clkdev, reg, val) 34*ef2ee5d0SMichal Meloun #define MD4(sc, reg, mask, set) CLKDEV_MODIFY_4((sc)->clkdev, reg, mask, set) 35*ef2ee5d0SMichal Meloun #define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev) 36*ef2ee5d0SMichal Meloun #define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev) 37*ef2ee5d0SMichal Meloun 38*ef2ee5d0SMichal Meloun #define RST_DEVICES_L 0x004 39*ef2ee5d0SMichal Meloun #define RST_DEVICES_H 0x008 40*ef2ee5d0SMichal Meloun #define RST_DEVICES_U 0x00C 41*ef2ee5d0SMichal Meloun #define CLK_OUT_ENB_L 0x010 42*ef2ee5d0SMichal Meloun #define CLK_OUT_ENB_H 0x014 43*ef2ee5d0SMichal Meloun #define CLK_OUT_ENB_U 0x018 44*ef2ee5d0SMichal Meloun #define CCLK_BURST_POLICY 0x020 45*ef2ee5d0SMichal Meloun #define SUPER_CCLK_DIVIDER 0x024 46*ef2ee5d0SMichal Meloun #define SCLK_BURST_POLICY 0x028 47*ef2ee5d0SMichal Meloun #define SUPER_SCLK_DIVIDER 0x02c 48*ef2ee5d0SMichal Meloun #define CLK_SYSTEM_RATE 0x030 49*ef2ee5d0SMichal Meloun 50*ef2ee5d0SMichal Meloun #define OSC_CTRL 0x050 51*ef2ee5d0SMichal Meloun #define OSC_CTRL_OSC_FREQ_SHIFT 28 52*ef2ee5d0SMichal Meloun #define OSC_CTRL_PLL_REF_DIV_SHIFT 26 53*ef2ee5d0SMichal Meloun 54*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL 0x068 55*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_SSCINCINTRV_MASK (0x3f << 24) 56*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_SSCINCINTRV_VAL (0x20 << 24) 57*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_SSCINC_MASK (0xff << 16) 58*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_SSCINC_VAL (0x1 << 16) 59*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_SSCINVERT (1 << 15) 60*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_SSCCENTER (1 << 14) 61*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_SSCBYP (1 << 12) 62*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_INTERP_RESET (1 << 11) 63*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_BYPASS_SS (1 << 10) 64*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_SSCMAX_MASK 0x1ff 65*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_SSCMAX_VAL 0x25 66*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_DISABLE (PLLE_SS_CNTL_BYPASS_SS | \ 67*ef2ee5d0SMichal Meloun PLLE_SS_CNTL_INTERP_RESET | \ 68*ef2ee5d0SMichal Meloun PLLE_SS_CNTL_SSCBYP) 69*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_COEFFICIENTS_MASK (PLLE_SS_CNTL_SSCMAX_MASK | \ 70*ef2ee5d0SMichal Meloun PLLE_SS_CNTL_SSCINC_MASK | \ 71*ef2ee5d0SMichal Meloun PLLE_SS_CNTL_SSCINCINTRV_MASK) 72*ef2ee5d0SMichal Meloun #define PLLE_SS_CNTL_COEFFICIENTS_VAL (PLLE_SS_CNTL_SSCMAX_VAL | \ 73*ef2ee5d0SMichal Meloun PLLE_SS_CNTL_SSCINC_VAL | \ 74*ef2ee5d0SMichal Meloun PLLE_SS_CNTL_SSCINCINTRV_VAL) 75*ef2ee5d0SMichal Meloun 76*ef2ee5d0SMichal Meloun #define PLLC_BASE 0x080 77*ef2ee5d0SMichal Meloun #define PLLC_OUT 0x084 78*ef2ee5d0SMichal Meloun #define PLLC_MISC2 0x088 79*ef2ee5d0SMichal Meloun #define PLLC_MISC 0x08c 80*ef2ee5d0SMichal Meloun #define PLLM_BASE 0x090 81*ef2ee5d0SMichal Meloun #define PLLM_OUT 0x094 82*ef2ee5d0SMichal Meloun #define PLLM_MISC 0x09c 83*ef2ee5d0SMichal Meloun #define PLLP_BASE 0x0a0 84*ef2ee5d0SMichal Meloun #define PLLP_MISC 0x0ac 85*ef2ee5d0SMichal Meloun #define PLLP_OUTA 0x0a4 86*ef2ee5d0SMichal Meloun #define PLLP_OUTB 0x0a8 87*ef2ee5d0SMichal Meloun #define PLLA_BASE 0x0b0 88*ef2ee5d0SMichal Meloun #define PLLA_OUT 0x0b4 89*ef2ee5d0SMichal Meloun #define PLLA_MISC 0x0bc 90*ef2ee5d0SMichal Meloun #define PLLU_BASE 0x0c0 91*ef2ee5d0SMichal Meloun #define PLLU_MISC 0x0cc 92*ef2ee5d0SMichal Meloun #define PLLD_BASE 0x0d0 93*ef2ee5d0SMichal Meloun #define PLLD_MISC 0x0dc 94*ef2ee5d0SMichal Meloun #define PLLX_BASE 0x0e0 95*ef2ee5d0SMichal Meloun #define PLLX_MISC 0x0e4 96*ef2ee5d0SMichal Meloun #define PLLE_BASE 0x0e8 97*ef2ee5d0SMichal Meloun #define PLLE_BASE_LOCK_OVERRIDE (1 << 29) 98*ef2ee5d0SMichal Meloun #define PLLE_BASE_DIVCML_SHIFT 24 99*ef2ee5d0SMichal Meloun #define PLLE_BASE_DIVCML_MASK 0xf 100*ef2ee5d0SMichal Meloun 101*ef2ee5d0SMichal Meloun #define PLLE_MISC 0x0ec 102*ef2ee5d0SMichal Meloun #define PLLE_MISC_SETUP_BASE_SHIFT 16 103*ef2ee5d0SMichal Meloun #define PLLE_MISC_SETUP_BASE_MASK (0xffff << PLLE_MISC_SETUP_BASE_SHIFT) 104*ef2ee5d0SMichal Meloun #define PLLE_MISC_READY (1 << 15) 105*ef2ee5d0SMichal Meloun #define PLLE_MISC_IDDQ_SWCTL (1 << 14) 106*ef2ee5d0SMichal Meloun #define PLLE_MISC_IDDQ_OVERRIDE_VALUE (1 << 13) 107*ef2ee5d0SMichal Meloun #define PLLE_MISC_LOCK (1 << 11) 108*ef2ee5d0SMichal Meloun #define PLLE_MISC_REF_ENABLE (1 << 10) 109*ef2ee5d0SMichal Meloun #define PLLE_MISC_LOCK_ENABLE (1 << 9) 110*ef2ee5d0SMichal Meloun #define PLLE_MISC_PTS (1 << 8) 111*ef2ee5d0SMichal Meloun #define PLLE_MISC_VREG_BG_CTRL_SHIFT 4 112*ef2ee5d0SMichal Meloun #define PLLE_MISC_VREG_BG_CTRL_MASK (3 << PLLE_MISC_VREG_BG_CTRL_SHIFT) 113*ef2ee5d0SMichal Meloun #define PLLE_MISC_VREG_CTRL_SHIFT 2 114*ef2ee5d0SMichal Meloun #define PLLE_MISC_VREG_CTRL_MASK (2 << PLLE_MISC_VREG_CTRL_SHIFT) 115*ef2ee5d0SMichal Meloun 116*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2S1 0x100 117*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2S2 0x104 118*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SPDIF_OUT 0x108 119*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SPDIF_IN 0x10c 120*ef2ee5d0SMichal Meloun #define CLK_SOURCE_PWM 0x110 121*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SPI2 0x118 122*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SPI3 0x11c 123*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2C1 0x124 124*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2C5 0x128 125*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SPI1 0x134 126*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DISP1 0x138 127*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DISP2 0x13c 128*ef2ee5d0SMichal Meloun #define CLK_SOURCE_ISP 0x144 129*ef2ee5d0SMichal Meloun #define CLK_SOURCE_VI 0x148 130*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SDMMC1 0x150 131*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SDMMC2 0x154 132*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SDMMC4 0x164 133*ef2ee5d0SMichal Meloun #define CLK_SOURCE_VFIR 0x168 134*ef2ee5d0SMichal Meloun #define CLK_SOURCE_HSI 0x174 135*ef2ee5d0SMichal Meloun #define CLK_SOURCE_UARTA 0x178 136*ef2ee5d0SMichal Meloun #define CLK_SOURCE_UARTB 0x17c 137*ef2ee5d0SMichal Meloun #define CLK_SOURCE_HOST1X 0x180 138*ef2ee5d0SMichal Meloun #define CLK_SOURCE_HDMI 0x18c 139*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2C2 0x198 140*ef2ee5d0SMichal Meloun #define CLK_SOURCE_EMC 0x19c 141*ef2ee5d0SMichal Meloun #define CLK_SOURCE_UARTC 0x1a0 142*ef2ee5d0SMichal Meloun #define CLK_SOURCE_VI_SENSOR 0x1a8 143*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SPI4 0x1b4 144*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2C3 0x1b8 145*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SDMMC3 0x1bc 146*ef2ee5d0SMichal Meloun #define CLK_SOURCE_UARTD 0x1c0 147*ef2ee5d0SMichal Meloun #define CLK_SOURCE_VDE 0x1c8 148*ef2ee5d0SMichal Meloun #define CLK_SOURCE_OWR 0x1cc 149*ef2ee5d0SMichal Meloun #define CLK_SOURCE_NOR 0x1d0 150*ef2ee5d0SMichal Meloun #define CLK_SOURCE_CSITE 0x1d4 151*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2S0 0x1d8 152*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DTV 0x1dc 153*ef2ee5d0SMichal Meloun #define CLK_SOURCE_MSENC 0x1f0 154*ef2ee5d0SMichal Meloun #define CLK_SOURCE_TSEC 0x1f4 155*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SPARE2 0x1f8 156*ef2ee5d0SMichal Meloun 157*ef2ee5d0SMichal Meloun #define CLK_OUT_ENB_X 0x280 158*ef2ee5d0SMichal Meloun #define RST_DEVICES_X 0x28C 159*ef2ee5d0SMichal Meloun 160*ef2ee5d0SMichal Meloun #define RST_DEVICES_V 0x358 161*ef2ee5d0SMichal Meloun #define RST_DEVICES_W 0x35C 162*ef2ee5d0SMichal Meloun #define CLK_OUT_ENB_V 0x360 163*ef2ee5d0SMichal Meloun #define CLK_OUT_ENB_W 0x364 164*ef2ee5d0SMichal Meloun #define CCLKG_BURST_POLICY 0x368 165*ef2ee5d0SMichal Meloun #define SUPER_CCLKG_DIVIDER 0x36C 166*ef2ee5d0SMichal Meloun #define CCLKLP_BURST_POLICY 0x370 167*ef2ee5d0SMichal Meloun #define SUPER_CCLKLP_DIVIDER 0x374 168*ef2ee5d0SMichal Meloun 169*ef2ee5d0SMichal Meloun #define CLK_SOURCE_MSELECT 0x3b4 170*ef2ee5d0SMichal Meloun #define CLK_SOURCE_TSENSOR 0x3b8 171*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2S3 0x3bc 172*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2S4 0x3c0 173*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2C4 0x3c4 174*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SPI5 0x3c8 175*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SPI6 0x3cc 176*ef2ee5d0SMichal Meloun #define CLK_SOURCE_AUDIO 0x3d0 177*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DAM0 0x3d8 178*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DAM1 0x3dc 179*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DAM2 0x3e0 180*ef2ee5d0SMichal Meloun #define CLK_SOURCE_HDA2CODEC_2X 0x3e4 181*ef2ee5d0SMichal Meloun #define CLK_SOURCE_ACTMON 0x3e8 182*ef2ee5d0SMichal Meloun #define CLK_SOURCE_EXTPERIPH1 0x3ec 183*ef2ee5d0SMichal Meloun #define CLK_SOURCE_EXTPERIPH2 0x3f0 184*ef2ee5d0SMichal Meloun #define CLK_SOURCE_EXTPERIPH3 0x3f4 185*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2C_SLOW 0x3fc 186*ef2ee5d0SMichal Meloun 187*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SYS 0x400 188*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SOR0 0x414 189*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SATA_OOB 0x420 190*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SATA 0x424 191*ef2ee5d0SMichal Meloun #define CLK_SOURCE_HDA 0x428 192*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG0 0x480 193*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG1 0x484 194*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG1_FORCE_PLLU_POWERUP (1 << 17) 195*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG1_FORCE_PLLU_POWERDOWN (1 << 16) 196*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG1_FORCE_PLL_ENABLE_POWERUP (1 << 15) 197*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG1_FORCE_PLL_ENABLE_POWERDOWN (1 << 14) 198*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG1_FORCE_PLL_ACTIVE_POWERDOWN (1 << 12) 199*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG1_ENABLE_DLY_COUNT(x) (((x) & 0x1f) << 6) 200*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG1_XTAL_FREQ_COUNT(x) (((x) & 0xfff) << 0) 201*ef2ee5d0SMichal Meloun 202*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG2 0x488 203*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG2_ACTIVE_DLY_COUNT(x) (((x) & 0x3f) << 18) 204*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG2_STABLE_COUNT(x) (((x) & 0xffff) << 6) 205*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG2_FORCE_PD_SAMP_C_POWERDOWN (1 << 4) 206*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG2_FORCE_PD_SAMP_B_POWERDOWN (1 << 2) 207*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG2_FORCE_PD_SAMP_A_POWERDOWN (1 << 0) 208*ef2ee5d0SMichal Meloun 209*ef2ee5d0SMichal Meloun #define PLLE_AUX 0x48c 210*ef2ee5d0SMichal Meloun #define PLLE_AUX_PLLRE_SEL (1 << 28) 211*ef2ee5d0SMichal Meloun #define PLLE_AUX_SEQ_START_STATE (1 << 25) 212*ef2ee5d0SMichal Meloun #define PLLE_AUX_SEQ_ENABLE (1 << 24) 213*ef2ee5d0SMichal Meloun #define PLLE_AUX_SS_SWCTL (1 << 6) 214*ef2ee5d0SMichal Meloun #define PLLE_AUX_ENABLE_SWCTL (1 << 4) 215*ef2ee5d0SMichal Meloun #define PLLE_AUX_USE_LOCKDET (1 << 3) 216*ef2ee5d0SMichal Meloun #define PLLE_AUX_PLLP_SEL (1 << 2) 217*ef2ee5d0SMichal Meloun 218*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0 0x490 219*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0_SEQ_START_STATE (1 << 25) 220*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0_SEQ_ENABLE (1 << 24) 221*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0_SEQ_PADPLL_PD_INPUT_VALUE (1 << 7) 222*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0_SEQ_LANE_PD_INPUT_VALUE (1 << 6) 223*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0_SEQ_RESET_INPUT_VALUE (1 << 5) 224*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0_SEQ_IN_SWCTL (1 << 4) 225*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0_PADPLL_USE_LOCKDET (1 << 2) 226*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0_PADPLL_RESET_OVERRIDE_VALUE (1 << 1) 227*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG0_PADPLL_RESET_SWCTL (1 << 0) 228*ef2ee5d0SMichal Meloun 229*ef2ee5d0SMichal Meloun #define SATA_PLL_CFG1 0x494 230*ef2ee5d0SMichal Meloun #define PCIE_PLL_CFG0 0x498 231*ef2ee5d0SMichal Meloun #define PCIE_PLL_CFG0_SEQ_START_STATE (1 << 25) 232*ef2ee5d0SMichal Meloun #define PCIE_PLL_CFG0_SEQ_ENABLE (1 << 24) 233*ef2ee5d0SMichal Meloun 234*ef2ee5d0SMichal Meloun #define PLLD2_BASE 0x4b8 235*ef2ee5d0SMichal Meloun #define PLLD2_MISC 0x4bc 236*ef2ee5d0SMichal Meloun #define UTMIP_PLL_CFG3 0x4c0 237*ef2ee5d0SMichal Meloun #define PLLRE_BASE 0x4c4 238*ef2ee5d0SMichal Meloun #define PLLRE_MISC 0x4c8 239*ef2ee5d0SMichal Meloun #define PLLC2_BASE 0x4e8 240*ef2ee5d0SMichal Meloun #define PLLC2_MISC 0x4ec 241*ef2ee5d0SMichal Meloun #define PLLC3_BASE 0x4fc 242*ef2ee5d0SMichal Meloun 243*ef2ee5d0SMichal Meloun #define PLLC3_MISC 0x500 244*ef2ee5d0SMichal Meloun #define PLLX_MISC2 0x514 245*ef2ee5d0SMichal Meloun #define PLLX_MISC2 0x514 246*ef2ee5d0SMichal Meloun #define PLLX_MISC3 0x518 247*ef2ee5d0SMichal Meloun #define PLLX_MISC3_DYNRAMP_STEPB_MASK 0xFF 248*ef2ee5d0SMichal Meloun #define PLLX_MISC3_DYNRAMP_STEPB_SHIFT 24 249*ef2ee5d0SMichal Meloun #define PLLX_MISC3_DYNRAMP_STEPA_MASK 0xFF 250*ef2ee5d0SMichal Meloun #define PLLX_MISC3_DYNRAMP_STEPA_SHIFT 16 251*ef2ee5d0SMichal Meloun #define PLLX_MISC3_NDIV_NEW_MASK 0xFF 252*ef2ee5d0SMichal Meloun #define PLLX_MISC3_NDIV_NEW_SHIFT 8 253*ef2ee5d0SMichal Meloun #define PLLX_MISC3_EN_FSTLCK (1 << 5) 254*ef2ee5d0SMichal Meloun #define PLLX_MISC3_LOCK_OVERRIDE (1 << 4) 255*ef2ee5d0SMichal Meloun #define PLLX_MISC3_PLL_FREQLOCK (1 << 3) 256*ef2ee5d0SMichal Meloun #define PLLX_MISC3_DYNRAMP_DONE (1 << 2) 257*ef2ee5d0SMichal Meloun #define PLLX_MISC3_CLAMP_NDIV (1 << 1) 258*ef2ee5d0SMichal Meloun #define PLLX_MISC3_EN_DYNRAMP (1 << 0) 259*ef2ee5d0SMichal Meloun #define XUSBIO_PLL_CFG0 0x51c 260*ef2ee5d0SMichal Meloun #define XUSBIO_PLL_CFG0_SEQ_START_STATE (1 << 25) 261*ef2ee5d0SMichal Meloun #define XUSBIO_PLL_CFG0_SEQ_ENABLE (1 << 24) 262*ef2ee5d0SMichal Meloun #define XUSBIO_PLL_CFG0_PADPLL_USE_LOCKDET (1 << 6) 263*ef2ee5d0SMichal Meloun #define XUSBIO_PLL_CFG0_CLK_ENABLE_SWCTL (1 << 2) 264*ef2ee5d0SMichal Meloun #define XUSBIO_PLL_CFG0_PADPLL_RESET_SWCTL (1 << 0) 265*ef2ee5d0SMichal Meloun 266*ef2ee5d0SMichal Meloun #define PLLP_RESHIFT 0x528 267*ef2ee5d0SMichal Meloun #define UTMIPLL_HW_PWRDN_CFG0 0x52c 268*ef2ee5d0SMichal Meloun #define UTMIPLL_HW_PWRDN_CFG0_SEQ_START_STATE (1 << 25) 269*ef2ee5d0SMichal Meloun #define UTMIPLL_HW_PWRDN_CFG0_SEQ_ENABLE (1 << 24) 270*ef2ee5d0SMichal Meloun #define UTMIPLL_HW_PWRDN_CFG0_USE_LOCKDET (1 << 6) 271*ef2ee5d0SMichal Meloun #define UTMIPLL_HW_PWRDN_CFG0_SEQ_RESET_INPUT_VALUE (1 << 5) 272*ef2ee5d0SMichal Meloun #define UTMIPLL_HW_PWRDN_CFG0_SEQ_IN_SWCTL (1 << 4) 273*ef2ee5d0SMichal Meloun #define UTMIPLL_HW_PWRDN_CFG0_CLK_ENABLE_SWCTL (1 << 2) 274*ef2ee5d0SMichal Meloun #define UTMIPLL_HW_PWRDN_CFG0_IDDQ_OVERRIDE (1 << 1) 275*ef2ee5d0SMichal Meloun #define UTMIPLL_HW_PWRDN_CFG0_IDDQ_SWCTL (1 << 0) 276*ef2ee5d0SMichal Meloun 277*ef2ee5d0SMichal Meloun #define PLLDP_BASE 0x590 278*ef2ee5d0SMichal Meloun #define PLLDP_MISC 0x594 279*ef2ee5d0SMichal Meloun #define PLLC4_BASE 0x5a4 280*ef2ee5d0SMichal Meloun #define PLLC4_MISC 0x5a8 281*ef2ee5d0SMichal Meloun 282*ef2ee5d0SMichal Meloun #define CLK_SOURCE_XUSB_CORE_HOST 0x600 283*ef2ee5d0SMichal Meloun #define CLK_SOURCE_XUSB_FALCON 0x604 284*ef2ee5d0SMichal Meloun #define CLK_SOURCE_XUSB_FS 0x608 285*ef2ee5d0SMichal Meloun #define CLK_SOURCE_XUSB_CORE_DEV 0x60c 286*ef2ee5d0SMichal Meloun #define CLK_SOURCE_XUSB_SS 0x610 287*ef2ee5d0SMichal Meloun #define CLK_SOURCE_CILAB 0x614 288*ef2ee5d0SMichal Meloun #define CLK_SOURCE_CILCD 0x618 289*ef2ee5d0SMichal Meloun #define CLK_SOURCE_CILE 0x61c 290*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DSIA_LP 0x620 291*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DSIB_LP 0x624 292*ef2ee5d0SMichal Meloun #define CLK_SOURCE_ENTROPY 0x628 293*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DVFS_REF 0x62c 294*ef2ee5d0SMichal Meloun #define CLK_SOURCE_DVFS_SOC 0x630 295*ef2ee5d0SMichal Meloun #define CLK_SOURCE_TRACECLKIN 0x634 296*ef2ee5d0SMichal Meloun #define CLK_SOURCE_ADX 0x638 297*ef2ee5d0SMichal Meloun #define CLK_SOURCE_AMX 0x63c 298*ef2ee5d0SMichal Meloun #define CLK_SOURCE_EMC_LATENCY 0x640 299*ef2ee5d0SMichal Meloun #define CLK_SOURCE_SOC_THERM 0x644 300*ef2ee5d0SMichal Meloun #define CLK_SOURCE_VI_SENSOR2 0x658 301*ef2ee5d0SMichal Meloun #define CLK_SOURCE_I2C6 0x65c 302*ef2ee5d0SMichal Meloun #define CLK_SOURCE_EMC_DLL 0x664 303*ef2ee5d0SMichal Meloun #define CLK_SOURCE_HDMI_AUDIO 0x668 304*ef2ee5d0SMichal Meloun #define CLK_SOURCE_CLK72MHZ 0x66c 305*ef2ee5d0SMichal Meloun #define CLK_SOURCE_ADX1 0x670 306*ef2ee5d0SMichal Meloun #define CLK_SOURCE_AMX1 0x674 307*ef2ee5d0SMichal Meloun #define CLK_SOURCE_VIC 0x678 308*ef2ee5d0SMichal Meloun #define PLLP_OUTC 0x67c 309*ef2ee5d0SMichal Meloun #define PLLP_MISC1 0x680 310*ef2ee5d0SMichal Meloun 311*ef2ee5d0SMichal Meloun struct tegra124_car_softc { 312*ef2ee5d0SMichal Meloun device_t dev; 313*ef2ee5d0SMichal Meloun struct resource * mem_res; 314*ef2ee5d0SMichal Meloun struct mtx mtx; 315*ef2ee5d0SMichal Meloun struct clkdom *clkdom; 316*ef2ee5d0SMichal Meloun int type; 317*ef2ee5d0SMichal Meloun }; 318*ef2ee5d0SMichal Meloun 319*ef2ee5d0SMichal Meloun struct tegra124_init_item { 320*ef2ee5d0SMichal Meloun char *name; 321*ef2ee5d0SMichal Meloun char *parent; 322*ef2ee5d0SMichal Meloun uint64_t frequency; 323*ef2ee5d0SMichal Meloun int enable; 324*ef2ee5d0SMichal Meloun }; 325*ef2ee5d0SMichal Meloun 326*ef2ee5d0SMichal Meloun void tegra124_init_plls(struct tegra124_car_softc *sc); 327*ef2ee5d0SMichal Meloun 328*ef2ee5d0SMichal Meloun void tegra124_periph_clock(struct tegra124_car_softc *sc); 329*ef2ee5d0SMichal Meloun void tegra124_super_mux_clock(struct tegra124_car_softc *sc); 330*ef2ee5d0SMichal Meloun 331*ef2ee5d0SMichal Meloun int tegra124_hwreset_by_idx(struct tegra124_car_softc *sc, intptr_t idx, 332*ef2ee5d0SMichal Meloun bool reset); 333*ef2ee5d0SMichal Meloun 334*ef2ee5d0SMichal Meloun #endif /*_TEGRA124_CAR_*/ 335