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