diff options
-rw-r--r-- | linux/drivers/media/common/saa7146_core.c | 3 | ||||
-rw-r--r-- | linux/drivers/media/video/mxb.c | 2 | ||||
-rw-r--r-- | linux/drivers/media/video/saa7111.c | 8 | ||||
-rw-r--r-- | linux/drivers/media/video/tda9840.c | 6 | ||||
-rw-r--r-- | linux/drivers/media/video/tea6415c.c | 6 | ||||
-rw-r--r-- | linux/drivers/media/video/tea6420.c | 6 |
6 files changed, 31 insertions, 0 deletions
diff --git a/linux/drivers/media/common/saa7146_core.c b/linux/drivers/media/common/saa7146_core.c index c01d5eed1..8142adb55 100644 --- a/linux/drivers/media/common/saa7146_core.c +++ b/linux/drivers/media/common/saa7146_core.c @@ -332,6 +332,9 @@ int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent) list_add_tail(&dev->item,&saa7146_devices); saa7146_num++; + /* set some default values */ + saa7146_write(dev, BCS_CTRL, 0x80400040); + err = 0; goto out; attach_error: diff --git a/linux/drivers/media/video/mxb.c b/linux/drivers/media/video/mxb.c index ae3b5a7c3..c9fe808d2 100644 --- a/linux/drivers/media/video/mxb.c +++ b/linux/drivers/media/video/mxb.c @@ -1015,6 +1015,8 @@ struct pci_device_id pci_tbl[] = { .subvendor = 0x0000, .subdevice = 0x0000, .driver_data = (unsigned long)&mxb, + }, { + .vendor = 0, } }; diff --git a/linux/drivers/media/video/saa7111.c b/linux/drivers/media/video/saa7111.c index 7dc3bae14..456e2fdf1 100644 --- a/linux/drivers/media/video/saa7111.c +++ b/linux/drivers/media/video/saa7111.c @@ -150,6 +150,14 @@ static int saa7111_attach(struct i2c_adapter *adap, int addr, unsigned short fla } static int saa7111_probe(struct i2c_adapter *adap) { + /* probing unknown devices on any Matrox i2c-bus takes ages due to the + slow bit banging algorithm used. because of the fact a saa7111(a) + is *never* present on a Matrox gfx card, we can skip such adapters + here */ + if( 0 != (adap->id & I2C_HW_B_G400)) { + return -ENODEV; + } + printk("saa7111: probing %s i2c adapter [id=0x%x]\n", adap->name,adap->id); return i2c_probe(adap, &addr_data, saa7111_attach); diff --git a/linux/drivers/media/video/tda9840.c b/linux/drivers/media/video/tda9840.c index 6da68d762..85295ac2d 100644 --- a/linux/drivers/media/video/tda9840.c +++ b/linux/drivers/media/video/tda9840.c @@ -234,6 +234,12 @@ static int tda9840_detect(struct i2c_adapter *adapter, int address, unsigned sho static int tda9840_attach(struct i2c_adapter *adapter) { + /* let's see whether this is a know adapter we can attach to */ + if( adapter->id != I2C_ALGO_SAA7146 ) { + dprintk("tda9840.o: refusing to probe on unknown adapter [name='%s',id=0x%x]\n",adapter->name,adapter->id); + return -ENODEV; + } + return i2c_probe(adapter,&addr_data,&tda9840_detect); } diff --git a/linux/drivers/media/video/tea6415c.c b/linux/drivers/media/video/tea6415c.c index 7cbc580de..7215c58f8 100644 --- a/linux/drivers/media/video/tea6415c.c +++ b/linux/drivers/media/video/tea6415c.c @@ -92,6 +92,12 @@ static int tea6415c_detect(struct i2c_adapter *adapter, int address, unsigned sh static int tea6415c_attach(struct i2c_adapter *adapter) { + /* let's see whether this is a know adapter we can attach to */ + if( adapter->id != I2C_ALGO_SAA7146 ) { + dprintk("tea6415c.o: refusing to probe on unknown adapter [name='%s',id=0x%x]\n",adapter->name,adapter->id); + return -ENODEV; + } + return i2c_probe(adapter,&addr_data,&tea6415c_detect); } diff --git a/linux/drivers/media/video/tea6420.c b/linux/drivers/media/video/tea6420.c index 3d8bf1e18..63aa2caa9 100644 --- a/linux/drivers/media/video/tea6420.c +++ b/linux/drivers/media/video/tea6420.c @@ -142,6 +142,12 @@ static int tea6420_detect(struct i2c_adapter *adapter, int address, unsigned sho static int tea6420_attach(struct i2c_adapter *adapter) { + /* let's see whether this is a know adapter we can attach to */ + if( adapter->id != I2C_ALGO_SAA7146 ) { + dprintk("tea6420.o: refusing to probe on unknown adapter [name='%s',id=0x%x]\n",adapter->name,adapter->id); + return -ENODEV; + } + return i2c_probe(adapter,&addr_data,&tea6420_detect); } |