Переглянути джерело

msm: ipa3: Remove ep suspend during usb resume.

With unified API changes, on usb channel during
resume ep suspend bit was not cleared which was set
during suspend channel. Now Removing ep suspend bit
while resuming channel.

Change-Id: Ib165299ac67d05139c7a964ac3464663d61260a1
Signed-off-by: Piyush Dhyani <[email protected]>
Piyush Dhyani 4 роки тому
батько
коміт
5cda42ee08
1 змінених файлів з 8 додано та 0 видалено
  1. 8 0
      drivers/platform/msm/ipa/ipa_clients/ipa_usb.c

+ 8 - 0
drivers/platform/msm/ipa/ipa_clients/ipa_usb.c

@@ -2561,6 +2561,7 @@ static int ipa_usb_xdci_resume_internal(u32 ul_clnt_hdl, u32 dl_clnt_hdl,
 	enum ipa3_usb_state prev_state;
 	enum ipa3_usb_state prev_state;
 	unsigned long flags;
 	unsigned long flags;
 	enum ipa3_usb_transport_type ttype;
 	enum ipa3_usb_transport_type ttype;
+	struct ipa_ep_cfg_ctrl ep_cfg_ctrl;
 
 
 	mutex_lock(&ipa3_usb_ctx->general_mutex);
 	mutex_lock(&ipa3_usb_ctx->general_mutex);
 	IPA_USB_DBG_LOW("entry\n");
 	IPA_USB_DBG_LOW("entry\n");
@@ -2605,6 +2606,13 @@ static int ipa_usb_xdci_resume_internal(u32 ul_clnt_hdl, u32 dl_clnt_hdl,
 	if (result)
 	if (result)
 		goto activate_pm_fail;
 		goto activate_pm_fail;
 
 
+	if (ipa3_ctx->ipa_hw_type < IPA_HW_v4_0) {
+		/* Unsuspend the DL/DPL EP */
+		memset(&ep_cfg_ctrl, 0, sizeof(struct ipa_ep_cfg_ctrl));
+		ep_cfg_ctrl.ipa_ep_suspend = false;
+		ipa_cfg_ep_ctrl(dl_clnt_hdl, &ep_cfg_ctrl);
+	}
+
 	if (!IPA3_USB_IS_TTYPE_DPL(ttype)) {
 	if (!IPA3_USB_IS_TTYPE_DPL(ttype)) {
 		/* Start UL channel */
 		/* Start UL channel */
 		result = ipa3_start_gsi_channel(ul_clnt_hdl);
 		result = ipa3_start_gsi_channel(ul_clnt_hdl);