[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