xc2028: Add support for Taiwan 6 MHz DVB-T

Message ID 1243773703.3133.24.camel@palomino.walls.org (mailing list archive)
State Superseded, archived
Headers

Commit Message

Andy Walls May 31, 2009, 12:41 p.m. UTC
  This is a patch with changes provided by Terry Wu to support 6 MHz DVB-T
as is deployed in Taiwan.


I took quick look at the changes and they look OK to me, but I'm no
expert on the XC2028/XC3028 deivces.

My one observation is that the change assumes all COFDM frontends can
support QAM (FE_CAN_QAM..).  This is apparently the case looking through
all the Linux supported FE_OFDM frontends, and it seems like a
reasonable assumption to me.


Terry,

Please check the diff below, to make sure I captured all your changes.

For inclusion into the kernel, you will need to provide a
"Signed-off-by:" in a rely to this patch list posting.  Please see:

http://www.linuxtv.org/wiki/index.php/Development:_Submitting_Patches#Developer.27s_Certificate_of_Origin_1.1


Regards,
Andy




--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Comments

Mauro Carvalho Chehab May 31, 2009, 1:22 p.m. UTC | #1
Em Sun, 31 May 2009 08:41:43 -0400
Andy Walls <awalls@radix.net> escreveu:

> This is a patch with changes provided by Terry Wu to support 6 MHz DVB-T
> as is deployed in Taiwan.
> 
> 
> I took quick look at the changes and they look OK to me, but I'm no
> expert on the XC2028/XC3028 deivces.
> 
> My one observation is that the change assumes all COFDM frontends can
> support QAM (FE_CAN_QAM..).  This is apparently the case looking through
> all the Linux supported FE_OFDM frontends, and it seems like a
> reasonable assumption to me.
> 
> 
> Terry,
> 
> Please check the diff below, to make sure I captured all your changes.
> 
> For inclusion into the kernel, you will need to provide a
> "Signed-off-by:" in a rely to this patch list posting.  Please see:
> 
> http://www.linuxtv.org/wiki/index.php/Development:_Submitting_Patches#Developer.27s_Certificate_of_Origin_1.1
> 
> 
> Regards,
> Andy
> 
> 
> diff -r 8291f6042c9a linux/drivers/media/common/tuners/tuner-xc2028.c
> --- a/linux/drivers/media/common/tuners/tuner-xc2028.c	Fri May 29 21:19:25 2009 -0400
> +++ b/linux/drivers/media/common/tuners/tuner-xc2028.c	Sun May 31 08:29:32 2009 -0400
> @@ -925,6 +925,9 @@
>  		rc = send_seq(priv, {0x00, 0x00});
>  	} else if (priv->cur_fw.type & ATSC) {
>  		offset = 1750000;
> +	} else if (priv->cur_fw.type & DTV6) {
> +		/* For Taiwan DVB-T 6 MHz bandwidth - Terry Wu */
> +		offset = 1750000;

This is wrong, since it will break xc3028 for all other DVB-T standards.
The offset depends on the demod type. He probably choose the wrong IF for the demod.

Terry, please provide your boards entry for us to help you to properly set it.

>  	} else {
>  		offset = 2750000;
>  		/*
> @@ -1026,6 +1029,11 @@
>  	switch(fe->ops.info.type) {
>  	case FE_OFDM:
>  		bw = p->u.ofdm.bandwidth;
> +		/* For Taiwan DVB-T 6 MHz bandwidth - Terry Wu */
> +		if (bw == BANDWIDTH_6_MHZ) {
> +			type |= (DTV6|QAM|D2633);
> +			priv->ctrl.type = XC2028_D2633;
> +		}

Hmm... why are you asking for the QAM firmware here? Shouldn't it be at FE_QAM?
This will also break for other countries with 6 MHz bw. Also, priv->ctrl should
be set inside your board definitions.

Could you please provide us more info about the DVB-T standard in Taiwan?

>  		break;
>  	case FE_QAM:
>  		tuner_info("WARN: There are some reports that "
> 
> 




Cheers,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  
Andy Walls May 31, 2009, 5:39 p.m. UTC | #2
On Sun, 2009-05-31 at 10:22 -0300, Mauro Carvalho Chehab wrote:
> Em Sun, 31 May 2009 08:41:43 -0400
> Andy Walls <awalls@radix.net> escreveu:
> 
> > This is a patch with changes provided by Terry Wu to support 6 MHz DVB-T
> > as is deployed in Taiwan.
> > 
> > 
> > I took quick look at the changes and they look OK to me, but I'm no
> > expert on the XC2028/XC3028 deivces.
> > 
> > My one observation is that the change assumes all COFDM frontends can
> > support QAM (FE_CAN_QAM..).  This is apparently the case looking through
> > all the Linux supported FE_OFDM frontends, and it seems like a
> > reasonable assumption to me.
> > 
> > 
> > Terry,
> > 
> > Please check the diff below, to make sure I captured all your changes.
> > 
> > For inclusion into the kernel, you will need to provide a
> > "Signed-off-by:" in a rely to this patch list posting.  Please see:
> > 
> > http://www.linuxtv.org/wiki/index.php/Development:_Submitting_Patches#Developer.27s_Certificate_of_Origin_1.1
> > 
> > 
> > Regards,
> > Andy
> > 
> > 
> > diff -r 8291f6042c9a linux/drivers/media/common/tuners/tuner-xc2028.c
> > --- a/linux/drivers/media/common/tuners/tuner-xc2028.c	Fri May 29 21:19:25 2009 -0400
> > +++ b/linux/drivers/media/common/tuners/tuner-xc2028.c	Sun May 31 08:29:32 2009 -0400
> > @@ -925,6 +925,9 @@
> >  		rc = send_seq(priv, {0x00, 0x00});
> >  	} else if (priv->cur_fw.type & ATSC) {
> >  		offset = 1750000;
> > +	} else if (priv->cur_fw.type & DTV6) {
> > +		/* For Taiwan DVB-T 6 MHz bandwidth - Terry Wu */
> > +		offset = 1750000;
> 
> This is wrong, since it will break xc3028 for all other DVB-T standards.
> The offset depends on the demod type. He probably choose the wrong IF for the demod.
> 
> Terry, please provide your boards entry for us to help you to properly set it.

> >  	} else {
> >  		offset = 2750000;
> >  		/*
> > @@ -1026,6 +1029,11 @@
> >  	switch(fe->ops.info.type) {
> >  	case FE_OFDM:
> >  		bw = p->u.ofdm.bandwidth;
> > +		/* For Taiwan DVB-T 6 MHz bandwidth - Terry Wu */
> > +		if (bw == BANDWIDTH_6_MHZ) {
> > +			type |= (DTV6|QAM|D2633);
> > +			priv->ctrl.type = XC2028_D2633;
> > +		}
> 
> Hmm... why are you asking for the QAM firmware here? Shouldn't it be at FE_QAM?

I think I can provide a little insight:

They way I understood things is that DVB-T demodulators (like the
ZarLink used for the DTV1800 - zl10353 driver) are always of type
FE_OFDM.  The OFDM subcarriers for DVB-T can be modulated with QPSK or
QAM (I think there is a hierarchical modulation scheme - I have to do
more reading).

In the Linux dvb frontend drivers, the FE_QAM type is used for only for
cable TV (DVB-C) frontends.


My questions:
Is OFDM used for other Digital TV aside from DVB-T?

Does the XC20208 have firmware explcitily for OFDM irrespective of the
subcarrier modulation?


Here is a list of DVB deployment reports:

http://www.dvb.org/dvb-deployment-data.xls

Columns Q, R and U show these countries as DVB-T in a 6 MHz bandwidth

Taiwan: ~8000 subcarriers, 16 QAM
Uruguay: ~2000 subcarriers, 16 QAM and 64 QAM


So both of the currently deployed DVB-T systems using 6 MHz use QAM
subcarriers.

The only deployments using QPSK are using it in an 8 MHz bandwidth for
mobile services.

All the DVB demods in the v4l-dvb source tree that are FE_OFDM are
marked FE_CAN_QAM_{16,64,AUTO}, except in

	v4l-dvb/linux/drivers/media/dvb/frontends/cx22700.c

the CX22700 is not marked FE_CAN_QAM_AUTO.

Regards,
Andy

> This will also break for other countries with 6 MHz bw. Also, priv->ctrl should
> be set inside your board definitions.
> 
> Could you please provide us more info about the DVB-T standard in Taiwan?
> 
> >  		break;
> >  	case FE_QAM:
> >  		tuner_info("WARN: There are some reports that "
> > 
> > 
> 
> 
> 
> 
> Cheers,
> Mauro
> --
> To unsubscribe from this list: send the line "unsubscribe linux-media" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
  

Patch

diff -r 8291f6042c9a linux/drivers/media/common/tuners/tuner-xc2028.c
--- a/linux/drivers/media/common/tuners/tuner-xc2028.c	Fri May 29 21:19:25 2009 -0400
+++ b/linux/drivers/media/common/tuners/tuner-xc2028.c	Sun May 31 08:29:32 2009 -0400
@@ -925,6 +925,9 @@ 
 		rc = send_seq(priv, {0x00, 0x00});
 	} else if (priv->cur_fw.type & ATSC) {
 		offset = 1750000;
+	} else if (priv->cur_fw.type & DTV6) {
+		/* For Taiwan DVB-T 6 MHz bandwidth - Terry Wu */
+		offset = 1750000;
 	} else {
 		offset = 2750000;
 		/*
@@ -1026,6 +1029,11 @@ 
 	switch(fe->ops.info.type) {
 	case FE_OFDM:
 		bw = p->u.ofdm.bandwidth;
+		/* For Taiwan DVB-T 6 MHz bandwidth - Terry Wu */
+		if (bw == BANDWIDTH_6_MHZ) {
+			type |= (DTV6|QAM|D2633);
+			priv->ctrl.type = XC2028_D2633;
+		}
 		break;
 	case FE_QAM:
 		tuner_info("WARN: There are some reports that "