Linux Media Controller development
 help / color / mirror / Atom feed
From: Gianluca Gennari <gennarone@gmail.com>
To: Mauro Carvalho Chehab <mchehab@redhat.com>, linux-media@vger.kernel.org
Subject: Re: [PATCH v4 16/47] [media] tuner-xc2028: use DVBv5 parameters on set_params()
Date: Mon, 02 Jan 2012 20:32:46 +0100	[thread overview]
Message-ID: <4F02065E.4060406@gmail.com> (raw)
In-Reply-To: <1324741852-26138-17-git-send-email-mchehab@redhat.com>

Il 24/12/2011 16:50, Mauro Carvalho Chehab ha scritto:
> Instead of using DVBv3 parameters, rely on DVBv5 parameters to
> set the tuner.
> 
> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
> ---
>  drivers/media/common/tuners/tuner-xc2028.c |   83 ++++++++++++----------------
>  1 files changed, 36 insertions(+), 47 deletions(-)
> 
> diff --git a/drivers/media/common/tuners/tuner-xc2028.c b/drivers/media/common/tuners/tuner-xc2028.c
> index e531267..8c0dc6a1 100644
> --- a/drivers/media/common/tuners/tuner-xc2028.c
> +++ b/drivers/media/common/tuners/tuner-xc2028.c
> @@ -1087,65 +1087,26 @@ static int xc2028_set_analog_freq(struct dvb_frontend *fe,
>  static int xc2028_set_params(struct dvb_frontend *fe,
>  			     struct dvb_frontend_parameters *p)
>  {
> +	struct dtv_frontend_properties *c = &fe->dtv_property_cache;
> +	u32 delsys = c->delivery_system;
> +	u32 bw = c->bandwidth_hz;
>  	struct xc2028_data *priv = fe->tuner_priv;
>  	unsigned int       type=0;
> -	fe_bandwidth_t     bw = BANDWIDTH_8_MHZ;
>  	u16                demod = 0;
>  
>  	tuner_dbg("%s called\n", __func__);
>  
> -	switch(fe->ops.info.type) {
> -	case FE_OFDM:
> -		bw = p->u.ofdm.bandwidth;
> +	switch (delsys) {
> +	case SYS_DVBT:
> +	case SYS_DVBT2:
>  		/*
>  		 * The only countries with 6MHz seem to be Taiwan/Uruguay.
>  		 * Both seem to require QAM firmware for OFDM decoding
>  		 * Tested in Taiwan by Terry Wu <terrywu2009@gmail.com>
>  		 */
> -		if (bw == BANDWIDTH_6_MHZ)
> +		if (bw <= 6000000)
>  			type |= QAM;
> -		break;
> -	case FE_ATSC:
> -		bw = BANDWIDTH_6_MHZ;
> -		/* The only ATSC firmware (at least on v2.7) is D2633 */
> -		type |= ATSC | D2633;
> -		break;
> -	/* DVB-S and pure QAM (FE_QAM) are not supported */
> -	default:
> -		return -EINVAL;
> -	}
> -
> -	switch (bw) {
> -	case BANDWIDTH_8_MHZ:
> -		if (p->frequency < 470000000)
> -			priv->ctrl.vhfbw7 = 0;
> -		else
> -			priv->ctrl.uhfbw8 = 1;
> -		type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV8;
> -		type |= F8MHZ;
> -		break;
> -	case BANDWIDTH_7_MHZ:
> -		if (p->frequency < 470000000)
> -			priv->ctrl.vhfbw7 = 1;
> -		else
> -			priv->ctrl.uhfbw8 = 0;
> -		type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV7;
> -		type |= F8MHZ;
> -		break;
> -	case BANDWIDTH_6_MHZ:
> -		type |= DTV6;
> -		priv->ctrl.vhfbw7 = 0;
> -		priv->ctrl.uhfbw8 = 0;
> -		break;
> -	default:
> -		tuner_err("error: bandwidth not supported.\n");
> -	};
>  
> -	/*
> -	  Selects between D2633 or D2620 firmware.
> -	  It doesn't make sense for ATSC, since it should be D2633 on all cases
> -	 */
> -	if (fe->ops.info.type != FE_ATSC) {
>  		switch (priv->ctrl.type) {
>  		case XC2028_D2633:
>  			type |= D2633;
> @@ -1161,6 +1122,34 @@ static int xc2028_set_params(struct dvb_frontend *fe,
>  			else
>  				type |= D2620;
>  		}
> +		break;
> +	case SYS_ATSC:
> +		/* The only ATSC firmware (at least on v2.7) is D2633 */
> +		type |= ATSC | D2633;
> +		break;
> +	/* DVB-S and pure QAM (FE_QAM) are not supported */
> +	default:
> +		return -EINVAL;
> +	}
> +
> +	if (bw <= 6000000) {
> +		type |= DTV6;
> +		priv->ctrl.vhfbw7 = 0;
> +		priv->ctrl.uhfbw8 = 0;
> +	} else if (bw <= 7000000) {
> +		if (c->frequency < 470000000)
> +			priv->ctrl.vhfbw7 = 1;
> +		else
> +			priv->ctrl.uhfbw8 = 0;
> +		type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV7;
> +		type |= F8MHZ;
> +	} else {
> +		if (c->frequency < 470000000)
> +			priv->ctrl.vhfbw7 = 0;
> +		else
> +			priv->ctrl.uhfbw8 = 1;
> +		type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV8;
> +		type |= F8MHZ;
>  	}
>  
>  	/* All S-code tables need a 200kHz shift */
> @@ -1185,7 +1174,7 @@ static int xc2028_set_params(struct dvb_frontend *fe,
>  		 */
>  	}
>  
> -	return generic_set_freq(fe, p->frequency,
> +	return generic_set_freq(fe, c->frequency,
>  				V4L2_TUNER_DIGITAL_TV, type, 0, demod);
>  }
>  

Hi Mauro,
I've tested the new media_build tree with the DVBv5 modifications on my
Terratec Cinergy Hybrid T USB XS (0ccd:0042).

The card works fine, but there is small issue: with the old code the
BASE firmware was loaded only 1 time, now it seems to be loaded each
time a new frequency is tuned (forcing reload of the other firmwares too).

This is a log of the firmware loads after some channel surfing:

OLD CODE:

[ 8701.753768] xc2028 0-0061: Loading firmware for type=BASE F8MHZ MTS
(7), id 0000000000000000.
[ 8702.804153] xc2028 0-0061: Loading firmware for type=D2633 DTV7 (90),
id 0000000000000000.
[ 8702.819274] xc2028 0-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.
[ 8758.361730] xc2028 0-0061: Loading firmware for type=D2633 DTV78
(110), id 0000000000000000.
[ 8758.376951] xc2028 0-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.

(note that the first frequency was in VHF band, then I switched to a new
frequency in UHF band, so the DTV78 firmware was loaded)

NEW CODE:

[19398.450453] xc2028 0-0061: Loading firmware for type=BASE F8MHZ MTS
(7), id 0000000000000000.
[19399.563210] xc2028 0-0061: Loading firmware for type=D2633 DTV8
(210), id 0000000000000000.
[19399.579467] xc2028 0-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.
[19458.001144] xc2028 0-0061: Loading firmware for type=BASE F8MHZ MTS
(7), id 0000000000000000.
[19459.084473] xc2028 0-0061: Loading firmware for type=D2633 DTV8
(210), id 0000000000000000.
[19459.100183] xc2028 0-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.
[19471.695347] xc2028 0-0061: Loading firmware for type=BASE F8MHZ MTS
(7), id 0000000000000000.
[19472.763449] xc2028 0-0061: Loading firmware for type=D2633 DTV8
(210), id 0000000000000000.
[19472.780660] xc2028 0-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.
[19497.928003] xc2028 0-0061: Loading firmware for type=BASE F8MHZ MTS
(7), id 0000000000000000.
[19498.999729] xc2028 0-0061: Loading firmware for type=D2633 DTV8
(210), id 0000000000000000.
[19499.015212] xc2028 0-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.
[19510.258833] xc2028 0-0061: Loading firmware for type=BASE F8MHZ MTS
(7), id 0000000000000000.
[19511.346135] xc2028 0-0061: Loading firmware for type=D2633 DTV78
(110), id 0000000000000000.
[19511.361506] xc2028 0-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.
[19523.956877] xc2028 0-0061: Loading firmware for type=BASE F8MHZ MTS
(7), id 0000000000000000.
[19525.028394] xc2028 0-0061: Loading firmware for type=D2633 DTV78
(110), id 0000000000000000.
[19525.044622] xc2028 0-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.
[19538.526806] xc2028 0-0061: Loading firmware for type=BASE F8MHZ MTS
(7), id 0000000000000000.
[19539.602083] xc2028 0-0061: Loading firmware for type=D2633 DTV78
(110), id 0000000000000000.
[19539.617613] xc2028 0-0061: Loading SCODE for type=DTV6 QAM DTV7 DTV78
DTV8 ZARLINK456 SCODE HAS_IF_4760 (620003e0), id 0000000000000000.

(here I started with a UHF frequency, but each time a new frequency is
requested all firmwares are loaded anyway, starting from the BASE one).

Best regards,
Gianluca Gennari

  parent reply	other threads:[~2012-01-02 19:32 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-24 15:50 [PATCH v4 00/47] DVB tuners: remove dvb_frontend_parameters from set_params() Mauro Carvalho Chehab
2011-12-24 15:50 ` [PATCH v4 01/47] [media] dvb: replace SYS_DVBC_ANNEX_AC by the right delsys Mauro Carvalho Chehab
2011-12-24 15:50   ` [PATCH v4 02/47] [media] dvb_core: estimate bw for all non-terrestial systems Mauro Carvalho Chehab
2011-12-24 15:50     ` [PATCH v4 03/47] [media] qt1010: remove fake implementaion of get_bandwidth() Mauro Carvalho Chehab
2011-12-24 15:50       ` [PATCH v4 04/47] [media] mt2060: " Mauro Carvalho Chehab
2011-12-24 15:50         ` [PATCH v4 05/47] [media] mt2031: " Mauro Carvalho Chehab
2011-12-24 15:50           ` [PATCH v4 06/47] [media] mc44s803: use DVBv5 parameters on set_params() Mauro Carvalho Chehab
2011-12-24 15:50             ` [PATCH v4 07/47] [media] max2165: " Mauro Carvalho Chehab
2011-12-24 15:50               ` [PATCH v4 08/47] [media] mt2266: use DVBv5 parameters for set_params() Mauro Carvalho Chehab
2011-12-24 15:50                 ` [PATCH v4 09/47] [media] mxl5005s: use DVBv5 parameters on set_params() Mauro Carvalho Chehab
2011-12-24 15:50                   ` [PATCH v4 10/47] [media] mxl5005s: fix: don't discard bandwidth changes Mauro Carvalho Chehab
2011-12-24 15:50                     ` [PATCH v4 11/47] [media] mxl5007t: use DVBv5 parameters on set_params() Mauro Carvalho Chehab
2011-12-24 15:50                       ` [PATCH v4 12/47] [media] tda18218: " Mauro Carvalho Chehab
2011-12-24 15:50                         ` [PATCH v4 13/47] [media] tda18271: add support for QAM 7 MHz map Mauro Carvalho Chehab
2011-12-24 15:50                           ` [PATCH v4 14/47] [media] tda18271-fe: use DVBv5 parameters on set_params() Mauro Carvalho Chehab
2011-12-24 15:50                             ` [PATCH v4 15/47] [media] tda827x: " Mauro Carvalho Chehab
2011-12-24 15:50                               ` [PATCH v4 16/47] [media] tuner-xc2028: " Mauro Carvalho Chehab
2011-12-24 15:50                                 ` [PATCH v4 17/47] [media] xc4000: " Mauro Carvalho Chehab
2011-12-24 15:50                                   ` [PATCH v4 18/47] [media] cx24113: " Mauro Carvalho Chehab
2011-12-24 15:50                                     ` [PATCH v4 19/47] [media] zl10039: " Mauro Carvalho Chehab
2011-12-24 15:50                                       ` [PATCH v4 20/47] [media] av7110: " Mauro Carvalho Chehab
2011-12-24 15:50                                         ` [PATCH v4 21/47] [media] budget-ci: " Mauro Carvalho Chehab
2011-12-24 15:50                                           ` [PATCH v4 22/47] [media] budget-patch: " Mauro Carvalho Chehab
2011-12-24 15:50                                             ` [PATCH v4 23/47] [media] saa7134: " Mauro Carvalho Chehab
2011-12-24 15:50                                               ` [PATCH v4 24/47] [media] cx88: " Mauro Carvalho Chehab
2011-12-24 15:50                                                 ` [PATCH v4 25/47] [media] tua6100: " Mauro Carvalho Chehab
2011-12-24 15:50                                                   ` [PATCH v4 26/47] [media] itd1000: " Mauro Carvalho Chehab
2011-12-24 15:50                                                     ` [PATCH v4 27/47] [media] bsbe1, bsru6, tdh1: " Mauro Carvalho Chehab
2011-12-24 15:50                                                       ` [PATCH v4 28/47] [media] ix2505v: " Mauro Carvalho Chehab
2011-12-24 15:50                                                         ` [PATCH v4 29/47] [media] stb6000: " Mauro Carvalho Chehab
2011-12-24 15:50                                                           ` [PATCH v4 30/47] [media] tda826x: " Mauro Carvalho Chehab
2011-12-24 15:50                                                             ` [PATCH v4 31/47] [media] mxl111sf-tuner: " Mauro Carvalho Chehab
2011-12-24 15:50                                                               ` [PATCH v4 32/47] [media] mantis_vp1033: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                 ` [PATCH v4 33/47] [media] mantis_vp2033: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                   ` [PATCH v4 34/47] [media] mantis_vp2040: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                     ` [PATCH v4 35/47] [media] pluto2: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                       ` [PATCH v4 36/47] [media] dvb-ttusb-budget: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                         ` [PATCH v4 37/47] [media] tuner-simple: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                           ` [PATCH v4 38/47] [media] dvb-bt8xx: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                             ` [PATCH v4 39/47] [media] dvb-pll: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                               ` [PATCH v4 40/47] [media] zl10036: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                                 ` [PATCH v4 41/47] [media] dib0070: Remove unused dvb_frontend_parameters Mauro Carvalho Chehab
2011-12-24 15:50                                                                                   ` [PATCH v4 42/47] [media] cxusb: use DVBv5 parameters on set_params() Mauro Carvalho Chehab
2011-12-24 15:50                                                                                     ` [PATCH v4 43/47] [media] dib0700_devices: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                                       ` [PATCH v4 44/47] [media] budget-av: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                                         ` [PATCH v4 45/47] [media] budget: " Mauro Carvalho Chehab
2011-12-24 15:50                                                                                           ` [PATCH v4 46/47] [media] dvb: remove dvb_frontend_parameters from calc_regs() Mauro Carvalho Chehab
2011-12-24 15:50                                                                                             ` [PATCH v4 47/47] [media] tuners: remove dvb_frontend_parameters from set_params() Mauro Carvalho Chehab
2012-01-02 19:32                                 ` Gianluca Gennari [this message]
2012-01-04 18:50                                   ` [PATCH v4 16/47] [media] tuner-xc2028: use DVBv5 parameters on set_params() Mauro Carvalho Chehab
2012-01-04 19:10                                     ` Gianluca Gennari

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F02065E.4060406@gmail.com \
    --to=gennarone@gmail.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox