ARM: tegra: add pluto core system EDP device
Sivaram Nair [Wed, 20 Feb 2013 10:54:00 +0000 (12:54 +0200)]
This patch adds and registers core system EDP device for pluto

Change-Id: I3a98216e11661cab9dddc35dcf935bab1d23cd22
Signed-off-by: Sivaram Nair <sivaramn@nvidia.com>
(cherry picked from commit 5af2818f815876ad77570bdb919b07534d2196ec)
Reviewed-on: http://git-master/r/204584
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>

arch/arm/mach-tegra/board-pluto-power.c

index 1962604..0c0685e 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/mfd/palmas.h>
 #include <linux/regulator/machine.h>
 #include <linux/irq.h>
+#include <linux/platform_data/tegra_edp.h>
 
 #include <asm/mach-types.h>
 
@@ -825,3 +826,96 @@ int __init pluto_soctherm_init(void)
 
        return tegra11_soctherm_init(&pluto_soctherm_data);
 }
+
+static struct tegra_sysedp_corecap pluto_sysedp_corecap[] = {
+       {  8000,    0, {  3606, 276, 204 }, {  3606, 276, 204 } },
+       {  8000, 1000, {  4606, 276, 204 }, {  4606, 276, 204 } },
+       {  8000, 2000, {  5606, 276, 204 }, {  5627, 348, 204 } },
+       {  8000, 3000, {  5094, 276, 660 }, {  5241, 420, 408 } },
+       {  8000, 4000, {  6094, 276, 660 }, {  5321, 420, 660 } },
+       {  9000,    0, {  4606, 276, 204 }, {  4606, 276, 204 } },
+       {  9000, 1000, {  5606, 276, 204 }, {  5627, 348, 204 } },
+       {  9000, 2000, {  5094, 276, 660 }, {  5506, 348, 408 } },
+       {  9000, 3000, {  6094, 276, 660 }, {  5792, 492, 408 } },
+       {  9000, 4000, {  7094, 276, 660 }, {  5192, 528, 660 } },
+       { 10000,    0, {  5606, 276, 204 }, {  5627, 348, 204 } },
+       { 10000, 1000, {  5094, 276, 660 }, {  5506, 348, 408 } },
+       { 10000, 2000, {  6094, 276, 660 }, {  5792, 492, 408 } },
+       { 10000, 3000, {  6503, 276, 792 }, {  5192, 528, 660 } },
+       { 10000, 4000, {  7503, 276, 792 }, {  5646, 600, 660 } },
+       { 11000,    0, {  4503, 276, 792 }, {  5506, 348, 408 } },
+       { 11000, 1000, {  5503, 276, 792 }, {  4192, 528, 660 } },
+       { 11000, 2000, {  6503, 276, 792 }, {  4646, 600, 660 } },
+       { 11000, 3000, {  7503, 276, 792 }, {  4810, 600, 792 } },
+       { 11000, 4000, {  8503, 276, 792 }, {  5810, 600, 792 } },
+       { 12000,    0, {  5503, 276, 792 }, {  5782, 348, 660 } },
+       { 12000, 1000, {  6503, 276, 792 }, {  4646, 600, 660 } },
+       { 12000, 2000, {  7503, 276, 792 }, {  4810, 600, 792 } },
+       { 12000, 3000, {  8503, 276, 792 }, {  5810, 600, 792 } },
+       { 12000, 4000, {  9503, 276, 792 }, {  6810, 600, 792 } },
+       { 13000,    0, {  6503, 276, 792 }, {  4646, 600, 660 } },
+       { 13000, 1000, {  7503, 276, 792 }, {  4810, 600, 792 } },
+       { 13000, 2000, {  8503, 276, 792 }, {  5810, 600, 792 } },
+       { 13000, 3000, {  9503, 276, 792 }, {  6810, 600, 792 } },
+       { 13000, 4000, { 10503, 276, 792 }, {  7810, 600, 792 } },
+       { 14000,    0, {  7503, 276, 792 }, {  5646, 600, 660 } },
+       { 14000, 1000, {  8503, 276, 792 }, {  5810, 600, 792 } },
+       { 14000, 2000, {  9503, 276, 792 }, {  6810, 600, 792 } },
+       { 14000, 3000, { 10503, 276, 792 }, {  7810, 600, 792 } },
+       { 14000, 4000, { 11503, 276, 792 }, {  8810, 600, 792 } },
+       { 15000,    0, {  8503, 276, 792 }, {  5810, 600, 792 } },
+       { 15000, 1000, {  9503, 276, 792 }, {  6810, 600, 792 } },
+       { 15000, 2000, { 10503, 276, 792 }, {  7810, 600, 792 } },
+       { 15000, 3000, { 11503, 276, 792 }, {  8810, 600, 792 } },
+       { 15000, 4000, { 12503, 276, 792 }, {  9810, 600, 792 } },
+       { 16000,    0, {  9503, 276, 792 }, {  6810, 600, 792 } },
+       { 16000, 1000, { 10503, 276, 792 }, {  7810, 600, 792 } },
+       { 16000, 2000, { 11503, 276, 792 }, {  8810, 600, 792 } },
+       { 16000, 3000, { 12503, 276, 792 }, {  9810, 600, 792 } },
+       { 16000, 4000, { 13503, 276, 792 }, { 10810, 600, 792 } },
+       { 17000,    0, { 10503, 276, 792 }, {  7810, 600, 792 } },
+       { 17000, 1000, { 11503, 276, 792 }, {  8810, 600, 792 } },
+       { 17000, 2000, { 12503, 276, 792 }, {  9810, 600, 792 } },
+       { 17000, 3000, { 13503, 276, 792 }, { 10810, 600, 792 } },
+       { 17000, 4000, { 14503, 276, 792 }, { 11810, 600, 792 } },
+       { 18000,    0, { 11503, 276, 792 }, {  8810, 600, 792 } },
+       { 18000, 1000, { 12503, 276, 792 }, {  9810, 600, 792 } },
+       { 18000, 2000, { 13503, 276, 792 }, { 10810, 600, 792 } },
+       { 18000, 3000, { 14503, 276, 792 }, { 11810, 600, 792 } },
+       { 18000, 4000, { 15503, 276, 792 }, { 12810, 600, 792 } },
+       { 19000,    0, { 12503, 276, 792 }, {  9810, 600, 792 } },
+       { 19000, 1000, { 13503, 276, 792 }, { 10810, 600, 792 } },
+       { 19000, 2000, { 14503, 276, 792 }, { 11810, 600, 792 } },
+       { 19000, 3000, { 15503, 276, 792 }, { 12810, 600, 792 } },
+       { 19000, 4000, { 16503, 276, 792 }, { 13810, 600, 792 } },
+       { 20000,    0, { 13503, 276, 792 }, { 10810, 600, 792 } },
+       { 20000, 1000, { 14503, 276, 792 }, { 11810, 600, 792 } },
+       { 20000, 2000, { 15503, 276, 792 }, { 12810, 600, 792 } },
+       { 20000, 3000, { 16503, 276, 792 }, { 13810, 600, 792 } },
+       { 20000, 4000, { 17503, 276, 792 }, { 14810, 600, 792 } },
+       { 24000,    0, { 14810, 600, 792 }, { 14810, 600, 792 } }
+};
+
+static struct tegra_sysedp_platform_data pluto_sysedp_platdata = {
+       .corecap = pluto_sysedp_corecap,
+       .corecap_size = ARRAY_SIZE(pluto_sysedp_corecap)
+};
+
+static struct platform_device pluto_sysedp_device = {
+       .name = "tegra_sysedp",
+       .id = -1,
+       .dev = { .platform_data = &pluto_sysedp_platdata }
+};
+
+static __init int pluto_sysedp_init(void)
+{
+       pluto_sysedp_platdata.cpufreq_lim = tegra_get_system_edp_entries(
+                       &pluto_sysedp_platdata.cpufreq_lim_size);
+       if (!pluto_sysedp_platdata.cpufreq_lim) {
+               WARN_ON(1);
+               return -ENODEV;
+       }
+
+       return platform_device_register(&pluto_sysedp_device);
+}
+late_initcall(pluto_sysedp_init);