summaryrefslogtreecommitdiff
path: root/drivers/platform/msm/ipa
diff options
context:
space:
mode:
authorSkylar Chang <chiaweic@codeaurora.org>2016-02-19 15:34:16 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-25 16:03:34 -0700
commitdfe70cc5b1cf222c2ffa87cc9c3a9ed093ad6220 (patch)
tree808a4dfc68b5ac1714a8836650e7b8528c9c75f1 /drivers/platform/msm/ipa
parentb4fe33b8f633a52b1c5795dd82a5658734a78076 (diff)
msm: ipa3: fix device hang issue if ipa_clk failed
if ipa-driver failed to get ipa-clk during the device probe, seeing device hang issue due to notifier_chain_register. The fix is to only initialize the notifier_chain_register after ipa-driver successfully gets ipa-clk. Change-Id: I705bf9e2b81a9d50cda75d31504f79e082276792 Signed-off-by: Skylar Chang <chiaweic@codeaurora.org>
Diffstat (limited to 'drivers/platform/msm/ipa')
-rw-r--r--drivers/platform/msm/ipa/ipa_v3/ipa.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c
index ce2d8e642314..130efbb057f7 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c
@@ -4115,14 +4115,15 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p,
IPADBG("Skipping bus scaling registration on Virtual plat\n");
}
- if (ipa3_active_clients_log_init())
- goto fail_init_active_client;
-
/* get IPA clocks */
result = ipa3_get_clks(master_dev);
if (result)
goto fail_clk;
+ /* init active_clients_log after getting ipa-clk */
+ if (ipa3_active_clients_log_init())
+ goto fail_init_active_client;
+
/* Enable ipa3_ctx->enable_clock_scaling */
ipa3_ctx->enable_clock_scaling = 1;
ipa3_ctx->curr_ipa_clk_rate = ipa3_ctx->ctrl->ipa_clk_rate_turbo;
@@ -4531,9 +4532,9 @@ fail_init_hw:
iounmap(ipa3_ctx->mmio);
fail_remap:
ipa3_disable_clks();
-fail_clk:
- ipa3_active_clients_log_destroy();
fail_init_active_client:
+ ipa3_active_clients_log_destroy();
+fail_clk:
msm_bus_scale_unregister_client(ipa3_ctx->ipa_bus_hdl);
fail_ipahal:
ipa3_bus_scale_table = NULL;