diff --git a/drivers/platform/msm/usb_bam.c b/drivers/platform/msm/usb_bam.c index a44fca5beac225f8e863fee784cf81dfed18aef9..3b931e4a3b3e6ee8a20c9e0edb5c23cfee787c7f 100644 --- a/drivers/platform/msm/usb_bam.c +++ b/drivers/platform/msm/usb_bam.c @@ -527,6 +527,7 @@ static int connect_pipe_sys2bam_ipa(u8 idx, sys_in_params.priv = ipa_params->priv; sys_in_params.notify = ipa_params->notify; sys_in_params.skip_ep_cfg = ipa_params->skip_ep_cfg; + sys_in_params.keep_ipa_awake = ipa_params->keep_ipa_awake; memcpy(&sys_in_params.ipa_ep_cfg, &ipa_params->ipa_ep_cfg, sizeof(struct ipa_ep_cfg)); @@ -591,6 +592,7 @@ static int connect_pipe_bam2bam_ipa(u8 idx, ipa_in_params.notify = ipa_params->notify; ipa_in_params.priv = ipa_params->priv; ipa_in_params.skip_ep_cfg = ipa_params->skip_ep_cfg; + ipa_in_params.keep_ipa_awake = ipa_params->keep_ipa_awake; /* If BAM is using dedicated SPS pipe memory, get it */ diff --git a/drivers/usb/gadget/u_bam.c b/drivers/usb/gadget/u_bam.c index b4f4363e5fc04f736d22e37e598d23f0f79eeb61..0d22fae07df2ea5dc183b14ca7f3f46bbdfcbf66 100644 --- a/drivers/usb/gadget/u_bam.c +++ b/drivers/usb/gadget/u_bam.c @@ -1092,6 +1092,7 @@ static void gbam2bam_connect_work(struct work_struct *w) } d->ipa_params.ipa_ep_cfg.mode.mode = IPA_BASIC; d->ipa_params.skip_ep_cfg = teth_bridge_params.skip_ep_cfg; + d->ipa_params.keep_ipa_awake = false; d->ipa_params.dir = USB_TO_PEER_PERIPHERAL; ret = usb_bam_connect_ipa(&d->ipa_params); if (ret) { diff --git a/drivers/usb/gadget/u_bam_data.c b/drivers/usb/gadget/u_bam_data.c index a0d8b245ae6da205526fb8554bb4d764b5177021..0a6ed70f53c02cc0873994d28a94718a5570e6e7 100644 --- a/drivers/usb/gadget/u_bam_data.c +++ b/drivers/usb/gadget/u_bam_data.c @@ -631,12 +631,14 @@ static void bam2bam_data_connect_work(struct work_struct *w) d->ipa_params.ipa_ep_cfg.mode.mode = IPA_BASIC; d->ipa_params.skip_ep_cfg = teth_bridge_params.skip_ep_cfg; + d->ipa_params.keep_ipa_awake = true; } d->ipa_params.dir = USB_TO_PEER_PERIPHERAL; if (d->func_type == USB_FUNC_ECM) { d->ipa_params.notify = ecm_qc_get_ipa_rx_cb(); d->ipa_params.priv = ecm_qc_get_ipa_priv(); d->ipa_params.skip_ep_cfg = ecm_qc_get_skip_ep_config(); + d->ipa_params.keep_ipa_awake = true; } if (d->func_type == USB_FUNC_RNDIS) { @@ -644,6 +646,7 @@ static void bam2bam_data_connect_work(struct work_struct *w) d->ipa_params.priv = rndis_qc_get_ipa_priv(); d->ipa_params.skip_ep_cfg = rndis_qc_get_skip_ep_config(); + d->ipa_params.keep_ipa_awake = true; } /* Support for UL using system-to-IPA */ diff --git a/include/linux/usb_bam.h b/include/linux/usb_bam.h index 20e50e0f878e8e4e926f47cfe2c5ecd5b9d7b040..195f00aa72c2d6793f01231ea8255fa8bb814cc5 100644 --- a/include/linux/usb_bam.h +++ b/include/linux/usb_bam.h @@ -66,6 +66,7 @@ struct usb_bam_connect_ipa_params { u8 dst_idx; u32 *src_pipe; u32 *dst_pipe; + bool keep_ipa_awake; enum usb_bam_pipe_dir dir; /* Parameters for Port Mapper */ u32 ipa_cons_ep_idx;