ARM: tegra: powermon: Fix copyrights from GPLv3 to GPLv2
[linux-3.10.git] / arch / arm / mach-tegra / tegra14_edp.c
index 6ed1e11..d4499de 100644 (file)
@@ -1,17 +1,19 @@
 /*
  * arch/arm/mach-tegra/tegra14_edp.c
  *
- * Copyright (C) 2013 NVIDIA Corporation.
+ * Copyright (c) 2013, NVIDIA CORPORATION. All rights reserved.
  *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
  *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
  *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <linux/kernel.h>
@@ -55,7 +57,7 @@ static struct clk *cap_clks[CAP_CLKS_NUM];
  */
 static struct core_edp_entry core_edp_table[] = {
        {
-               .sku            = 0x7,          /* SL440 */
+               .sku            = 0x7,
                .cap_mA         = 3000,         /* 3A cap */
                .mult           = 1000000,      /* MHZ */
                .cap_cpu        = {
@@ -89,7 +91,7 @@ static struct core_edp_entry core_edp_table[] = {
                },
        },
        {
-               .sku            = 0x3,          /* SL460 */
+               .sku            = 0x3,
                .cap_mA         = 3000,         /* 3A cap */
                .mult           = 1000000,      /* MHZ */
                .cap_cpu        = {
@@ -192,6 +194,102 @@ static struct core_edp_entry core_edp_table[] = {
        }
 };
 
+#ifdef CONFIG_TEGRA_EDP_LIMITS
+static struct tegra_edp_cpu_leakage_params t14x_leakage_params[] = {
+       {
+               .cpu_speedo_id      = 0, /* A01 CPU */
+
+               .temp_scaled        = 10,
+
+               .dyn_scaled         = 1000000,
+               .dyn_consts_n       = {  376000,  638000,  916000, 1203000 },
+
+               .consts_scaled      = 1000000,
+               .leakage_consts_n   = {  489500,  730600,  867600, 1000000 },
+
+               .ijk_scaled         = 1000,
+               .leakage_consts_ijk = {
+                       /* i = 0 */
+                       { {    564982,  -1353469,    309283,    -20862, },
+                         {  -1866916,   4500931,  -1026666,     68669, },
+                         {   1965934,  -4869757,   1107682,    -73554, },
+                         {   -637854,   1715497,   -388916,     25621, },
+                       },
+                       /* i = 1 */
+                       { {  -7341396,   7706464,  -1729662,    114105, },
+                         {  24249928, -25178676,   5651247,   -370322, },
+                         { -26109261,  26794485,  -6018513,    392722, },
+                         {   9127986,  -9288224,   2091707,   -135487, },
+                       },
+                       /* i = 2 */
+                       { {   9830061,  -9444047,   2035950,   -132842, },
+                         { -31837469,  30412491,  -6571344,    428173, },
+                         {  33645736, -31974811,   6933186,   -452148, },
+                         { -11561204,  11000249,  -2395570,    156270, },
+                       },
+                       /* i = 3 */
+                       { {  -2848862,   2437747,   -500201,     31386, },
+                         {   9160903,  -7785587,   1605160,   -100724, },
+                         {  -9619266,   8124245,  -1686232,    106069, },
+                         {   3291191,  -2777151,    581139,    -36610, },
+                       },
+               },
+               .leakage_min = 30,
+               /* .volt_temp_cap = { 70, 1240 }, - TODO for T148 */
+       },
+       {
+               .cpu_speedo_id      = 1, /* SKU 0x3 CPU */
+
+               .temp_scaled        = 10,
+
+               .dyn_scaled         = 1000000,
+               .dyn_consts_n       = {  376000,  638000,  916000, 1203000 },
+
+               .consts_scaled      = 1000000,
+               .leakage_consts_n   = {  489500,  730600,  867600, 1000000 },
+
+               .ijk_scaled         = 1000,
+               .leakage_consts_ijk = {
+                       /* i = 0 */
+                       { {    564982,  -1353469,    309283,    -20862, },
+                         {  -1866916,   4500931,  -1026666,     68669, },
+                         {   1965934,  -4869757,   1107682,    -73554, },
+                         {   -637854,   1715497,   -388916,     25621, },
+                       },
+                       /* i = 1 */
+                       { {  -7341396,   7706464,  -1729662,    114105, },
+                         {  24249928, -25178676,   5651247,   -370322, },
+                         { -26109261,  26794485,  -6018513,    392722, },
+                         {   9127986,  -9288224,   2091707,   -135487, },
+                       },
+                       /* i = 2 */
+                       { {   9830061,  -9444047,   2035950,   -132842, },
+                         { -31837469,  30412491,  -6571344,    428173, },
+                         {  33645736, -31974811,   6933186,   -452148, },
+                         { -11561204,  11000249,  -2395570,    156270, },
+                       },
+                       /* i = 3 */
+                       { {  -2848862,   2437747,   -500201,     31386, },
+                         {   9160903,  -7785587,   1605160,   -100724, },
+                         {  -9619266,   8124245,  -1686232,    106069, },
+                         {   3291191,  -2777151,    581139,    -36610, },
+                       },
+               },
+               .leakage_min = 30,
+               /* .volt_temp_cap = { 70, 1240 }, - TODO for T148 */
+       },
+};
+
+struct tegra_edp_cpu_leakage_params *tegra14x_get_leakage_params(int index,
+                                                       unsigned int *sz)
+{
+       BUG_ON(index >= ARRAY_SIZE(t14x_leakage_params));
+       if (sz)
+               *sz = ARRAY_SIZE(t14x_leakage_params);
+       return &t14x_leakage_params[index];
+}
+#endif
+
 static struct core_edp_entry *find_edp_entry(int sku, unsigned int regulator_mA)
 {
        int i;