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

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

Merge "USB: Perform block reset during suspend for recovery from flush failures"

parents 33c3691e 425209a6
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -3277,6 +3277,27 @@ int usb_bam_get_bam_type(const char *core_name)
}
EXPORT_SYMBOL(usb_bam_get_bam_type);

bool msm_usb_bam_enable(enum usb_ctrl bam, bool bam_enable)
{
	struct msm_usb_bam_platform_data *pdata;
	struct usb_bam_ctx_type *ctx = &msm_usb_bam[bam];

	if (!ctx->usb_bam_pdev)
		return 0;

	pdata = ctx->usb_bam_pdev->dev.platform_data;
	if ((bam != CI_CTRL) || !(bam_enable ||
					pdata->enable_hsusb_bam_on_boot))
		return 0;

	msm_hw_bam_disable(1);
	sps_device_reset(ctx->h_bam);
	msm_hw_bam_disable(0);

	return 0;
}
EXPORT_SYMBOL(msm_usb_bam_enable);

/**
 * msm_bam_hsic_host_pipe_empty - Check all HSIC host BAM pipe state
 *
+1 −0
Original line number Diff line number Diff line
@@ -1391,6 +1391,7 @@ static void gbam2bam_connect_work(struct work_struct *w)
			__func__, ret);
		return;
	}
	gadget->bam2bam_func_enabled = true;

	if (gadget_is_dwc3(gadget)) {
		if (!port) {
+1 −0
Original line number Diff line number Diff line
@@ -949,6 +949,7 @@ static void bam2bam_data_connect_work(struct work_struct *w)
			__func__, ret);
		return;
	}
	gadget->bam2bam_func_enabled = true;

	spin_lock_irqsave(&port->port_lock, flags);
	if (port->last_event ==  U_BAM_DATA_DISCONNECT_E) {
+2 −0
Original line number Diff line number Diff line
@@ -359,6 +359,7 @@ static void ipa_data_connect_work(struct work_struct *w)
			pr_err("usb_bam_connect_ipa out failed err:%d\n", ret);
			goto free_rx_tx_req;
		}
		gadget->bam2bam_func_enabled = true;

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

@@ -395,6 +396,7 @@ static void ipa_data_connect_work(struct work_struct *w)
			pr_err("usb_bam_connect_ipa IN failed err:%d\n", ret);
			goto unconfig_msm_ep_out;
		}
		gadget->bam2bam_func_enabled = true;

		gport->ipa_producer_ep = port->ipa_params.ipa_prod_ep_idx;
		if (gadget_is_dwc3(gadget)) {
+1 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ static int set_qdss_data_connection(struct usb_gadget *gadget,
	if (enable) {
		res = usb_bam_connect(usb_bam_type, idx,
					&(bam_info.usb_bam_pipe_idx));
		gadget->bam2bam_func_enabled = true;
		bam_info.data_fifo =
			kzalloc(sizeof(struct sps_mem_buffer), GFP_KERNEL);
		if (!bam_info.data_fifo) {
Loading