diff options
author | Scott Jiang <scott.jiang.linux@gmail.com> | 2013-01-18 17:09:48 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-02-06 09:16:58 -0200 |
commit | d78a488221059d2bc8627c5175f1d358c57d74a0 (patch) | |
tree | 47a6fea33074594d3a91c433790a6070026b4185 /drivers/media/platform/blackfin/ppi.c | |
parent | 1e2043779d8e34013f1563f1b9f3d5604092c29e (diff) | |
download | linux-next-d78a488221059d2bc8627c5175f1d358c57d74a0.tar.gz |
[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.c | 11 |
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(®->status); + if (status & 0x3000) + ppi->err = true; bfin_write16(®->status, 0xff00); break; } case PPI_TYPE_EPPI: { struct bfin_eppi_regs *reg = info->base; + unsigned short status; + + status = bfin_read16(®->status); + if (status & 0x2) + ppi->err = true; bfin_write16(®->status, 0xffff); break; } case PPI_TYPE_EPPI3: { struct bfin_eppi3_regs *reg = info->base; + unsigned long stat; + stat = bfin_read32(®->stat); + if (stat & 0x2) + ppi->err = true; bfin_write32(®->stat, 0xc0ff); break; } |