diff options
| author | Skylar Chang <chiaweic@codeaurora.org> | 2016-02-19 15:34:16 -0800 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-25 16:03:34 -0700 |
| commit | dfe70cc5b1cf222c2ffa87cc9c3a9ed093ad6220 (patch) | |
| tree | 808a4dfc68b5ac1714a8836650e7b8528c9c75f1 /drivers/platform/msm/ipa | |
| parent | b4fe33b8f633a52b1c5795dd82a5658734a78076 (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.c | 11 |
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; |
