|
@@ -1512,8 +1512,12 @@ static void pump_messages(struct work_struct *work)
|
|
|
/* Lock queue and check for queue work */
|
|
|
spin_lock_irqsave(&pl022->queue_lock, flags);
|
|
|
if (list_empty(&pl022->queue) || !pl022->running) {
|
|
|
- if (pl022->busy)
|
|
|
+ if (pl022->busy) {
|
|
|
+ /* nothing more to do - disable spi/ssp and power off */
|
|
|
+ writew((readw(SSP_CR1(pl022->virtbase)) &
|
|
|
+ (~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase));
|
|
|
pm_runtime_put(&pl022->adev->dev);
|
|
|
+ }
|
|
|
pl022->busy = false;
|
|
|
spin_unlock_irqrestore(&pl022->queue_lock, flags);
|
|
|
return;
|