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

Commit b33e43a5 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "u_data_ipa: Don't call USB3 specific APIs for USB2 controller"

parents cbf03140 05133172
Loading
Loading
Loading
Loading
+36 −18
Original line number Diff line number Diff line
@@ -217,6 +217,7 @@ void ipa_data_disconnect(struct gadget_ipa_port *gp, u8 port_num)
			 * complete function will be called, where we try
			 * to obtain the spinlock as well.
			 */
			if (gadget_is_dwc3(gadget))
				msm_ep_unconfig(port->port_usb->in);
			spin_unlock_irqrestore(&port->port_lock, flags);
			usb_ep_disable(port->port_usb->in);
@@ -225,6 +226,7 @@ void ipa_data_disconnect(struct gadget_ipa_port *gp, u8 port_num)
		}

		if (port->port_usb->out) {
			if (gadget_is_dwc3(gadget))
				msm_ep_unconfig(port->port_usb->out);
			spin_unlock_irqrestore(&port->port_lock, flags);
			usb_ep_disable(port->port_usb->out);
@@ -334,6 +336,7 @@ static void ipa_data_connect_work(struct work_struct *w)

	/* update IPA Parameteres here. */
	port->ipa_params.usb_connection_speed = gadget->speed;
	if (gadget_is_dwc3(gadget))
		port->ipa_params.reset_pipe_after_lpm =
				msm_dwc3_reset_ep_after_lpm(gadget);
	port->ipa_params.skip_ep_cfg = true;
@@ -359,9 +362,14 @@ static void ipa_data_connect_work(struct work_struct *w)

		gport->ipa_consumer_ep = port->ipa_params.ipa_cons_ep_idx;

		if (gadget_is_dwc3(gadget)) {
			sps_params = MSM_SPS_MODE | MSM_DISABLE_WB
					| MSM_PRODUCER | port->src_pipe_idx;
			port->rx_req->length = 32*1024;
		} else {
			sps_params = (MSM_SPS_MODE | port->src_pipe_idx |
				       MSM_VENDOR_ID) & ~MSM_IS_FINITE_TRANSFER;
		}
		port->rx_req->udc_priv = sps_params;

		port->src_bam_idx = usb_bam_get_connection_idx(
@@ -373,12 +381,14 @@ static void ipa_data_connect_work(struct work_struct *w)
			goto disconnect_usb_bam_ipa_out;
		}

		if (gadget_is_dwc3(gadget)) {
			configure_fifo(port->src_bam_idx, port->port_usb->out);
			ret = msm_ep_config(port->port_usb->out);
			if (ret) {
				pr_err("msm_ep_config() failed for OUT EP\n");
				goto disconnect_usb_bam_ipa_out;
			}
		}
		is_ipa_disconnected = false;
	}

@@ -393,8 +403,14 @@ static void ipa_data_connect_work(struct work_struct *w)
		}

		gport->ipa_producer_ep = port->ipa_params.ipa_prod_ep_idx;
		sps_params = MSM_SPS_MODE | MSM_DISABLE_WB | port->dst_pipe_idx;
		if (gadget_is_dwc3(gadget)) {
			sps_params = MSM_SPS_MODE | MSM_DISABLE_WB |
							port->dst_pipe_idx;
			port->tx_req->length = 32*1024;
		} else {
			sps_params = (MSM_SPS_MODE | port->dst_pipe_idx |
				       MSM_VENDOR_ID) & ~MSM_IS_FINITE_TRANSFER;
		}
		port->tx_req->udc_priv = sps_params;

		port->dst_bam_idx = usb_bam_get_connection_idx(gadget->name,
@@ -404,12 +420,14 @@ static void ipa_data_connect_work(struct work_struct *w)
			pr_err("dst_bam: get_connection_idx failed\n");
			goto disconnect_usb_bam_ipa_in;
		}
		if (gadget_is_dwc3(gadget)) {
			configure_fifo(port->dst_bam_idx, gport->in);
			ret = msm_ep_config(gport->in);
			if (ret) {
				pr_err("msm_ep_config() failed for IN EP\n");
				goto disconnect_usb_bam_ipa_in;
			}
		}
		is_ipa_disconnected = false;
	}