summaryrefslogtreecommitdiff
path: root/linux/drivers/media/common/saa7146_core.c
diff options
context:
space:
mode:
authorMichael Hunold <devnull@localhost>2003-01-05 21:49:06 +0000
committerMichael Hunold <devnull@localhost>2003-01-05 21:49:06 +0000
commit23198c11bc5d221469b73ce5def50b7d4dbbff81 (patch)
tree3806b08353aec9686d90bbcfb227fb1fe4a61785 /linux/drivers/media/common/saa7146_core.c
parenta721eb6c53f0402661b3549ec99701c15714beca (diff)
downloadmediapointer-dvb-s2-23198c11bc5d221469b73ce5def50b7d4dbbff81.tar.gz
mediapointer-dvb-s2-23198c11bc5d221469b73ce5def50b7d4dbbff81.tar.bz2
After all, using the i2c irq wasn't a good idea. After long hours of
testing why the !#+?ยง"1 TS stream stops and "debi oops" messages appear, I found out that this is caused by the i2c irq handler. Don't ask me why, but returning to the old code solved this mystery. Apparently, the additional i2c interrupts caused some timing problems or the saa7146 is simply too f*cked up. I left the code in however, it works for the analog MXB driver, so the extension should decide if it should be used. Removed some additional debug messages, which were commented out anyway.
Diffstat (limited to 'linux/drivers/media/common/saa7146_core.c')
-rw-r--r--linux/drivers/media/common/saa7146_core.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/linux/drivers/media/common/saa7146_core.c b/linux/drivers/media/common/saa7146_core.c
index bd079b0e5..f064b49d0 100644
--- a/linux/drivers/media/common/saa7146_core.c
+++ b/linux/drivers/media/common/saa7146_core.c
@@ -180,12 +180,12 @@ static void interrupt_hw(int irq, void *dev_id, struct pt_regs *regs)
DEB_I2C(("irq: i2c, status: 0x%08x, psr:0x%02x, ssr:0x%02x).\n",status,psr,ssr));
dev->i2c_op = 0;
wake_up(&dev->i2c_wq);
- }
- else
+ } else {
DEB_I2C(("unexpected irq: i2c, status: 0x%08x, isr %#x\n",status, isr));
- }
- else
+ }
+ } else {
DEB_I2C(("unhandled irq: i2c, status: 0x%08x, isr %#x\n",status, isr));
+ }
isr &= ~(MASK_16|MASK_17);
}
if( 0 != isr ) {
@@ -229,14 +229,15 @@ void try_attach_extension_and_device(struct saa7146_dev *dev, struct saa7146_ext
return;
}
+ dev->ext = ext;
if( 0 != ext->probe) {
if( 0 != ext->probe(dev, dev->pci->subsystem_vendor, dev->pci->subsystem_device) ) {
DEB_D(("ext->probe() failed for %p. skipping device.\n",dev));
+ dev->ext = NULL;
return;
}
}
- dev->ext = ext;
if( 0 != ext->attach(dev, &ext->devices[i]) ) {
DEB_D(("ext->attach() failed for %p. skipping device.\n",dev));
dev->ext = NULL;