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

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

Merge "usb: pd: Avoid double queue of usbpd_sm work"

parents 5146d66a 0885147f
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -1176,7 +1176,10 @@ static void phy_msg_received(struct usbpd *pd, enum pd_sop_type sop,
	list_add_tail(&rx_msg->entry, &pd->rx_q);
	spin_unlock_irqrestore(&pd->rx_lock, flags);

	if (!work_busy(&pd->sm_work))
		kick_sm(pd, 0);
	else
		usbpd_dbg(&pd->dev, "usbpd_sm already running\n");
}

static void phy_shutdown(struct usbpd *pd)
@@ -3587,7 +3590,7 @@ static void usbpd_sm(struct work_struct *w)
	spin_unlock_irqrestore(&pd->rx_lock, flags);

	/* requeue if there are any new/pending RX messages */
	if (!ret)
	if (!ret && !pd->sm_queued)
		kick_sm(pd, 0);

	if (!pd->sm_queued)
@@ -3756,7 +3759,12 @@ static int psy_changed(struct notifier_block *nb, unsigned long evt, void *ptr)
		usbpd_dbg(&pd->dev, "hard reset: typec mode:%d present:%d\n",
			typec_mode, pd->vbus_present);
		pd->typec_mode = typec_mode;

		if (!work_busy(&pd->sm_work))
			kick_sm(pd, 0);
		else
			usbpd_dbg(&pd->dev, "usbpd_sm already running\n");

		return 0;
	}