Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18364b84 authored by Bar Weiner's avatar Bar Weiner
Browse files

usb: bam: add support for new ipa connect paramater



Adding support for the IPA keep awake (power save override)
feature. Per the IPA driver team's request - this parameter
is set to false for RMNet and to true for MBIM, ECM and RNDIS.

Change-Id: I66f4ef965fcfc0700b91f97eb18b287d7b64a369
Signed-off-by: default avatarDov Levenglick <dovl@codeaurora.org>
Signed-off-by: default avatarBar Weiner <bweiner@codeaurora.org>
parent 68766e4f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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 */

+1 −0
Original line number Diff line number Diff line
@@ -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) {
+3 −0
Original line number Diff line number Diff line
@@ -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 */
+1 −0
Original line number Diff line number Diff line
@@ -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;