V4L/DVB (6916): ivtv: udelay has to be changed *after* the eeprom was read, not before
authorHans Verkuil <hverkuil@xs4all.nl>
Mon, 7 Jan 2008 08:46:26 +0000 (06:46 -0200)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Mon, 7 Jan 2008 08:46:26 +0000 (06:46 -0200)
The eeprom decides which Hauppauge model it is, so the decision whether to
use an udelay of 5 or 10 needs to be taken after reading the eeprom, not
before.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/ivtv/ivtv-driver.c
drivers/media/video/ivtv/ivtv-i2c.c

index 6d2dd87..10d6faf 100644 (file)
@@ -1076,6 +1076,10 @@ static int __devinit ivtv_probe(struct pci_dev *dev,
                ivtv_process_eeprom(itv);
        }
 
+       /* The mspx4xx chips need a longer delay for some reason */
+       if (!(itv->hw_flags & IVTV_HW_MSP34XX))
+               itv->i2c_algo.udelay = 5;
+
        if (itv->std == 0) {
                itv->std = V4L2_STD_NTSC_M;
        }
index 44678fe..36e54f7 100644 (file)
@@ -541,7 +541,7 @@ static const struct i2c_algo_bit_data ivtv_i2c_algo_template = {
        .setscl         = ivtv_setscl_old,
        .getsda         = ivtv_getsda_old,
        .getscl         = ivtv_getscl_old,
-       .udelay         = 5,
+       .udelay         = 10,
        .timeout        = 200,
 };
 
@@ -718,9 +718,6 @@ int init_ivtv_i2c(struct ivtv *itv)
                       sizeof(struct i2c_adapter));
                memcpy(&itv->i2c_algo, &ivtv_i2c_algo_template,
                       sizeof(struct i2c_algo_bit_data));
-               /* The mspx4xx chips need a longer delay for some reason */
-               if (itv->hw_flags & IVTV_HW_MSP34XX)
-                       itv->i2c_algo.udelay = 10;
                itv->i2c_algo.data = itv;
                itv->i2c_adap.algo_data = &itv->i2c_algo;
        }