diff options
-rw-r--r-- | drivers/media/video/tuner-core.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c index 2f74379f4e4b..2d4a3e38f278 100644 --- a/drivers/media/video/tuner-core.c +++ b/drivers/media/video/tuner-core.c | |||
@@ -661,6 +661,27 @@ static int tuner_probe(struct i2c_adapter *adap) | |||
661 | normal_i2c[1] = I2C_CLIENT_END; | 661 | normal_i2c[1] = I2C_CLIENT_END; |
662 | } | 662 | } |
663 | 663 | ||
664 | /* HACK: Ignore 0x6b and 0x6f on cx88 boards. | ||
665 | * FusionHDTV5 RT Gold has an ir receiver at 0x6b | ||
666 | * and an RTC at 0x6f which can get corrupted if probed. | ||
667 | */ | ||
668 | if (adap->id == I2C_HW_B_CX2388x) { | ||
669 | unsigned int i = 0; | ||
670 | |||
671 | while (i < I2C_CLIENT_MAX_OPTS && ignore[i] != I2C_CLIENT_END) | ||
672 | i += 2; | ||
673 | if (i + 4 < I2C_CLIENT_MAX_OPTS) { | ||
674 | ignore[i+0] = adap->nr; | ||
675 | ignore[i+1] = 0x6b; | ||
676 | ignore[i+2] = adap->nr; | ||
677 | ignore[i+3] = 0x6f; | ||
678 | ignore[i+4] = I2C_CLIENT_END; | ||
679 | } else | ||
680 | printk(KERN_WARNING "tuner: " | ||
681 | "too many options specified " | ||
682 | "in i2c probe ignore list!\n"); | ||
683 | } | ||
684 | |||
664 | default_mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; | 685 | default_mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; |
665 | 686 | ||
666 | if (adap->class & I2C_CLASS_TV_ANALOG) | 687 | if (adap->class & I2C_CLASS_TV_ANALOG) |