msm: 8x60: Enable EBI2 clock
The 8x60 boot loader no longer leaves the EBI2 clock enabled.
Enable it on targets where there are devices attached to this
bus (such as ethernet).
Signed-off-by: Terence Hampson <thampson@codeaurora.org>
diff --git a/arch/arm/mach-msm/board-msm8x60.c b/arch/arm/mach-msm/board-msm8x60.c
index 88d8a4a..f9c721f 100644
--- a/arch/arm/mach-msm/board-msm8x60.c
+++ b/arch/arm/mach-msm/board-msm8x60.c
@@ -7445,6 +7445,15 @@
{
uint32_t ebi2_cfg;
void *ebi2_cfg_ptr;
+ struct clk *mem_clk = clk_get_sys("msm_ebi2", "mem_clk");
+
+ if (IS_ERR(mem_clk)) {
+ pr_err("%s: clk_get_sys(%s,%s), failed", __func__,
+ "msm_ebi2", "mem_clk");
+ return;
+ }
+ clk_enable(mem_clk);
+ clk_put(mem_clk);
ebi2_cfg_ptr = ioremap_nocache(0x1a100000, sizeof(uint32_t));
if (ebi2_cfg_ptr != 0) {
@@ -10062,8 +10071,15 @@
if (!machine_is_msm8x60_rumi3() && !machine_is_msm8x60_sim())
acpuclk_init(&acpuclk_8x60_soc_data);
- /* No EBI2 on 8660 charm targets */
- if (!machine_is_msm8x60_fusion() && !machine_is_msm8x60_fusn_ffa())
+ /*
+ * Enable EBI2 only for boards which make use of it. Leave
+ * it disabled for all others for additional power savings.
+ */
+ if (machine_is_msm8x60_surf() || machine_is_msm8x60_ffa() ||
+ machine_is_msm8x60_rumi3() ||
+ machine_is_msm8x60_sim() ||
+ machine_is_msm8x60_fluid() ||
+ machine_is_msm8x60_dragon())
msm8x60_init_ebi2();
msm8x60_init_tlmm();
msm8x60_init_gpiomux(board_data->gpiomux_cfgs);
diff --git a/arch/arm/mach-msm/clock-8x60.c b/arch/arm/mach-msm/clock-8x60.c
index c436a19..9d48cdb 100644
--- a/arch/arm/mach-msm/clock-8x60.c
+++ b/arch/arm/mach-msm/clock-8x60.c
@@ -3599,7 +3599,7 @@
CLK_LOOKUP("iface_clk", sdc4_p_clk.c, "msm_sdcc.4"),
CLK_LOOKUP("iface_clk", sdc5_p_clk.c, "msm_sdcc.5"),
CLK_LOOKUP("mem_clk", ebi2_2x_clk.c, NULL),
- CLK_LOOKUP("mem_clk", ebi2_clk.c, NULL),
+ CLK_LOOKUP("mem_clk", ebi2_clk.c, "msm_ebi2"),
CLK_LOOKUP("core_clk", adm0_clk.c, "msm_dmov.0"),
CLK_LOOKUP("iface_clk", adm0_p_clk.c, "msm_dmov.0"),
CLK_LOOKUP("core_clk", adm1_clk.c, "msm_dmov.1"),