OSDN Git Service

msm: ipa3: disable statuses for modem pipes on SSR
authorAmir Levy <alevy@codeaurora.org>
Wed, 19 Apr 2017 11:35:12 +0000 (14:35 +0300)
committerAmir Levy <alevy@codeaurora.org>
Wed, 19 Apr 2017 11:35:12 +0000 (14:35 +0300)
On SSR scenario disable statuses for modem producer pipes.
Since modem is not up these statuses are redundant and are
not read by any EE.

Change-Id: I6e7a475d74902f7c5d1b9083f9f7935d3ed2c7c9
CRs-Fixed: 2034903
Signed-off-by: Amir Levy <alevy@codeaurora.org>
drivers/platform/msm/ipa/ipa_v3/ipa.c

index 5b706b6..16e2b2a 100644 (file)
@@ -2276,6 +2276,36 @@ static int ipa3_q6_set_ex_path_to_apps(void)
                        desc[num_descs].len = cmd_pyld->len;
                        num_descs++;
                }
+
+               /* disable statuses for modem producers */
+               if (IPA_CLIENT_IS_Q6_PROD(client_idx)) {
+                       ipa_assert_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);
+                       reg_write.value = 0;
+                       reg_write.value_mask = ~0;
+                       cmd_pyld = ipahal_construct_imm_cmd(
+                               IPA_IMM_CMD_REGISTER_WRITE, &reg_write, false);
+                       if (!cmd_pyld) {
+                               IPAERR("fail construct register_write cmd\n");
+                               ipa_assert();
+                               return -EFAULT;
+                       }
+
+                       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++;
+               }
        }
 
        /* Will wait 500msecs for IPA tag process completion */