aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/blackfin/ppi.c
diff options
context:
space:
mode:
authorScott Jiang <scott.jiang.linux@gmail.com>2013-01-18 17:09:48 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-02-06 09:16:58 -0200
commitd78a488221059d2bc8627c5175f1d358c57d74a0 (patch)
tree47a6fea33074594d3a91c433790a6070026b4185 /drivers/media/platform/blackfin/ppi.c
parent[media] add maintainer for blackfin media drivers (diff)
downloadlinux-dev-d78a488221059d2bc8627c5175f1d358c57d74a0.tar.xz
linux-dev-d78a488221059d2bc8627c5175f1d358c57d74a0.zip
[media] blackfin: add error frame support
Mark current frame as error frame when ppi error interrupt report fifo error. Member next_frm in struct bcap_device can be optimized out. Signed-off-by: Scott Jiang <scott.jiang.linux@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/platform/blackfin/ppi.c')
-rw-r--r--drivers/media/platform/blackfin/ppi.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/media/platform/blackfin/ppi.c b/drivers/media/platform/blackfin/ppi.c
index 1e24584605f2..01b5b501347e 100644
--- a/drivers/media/platform/blackfin/ppi.c
+++ b/drivers/media/platform/blackfin/ppi.c
@@ -59,19 +59,30 @@ static irqreturn_t ppi_irq_err(int irq, void *dev_id)
* others are W1C
*/
status = bfin_read16(&reg->status);
+ if (status & 0x3000)
+ ppi->err = true;
bfin_write16(&reg->status, 0xff00);
break;
}
case PPI_TYPE_EPPI:
{
struct bfin_eppi_regs *reg = info->base;
+ unsigned short status;
+
+ status = bfin_read16(&reg->status);
+ if (status & 0x2)
+ ppi->err = true;
bfin_write16(&reg->status, 0xffff);
break;
}
case PPI_TYPE_EPPI3:
{
struct bfin_eppi3_regs *reg = info->base;
+ unsigned long stat;
+ stat = bfin_read32(&reg->stat);
+ if (stat & 0x2)
+ ppi->err = true;
bfin_write32(&reg->stat, 0xc0ff);
break;
}