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

Commit 05133172 authored by Vijayavardhan Vennapusa's avatar Vijayavardhan Vennapusa Committed by Jack Pham
Browse files

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



Currently driver is calling USB3 specific APIs for USB2 controller
for configuring endpoints which will fail. Hence add proper checks
so that not to call DWC3 USB3 controller specific apis.

Change-Id: Id6ed4e0b254695b93df21f806f04a6806fb7d775
Signed-off-by: default avatarVijayavardhan Vennapusa <vvreddy@codeaurora.org>
parent 861a4ae9
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;
	}