Commit e355880b authored by Alan Cox's avatar Alan Cox Committed by Mauro Carvalho Chehab

V4L/DVB (4632): Zoran: Implement pcipci failure check

We should be doing this on all devices doing PCI<->PCI DMA. We only set
the _FAIL ones when the DMA will fail or may cause crashes. This relies
on the PCIAGP_FAIL patch I sent to Andrew already
Signed-off-by: default avatarAlan Cox <alan@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent d7e7a156
...@@ -1621,10 +1621,10 @@ init_dc10_cards (void) ...@@ -1621,10 +1621,10 @@ init_dc10_cards (void)
dprintk(5, KERN_DEBUG "Jotti is een held!\n"); dprintk(5, KERN_DEBUG "Jotti is een held!\n");
/* some mainboards might not do PCI-PCI data transfer well */ /* some mainboards might not do PCI-PCI data transfer well */
if (pci_pci_problems & PCIPCI_FAIL) { if (pci_pci_problems & (PCIPCI_FAIL|PCIAGP_FAIL|PCIPCI_ALIMAGIK)) {
dprintk(1, dprintk(1,
KERN_WARNING KERN_WARNING
"%s: chipset may not support reliable PCI-PCI DMA\n", "%s: chipset does not support reliable PCI-PCI DMA\n",
ZORAN_NAME); ZORAN_NAME);
} }
...@@ -1632,7 +1632,7 @@ init_dc10_cards (void) ...@@ -1632,7 +1632,7 @@ init_dc10_cards (void)
for (i = 0; i < zoran_num; i++) { for (i = 0; i < zoran_num; i++) {
struct zoran *zr = &zoran[i]; struct zoran *zr = &zoran[i];
if (pci_pci_problems & PCIPCI_NATOMA && zr->revision <= 1) { if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) {
zr->jpg_buffers.need_contiguous = 1; zr->jpg_buffers.need_contiguous = 1;
dprintk(1, dprintk(1,
KERN_INFO KERN_INFO
......
...@@ -1512,6 +1512,13 @@ setup_fbuffer (struct file *file, ...@@ -1512,6 +1512,13 @@ setup_fbuffer (struct file *file,
if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RAWIO)) if (!capable(CAP_SYS_ADMIN) && !capable(CAP_SYS_RAWIO))
return -EPERM; return -EPERM;
/* Don't allow frame buffer overlay if PCI or AGP is buggy, or on
ALi Magik (that needs very low latency while the card needs a
higher value always) */
if (pci_pci_problems & (PCIPCI_FAIL | PCIAGP_FAIL | PCIPCI_ALIMAGIK))
return -ENXIO;
/* we need a bytesperline value, even if not given */ /* we need a bytesperline value, even if not given */
if (!bytesperline) if (!bytesperline)
bytesperline = width * ((fmt->depth + 7) & ~7) / 8; bytesperline = width * ((fmt->depth + 7) & ~7) / 8;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment