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

Commit 5ec99c9a authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "phy-msm-usb: Add mutex for protecting msm_otg_reset"

parents 138373b8 293e8ab5
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -966,6 +966,7 @@ static int msm_otg_reset(struct usb_phy *phy)
	u32 val = 0;
	u32 ulpi_val = 0;

	mutex_lock(&motg->lock);
	msm_otg_dbg_log_event(&motg->phy, "USB RESET", phy->otg->state,
			get_pm_runtime_counter(phy->dev));
	/*
@@ -974,10 +975,13 @@ static int msm_otg_reset(struct usb_phy *phy)
	 * USB BAM reset on other cases e.g. USB cable disconnections.
	 * If hardware reported error then it must be reset for recovery.
	 */
	if (motg->err_event_seen)
	if (motg->err_event_seen) {
		dev_info(phy->dev, "performing USB h/w reset for recovery\n");
	else if (pdata->disable_reset_on_disconnect && motg->reset_counter)
	} else if (pdata->disable_reset_on_disconnect &&
				motg->reset_counter) {
		mutex_unlock(&motg->lock);
		return 0;
	}

	motg->reset_counter++;

@@ -992,6 +996,7 @@ static int msm_otg_reset(struct usb_phy *phy)
			enable_irq(motg->phy_irq);

		enable_irq(motg->irq);
		mutex_unlock(&motg->lock);
		return ret;
	}

@@ -1002,6 +1007,7 @@ static int msm_otg_reset(struct usb_phy *phy)
	ret = msm_otg_link_reset(motg);
	if (ret) {
		dev_err(phy->dev, "link reset failed\n");
		mutex_unlock(&motg->lock);
		return ret;
	}

@@ -1058,6 +1064,7 @@ static int msm_otg_reset(struct usb_phy *phy)

	if (phy->otg->state == OTG_STATE_UNDEFINED && motg->rm_pulldown)
		msm_chg_block_on(motg);
	mutex_unlock(&motg->lock);

	return 0;
}
@@ -4317,6 +4324,7 @@ static int msm_otg_probe(struct platform_device *pdev)
	motg->pdev = pdev;
	motg->dbg_idx = 0;
	motg->dbg_lock = __RW_LOCK_UNLOCKED(lck);
	mutex_init(&motg->lock);

	if (motg->pdata->bus_scale_table) {
		motg->bus_perf_client =
+1 −0
Original line number Diff line number Diff line
@@ -185,6 +185,7 @@ struct msm_otg {
	struct usb_phy phy;
	struct msm_otg_platform_data *pdata;
	struct platform_device *pdev;
	struct mutex lock;
	int irq;
	int async_irq;
	int phy_irq;