diff --git a/[refs] b/[refs] index 83110c69d081..71f3639398aa 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: e5cc2bf4450fd9739534e690cc16efc140d7b7fc +refs/heads/master: 2d5024a9e97337874d8d7aa1d6a54ed1c917c5a0 diff --git a/trunk/drivers/media/common/tuners/tuner-xc2028.c b/trunk/drivers/media/common/tuners/tuner-xc2028.c index 8d2907f38a94..53f0fbb33cc6 100644 --- a/trunk/drivers/media/common/tuners/tuner-xc2028.c +++ b/trunk/drivers/media/common/tuners/tuner-xc2028.c @@ -813,8 +813,14 @@ static int check_firmware(struct dvb_frontend *fe, unsigned int type, /* Check firmware version against what we downloaded. */ if (priv->firm_version != ((version & 0xf0) << 4 | (version & 0x0f))) { - tuner_err("Incorrect readback of firmware version.\n"); - goto fail; + if (!priv->ctrl.read_not_reliable) { + tuner_err("Incorrect readback of firmware version.\n"); + goto fail; + } else { + tuner_err("Returned an incorrect version. However, " + "read is not reliable enough. Ignoring it.\n"); + hwmodel = 3028; + } } /* Check that the tuner hardware model remains consistent over time. */ diff --git a/trunk/drivers/media/common/tuners/tuner-xc2028.h b/trunk/drivers/media/common/tuners/tuner-xc2028.h index e116071810e0..9778c96a5006 100644 --- a/trunk/drivers/media/common/tuners/tuner-xc2028.h +++ b/trunk/drivers/media/common/tuners/tuner-xc2028.h @@ -40,6 +40,7 @@ struct xc2028_ctrl { unsigned int vhfbw7:1; unsigned int uhfbw8:1; unsigned int disable_power_mgmt:1; + unsigned int read_not_reliable:1; unsigned int demod; enum firmware_type type:2; }; diff --git a/trunk/drivers/staging/tm6000/tm6000-cards.c b/trunk/drivers/staging/tm6000/tm6000-cards.c index c0bb3ec35480..23f9672d6937 100644 --- a/trunk/drivers/staging/tm6000/tm6000-cards.c +++ b/trunk/drivers/staging/tm6000/tm6000-cards.c @@ -189,6 +189,7 @@ static void tm6000_config_tuner (struct tm6000_core *dev) ctl.fname = "tm6000-xc3028.fw"; ctl.mts = 1; + ctl.read_not_reliable = 1; xc2028_cfg.tuner = TUNER_XC2028; xc2028_cfg.priv = &ctl;