1*d8a94458SPaul Walmsley /* 2*d8a94458SPaul Walmsley * opp2420_data.c - old-style "OPP" table for OMAP2420 3*d8a94458SPaul Walmsley * 4*d8a94458SPaul Walmsley * Copyright (C) 2005-2009 Texas Instruments, Inc. 5*d8a94458SPaul Walmsley * Copyright (C) 2004-2009 Nokia Corporation 6*d8a94458SPaul Walmsley * 7*d8a94458SPaul Walmsley * Richard Woodruff <r-woodruff2@ti.com> 8*d8a94458SPaul Walmsley * 9*d8a94458SPaul Walmsley * The OMAP2 processor can be run at several discrete 'PRCM configurations'. 10*d8a94458SPaul Walmsley * These configurations are characterized by voltage and speed for clocks. 11*d8a94458SPaul Walmsley * The device is only validated for certain combinations. One way to express 12*d8a94458SPaul Walmsley * these combinations is via the 'ratio's' which the clocks operate with 13*d8a94458SPaul Walmsley * respect to each other. These ratio sets are for a given voltage/DPLL 14*d8a94458SPaul Walmsley * setting. All configurations can be described by a DPLL setting and a ratio 15*d8a94458SPaul Walmsley * There are 3 ratio sets for the 2430 and X ratio sets for 2420. 16*d8a94458SPaul Walmsley * 17*d8a94458SPaul Walmsley * 2430 differs from 2420 in that there are no more phase synchronizers used. 18*d8a94458SPaul Walmsley * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs 19*d8a94458SPaul Walmsley * 2430 (iva2.1, NOdsp, mdm) 20*d8a94458SPaul Walmsley * 21*d8a94458SPaul Walmsley * XXX Missing voltage data. 22*d8a94458SPaul Walmsley * 23*d8a94458SPaul Walmsley * THe format described in this file is deprecated. Once a reasonable 24*d8a94458SPaul Walmsley * OPP API exists, the data in this file should be converted to use it. 25*d8a94458SPaul Walmsley * 26*d8a94458SPaul Walmsley * This is technically part of the OMAP2xxx clock code. 27*d8a94458SPaul Walmsley */ 28*d8a94458SPaul Walmsley 29*d8a94458SPaul Walmsley #include "opp2xxx.h" 30*d8a94458SPaul Walmsley #include "sdrc.h" 31*d8a94458SPaul Walmsley #include "clock.h" 32*d8a94458SPaul Walmsley 33*d8a94458SPaul Walmsley /*------------------------------------------------------------------------- 34*d8a94458SPaul Walmsley * Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated. 35*d8a94458SPaul Walmsley * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU, 36*d8a94458SPaul Walmsley * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL, 37*d8a94458SPaul Walmsley * CM_CLKSEL2_PLL, CM_CLKSEL_MDM 38*d8a94458SPaul Walmsley * 39*d8a94458SPaul Walmsley * Filling in table based on H4 boards and 2430-SDPs variants available. 40*d8a94458SPaul Walmsley * There are quite a few more rates combinations which could be defined. 41*d8a94458SPaul Walmsley * 42*d8a94458SPaul Walmsley * When multiple values are defined the start up will try and choose the 43*d8a94458SPaul Walmsley * fastest one. If a 'fast' value is defined, then automatically, the /2 44*d8a94458SPaul Walmsley * one should be included as it can be used. Generally having more that 45*d8a94458SPaul Walmsley * one fast set does not make sense, as static timings need to be changed 46*d8a94458SPaul Walmsley * to change the set. The exception is the bypass setting which is 47*d8a94458SPaul Walmsley * availble for low power bypass. 48*d8a94458SPaul Walmsley * 49*d8a94458SPaul Walmsley * Note: This table needs to be sorted, fastest to slowest. 50*d8a94458SPaul Walmsley *-------------------------------------------------------------------------*/ 51*d8a94458SPaul Walmsley const struct prcm_config omap2420_rate_table[] = { 52*d8a94458SPaul Walmsley /* PRCM I - FAST */ 53*d8a94458SPaul Walmsley {S12M, S660M, S330M, RI_CM_CLKSEL_MPU_VAL, /* 330MHz ARM */ 54*d8a94458SPaul Walmsley RI_CM_CLKSEL_DSP_VAL, RI_CM_CLKSEL_GFX_VAL, 55*d8a94458SPaul Walmsley RI_CM_CLKSEL1_CORE_VAL, MI_CM_CLKSEL1_PLL_12_VAL, 56*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_165MHz, 57*d8a94458SPaul Walmsley RATE_IN_242X}, 58*d8a94458SPaul Walmsley 59*d8a94458SPaul Walmsley /* PRCM II - FAST */ 60*d8a94458SPaul Walmsley {S12M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL, /* 300MHz ARM */ 61*d8a94458SPaul Walmsley RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, 62*d8a94458SPaul Walmsley RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL, 63*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz, 64*d8a94458SPaul Walmsley RATE_IN_242X}, 65*d8a94458SPaul Walmsley 66*d8a94458SPaul Walmsley {S13M, S600M, S300M, RII_CM_CLKSEL_MPU_VAL, /* 300MHz ARM */ 67*d8a94458SPaul Walmsley RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, 68*d8a94458SPaul Walmsley RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL, 69*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz, 70*d8a94458SPaul Walmsley RATE_IN_242X}, 71*d8a94458SPaul Walmsley 72*d8a94458SPaul Walmsley /* PRCM III - FAST */ 73*d8a94458SPaul Walmsley {S12M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL, /* 266MHz ARM */ 74*d8a94458SPaul Walmsley RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, 75*d8a94458SPaul Walmsley RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL, 76*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz, 77*d8a94458SPaul Walmsley RATE_IN_242X}, 78*d8a94458SPaul Walmsley 79*d8a94458SPaul Walmsley {S13M, S532M, S266M, RIII_CM_CLKSEL_MPU_VAL, /* 266MHz ARM */ 80*d8a94458SPaul Walmsley RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, 81*d8a94458SPaul Walmsley RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL, 82*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz, 83*d8a94458SPaul Walmsley RATE_IN_242X}, 84*d8a94458SPaul Walmsley 85*d8a94458SPaul Walmsley /* PRCM II - SLOW */ 86*d8a94458SPaul Walmsley {S12M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL, /* 150MHz ARM */ 87*d8a94458SPaul Walmsley RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, 88*d8a94458SPaul Walmsley RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_12_VAL, 89*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz, 90*d8a94458SPaul Walmsley RATE_IN_242X}, 91*d8a94458SPaul Walmsley 92*d8a94458SPaul Walmsley {S13M, S300M, S150M, RII_CM_CLKSEL_MPU_VAL, /* 150MHz ARM */ 93*d8a94458SPaul Walmsley RII_CM_CLKSEL_DSP_VAL, RII_CM_CLKSEL_GFX_VAL, 94*d8a94458SPaul Walmsley RII_CM_CLKSEL1_CORE_VAL, MII_CM_CLKSEL1_PLL_13_VAL, 95*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_100MHz, 96*d8a94458SPaul Walmsley RATE_IN_242X}, 97*d8a94458SPaul Walmsley 98*d8a94458SPaul Walmsley /* PRCM III - SLOW */ 99*d8a94458SPaul Walmsley {S12M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL, /* 133MHz ARM */ 100*d8a94458SPaul Walmsley RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, 101*d8a94458SPaul Walmsley RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_12_VAL, 102*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz, 103*d8a94458SPaul Walmsley RATE_IN_242X}, 104*d8a94458SPaul Walmsley 105*d8a94458SPaul Walmsley {S13M, S266M, S133M, RIII_CM_CLKSEL_MPU_VAL, /* 133MHz ARM */ 106*d8a94458SPaul Walmsley RIII_CM_CLKSEL_DSP_VAL, RIII_CM_CLKSEL_GFX_VAL, 107*d8a94458SPaul Walmsley RIII_CM_CLKSEL1_CORE_VAL, MIII_CM_CLKSEL1_PLL_13_VAL, 108*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_133MHz, 109*d8a94458SPaul Walmsley RATE_IN_242X}, 110*d8a94458SPaul Walmsley 111*d8a94458SPaul Walmsley /* PRCM-VII (boot-bypass) */ 112*d8a94458SPaul Walmsley {S12M, S12M, S12M, RVII_CM_CLKSEL_MPU_VAL, /* 12MHz ARM*/ 113*d8a94458SPaul Walmsley RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL, 114*d8a94458SPaul Walmsley RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_12_VAL, 115*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_BYPASS, 116*d8a94458SPaul Walmsley RATE_IN_242X}, 117*d8a94458SPaul Walmsley 118*d8a94458SPaul Walmsley /* PRCM-VII (boot-bypass) */ 119*d8a94458SPaul Walmsley {S13M, S13M, S13M, RVII_CM_CLKSEL_MPU_VAL, /* 13MHz ARM */ 120*d8a94458SPaul Walmsley RVII_CM_CLKSEL_DSP_VAL, RVII_CM_CLKSEL_GFX_VAL, 121*d8a94458SPaul Walmsley RVII_CM_CLKSEL1_CORE_VAL, MVII_CM_CLKSEL1_PLL_13_VAL, 122*d8a94458SPaul Walmsley MX_CLKSEL2_PLL_2x_VAL, 0, SDRC_RFR_CTRL_BYPASS, 123*d8a94458SPaul Walmsley RATE_IN_242X}, 124*d8a94458SPaul Walmsley 125*d8a94458SPaul Walmsley { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 126*d8a94458SPaul Walmsley }; 127