diff options
author | Guennadi Liakhovetski <g.liakhovetski@gmx.de> | 2009-05-12 03:16:29 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-05-12 17:41:48 -0400 |
commit | ad567ffb32f067b30606071eb568cf637fe42185 (patch) | |
tree | 0913e4e6cc06dd59a5a8a2367d30a2e46fad649f /drivers | |
parent | 4f005dbe5584fe54c9f6d6d4f0acd3fb29be84da (diff) |
dma: fix ipu_idmac.c to not discard the last queued buffer
This also fixes the case of a single queued buffer, for example, when taking a
single frame snapshot with the mx3_camera driver.
Reported-by: Agustin Ferrin Pozuelo <gatoguan-os@yahoo.com>
Tested-by: Agustin Ferrin Pozuelo <gatoguan-os@yahoo.com>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/dma/ipu/ipu_idmac.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/dma/ipu/ipu_idmac.c b/drivers/dma/ipu/ipu_idmac.c index 3a4deea78a71..9a5bc1a7389e 100644 --- a/drivers/dma/ipu/ipu_idmac.c +++ b/drivers/dma/ipu/ipu_idmac.c | |||
@@ -1272,7 +1272,8 @@ static irqreturn_t idmac_interrupt(int irq, void *dev_id) | |||
1272 | /* Other interrupts do not interfere with this channel */ | 1272 | /* Other interrupts do not interfere with this channel */ |
1273 | spin_lock(&ichan->lock); | 1273 | spin_lock(&ichan->lock); |
1274 | if (unlikely(chan_id != IDMAC_SDC_0 && chan_id != IDMAC_SDC_1 && | 1274 | if (unlikely(chan_id != IDMAC_SDC_0 && chan_id != IDMAC_SDC_1 && |
1275 | ((curbuf >> chan_id) & 1) == ichan->active_buffer)) { | 1275 | ((curbuf >> chan_id) & 1) == ichan->active_buffer && |
1276 | !list_is_last(ichan->queue.next, &ichan->queue))) { | ||
1276 | int i = 100; | 1277 | int i = 100; |
1277 | 1278 | ||
1278 | /* This doesn't help. See comment in ipu_disable_channel() */ | 1279 | /* This doesn't help. See comment in ipu_disable_channel() */ |