ARM: tegra11: dvfs: Set speedo ID in core dvfs table
Alex Frid [Thu, 13 Dec 2012 01:13:33 +0000 (17:13 -0800)]
Allow to set speedo id for each core dvfs table entry, instead
of common default -1 (don't care) setting. For now it is still
set to -1 for all entries.

Bug 1170986
Bug 1161126

Change-Id: I10d34266429f54605506ac1ee5d72666ee5e02d5
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/170862
(cherry picked from commit fde47f651afa86d35ee1576b45286c68cfd4ab60)
Reviewed-on: http://git-master/r/172177
Reviewed-by: Rohan Somvanshi <rsomvanshi@nvidia.com>
Tested-by: Rohan Somvanshi <rsomvanshi@nvidia.com>

arch/arm/mach-tegra/tegra11_dvfs.c

index 4702c42..440a50a 100644 (file)
@@ -239,10 +239,10 @@ static struct dvfs cpu_dvfs = {
 static const int core_millivolts[MAX_DVFS_FREQS] = {
        900, 950, 1000, 1050, 1100, 1120, 1170, 1250};
 
-#define CORE_DVFS(_clk_name, _process_id, _auto, _mult, _freqs...)     \
+#define CORE_DVFS(_clk_name, _speedo_id, _process_id, _auto, _mult, _freqs...) \
        {                                                       \
                .clk_name       = _clk_name,                    \
-               .speedo_id      = -1,                           \
+               .speedo_id      = _speedo_id,                   \
                .process_id     = _process_id,                  \
                .freqs          = {_freqs},                     \
                .freqs_mult     = _mult,                        \
@@ -255,63 +255,63 @@ static struct dvfs core_dvfs_table[] = {
        /* Core voltages (mV):                   900,    950,   1000,   1050,    1100,    1120,    1170,    1250 */
        /* Clock limits for internal blocks, PLLs */
 #ifndef CONFIG_TEGRA_SIMULATION_PLATFORM
-       CORE_DVFS("cpu_lp", -1, 1, KHZ,       228000, 306000, 396000, 528000,  648000,  696000,  696000,  696000),
-       CORE_DVFS("emc",   -1, 1, KHZ,             1,      1,      1,      1,  800000,  800000,  933000, 1066000),
-       CORE_DVFS("sbus",  -1, 1, KHZ,             1, 204000, 240000, 276000,  324000,  336000,  336000,  336000),
+       CORE_DVFS("cpu_lp", -1, -1, 1, KHZ,   228000, 306000, 396000, 528000,  648000,  696000,  696000,  696000),
+       CORE_DVFS("emc",    -1, -1, 1, KHZ,        1,      1,      1,      1,  800000,  800000,  933000, 1066000),
+       CORE_DVFS("sbus",   -1, -1, 1, KHZ,        1, 204000, 240000, 276000,  324000,  336000,  336000,  336000),
 
-       CORE_DVFS("vi",    -1, 1, KHZ,        144000, 216000, 240000, 312000,  372000,  408000,  408000,  408000),
+       CORE_DVFS("vi",     -1, -1, 1, KHZ,   144000, 216000, 240000, 312000,  372000,  408000,  408000,  408000),
 
-       CORE_DVFS("2d",     0, 1, KHZ,        192000, 228000, 300000, 396000,  492000,  516000,  516000,  612000),
-       CORE_DVFS("3d",     0, 1, KHZ,        192000, 228000, 300000, 396000,  492000,  516000,  516000,  612000),
-       CORE_DVFS("epp",    0, 1, KHZ,        192000, 228000, 300000, 396000,  492000,  516000,  516000,  612000),
+       CORE_DVFS("2d",     -1,  0, 1, KHZ,   192000, 228000, 300000, 396000,  492000,  516000,  516000,  612000),
+       CORE_DVFS("3d",     -1,  0, 1, KHZ,   192000, 228000, 300000, 396000,  492000,  516000,  516000,  612000),
+       CORE_DVFS("epp",    -1,  0, 1, KHZ,   192000, 228000, 300000, 396000,  492000,  516000,  516000,  612000),
 
-       CORE_DVFS("2d",     1, 1, KHZ,        192000, 228000, 300000, 396000,  492000,  516000,  612000,  672000),
-       CORE_DVFS("3d",     1, 1, KHZ,        192000, 228000, 300000, 396000,  492000,  516000,  612000,  672000),
-       CORE_DVFS("epp",    1, 1, KHZ,        192000, 228000, 300000, 396000,  492000,  516000,  612000,  672000),
+       CORE_DVFS("2d",     -1,  1, 1, KHZ,   192000, 228000, 300000, 396000,  492000,  516000,  612000,  672000),
+       CORE_DVFS("3d",     -1,  1, 1, KHZ,   192000, 228000, 300000, 396000,  492000,  516000,  612000,  672000),
+       CORE_DVFS("epp",    -1,  1, 1, KHZ,   192000, 228000, 300000, 396000,  492000,  516000,  612000,  672000),
 
-       CORE_DVFS("msenc", -1, 1, KHZ,        144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
-       CORE_DVFS("se",    -1, 1, KHZ,        144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
-       CORE_DVFS("tsec",  -1, 1, KHZ,        144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
-       CORE_DVFS("vde",   -1, 1, KHZ,        144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
+       CORE_DVFS("msenc",  -1, -1, 1, KHZ,   144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
+       CORE_DVFS("se",     -1, -1, 1, KHZ,   144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
+       CORE_DVFS("tsec",   -1, -1, 1, KHZ,   144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
+       CORE_DVFS("vde",    -1, -1, 1, KHZ,   144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
 
-       CORE_DVFS("host1x", -1, 1, KHZ,       144000, 204000, 240000, 276000,  324000,  336000,  336000,  336000),
+       CORE_DVFS("host1x", -1, -1, 1, KHZ,   144000, 204000, 240000, 276000,  324000,  336000,  336000,  336000),
 
 #ifdef CONFIG_TEGRA_DUAL_CBUS
-       CORE_DVFS("c2bus",  0, 1, KHZ,        192000, 228000, 300000, 396000,  492000,  516000,  516000,  612000),
-       CORE_DVFS("c2bus",  1, 1, KHZ,        192000, 228000, 300000, 396000,  492000,  516000,  612000,  672000),
-       CORE_DVFS("c3bus", -1, 1, KHZ,        144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
+       CORE_DVFS("c2bus",  -1,  0, 1, KHZ,   192000, 228000, 300000, 396000,  492000,  516000,  516000,  612000),
+       CORE_DVFS("c2bus",  -1,  1, 1, KHZ,   192000, 228000, 300000, 396000,  492000,  516000,  612000,  672000),
+       CORE_DVFS("c3bus",  -1, -1, 1, KHZ,   144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
 #else
-       CORE_DVFS("cbus",  -1, 1, KHZ,        144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
+       CORE_DVFS("cbus",   -1, -1, 1, KHZ,   144000, 182000, 240000, 312000,  384000,  408000,  408000,  408000),
 #endif
 
-       CORE_DVFS("pll_m", -1, 1, KHZ,             1, 800000, 1066000, 1066000, 1066000, 1066000, 1066000, 1066000),
-       CORE_DVFS("pll_c", -1, 1, KHZ,             1, 800000, 1066000, 1066000, 1066000, 1066000, 1066000, 1066000),
-       CORE_DVFS("pll_c2", -1, 1, KHZ,            1, 800000, 1066000, 1066000, 1066000, 1066000, 1066000, 1066000),
-       CORE_DVFS("pll_c3", -1, 1, KHZ,            1, 800000, 1066000, 1066000, 1066000, 1066000, 1066000, 1066000),
+       CORE_DVFS("pll_m",  -1, -1, 1, KHZ,        1, 800000, 1066000, 1066000, 1066000, 1066000, 1066000, 1066000),
+       CORE_DVFS("pll_c",  -1, -1, 1, KHZ,        1, 800000, 1066000, 1066000, 1066000, 1066000, 1066000, 1066000),
+       CORE_DVFS("pll_c2", -1, -1, 1, KHZ,        1, 800000, 1066000, 1066000, 1066000, 1066000, 1066000, 1066000),
+       CORE_DVFS("pll_c3", -1, -1, 1, KHZ,        1, 800000, 1066000, 1066000, 1066000, 1066000, 1066000, 1066000),
 
        /* Core voltages (mV):                   900,    950,   1000,   1050,    1100,    1120,    1170,    1250 */
        /* Clock limits for I/O peripherals */
-       CORE_DVFS("sbc1", -1, 1, KHZ,          48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
-       CORE_DVFS("sbc2", -1, 1, KHZ,          48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
-       CORE_DVFS("sbc3", -1, 1, KHZ,          48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
-       CORE_DVFS("sbc4", -1, 1, KHZ,          48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
-       CORE_DVFS("sbc5", -1, 1, KHZ,          48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
-       CORE_DVFS("sbc6", -1, 1, KHZ,          48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
-
-       CORE_DVFS("sdmmc1", -1, 1, KHZ,        81600,  81600,  81600,  81600,   81600,   81600,  204000,  204000),
-       CORE_DVFS("sdmmc3", -1, 1, KHZ,        81600,  81600,  81600,  81600,  204000,  204000,  204000,  204000),
-       CORE_DVFS("sdmmc4", -1, 1, KHZ,       102000, 102000, 102000, 102000,  102000,  102000,  198000,  198000),
-
-       CORE_DVFS("csi",  -1, 1, KHZ,              1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
-       CORE_DVFS("cilab", -1, 1, KHZ,             1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
-       CORE_DVFS("cilcd", -1, 1, KHZ,             1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
-       CORE_DVFS("cile", -1, 1, KHZ,              1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
-
-       CORE_DVFS("dsia", -1, 1, KHZ,              1, 500000, 500000, 500000,  500000,  500000,  500000,  500000),
-       CORE_DVFS("dsib", -1, 1, KHZ,              1, 500000, 500000, 500000,  500000,  500000,  500000,  500000),
-       CORE_DVFS("dsialp", -1, 1, KHZ,            1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
-       CORE_DVFS("dsiblp", -1, 1, KHZ,            1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
-       CORE_DVFS("hdmi", -1, 1, KHZ,         148500, 148500, 148500, 297000,  297000,  297000,  297000,  297000),
+       CORE_DVFS("sbc1",   -1, -1, 1, KHZ,    48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
+       CORE_DVFS("sbc2",   -1, -1, 1, KHZ,    48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
+       CORE_DVFS("sbc3",   -1, -1, 1, KHZ,    48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
+       CORE_DVFS("sbc4",   -1, -1, 1, KHZ,    48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
+       CORE_DVFS("sbc5",   -1, -1, 1, KHZ,    48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
+       CORE_DVFS("sbc6",   -1, -1, 1, KHZ,    48000,  48000,  48000,  48000,   52000,   52000,   52000,   52000),
+
+       CORE_DVFS("sdmmc1", -1, -1, 1, KHZ,    81600,  81600,  81600,  81600,   81600,   81600,  204000,  204000),
+       CORE_DVFS("sdmmc3", -1, -1, 1, KHZ,    81600,  81600,  81600,  81600,  204000,  204000,  204000,  204000),
+       CORE_DVFS("sdmmc4", -1, -1, 1, KHZ,   102000, 102000, 102000, 102000,  102000,  102000,  198000,  198000),
+
+       CORE_DVFS("csi",    -1, -1, 1, KHZ,        1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
+       CORE_DVFS("cilab",  -1, -1, 1, KHZ,        1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
+       CORE_DVFS("cilcd",  -1, -1, 1, KHZ,        1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
+       CORE_DVFS("cile",   -1, -1, 1, KHZ,        1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
+
+       CORE_DVFS("dsia",   -1, -1, 1, KHZ,        1, 500000, 500000, 500000,  500000,  500000,  500000,  500000),
+       CORE_DVFS("dsib",   -1, -1, 1, KHZ,        1, 500000, 500000, 500000,  500000,  500000,  500000,  500000),
+       CORE_DVFS("dsialp", -1, -1, 1, KHZ,        1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
+       CORE_DVFS("dsiblp", -1, -1, 1, KHZ,        1, 102000, 102000, 102000,  102000,  102000,  102000,  102000),
+       CORE_DVFS("hdmi",   -1, -1, 1, KHZ,   148500, 148500, 148500, 297000,  297000,  297000,  297000,  297000),
 
        /*
         * The clock rate for the display controllers that determines the
@@ -319,16 +319,16 @@ static struct dvfs core_dvfs_table[] = {
         * to the display block.  Disable auto-dvfs on the display clocks,
         * and let the display driver call tegra_dvfs_set_rate manually
         */
-       CORE_DVFS("disp1", -1, 0, KHZ,        148500, 166000, 166000, 297000,  297000,  297000,  297000,  297000),
-       CORE_DVFS("disp2", -1, 0, KHZ,        148500, 166000, 166000, 297000,  297000,  297000,  297000,  297000),
+       CORE_DVFS("disp1",  -1, -1, 0, KHZ,   148500, 166000, 166000, 297000,  297000,  297000,  297000,  297000),
+       CORE_DVFS("disp2",  -1, -1, 0, KHZ,   148500, 166000, 166000, 297000,  297000,  297000,  297000,  297000),
 
        /* xusb clocks */
-       CORE_DVFS("xusb_falcon_src", -1, 1, KHZ,      1, 336000, 336000, 336000,  336000,  336000,  336000,  336000),
-       CORE_DVFS("xusb_host_src",   -1, 1, KHZ,      1, 112000, 112000, 112000,  112000,  112000,  112000,  112000),
-       CORE_DVFS("xusb_dev_src",    -1, 1, KHZ,      1,  58300,  58300, 112000,  112000,  112000,  112000,  112000),
-       CORE_DVFS("xusb_ss_src",     -1, 1, KHZ,      1, 120000, 120000, 120000,  120000,  120000,  120000,  120000),
-       CORE_DVFS("xusb_fs_src",     -1, 1, KHZ,      1,  48000,  48000,  48000,   48000,   48000,   48000,   48000),
-       CORE_DVFS("xusb_hs_src",     -1, 1, KHZ,      1,  60000,  60000,  60000,   60000,   60000,   60000,   60000),
+       CORE_DVFS("xusb_falcon_src", -1, -1, 1, KHZ,  1, 336000, 336000, 336000,  336000,  336000,  336000,  336000),
+       CORE_DVFS("xusb_host_src",   -1, -1, 1, KHZ,  1, 112000, 112000, 112000,  112000,  112000,  112000,  112000),
+       CORE_DVFS("xusb_dev_src",    -1, -1, 1, KHZ,  1,  58300,  58300, 112000,  112000,  112000,  112000,  112000),
+       CORE_DVFS("xusb_ss_src",     -1, -1, 1, KHZ,  1, 120000, 120000, 120000,  120000,  120000,  120000,  120000),
+       CORE_DVFS("xusb_fs_src",     -1, -1, 1, KHZ,  1,  48000,  48000,  48000,   48000,   48000,   48000,   48000),
+       CORE_DVFS("xusb_hs_src",     -1, -1, 1, KHZ,  1,  60000,  60000,  60000,   60000,   60000,   60000,   60000),
 #endif
 };