El Domingo, 15 de Enero de 2006 20:29, Ole Reinartz escribi?: > Jose Alberto Reguero schrieb: > >The adress was 0xf. (I forgot to cc to the list) > > Thanks ... > > >With this definition composite svideo and audio works. > > > > [SAA7134_BOARD_AVERMEDIA_777] = { > > .name = "AverTV DVB-T 777", > > .audio_clock = 0x00187de7, > > .tuner_type = TUNER_PHILIPS_TD1316, > > .radio_type = UNSET, > > .tuner_addr = ADDR_UNSET, > > .radio_addr = ADDR_UNSET, > > .tda9887_conf = TDA9887_PRESENT, > > .mpeg = SAA7134_MPEG_DVB, > > .inputs = {{ > > .name = name_comp1, > > .vmux = 0, > > .amux = LINE1, > > },{ > > .name = name_svideo, > > .vmux = 8, > > .amux = LINE1, > > }}, > > }, > > Seems like I got a signal through composite at vmux=1. In my case that > one is associated with name_comp2, and I get a picture with XawTV with > input set to 'Composite 2'. > Currently I'm trying to match the current mt352 register file with what > you sent, and then changing the driver accordingly. How far have you got? > > Ole I try with the below code without succes. I don't know how to switch to digital mode. Perhaps that is the problem. Jose Alberto 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 struct mt352_config avermedia_777 = { .demod_address = 0xf, // .if2 = 36163, .demod_init = mt352_aver777_init, .pll_set = mt352_aver777_pll_set, }; (you can uncoment if2 line but I think is not necesary) 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] = 0x82; pllbuf[4] = (cp << 5) | (filter << 3) | band; msleep(1); return 0; }