arm: tegra: isomgr: init isomgr earlier than display.
Krishna Reddy [Thu, 3 Jan 2013 21:47:40 +0000 (13:47 -0800)]
Change-Id: I3b870a9aad9b57d7247457de5aacfe9c95c25ea0
Signed-off-by: Krishna Reddy <vdumpa@nvidia.com>
Reviewed-on: http://git-master/r/188412
Reviewed-by: Harshada Kale <hkale@nvidia.com>
Tested-by: Harshada Kale <hkale@nvidia.com>

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

index 80880ed..89abf10 100644 (file)
@@ -59,6 +59,7 @@
 #include <mach/io.h>
 #include <mach/io_dpd.h>
 #include <mach/i2s.h>
+#include <mach/isomgr.h>
 #include <mach/tegra_asoc_pdata.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -784,6 +785,7 @@ static void __init tegra_dalmore_late_init(void)
        dalmore_suspend_init();
        dalmore_emc_init();
        dalmore_edp_init();
+       isomgr_init();
        dalmore_touch_init();
        if (board_info.board_id == BOARD_E1582)
                roth_panel_init();
index 679eaa6..12e4ebb 100644 (file)
@@ -63,6 +63,7 @@
 #include <mach/io.h>
 #include <mach/io_dpd.h>
 #include <mach/i2s.h>
+#include <mach/isomgr.h>
 #include <mach/tegra_asoc_pdata.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -1233,6 +1234,7 @@ static void __init tegra_pluto_late_init(void)
        pluto_touch_init();
        pluto_emc_init();
        pluto_edp_init();
+       isomgr_init();
        pluto_panel_init();
        pluto_pmon_init();
        pluto_kbc_init();
index 3c58d28..f951c28 100644 (file)
@@ -52,6 +52,7 @@
 #include <mach/io.h>
 #include <mach/io_dpd.h>
 #include <mach/i2s.h>
+#include <mach/isomgr.h>
 #include <mach/tegra_asoc_pdata.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -564,6 +565,7 @@ static void __init tegra_roth_init(void)
        roth_suspend_init();
        roth_emc_init();
        roth_edp_init();
+       isomgr_init();
        roth_panel_init();
        roth_kbc_init();
        roth_pmon_init();
index 1fb4c16..9058169 100644 (file)
@@ -47,6 +47,12 @@ u32 tegra_isomgr_reserve(tegra_isomgr_handle handle,
 
 /* realize client reservation - apply settings, rval is dvfs thresh usec */
 u32 tegra_isomgr_realize(tegra_isomgr_handle handle);
+
+/* Initialize isomgr.
+ * This api would be called by .init_machine during boot.
+ * isomgr clients, don't call this api.
+ */
+int __init isomgr_init(void);
 #else
 static inline tegra_isomgr_handle tegra_isomgr_register(
                                          enum tegra_iso_client client,
@@ -69,4 +75,8 @@ static inline u32 tegra_isomgr_realize(tegra_isomgr_handle handle)
 {
        return 0;
 }
+static inline int isomgr_init(void)
+{
+       return 0;
+}
 #endif
index 1e70e1c..094d7d1 100644 (file)
@@ -774,7 +774,7 @@ static void isomgr_create_sysfs(void)
 static inline void isomgr_create_sysfs(void) {};
 #endif /* CONFIG_TEGRA_ISOMGR_SYSFS */
 
-static int __init isomgr_init(void)
+int __init isomgr_init(void)
 {
        int i;
        unsigned int max_emc_clk;
@@ -793,11 +793,11 @@ static int __init isomgr_init(void)
        isomgr.emc_clk = clk_get_sys("iso", "emc");
        if (!isomgr.max_iso_bw) {
                max_emc_clk = clk_round_rate(isomgr.emc_clk, ULONG_MAX) / 1000;
-               pr_debug("iso emc max clk=%dKHz", max_emc_clk);
+               pr_info("iso emc max clk=%dKHz", max_emc_clk);
                max_emc_bw = tegra_emc_freq_req_to_bw(max_emc_clk);
                /* ISO clients can use 35% of max emc bw. */
                isomgr.max_iso_bw = max_emc_bw * 35 / 100;
-               pr_debug("max_iso_bw=%dKB", isomgr.max_iso_bw);
+               pr_info("max_iso_bw=%dKB", isomgr.max_iso_bw);
                isomgr.avail_bw = isomgr.max_iso_bw;
        }
        for (i = 0; i < TEGRA_ISO_CLIENT_COUNT; ++i)
@@ -805,4 +805,3 @@ static int __init isomgr_init(void)
        isomgr_create_sysfs();
        return 0;
 }
-subsys_initcall(isomgr_init);