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

Commit 4a12404d authored by Grzegorz Sygieda's avatar Grzegorz Sygieda Committed by Grant Likely
Browse files

spi/pl022: fix stop queue procedure



This fix prevents queue being marked as "stopped", if data exists
in the queue list.

Signed-off-by: default avatarGrzegorz Sygieda <grzegorz.sygieda@tieto.com>
Signed-off-by: default avatarLukasz Baj <lukasz.baj@tieto.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@stericsson.com>
Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
parent 781c7b12
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1211,7 +1211,6 @@ static int stop_queue(struct pl022 *pl022)
	 * A wait_queue on the pl022->busy could be used, but then the common
	 * execution path (pump_messages) would be required to call wake_up or
	 * friends on every SPI message. Do this instead */
	pl022->run = QUEUE_STOPPED;
	while (!list_empty(&pl022->queue) && pl022->busy && limit--) {
		spin_unlock_irqrestore(&pl022->queue_lock, flags);
		msleep(10);
@@ -1220,6 +1219,7 @@ static int stop_queue(struct pl022 *pl022)

	if (!list_empty(&pl022->queue) || pl022->busy)
		status = -EBUSY;
	else pl022->run = QUEUE_STOPPED;

	spin_unlock_irqrestore(&pl022->queue_lock, flags);