diff options
Diffstat (limited to 'drivers/media/common/tuners/tuner-xc2028.c')
| -rw-r--r-- | drivers/media/common/tuners/tuner-xc2028.c | 17 | 
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/media/common/tuners/tuner-xc2028.c b/drivers/media/common/tuners/tuner-xc2028.c index b6da9c3873f..f270e605da8 100644 --- a/drivers/media/common/tuners/tuner-xc2028.c +++ b/drivers/media/common/tuners/tuner-xc2028.c @@ -1096,8 +1096,19 @@ static int xc2028_set_params(struct dvb_frontend *fe,  	}  	/* All S-code tables need a 200kHz shift */ -	if (priv->ctrl.demod) +	if (priv->ctrl.demod) {  		demod = priv->ctrl.demod + 200; +		/* +		 * The DTV7 S-code table needs a 700 kHz shift. +		 * Thanks to Terry Wu <terrywu2009@gmail.com> for reporting this +		 * +		 * DTV7 is only used in Australia.  Germany or Italy may also +		 * use this firmware after initialization, but a tune to a UHF +		 * channel should then cause DTV78 to be used. +		 */ +		if (type & DTV7) +			demod += 500; +	}  	return generic_set_freq(fe, p->frequency,  				T_DIGITAL_TV, type, 0, demod); @@ -1108,8 +1119,8 @@ static int xc2028_sleep(struct dvb_frontend *fe)  	struct xc2028_data *priv = fe->tuner_priv;  	int rc = 0; -	/* Avoid firmware reload on slow devices */ -	if (no_poweroff) +	/* Avoid firmware reload on slow devices or if PM disabled */ +	if (no_poweroff || priv->ctrl.disable_power_mgmt)  		return 0;  	tuner_dbg("Putting xc2028/3028 into poweroff mode.\n");  |