[linux-dvb] Re: [video4linux-cvs] Add support for the Avermedia 777 DVB-T card

Jose Alberto Reguero jareguero at telefonica.net
Mon Jan 30 16:38:45 CET 2006


El Lunes, 30 de Enero de 2006 04:36, Michael Krufky escribió:
> video4linux-cvs-sender at linuxtv.org wrote:
> > From: Jose Alberto Reguero  <jareguero at telefonica.net>
> > Add support for the Avermedia 777 DVB-T card
> >
> > Signed-off-by: Jose Alberto Reguero <jareguero at telefonica.net>
> > Signed-off-by: Hartmut Hackmann <hartmut.hackmann at t-online.de>
>
> This patch causes the following warnings during the build:
>
> saa7134-tvaudio.c: In function 'tvaudio_setmode':
> saa7134-tvaudio.c:309: warning: enumeration value 'TVAUDIO_AM_MONO' not
> handled in switch
> saa7134-tvaudio.c: In function 'tvaudio_getstereo':
> saa7134-tvaudio.c:439: warning: enumeration value 'TVAUDIO_AM_MONO' not
> handled in switch
> saa7134-tvaudio.c: In function 'tvaudio_setstereo':
> saa7134-tvaudio.c:505: warning: enumeration value 'TVAUDIO_AM_MONO' not
> handled in switch
>
> Also, please skip below to the function: static int
> mt352_aver777_pll_set , for more comments.
>

These warnings are not related to the patch.
Here is another patch using dvb-pll.

Jose Alberto

