[linux-dvb] Avermedia A16D

timf timf at iinet.net.au
Fri Apr 25 14:50:13 CEST 2008


Hi Mauro,

Mauro Carvalho Chehab wrote:
>> However, whether I simply install v4l-dvb over the top of the 
>> existing modules,
>> or use rm -r /lib/modules/`uname -r`/kernel/drivers/media
>> and then install v4l-dvb modules
>>
>> this is the result:
>>
>> [ 37.414395] Linux video capture interface: v2.00
>> [ 37.563230] saa7134: disagrees about version of symbol 
>> videobuf_streamoff
>> [ 37.563236] saa7134: Unknown symbol videobuf_streamoff
>
> What seems to be happen is that you are using an old version of 
> videobuf. This may happen on a few cases:
>
> 1) the old videobuf* (or video-buf) is still loaded. In this case, 
> rmmod it manually or rebooting should fix;
>
> 2) videobuf weren't compiled as a module. You'll need to compile your 
> kernel, being sure that both DVB and V4L are compiled as module;
>
> 3) the kernel building system is using some dirty information. In this 
> case, "make distclean" generally solves.
>
> I don't think (2) applies to distro kernels, but I'm not sure what 
> Ubuntu guys are doing.
>
> Cheers,
> Mauro
>

OK, I gave ubuntu Hardy 8.04 away, they appear to have frozen at a time 
way before the latest developments on v4l-dvb.
So, used ubuntu Gutsy 7.10 instead.

Success at about 80% for Avermedia A16D.

I am at this moment watching tv on DVB-t - everything works (scan/view).
Analog-tv works (scan/view), must use sox for audio
Not yet checked Radio.

It's not perfect yet, there are a few glitches at init time, and sleep time,
something strange going on with I2C.

In saa7134-cards.c

[SAA7134_BOARD_AVERMEDIA_A16D] = {
.name = "AVerMedia Hybrid TV/Radio (A16D)",
.audio_clock = 0x187de7,
.tuner_type = TUNER_XC2028,
.radio_type = UNSET,
.tuner_addr = ADDR_UNSET,
.radio_addr = ADDR_UNSET,
.mpeg = SAA7134_MPEG_DVB,
.inputs = {{
.name = name_tv,
.vmux = 1,
.amux = TV,
.tv = 1,
}, {
.name = name_svideo,
.vmux = 8,
.amux = LINE1,
} },
.radio = {
.name = name_radio,
.amux = LINE1,
},
},
...

case SAA7134_BOARD_AVERMEDIA_A16D:
saa7134_set_gpio(dev, 21, 0);
msleep(10);
saa7134_set_gpio(dev, 21, 1);
msleep(1);
break;
-------------------------------------------
In saa7134-dvb.c

static int mt352_aver_a16d_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, 0xe };
static u8 capt_range_cfg[] = { CAPT_RANGE, 0x33 };

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 struct mt352_config aver_a16d_mt352_dev = {
.demod_address = (0x1e >> 1),
.no_tuner = 1,
.demod_init = mt352_aver_a16d_init,
};
...
case SAA7134_BOARD_AVERMEDIA_A16D:
dprintk("avertv A16D dvb setup\n");

dev->dvb.frontend = dvb_attach(mt352_attach, &aver_a16d_mt352_dev, 
&dev->i2c_adap);
attach_xc3028 = 1;
break;
------------------------------------------

Chasing this error:

[ 52.742640] tuner' 2-0061: Cmd TUNER_SET_STANDBY accepted for analog TV
[ 52.742643] xc2028 2-0061: xc2028_sleep called
[ 52.742646] saa7133[0]: i2c xfer: < c2 80 08 00 00 >

[ 52.795512] saa7134 ALSA driver for DMA sound loaded
[ 52.795548] saa7133[0]/alsa: saa7133[0] at 0xfdbff000 irq 17 registered 
as card -2
[ 52.811297] saa7133[0]/dvb: avertv A16D dvb setup
[ 52.847876] saa7133[0]: i2c xfer: < 1e 7f [fd quirk] < 1f =13 >
[ 52.856804] xc2028: Xcv2028/3028 init called!
[ 52.856810] xc2028: video_dev =ffff810067dc2000
[ 52.856812] xc2028: reusing device
[ 52.856814] xc2028: usage count is 2
[ 52.856816] xc2028 2-0061: type set to XCeive xc2028/xc3028 tuner
[ 52.856820] DVB: registering new adapter (saa7133[0])
[ 52.856824] DVB: registering frontend 0 (Zarlink MT352 DVB-T)...
[ 52.857163] mt352: mt352_init: hello
[ 52.857167] saa7133[0]: i2c xfer: < 1e 89 [fd quirk] < 1f =30 >
[ 52.872222] saa7133[0]: i2c xfer: < 1e 8a [fd quirk] < 1f =48 >
[ 52.884703] saa7133[0]: i2c xfer: < 1e 50 c0 >
[ 52.896686] saa7133[0]: i2c xfer: < 1e 89 38 >
[ 52.908644] saa7133[0]: i2c xfer: < 1e 8a 2d >
[ 52.920825] saa7133[0]: i2c xfer: < 1e 50 80 >
[ 52.932606] saa7133[0]: i2c xfer: < 1e 8e 40 >
[ 52.944587] saa7133[0]: i2c xfer: < 1e 67 0e >
[ 52.956569] saa7133[0]: i2c xfer: < 1e 75 33 >
[ 52.968551] saa7133[0]: i2c xfer: < 1e 89 20 >
[ 52.980532] saa7133[0]: i2c xfer: < 1e 8a 08 >

-> trying to sort out this error:

[ 52.992514] xc2028 2-0061: xc2028_sleep called
[ 52.992517] saa7133[0]: i2c xfer: < c2 ERROR: NO_DEVICE
[ 52.992653] xc2028 2-0061: Error on line 1080: -5

Also Remote control sort of works but yet to find correct mask.

Regards,
Tim



More information about the linux-dvb mailing list