Loading drivers/platform/msm/ipa/ipa_clients/ipa_mhi_client.c +32 −19 Original line number Diff line number Diff line Loading @@ -1743,13 +1743,14 @@ static int ipa_mhi_wait_for_cons_release(void) return 0; } static int ipa_mhi_suspend_channels(struct ipa_mhi_channel_ctx *channels) static int ipa_mhi_suspend_channels(struct ipa_mhi_channel_ctx *channels, int max_channels) { int i; int res; IPA_MHI_FUNC_ENTRY(); for (i = 0; i < IPA_MHI_MAX_UL_CHANNELS; i++) { for (i = 0; i < max_channels; i++) { if (!channels[i].valid) continue; if (channels[i].state != Loading Loading @@ -1779,7 +1780,7 @@ static int ipa_mhi_suspend_channels(struct ipa_mhi_channel_ctx *channels) } static int ipa_mhi_stop_event_update_channels( struct ipa_mhi_channel_ctx *channels) struct ipa_mhi_channel_ctx *channels, int max_channels) { int i; int res; Loading @@ -1788,7 +1789,7 @@ static int ipa_mhi_stop_event_update_channels( return 0; IPA_MHI_FUNC_ENTRY(); for (i = 0; i < IPA_MHI_MAX_UL_CHANNELS; i++) { for (i = 0; i < max_channels; i++) { if (!channels[i].valid) continue; if (channels[i].state != Loading Loading @@ -1847,14 +1848,14 @@ static bool ipa_mhi_check_pending_packets_from_host(void) } static int ipa_mhi_resume_channels(bool LPTransitionRejected, struct ipa_mhi_channel_ctx *channels) struct ipa_mhi_channel_ctx *channels, int max_channels) { int i; int res; struct ipa_mhi_channel_ctx *channel; IPA_MHI_FUNC_ENTRY(); for (i = 0; i < IPA_MHI_MAX_UL_CHANNELS; i++) { for (i = 0; i < max_channels; i++) { if (!channels[i].valid) continue; if (channels[i].state != Loading Loading @@ -1903,7 +1904,8 @@ static int ipa_mhi_suspend_ul(bool force, bool *empty, bool *force_clear) *force_clear = false; res = ipa_mhi_suspend_channels(ipa_mhi_client_ctx->ul_channels); res = ipa_mhi_suspend_channels(ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); if (res) { IPA_MHI_ERR("ipa_mhi_suspend_ul_channels failed %d\n", res); goto fail_suspend_ul_channel; Loading Loading @@ -1964,7 +1966,7 @@ static int ipa_mhi_suspend_ul(bool force, bool *empty, bool *force_clear) } res = ipa_mhi_stop_event_update_channels( ipa_mhi_client_ctx->ul_channels); ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); if (res) { IPA_MHI_ERR( "ipa_mhi_stop_event_update_ul_channels failed %d\n", Loading Loading @@ -2080,7 +2082,8 @@ static int ipa_mhi_suspend_dl(bool force) { int res; res = ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels); res = ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); if (res) { IPA_MHI_ERR( "ipa_mhi_suspend_channels for dl failed %d\n", res); Loading @@ -2088,7 +2091,8 @@ static int ipa_mhi_suspend_dl(bool force) } res = ipa_mhi_stop_event_update_channels (ipa_mhi_client_ctx->dl_channels); (ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); if (res) { IPA_MHI_ERR("failed to stop event update on DL %d\n", res); goto fail_stop_event_update_dl_channel; Loading @@ -2113,7 +2117,8 @@ static int ipa_mhi_suspend_dl(bool force) fail_stop_event_update_dl_channel: ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->dl_channels); ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); fail_suspend_dl_channel: return res; } Loading Loading @@ -2226,7 +2231,8 @@ int ipa_mhi_suspend(bool force) #endif IPA_ACTIVE_CLIENTS_DEC_SIMPLE(); fail_suspend_ul_channel: ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->ul_channels); ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); if (force_clear) { if ( ipa_mhi_disable_force_clear(ipa_mhi_client_ctx->qmi_req_id)) { Loading @@ -2237,7 +2243,8 @@ int ipa_mhi_suspend(bool force) ipa_mhi_client_ctx->qmi_req_id++; } fail_suspend_dl_channel: ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->dl_channels); ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); ipa_mhi_set_state(IPA_MHI_STATE_STARTED); return res; } Loading Loading @@ -2272,7 +2279,8 @@ int ipa_mhi_resume(void) if (ipa_mhi_client_ctx->rm_cons_state == IPA_MHI_RM_STATE_REQUESTED) { /* resume all DL channels */ res = ipa_mhi_resume_channels(false, ipa_mhi_client_ctx->dl_channels); ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); if (res) { IPA_MHI_ERR("ipa_mhi_resume_dl_channels failed %d\n", res); Loading Loading @@ -2310,7 +2318,8 @@ int ipa_mhi_resume(void) /* resume all UL channels */ res = ipa_mhi_resume_channels(false, ipa_mhi_client_ctx->ul_channels); ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); if (res) { IPA_MHI_ERR("ipa_mhi_resume_ul_channels failed %d\n", res); goto fail_resume_ul_channels; Loading @@ -2318,7 +2327,8 @@ int ipa_mhi_resume(void) if (!dl_channel_resumed) { res = ipa_mhi_resume_channels(false, ipa_mhi_client_ctx->dl_channels); ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); if (res) { IPA_MHI_ERR("ipa_mhi_resume_dl_channels failed %d\n", res); Loading @@ -2339,9 +2349,11 @@ int ipa_mhi_resume(void) return 0; fail_set_state: ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels); ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); fail_resume_dl_channels2: ipa_mhi_suspend_channels(ipa_mhi_client_ctx->ul_channels); ipa_mhi_suspend_channels(ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); fail_resume_ul_channels: if (!ipa_pm_is_used()) ipa_mhi_release_prod(); Loading @@ -2354,7 +2366,8 @@ int ipa_mhi_resume(void) ipa_pm_deactivate_sync(ipa_mhi_client_ctx->pm_hdl); fail_pm_activate: #endif ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels); ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); fail_resume_dl_channels: ipa_mhi_set_state(IPA_MHI_STATE_SUSPENDED); return res; Loading Loading
drivers/platform/msm/ipa/ipa_clients/ipa_mhi_client.c +32 −19 Original line number Diff line number Diff line Loading @@ -1743,13 +1743,14 @@ static int ipa_mhi_wait_for_cons_release(void) return 0; } static int ipa_mhi_suspend_channels(struct ipa_mhi_channel_ctx *channels) static int ipa_mhi_suspend_channels(struct ipa_mhi_channel_ctx *channels, int max_channels) { int i; int res; IPA_MHI_FUNC_ENTRY(); for (i = 0; i < IPA_MHI_MAX_UL_CHANNELS; i++) { for (i = 0; i < max_channels; i++) { if (!channels[i].valid) continue; if (channels[i].state != Loading Loading @@ -1779,7 +1780,7 @@ static int ipa_mhi_suspend_channels(struct ipa_mhi_channel_ctx *channels) } static int ipa_mhi_stop_event_update_channels( struct ipa_mhi_channel_ctx *channels) struct ipa_mhi_channel_ctx *channels, int max_channels) { int i; int res; Loading @@ -1788,7 +1789,7 @@ static int ipa_mhi_stop_event_update_channels( return 0; IPA_MHI_FUNC_ENTRY(); for (i = 0; i < IPA_MHI_MAX_UL_CHANNELS; i++) { for (i = 0; i < max_channels; i++) { if (!channels[i].valid) continue; if (channels[i].state != Loading Loading @@ -1847,14 +1848,14 @@ static bool ipa_mhi_check_pending_packets_from_host(void) } static int ipa_mhi_resume_channels(bool LPTransitionRejected, struct ipa_mhi_channel_ctx *channels) struct ipa_mhi_channel_ctx *channels, int max_channels) { int i; int res; struct ipa_mhi_channel_ctx *channel; IPA_MHI_FUNC_ENTRY(); for (i = 0; i < IPA_MHI_MAX_UL_CHANNELS; i++) { for (i = 0; i < max_channels; i++) { if (!channels[i].valid) continue; if (channels[i].state != Loading Loading @@ -1903,7 +1904,8 @@ static int ipa_mhi_suspend_ul(bool force, bool *empty, bool *force_clear) *force_clear = false; res = ipa_mhi_suspend_channels(ipa_mhi_client_ctx->ul_channels); res = ipa_mhi_suspend_channels(ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); if (res) { IPA_MHI_ERR("ipa_mhi_suspend_ul_channels failed %d\n", res); goto fail_suspend_ul_channel; Loading Loading @@ -1964,7 +1966,7 @@ static int ipa_mhi_suspend_ul(bool force, bool *empty, bool *force_clear) } res = ipa_mhi_stop_event_update_channels( ipa_mhi_client_ctx->ul_channels); ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); if (res) { IPA_MHI_ERR( "ipa_mhi_stop_event_update_ul_channels failed %d\n", Loading Loading @@ -2080,7 +2082,8 @@ static int ipa_mhi_suspend_dl(bool force) { int res; res = ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels); res = ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); if (res) { IPA_MHI_ERR( "ipa_mhi_suspend_channels for dl failed %d\n", res); Loading @@ -2088,7 +2091,8 @@ static int ipa_mhi_suspend_dl(bool force) } res = ipa_mhi_stop_event_update_channels (ipa_mhi_client_ctx->dl_channels); (ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); if (res) { IPA_MHI_ERR("failed to stop event update on DL %d\n", res); goto fail_stop_event_update_dl_channel; Loading @@ -2113,7 +2117,8 @@ static int ipa_mhi_suspend_dl(bool force) fail_stop_event_update_dl_channel: ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->dl_channels); ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); fail_suspend_dl_channel: return res; } Loading Loading @@ -2226,7 +2231,8 @@ int ipa_mhi_suspend(bool force) #endif IPA_ACTIVE_CLIENTS_DEC_SIMPLE(); fail_suspend_ul_channel: ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->ul_channels); ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); if (force_clear) { if ( ipa_mhi_disable_force_clear(ipa_mhi_client_ctx->qmi_req_id)) { Loading @@ -2237,7 +2243,8 @@ int ipa_mhi_suspend(bool force) ipa_mhi_client_ctx->qmi_req_id++; } fail_suspend_dl_channel: ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->dl_channels); ipa_mhi_resume_channels(true, ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); ipa_mhi_set_state(IPA_MHI_STATE_STARTED); return res; } Loading Loading @@ -2272,7 +2279,8 @@ int ipa_mhi_resume(void) if (ipa_mhi_client_ctx->rm_cons_state == IPA_MHI_RM_STATE_REQUESTED) { /* resume all DL channels */ res = ipa_mhi_resume_channels(false, ipa_mhi_client_ctx->dl_channels); ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); if (res) { IPA_MHI_ERR("ipa_mhi_resume_dl_channels failed %d\n", res); Loading Loading @@ -2310,7 +2318,8 @@ int ipa_mhi_resume(void) /* resume all UL channels */ res = ipa_mhi_resume_channels(false, ipa_mhi_client_ctx->ul_channels); ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); if (res) { IPA_MHI_ERR("ipa_mhi_resume_ul_channels failed %d\n", res); goto fail_resume_ul_channels; Loading @@ -2318,7 +2327,8 @@ int ipa_mhi_resume(void) if (!dl_channel_resumed) { res = ipa_mhi_resume_channels(false, ipa_mhi_client_ctx->dl_channels); ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); if (res) { IPA_MHI_ERR("ipa_mhi_resume_dl_channels failed %d\n", res); Loading @@ -2339,9 +2349,11 @@ int ipa_mhi_resume(void) return 0; fail_set_state: ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels); ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); fail_resume_dl_channels2: ipa_mhi_suspend_channels(ipa_mhi_client_ctx->ul_channels); ipa_mhi_suspend_channels(ipa_mhi_client_ctx->ul_channels, IPA_MHI_MAX_UL_CHANNELS); fail_resume_ul_channels: if (!ipa_pm_is_used()) ipa_mhi_release_prod(); Loading @@ -2354,7 +2366,8 @@ int ipa_mhi_resume(void) ipa_pm_deactivate_sync(ipa_mhi_client_ctx->pm_hdl); fail_pm_activate: #endif ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels); ipa_mhi_suspend_channels(ipa_mhi_client_ctx->dl_channels, IPA_MHI_MAX_DL_CHANNELS); fail_resume_dl_channels: ipa_mhi_set_state(IPA_MHI_STATE_SUSPENDED); return res; Loading