From 1c17e7b10ad4f2f47c5ccf67225982e2c1fdda49 Mon Sep 17 00:00:00 2001 From: Skylar Chang Date: Fri, 12 May 2017 17:13:13 -0700 Subject: [PATCH] msm: ipa3: fix usb statuses exception path Set APPS_LAN_CONS pipe as the statuses exception pipe for usb-prod pipes. Change-Id: Ia0938da6ec2b2cbdbab4dddf177d2af76fad3aaa Signed-off-by: Skylar Chang --- drivers/platform/msm/ipa/ipa_v3/ipa.c | 39 ++----------------- .../msm/ipa/ipa_v3/ipahal/ipahal_reg.c | 17 -------- .../msm/ipa/ipa_v3/ipahal/ipahal_reg.h | 2 - 3 files changed, 4 insertions(+), 54 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c index 7ed83fb74fcc..de26c7cf53a8 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c @@ -2233,7 +2233,6 @@ static int ipa3_q6_set_ex_path_to_apps(void) struct ipahal_imm_cmd_register_write reg_write; struct ipahal_imm_cmd_pyld *cmd_pyld; int retval; - struct ipahal_reg_valmask valmask; desc = kcalloc(ipa3_ctx->ipa_num_pipes, sizeof(struct ipa3_desc), GFP_KERNEL); @@ -2248,40 +2247,10 @@ static int ipa3_q6_set_ex_path_to_apps(void) if (ep_idx == -1) continue; - if (ipa3_ctx->ep[ep_idx].valid && - ipa3_ctx->ep[ep_idx].skip_ep_cfg) { - BUG_ON(num_descs >= ipa3_ctx->ipa_num_pipes); - - reg_write.skip_pipeline_clear = false; - reg_write.pipeline_clear_options = - IPAHAL_HPS_CLEAR; - reg_write.offset = - ipahal_get_reg_n_ofst(IPA_ENDP_STATUS_n, - ep_idx); - ipahal_get_status_ep_valmask( - ipa3_get_ep_mapping(IPA_CLIENT_APPS_LAN_CONS), - &valmask); - reg_write.value = valmask.val; - reg_write.value_mask = valmask.mask; - cmd_pyld = ipahal_construct_imm_cmd( - IPA_IMM_CMD_REGISTER_WRITE, ®_write, false); - if (!cmd_pyld) { - IPAERR("fail construct register_write cmd\n"); - BUG(); - } - - desc[num_descs].opcode = ipahal_imm_cmd_get_opcode( - IPA_IMM_CMD_REGISTER_WRITE); - desc[num_descs].type = IPA_IMM_CMD_DESC; - desc[num_descs].callback = ipa3_destroy_imm; - desc[num_descs].user1 = cmd_pyld; - desc[num_descs].pyld = cmd_pyld->data; - desc[num_descs].len = cmd_pyld->len; - num_descs++; - } - - /* disable statuses for modem producers */ - if (IPA_CLIENT_IS_Q6_PROD(client_idx)) { + /* disable statuses for all modem controlled prod pipes */ + if (IPA_CLIENT_IS_Q6_PROD(client_idx) || + (ipa3_ctx->ep[ep_idx].valid && + ipa3_ctx->ep[ep_idx].skip_ep_cfg)) { ipa_assert_on(num_descs >= ipa3_ctx->ipa_num_pipes); reg_write.skip_pipeline_clear = false; diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c index 585f9e6bd492..db40fcf9e86d 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.c @@ -1591,20 +1591,3 @@ void ipahal_get_fltrt_hash_flush_valmask( valmask->mask = valmask->val; } - -void ipahal_get_status_ep_valmask(int pipe_num, - struct ipahal_reg_valmask *valmask) -{ - if (!valmask) { - IPAHAL_ERR("Input error\n"); - return; - } - - valmask->val = - (pipe_num & IPA_ENDP_STATUS_n_STATUS_ENDP_BMSK) << - IPA_ENDP_STATUS_n_STATUS_ENDP_SHFT; - - valmask->mask = - IPA_ENDP_STATUS_n_STATUS_ENDP_BMSK << - IPA_ENDP_STATUS_n_STATUS_ENDP_SHFT; -} diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.h b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.h index c37415f13380..cdc18893882b 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.h +++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_reg.h @@ -458,8 +458,6 @@ void ipahal_get_aggr_force_close_valmask(int ep_idx, void ipahal_get_fltrt_hash_flush_valmask( struct ipahal_reg_fltrt_hash_flush *flush, struct ipahal_reg_valmask *valmask); -void ipahal_get_status_ep_valmask(int pipe_num, - struct ipahal_reg_valmask *valmask); #endif /* _IPAHAL_REG_H_ */