1*dc89ad14STom Warren /* 2*dc89ad14STom Warren * Copyright (c) 2010-2012, NVIDIA CORPORATION. All rights reserved. 3*dc89ad14STom Warren * 4*dc89ad14STom Warren * This program is free software; you can redistribute it and/or modify it 5*dc89ad14STom Warren * under the terms and conditions of the GNU General Public License, 6*dc89ad14STom Warren * version 2, as published by the Free Software Foundation. 7*dc89ad14STom Warren * 8*dc89ad14STom Warren * This program is distributed in the hope it will be useful, but WITHOUT 9*dc89ad14STom Warren * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 10*dc89ad14STom Warren * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 11*dc89ad14STom Warren * more details. 12*dc89ad14STom Warren * 13*dc89ad14STom Warren * You should have received a copy of the GNU General Public License 14*dc89ad14STom Warren * along with this program. If not, see <http://www.gnu.org/licenses/>. 15*dc89ad14STom Warren */ 16*dc89ad14STom Warren 17*dc89ad14STom Warren /* Tegra30 clock PLL tables */ 18*dc89ad14STom Warren 19*dc89ad14STom Warren #ifndef _TEGRA30_CLOCK_TABLES_H_ 20*dc89ad14STom Warren #define _TEGRA30_CLOCK_TABLES_H_ 21*dc89ad14STom Warren 22*dc89ad14STom Warren /* The PLLs supported by the hardware */ 23*dc89ad14STom Warren enum clock_id { 24*dc89ad14STom Warren CLOCK_ID_FIRST, 25*dc89ad14STom Warren CLOCK_ID_CGENERAL = CLOCK_ID_FIRST, 26*dc89ad14STom Warren CLOCK_ID_MEMORY, 27*dc89ad14STom Warren CLOCK_ID_PERIPH, 28*dc89ad14STom Warren CLOCK_ID_AUDIO, 29*dc89ad14STom Warren CLOCK_ID_USB, 30*dc89ad14STom Warren CLOCK_ID_DISPLAY, 31*dc89ad14STom Warren 32*dc89ad14STom Warren /* now the simple ones */ 33*dc89ad14STom Warren CLOCK_ID_FIRST_SIMPLE, 34*dc89ad14STom Warren CLOCK_ID_XCPU = CLOCK_ID_FIRST_SIMPLE, 35*dc89ad14STom Warren CLOCK_ID_EPCI, 36*dc89ad14STom Warren CLOCK_ID_SFROM32KHZ, 37*dc89ad14STom Warren 38*dc89ad14STom Warren /* These are the base clocks (inputs to the Tegra SOC) */ 39*dc89ad14STom Warren CLOCK_ID_32KHZ, 40*dc89ad14STom Warren CLOCK_ID_OSC, 41*dc89ad14STom Warren 42*dc89ad14STom Warren CLOCK_ID_COUNT, /* number of PLLs */ 43*dc89ad14STom Warren CLOCK_ID_DISPLAY2, /* Tegra3, placeholder */ 44*dc89ad14STom Warren CLOCK_ID_NONE = -1, 45*dc89ad14STom Warren }; 46*dc89ad14STom Warren 47*dc89ad14STom Warren /* The clocks supported by the hardware */ 48*dc89ad14STom Warren enum periph_id { 49*dc89ad14STom Warren PERIPH_ID_FIRST, 50*dc89ad14STom Warren 51*dc89ad14STom Warren /* Low word: 31:0 */ 52*dc89ad14STom Warren PERIPH_ID_CPU = PERIPH_ID_FIRST, 53*dc89ad14STom Warren PERIPH_ID_COP, 54*dc89ad14STom Warren PERIPH_ID_TRIGSYS, 55*dc89ad14STom Warren PERIPH_ID_RESERVED3, 56*dc89ad14STom Warren PERIPH_ID_RESERVED4, 57*dc89ad14STom Warren PERIPH_ID_TMR, 58*dc89ad14STom Warren PERIPH_ID_UART1, 59*dc89ad14STom Warren PERIPH_ID_UART2, 60*dc89ad14STom Warren 61*dc89ad14STom Warren /* 8 */ 62*dc89ad14STom Warren PERIPH_ID_GPIO, 63*dc89ad14STom Warren PERIPH_ID_SDMMC2, 64*dc89ad14STom Warren PERIPH_ID_SPDIF, 65*dc89ad14STom Warren PERIPH_ID_I2S1, 66*dc89ad14STom Warren PERIPH_ID_I2C1, 67*dc89ad14STom Warren PERIPH_ID_NDFLASH, 68*dc89ad14STom Warren PERIPH_ID_SDMMC1, 69*dc89ad14STom Warren PERIPH_ID_SDMMC4, 70*dc89ad14STom Warren 71*dc89ad14STom Warren /* 16 */ 72*dc89ad14STom Warren PERIPH_ID_RESERVED16, 73*dc89ad14STom Warren PERIPH_ID_PWM, 74*dc89ad14STom Warren PERIPH_ID_I2S2, 75*dc89ad14STom Warren PERIPH_ID_EPP, 76*dc89ad14STom Warren PERIPH_ID_VI, 77*dc89ad14STom Warren PERIPH_ID_2D, 78*dc89ad14STom Warren PERIPH_ID_USBD, 79*dc89ad14STom Warren PERIPH_ID_ISP, 80*dc89ad14STom Warren 81*dc89ad14STom Warren /* 24 */ 82*dc89ad14STom Warren PERIPH_ID_3D, 83*dc89ad14STom Warren PERIPH_ID_RESERVED24, 84*dc89ad14STom Warren PERIPH_ID_DISP2, 85*dc89ad14STom Warren PERIPH_ID_DISP1, 86*dc89ad14STom Warren PERIPH_ID_HOST1X, 87*dc89ad14STom Warren PERIPH_ID_VCP, 88*dc89ad14STom Warren PERIPH_ID_I2S0, 89*dc89ad14STom Warren PERIPH_ID_CACHE2, 90*dc89ad14STom Warren 91*dc89ad14STom Warren /* Middle word: 63:32 */ 92*dc89ad14STom Warren PERIPH_ID_MEM, 93*dc89ad14STom Warren PERIPH_ID_AHBDMA, 94*dc89ad14STom Warren PERIPH_ID_APBDMA, 95*dc89ad14STom Warren PERIPH_ID_RESERVED35, 96*dc89ad14STom Warren PERIPH_ID_KBC, 97*dc89ad14STom Warren PERIPH_ID_STAT_MON, 98*dc89ad14STom Warren PERIPH_ID_PMC, 99*dc89ad14STom Warren PERIPH_ID_FUSE, 100*dc89ad14STom Warren 101*dc89ad14STom Warren /* 40 */ 102*dc89ad14STom Warren PERIPH_ID_KFUSE, 103*dc89ad14STom Warren PERIPH_ID_SBC1, 104*dc89ad14STom Warren PERIPH_ID_SNOR, 105*dc89ad14STom Warren PERIPH_ID_RESERVED43, 106*dc89ad14STom Warren PERIPH_ID_SBC2, 107*dc89ad14STom Warren PERIPH_ID_RESERVED45, 108*dc89ad14STom Warren PERIPH_ID_SBC3, 109*dc89ad14STom Warren PERIPH_ID_DVC_I2C, 110*dc89ad14STom Warren 111*dc89ad14STom Warren /* 48 */ 112*dc89ad14STom Warren PERIPH_ID_DSI, 113*dc89ad14STom Warren PERIPH_ID_TVO, 114*dc89ad14STom Warren PERIPH_ID_MIPI, 115*dc89ad14STom Warren PERIPH_ID_HDMI, 116*dc89ad14STom Warren PERIPH_ID_CSI, 117*dc89ad14STom Warren PERIPH_ID_TVDAC, 118*dc89ad14STom Warren PERIPH_ID_I2C2, 119*dc89ad14STom Warren PERIPH_ID_UART3, 120*dc89ad14STom Warren 121*dc89ad14STom Warren /* 56 */ 122*dc89ad14STom Warren PERIPH_ID_RESERVED56, 123*dc89ad14STom Warren PERIPH_ID_EMC, 124*dc89ad14STom Warren PERIPH_ID_USB2, 125*dc89ad14STom Warren PERIPH_ID_USB3, 126*dc89ad14STom Warren PERIPH_ID_MPE, 127*dc89ad14STom Warren PERIPH_ID_VDE, 128*dc89ad14STom Warren PERIPH_ID_BSEA, 129*dc89ad14STom Warren PERIPH_ID_BSEV, 130*dc89ad14STom Warren 131*dc89ad14STom Warren /* Upper word 95:64 */ 132*dc89ad14STom Warren PERIPH_ID_SPEEDO, 133*dc89ad14STom Warren PERIPH_ID_UART4, 134*dc89ad14STom Warren PERIPH_ID_UART5, 135*dc89ad14STom Warren PERIPH_ID_I2C3, 136*dc89ad14STom Warren PERIPH_ID_SBC4, 137*dc89ad14STom Warren PERIPH_ID_SDMMC3, 138*dc89ad14STom Warren PERIPH_ID_PCIE, 139*dc89ad14STom Warren PERIPH_ID_OWR, 140*dc89ad14STom Warren 141*dc89ad14STom Warren /* 72 */ 142*dc89ad14STom Warren PERIPH_ID_AFI, 143*dc89ad14STom Warren PERIPH_ID_CORESIGHT, 144*dc89ad14STom Warren PERIPH_ID_PCIEXCLK, 145*dc89ad14STom Warren PERIPH_ID_AVPUCQ, 146*dc89ad14STom Warren PERIPH_ID_RESERVED76, 147*dc89ad14STom Warren PERIPH_ID_RESERVED77, 148*dc89ad14STom Warren PERIPH_ID_RESERVED78, 149*dc89ad14STom Warren PERIPH_ID_DTV, 150*dc89ad14STom Warren 151*dc89ad14STom Warren /* 80 */ 152*dc89ad14STom Warren PERIPH_ID_NANDSPEED, 153*dc89ad14STom Warren PERIPH_ID_I2CSLOW, 154*dc89ad14STom Warren PERIPH_ID_DSIB, 155*dc89ad14STom Warren PERIPH_ID_RESERVED83, 156*dc89ad14STom Warren PERIPH_ID_IRAMA, 157*dc89ad14STom Warren PERIPH_ID_IRAMB, 158*dc89ad14STom Warren PERIPH_ID_IRAMC, 159*dc89ad14STom Warren PERIPH_ID_IRAMD, 160*dc89ad14STom Warren 161*dc89ad14STom Warren /* 88 */ 162*dc89ad14STom Warren PERIPH_ID_CRAM2, 163*dc89ad14STom Warren PERIPH_ID_RESERVED89, 164*dc89ad14STom Warren PERIPH_ID_MDOUBLER, 165*dc89ad14STom Warren PERIPH_ID_RESERVED91, 166*dc89ad14STom Warren PERIPH_ID_SUSOUT, 167*dc89ad14STom Warren PERIPH_ID_RESERVED93, 168*dc89ad14STom Warren PERIPH_ID_RESERVED94, 169*dc89ad14STom Warren PERIPH_ID_RESERVED95, 170*dc89ad14STom Warren 171*dc89ad14STom Warren PERIPH_ID_VW_FIRST, 172*dc89ad14STom Warren /* V word: 31:0 */ 173*dc89ad14STom Warren PERIPH_ID_CPUG = PERIPH_ID_VW_FIRST, 174*dc89ad14STom Warren PERIPH_ID_CPULP, 175*dc89ad14STom Warren PERIPH_ID_3D2, 176*dc89ad14STom Warren PERIPH_ID_MSELECT, 177*dc89ad14STom Warren PERIPH_ID_TSENSOR, 178*dc89ad14STom Warren PERIPH_ID_I2S3, 179*dc89ad14STom Warren PERIPH_ID_I2S4, 180*dc89ad14STom Warren PERIPH_ID_I2C4, 181*dc89ad14STom Warren 182*dc89ad14STom Warren /* 08 */ 183*dc89ad14STom Warren PERIPH_ID_SBC5, 184*dc89ad14STom Warren PERIPH_ID_SBC6, 185*dc89ad14STom Warren PERIPH_ID_AUDIO, 186*dc89ad14STom Warren PERIPH_ID_APBIF, 187*dc89ad14STom Warren PERIPH_ID_DAM0, 188*dc89ad14STom Warren PERIPH_ID_DAM1, 189*dc89ad14STom Warren PERIPH_ID_DAM2, 190*dc89ad14STom Warren PERIPH_ID_HDA2CODEC2X, 191*dc89ad14STom Warren 192*dc89ad14STom Warren /* 16 */ 193*dc89ad14STom Warren PERIPH_ID_ATOMICS, 194*dc89ad14STom Warren PERIPH_ID_EX_RESERVED17, 195*dc89ad14STom Warren PERIPH_ID_EX_RESERVED18, 196*dc89ad14STom Warren PERIPH_ID_EX_RESERVED19, 197*dc89ad14STom Warren PERIPH_ID_EX_RESERVED20, 198*dc89ad14STom Warren PERIPH_ID_EX_RESERVED21, 199*dc89ad14STom Warren PERIPH_ID_EX_RESERVED22, 200*dc89ad14STom Warren PERIPH_ID_ACTMON, 201*dc89ad14STom Warren 202*dc89ad14STom Warren /* 24 */ 203*dc89ad14STom Warren PERIPH_ID_EX_RESERVED24, 204*dc89ad14STom Warren PERIPH_ID_EX_RESERVED25, 205*dc89ad14STom Warren PERIPH_ID_EX_RESERVED26, 206*dc89ad14STom Warren PERIPH_ID_EX_RESERVED27, 207*dc89ad14STom Warren PERIPH_ID_SATA, 208*dc89ad14STom Warren PERIPH_ID_HDA, 209*dc89ad14STom Warren PERIPH_ID_EX_RESERVED30, 210*dc89ad14STom Warren PERIPH_ID_EX_RESERVED31, 211*dc89ad14STom Warren 212*dc89ad14STom Warren /* W word: 31:0 */ 213*dc89ad14STom Warren PERIPH_ID_HDA2HDMICODEC, 214*dc89ad14STom Warren PERIPH_ID_SATACOLD, 215*dc89ad14STom Warren PERIPH_ID_RESERVED0_PCIERX0, 216*dc89ad14STom Warren PERIPH_ID_RESERVED1_PCIERX1, 217*dc89ad14STom Warren PERIPH_ID_RESERVED2_PCIERX2, 218*dc89ad14STom Warren PERIPH_ID_RESERVED3_PCIERX3, 219*dc89ad14STom Warren PERIPH_ID_RESERVED4_PCIERX4, 220*dc89ad14STom Warren PERIPH_ID_RESERVED5_PCIERX5, 221*dc89ad14STom Warren 222*dc89ad14STom Warren /* 40 */ 223*dc89ad14STom Warren PERIPH_ID_CEC, 224*dc89ad14STom Warren PERIPH_ID_RESERVED6_PCIE2, 225*dc89ad14STom Warren PERIPH_ID_RESERVED7_EMC, 226*dc89ad14STom Warren PERIPH_ID_RESERVED8_HDMI, 227*dc89ad14STom Warren PERIPH_ID_RESERVED9_SATA, 228*dc89ad14STom Warren PERIPH_ID_RESERVED10_MIPI, 229*dc89ad14STom Warren PERIPH_ID_EX_RESERVED46, 230*dc89ad14STom Warren PERIPH_ID_EX_RESERVED47, 231*dc89ad14STom Warren 232*dc89ad14STom Warren PERIPH_ID_COUNT, 233*dc89ad14STom Warren PERIPH_ID_NONE = -1, 234*dc89ad14STom Warren }; 235*dc89ad14STom Warren 236*dc89ad14STom Warren enum pll_out_id { 237*dc89ad14STom Warren PLL_OUT1, 238*dc89ad14STom Warren PLL_OUT2, 239*dc89ad14STom Warren PLL_OUT3, 240*dc89ad14STom Warren PLL_OUT4 241*dc89ad14STom Warren }; 242*dc89ad14STom Warren 243*dc89ad14STom Warren /* 244*dc89ad14STom Warren * Clock peripheral IDs which sadly don't match up with PERIPH_ID. we want 245*dc89ad14STom Warren * callers to use the PERIPH_ID for all access to peripheral clocks to avoid 246*dc89ad14STom Warren * confusion bewteen PERIPH_ID_... and PERIPHC_... 247*dc89ad14STom Warren * 248*dc89ad14STom Warren * We don't call this CLOCK_PERIPH_ID or PERIPH_CLOCK_ID as it would just be 249*dc89ad14STom Warren * confusing. 250*dc89ad14STom Warren */ 251*dc89ad14STom Warren enum periphc_internal_id { 252*dc89ad14STom Warren /* 0x00 */ 253*dc89ad14STom Warren PERIPHC_I2S1, 254*dc89ad14STom Warren PERIPHC_I2S2, 255*dc89ad14STom Warren PERIPHC_SPDIF_OUT, 256*dc89ad14STom Warren PERIPHC_SPDIF_IN, 257*dc89ad14STom Warren PERIPHC_PWM, 258*dc89ad14STom Warren PERIPHC_05h, 259*dc89ad14STom Warren PERIPHC_SBC2, 260*dc89ad14STom Warren PERIPHC_SBC3, 261*dc89ad14STom Warren 262*dc89ad14STom Warren /* 0x08 */ 263*dc89ad14STom Warren PERIPHC_08h, 264*dc89ad14STom Warren PERIPHC_I2C1, 265*dc89ad14STom Warren PERIPHC_DVC_I2C, 266*dc89ad14STom Warren PERIPHC_0bh, 267*dc89ad14STom Warren PERIPHC_0ch, 268*dc89ad14STom Warren PERIPHC_SBC1, 269*dc89ad14STom Warren PERIPHC_DISP1, 270*dc89ad14STom Warren PERIPHC_DISP2, 271*dc89ad14STom Warren 272*dc89ad14STom Warren /* 0x10 */ 273*dc89ad14STom Warren PERIPHC_CVE, 274*dc89ad14STom Warren PERIPHC_11h, 275*dc89ad14STom Warren PERIPHC_VI, 276*dc89ad14STom Warren PERIPHC_13h, 277*dc89ad14STom Warren PERIPHC_SDMMC1, 278*dc89ad14STom Warren PERIPHC_SDMMC2, 279*dc89ad14STom Warren PERIPHC_G3D, 280*dc89ad14STom Warren PERIPHC_G2D, 281*dc89ad14STom Warren 282*dc89ad14STom Warren /* 0x18 */ 283*dc89ad14STom Warren PERIPHC_NDFLASH, 284*dc89ad14STom Warren PERIPHC_SDMMC4, 285*dc89ad14STom Warren PERIPHC_VFIR, 286*dc89ad14STom Warren PERIPHC_EPP, 287*dc89ad14STom Warren PERIPHC_MPE, 288*dc89ad14STom Warren PERIPHC_MIPI, 289*dc89ad14STom Warren PERIPHC_UART1, 290*dc89ad14STom Warren PERIPHC_UART2, 291*dc89ad14STom Warren 292*dc89ad14STom Warren /* 0x20 */ 293*dc89ad14STom Warren PERIPHC_HOST1X, 294*dc89ad14STom Warren PERIPHC_21h, 295*dc89ad14STom Warren PERIPHC_TVO, 296*dc89ad14STom Warren PERIPHC_HDMI, 297*dc89ad14STom Warren PERIPHC_24h, 298*dc89ad14STom Warren PERIPHC_TVDAC, 299*dc89ad14STom Warren PERIPHC_I2C2, 300*dc89ad14STom Warren PERIPHC_EMC, 301*dc89ad14STom Warren 302*dc89ad14STom Warren /* 0x28 */ 303*dc89ad14STom Warren PERIPHC_UART3, 304*dc89ad14STom Warren PERIPHC_29h, 305*dc89ad14STom Warren PERIPHC_VI_SENSOR, 306*dc89ad14STom Warren PERIPHC_2bh, 307*dc89ad14STom Warren PERIPHC_2ch, 308*dc89ad14STom Warren PERIPHC_SBC4, 309*dc89ad14STom Warren PERIPHC_I2C3, 310*dc89ad14STom Warren PERIPHC_SDMMC3, 311*dc89ad14STom Warren 312*dc89ad14STom Warren /* 0x30 */ 313*dc89ad14STom Warren PERIPHC_UART4, 314*dc89ad14STom Warren PERIPHC_UART5, 315*dc89ad14STom Warren PERIPHC_VDE, 316*dc89ad14STom Warren PERIPHC_OWR, 317*dc89ad14STom Warren PERIPHC_NOR, 318*dc89ad14STom Warren PERIPHC_CSITE, 319*dc89ad14STom Warren PERIPHC_I2S0, 320*dc89ad14STom Warren PERIPHC_37h, 321*dc89ad14STom Warren 322*dc89ad14STom Warren PERIPHC_VW_FIRST, 323*dc89ad14STom Warren /* 0x38 */ 324*dc89ad14STom Warren PERIPHC_G3D2 = PERIPHC_VW_FIRST, 325*dc89ad14STom Warren PERIPHC_MSELECT, 326*dc89ad14STom Warren PERIPHC_TSENSOR, 327*dc89ad14STom Warren PERIPHC_I2S3, 328*dc89ad14STom Warren PERIPHC_I2S4, 329*dc89ad14STom Warren PERIPHC_I2C4, 330*dc89ad14STom Warren PERIPHC_SBC5, 331*dc89ad14STom Warren PERIPHC_SBC6, 332*dc89ad14STom Warren 333*dc89ad14STom Warren /* 0x40 */ 334*dc89ad14STom Warren PERIPHC_AUDIO, 335*dc89ad14STom Warren PERIPHC_41h, 336*dc89ad14STom Warren PERIPHC_DAM0, 337*dc89ad14STom Warren PERIPHC_DAM1, 338*dc89ad14STom Warren PERIPHC_DAM2, 339*dc89ad14STom Warren PERIPHC_HDA2CODEC2X, 340*dc89ad14STom Warren PERIPHC_ACTMON, 341*dc89ad14STom Warren PERIPHC_EXTPERIPH1, 342*dc89ad14STom Warren 343*dc89ad14STom Warren /* 0x48 */ 344*dc89ad14STom Warren PERIPHC_EXTPERIPH2, 345*dc89ad14STom Warren PERIPHC_EXTPERIPH3, 346*dc89ad14STom Warren PERIPHC_NANDSPEED, 347*dc89ad14STom Warren PERIPHC_I2CSLOW, 348*dc89ad14STom Warren PERIPHC_SYS, 349*dc89ad14STom Warren PERIPHC_SPEEDO, 350*dc89ad14STom Warren PERIPHC_4eh, 351*dc89ad14STom Warren PERIPHC_4fh, 352*dc89ad14STom Warren 353*dc89ad14STom Warren /* 0x50 */ 354*dc89ad14STom Warren PERIPHC_SATAOOB, 355*dc89ad14STom Warren PERIPHC_SATA, 356*dc89ad14STom Warren PERIPHC_HDA, 357*dc89ad14STom Warren 358*dc89ad14STom Warren PERIPHC_COUNT, 359*dc89ad14STom Warren 360*dc89ad14STom Warren PERIPHC_NONE = -1, 361*dc89ad14STom Warren }; 362*dc89ad14STom Warren 363*dc89ad14STom Warren /* Converts a clock number to a clock register: 0=L, 1=H, 2=U, 0=V, 1=W */ 364*dc89ad14STom Warren #define PERIPH_REG(id) \ 365*dc89ad14STom Warren (id < PERIPH_ID_VW_FIRST) ? \ 366*dc89ad14STom Warren ((id) >> 5) : ((id - PERIPH_ID_VW_FIRST) >> 5) 367*dc89ad14STom Warren 368*dc89ad14STom Warren /* Mask value for a clock (within PERIPH_REG(id)) */ 369*dc89ad14STom Warren #define PERIPH_MASK(id) (1 << ((id) & 0x1f)) 370*dc89ad14STom Warren 371*dc89ad14STom Warren /* return 1 if a PLL ID is in range */ 372*dc89ad14STom Warren #define clock_id_is_pll(id) ((id) >= CLOCK_ID_FIRST && (id) < CLOCK_ID_COUNT) 373*dc89ad14STom Warren 374*dc89ad14STom Warren /* return 1 if a peripheral ID is in range */ 375*dc89ad14STom Warren #define clock_periph_id_isvalid(id) ((id) >= PERIPH_ID_FIRST && \ 376*dc89ad14STom Warren (id) < PERIPH_ID_COUNT) 377*dc89ad14STom Warren 378*dc89ad14STom Warren #endif /* _TEGRA30_CLOCK_TABLES_H_ */ 379