> > Changeset=3267 commited by Hartmut Hackmann
> >
> >  linux/Documentation/video4linux/CARDLIST.saa7134  |    1
> >  linux/drivers/media/video/saa7134/saa7134-cards.c |   24 +++
> >  linux/drivers/media/video/saa7134/saa7134-dvb.c   |  108 ++++++++++++++
> >  linux/drivers/media/video/saa7134/saa7134.h       |    2
> >  4 files changed, 135 insertions(+)
> >
> > diff -r c60422d55d2c -r 5d9b4019d44e
> > linux/Documentation/video4linux/CARDLIST.saa7134 ---
> > a/linux/Documentation/video4linux/CARDLIST.saa7134	Sun Jan 29 22:27:06
> > 2006 +++ b/linux/Documentation/video4linux/CARDLIST.saa7134	Sun Jan 29
> > 23:57:55 2006 @@ -83,3 +83,4 @@
> >   82 -> MSI TV at Anywhere plus                     [1462:6231]
> >   83 -> Terratec Cinergy 250 PCI TV              [153b:1160]
> >   84 -> LifeView FlyDVB Trio                     [5168:0319]
> > + 85 -> AverTV DVB-T 777                         [1461:2c05]
> > diff -r c60422d55d2c -r 5d9b4019d44e
> > linux/drivers/media/video/saa7134/saa7134-cards.c ---
> > a/linux/drivers/media/video/saa7134/saa7134-cards.c	Sun Jan 29 22:27:06
> > 2006 +++ b/linux/drivers/media/video/saa7134/saa7134-cards.c	Sun Jan 29
> > 23:57:55 2006 @@ -2624,6 +2624,24 @@
> >  			.gpio = 0x000000,	/* GPIO21=Low for FM radio antenna */
> >  		},
> >  	},
> > +	[SAA7134_BOARD_AVERMEDIA_777] = {
> > +		.name           = "AverTV DVB-T 777",
> > +		.audio_clock    = 0x00187de7,
> > +		.tuner_type     = TUNER_ABSENT,
> > +		.radio_type     = UNSET,
> > +		.tuner_addr	= ADDR_UNSET,
> > +		.radio_addr	= ADDR_UNSET,
> > +		.mpeg           = SAA7134_MPEG_DVB,
> > +		.inputs = {{
> > +			.name   = name_comp1,
> > +			.vmux   = 0,
> > +			.amux   = LINE1,
> > +		},{
> > +			.name   = name_svideo,
> > +			.vmux   = 8,
> > +			.amux   = LINE1,
> > +		}},
> > +	},
> >  };
> >
> >  const unsigned int saa7134_bcount = ARRAY_SIZE(saa7134_boards);
> > @@ -3094,6 +3112,12 @@
> >  		.subvendor    = 0x5168,
> >  		.subdevice    = 0x0319,
> >  		.driver_data  = SAA7134_BOARD_FLYDVB_TRIO,
> > +	},{
> > +		.vendor       = PCI_VENDOR_ID_PHILIPS,
> > +		.device       = PCI_DEVICE_ID_PHILIPS_SAA7134,	/* SAA 7131E */
> > +		.subvendor    = 0x1461,
> > +		.subdevice    = 0x2c05,
> > +		.driver_data  = SAA7134_BOARD_AVERMEDIA_777,
> >  	},{
> >  		/* --- boards without eeprom + subsystem ID --- */
> >  		.vendor       = PCI_VENDOR_ID_PHILIPS,
> > diff -r c60422d55d2c -r 5d9b4019d44e
> > linux/drivers/media/video/saa7134/saa7134-dvb.c ---
> > a/linux/drivers/media/video/saa7134/saa7134-dvb.c	Sun Jan 29 22:27:06
> > 2006 +++ b/linux/drivers/media/video/saa7134/saa7134-dvb.c	Sun Jan 29
> > 23:57:55 2006 @@ -115,6 +115,27 @@
> >  	return 0;
> >  }
> >
> > +static int mt352_aver777_init(struct dvb_frontend* fe)
> > +{
> > +	static u8 clock_config []  = { CLOCK_CTL,  0x38, 0x2d };
> > +	static u8 reset []         = { RESET,      0x80 };
> > +	static u8 adc_ctl_1_cfg [] = { ADC_CTL_1,  0x40 };
> > +	static u8 agc_cfg []       = { AGC_TARGET, 0x28, 0xa0 };
> > +	static u8 capt_range_cfg[] = { CAPT_RANGE, 0x33 };
> > +	struct saa7134_dev *dev= fe->dvb->priv;
> > +
> > +	printk("%s: %s called\n",dev->name,__FUNCTION__);
> > +
> > +	mt352_write(fe, clock_config,   sizeof(clock_config));
> > +	udelay(200);
> > +	mt352_write(fe, reset,          sizeof(reset));
> > +	mt352_write(fe, adc_ctl_1_cfg,  sizeof(adc_ctl_1_cfg));
> > +	mt352_write(fe, agc_cfg,        sizeof(agc_cfg));
> > +	mt352_write(fe, capt_range_cfg, sizeof(capt_range_cfg));
> > +
> > +	return 0;
> > +}
> > +
> >  static int mt352_pinnacle_pll_set(struct dvb_frontend* fe,
> >  				  struct dvb_frontend_parameters* params,
> >  				  u8* pllbuf)
> > @@ -144,6 +165,81 @@
> >  	return 0;
> >  }
>
> Why is all this tuner programming (below) hardcoded into the card
> driver?  I've noticed a LOT of this in saa7134-dvb.c  Most of these can
> be converted to use dvb-pll, and I see no reason why new code should be
> accepted this way.  We are trying to have consistant looking code, and
> this is counter-productive.  Please re-do this function to use dvb-pll,
> so that other devices that have the same tuner can share its programming.
>
> > +static int mt352_aver777_pll_set(struct dvb_frontend *fe, struct
> > dvb_frontend_parameters *params, u8* pllbuf) +{
> > +	int tuner_frequency = 0;
> > +	u8 band, cp, filter;
> > +
> > +	/* determine charge pump */
> > +	tuner_frequency = params->frequency + 36166000;
> > +	if (tuner_frequency < 87000000)
> > +		return -EINVAL;
> > +	else if (tuner_frequency < 130000000)
> > +		cp = 3;
> > +	else if (tuner_frequency < 160000000)
> > +		cp = 5;
> > +	else if (tuner_frequency < 200000000)
> > +		cp = 6;
> > +	else if (tuner_frequency < 290000000)
> > +		cp = 3;
> > +	else if (tuner_frequency < 420000000)
> > +		cp = 5;
> > +	else if (tuner_frequency < 480000000)
> > +		cp = 6;
> > +	else if (tuner_frequency < 620000000)
> > +		cp = 3;
> > +	else if (tuner_frequency < 830000000)
> > +		cp = 5;
> > +	else if (tuner_frequency < 895000000)
> > +		cp = 7;
> > +	else
> > +		return -EINVAL;
> > +
> > +	/* determine band */
> > +	if (params->frequency < 49000000)
> > +		return -EINVAL;
> > +	else if (params->frequency < 161000000)
> > +		band = 1;
> > +	else if (params->frequency < 444000000)
> > +		band = 2;
> > +	else if (params->frequency < 861000000)
> > +		band = 4;
> > +	else
> > +		return -EINVAL;
> > +
> > +	/* setup PLL filter */
> > +	switch (params->u.ofdm.bandwidth) {
> > +	case BANDWIDTH_6_MHZ:
> > +		filter = 0;
> > +		break;
> > +
> > +	case BANDWIDTH_7_MHZ:
> > +		filter = 0;
> > +		break;
> > +
> > +	case BANDWIDTH_8_MHZ:
> > +		filter = 1;
> > +		break;
> > +
> > +	default:
> > +		return -EINVAL;
> > +	}
> > +
> > +	/* calculate divisor
> > +	 * ((36166000+((1000000/6)/2)) + Finput)/(1000000/6)
> > +	 */
> > +	tuner_frequency = (((params->frequency / 1000) * 6) + 217496) / 1000;
> > +
> > +	/* setup tuner buffer */
> > +	pllbuf[0] = 0xc2;
> > +	pllbuf[1] = (tuner_frequency >> 8) & 0x7f;
> > +	pllbuf[2] = tuner_frequency & 0xff;
> > +	pllbuf[3] = 0xca;
> > +	pllbuf[4] = (cp << 5) | (filter << 3) | band;
> > +
> > +	return 0;
> > +}
> > +
> >  static struct mt352_config pinnacle_300i = {
> >  	.demod_address = 0x3c >> 1,
> >  	.adc_clock     = 20333,
> > @@ -151,6 +247,12 @@
> >  	.no_tuner      = 1,
> >  	.demod_init    = mt352_pinnacle_init,
> >  	.pll_set       = mt352_pinnacle_pll_set,
> > +};
> > +
> > +static struct mt352_config avermedia_777 = {
> > +	.demod_address = 0xf,
> > +	.demod_init    = mt352_aver777_init,
> > +	.pll_set       = mt352_aver777_pll_set,
> >  };
> >  #endif
> >
> > @@ -849,6 +951,12 @@
> >  		dev->dvb.frontend = mt352_attach(&pinnacle_300i,
> >  						 &dev->i2c_adap);
> >  		break;
> > +
> > +	case SAA7134_BOARD_AVERMEDIA_777:
> > +		printk("%s: avertv 777 dvb setup\n",dev->name);
> > +		dev->dvb.frontend = mt352_attach(&avermedia_777,
> > +						 &dev->i2c_adap);
> > +		break;
> >  #endif
> >  #ifdef HAVE_TDA1004X
> >  	case SAA7134_BOARD_MD7134:
> > diff -r c60422d55d2c -r 5d9b4019d44e
> > linux/drivers/media/video/saa7134/saa7134.h ---
> > a/linux/drivers/media/video/saa7134/saa7134.h	Sun Jan 29 22:27:06 2006
> > +++ b/linux/drivers/media/video/saa7134/saa7134.h	Sun Jan 29 23:57:55
> > 2006 @@ -68,6 +68,7 @@
> >  	TVAUDIO_FM_K_STEREO   = 4,
> >  	TVAUDIO_NICAM_AM      = 5,
> >  	TVAUDIO_NICAM_FM      = 6,
> > +	TVAUDIO_AM_MONO	      = 7
> >  };
> >
> >  enum saa7134_audio_in {
> > @@ -218,6 +219,7 @@
> >  #define SAA7134_BOARD_MSI_TVATANYWHERE_PLUS  82
> >  #define SAA7134_BOARD_CINERGY250PCI 83
> >  #define SAA7134_BOARD_FLYDVB_TRIO 84
> > +#define SAA7134_BOARD_AVERMEDIA_777 85
> >
> >  #define SAA7134_MAXBOARDS 8
> >  #define SAA7134_INPUT_MAX 8
> >
> > _______________________________________________
> > video4linux-cvs mailing list
> > video4linux-cvs at linuxtv.org
> > http://www.linuxtv.org/cgi-bin/mailman/listinfo/video4linux-cvs
-------------- next part --------------
A non-text attachment was scrubbed...
Name: aver777.diff
Type: text/x-diff
Size: 6868 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/linux-dvb/attachments/20060130/8d588def/aver777-0001.bin


More information about the linux-dvb mailing list