pm: EDP: t114: adding battery EDP manager
Sivaram Nair [Thu, 13 Sep 2012 15:45:39 +0000 (18:45 +0300)]
Battery EDP manager is added for Pluto and Dalmore boards.

Change-Id: I7a3fd1e7621f6c0c0a873185b23a8b81947b16a9
Signed-off-by: Sivaram Nair <sivaramn@nvidia.com>
Reviewed-on: http://git-master/r/132526
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>

Rebase-Id: R1f3821b5d08d378387da9728aec7696ae46a624a

arch/arm/mach-tegra/board-dalmore.c
arch/arm/mach-tegra/board-pluto.c
arch/arm/mach-tegra/edp.c
arch/arm/mach-tegra/include/mach/edp.h

index ca26c8f..e09058a 100644 (file)
@@ -62,6 +62,7 @@
 #include <mach/usb_phy.h>
 #include <mach/gpio-tegra.h>
 #include <mach/tegra_fiq_debugger.h>
+#include <mach/edp.h>
 
 #include "board.h"
 #include "clock.h"
@@ -541,6 +542,7 @@ static void dalmore_audio_init(void)
 
 static void __init tegra_dalmore_init(void)
 {
+       tegra_battery_edp_init(2500);
        tegra_clk_init_from_table(dalmore_clk_init_table);
        tegra_enable_pinmux();
        dalmore_pinmux_init();
index 37e39d6..27d158e 100644 (file)
@@ -64,6 +64,7 @@
 #include <mach/usb_phy.h>
 #include <mach/gpio-tegra.h>
 #include <mach/tegra_fiq_debugger.h>
+#include <mach/edp.h>
 
 #include "board.h"
 #include "clock.h"
@@ -605,6 +606,7 @@ static void pluto_audio_init(void)
 
 static void __init tegra_pluto_init(void)
 {
+       tegra_battery_edp_init(2500);
        tegra_clk_init_from_table(pluto_clk_init_table);
        tegra_enable_pinmux();
        pluto_pinmux_init();
index f9ad605..3e84507 100644 (file)
@@ -725,6 +725,42 @@ void tegra_get_system_edp_limits(const unsigned int **limits)
        *limits = system_edp_limits;
 }
 
+#ifdef CONFIG_EDP_FRAMEWORK
+
+static struct edp_manager battery_edp_manager = {
+       .name = "battery"
+};
+
+void __init tegra_battery_edp_init(unsigned int cap)
+{
+       struct edp_governor *g;
+       int r;
+
+       battery_edp_manager.imax = cap;
+       r = edp_register_manager(&battery_edp_manager);
+       if (r)
+               goto err_ret;
+
+       /* start with priority governor */
+       g = edp_get_governor("priority");
+       if (!g) {
+               r = -EFAULT;
+               goto err_ret;
+       }
+
+       r = edp_set_governor(&battery_edp_manager, g);
+       if (r)
+               goto err_ret;
+
+       return;
+
+err_ret:
+       pr_err("Battery EDP init failed with error %d\n", r);
+       WARN_ON(1);
+}
+
+#endif
+
 #ifdef CONFIG_DEBUG_FS
 
 static int edp_limit_debugfs_show(struct seq_file *s, void *data)
index cb1e213..1192a29 100644 (file)
@@ -22,6 +22,7 @@
 #define __MACH_EDP_H
 
 #include <linux/debugfs.h>
+#include <linux/edp.h>
 
 struct tegra_edp_entry {
        char speedo_id;
@@ -78,4 +79,10 @@ static inline void tegra_edp_throttle_cpu_now(u8 factor)
 void tegra_edp_throttle_cpu_now(u8 factor);
 #endif
 
+#if defined(CONFIG_TEGRA_EDP_LIMITS) && defined(CONFIG_EDP_FRAMEWORK)
+void __init tegra_battery_edp_init(unsigned int cap);
+#else
+static inline void tegra_battery_edp_init(unsigned int cap) {}
+#endif
+
 #endif /* __MACH_EDP_H */