> > To avoid that lockup, the following code just before the actual PLL-settings > > in pll_set make that go away: > > > > { // GA: Kick PLL to avoid hanging VCO > > u8 xreg0 [2] = { 0x00, 0x0f }; > > u8 xreg1 [4] = { 0x01, 0xff, 0xff, 0x00 }; > > u8 xreg2 [3] = { 0x02, 0xff, 0xff }; > > tua6100_pll_write(fe, 0x60, xreg0, sizeof(xreg0)); > > tua6100_pll_write(fe, 0x60, xreg1, sizeof(xreg1)); > > tua6100_pll_write(fe, 0x60, xreg2, sizeof(xreg2)); > > } > > > > Is it possible that some of the stv0299 related tuning issues actually are > > based on this PLL problem? As the driver doesn't read out the PLL lock > > status, it may be get totally unrecognised that the PLL and not the stv0299 > > is the cause... > > > > Actually, this is the code I was refering to when I asked if it could be added > to the stv0299b frontend for the Nexus 2.3 cards.. Sorry if the previous post > was not specific enough. In fact, my cards are not equipped with TUA6100, but instead they have TSA5059. However, exactly for these cards, there's completely different tuning code present in stv0299.c - perhaps it's not fully OK. Please see here: stv0299_set_frontend() [snip] if (state->config->enhanced_tuning) { ********************************************************* **** This is the tuning code for SU1278 with TSA5059 **** ********************************************************* /* check if we should do a finetune */ int frequency_delta = p->frequency - state->tuner_frequency; int minmax = p->u.qpsk.symbol_rate / 2000; if (minmax < 5000) minmax = 5000; if ((frequency_delta > -minmax) && (frequency_delta < minmax) && (frequency_delta != 0) && (state->fec_inner == p->u.qpsk.fec_inner) && (state->symbol_rate == p->u.qpsk.symbol_rate)) { int Drot_freq = (frequency_delta << 16) / (state->config->mclk / 1000); // zap the derotator registers first stv0299_writeregI(state, 0x22, 0x00); stv0299_writeregI(state, 0x23, 0x00); // now set them as we want stv0299_writeregI(state, 0x22, Drot_freq >> 8); stv0299_writeregI(state, 0x23, Drot_freq); } else { /* A "normal" tune is requested */ stv0299_writeregI(state, 0x05, 0xb5); /* enable i2c repeater on stv0299 */ state->config->pll_set(fe, state->i2c, p); stv0299_writeregI(state, 0x05, 0x35); /* disable i2c repeater on stv0299 */ stv0299_writeregI(state, 0x32, 0x80); stv0299_writeregI(state, 0x22, 0x00); stv0299_writeregI(state, 0x23, 0x00); stv0299_writeregI(state, 0x32, 0x19); stv0299_set_symbolrate (fe, p->u.qpsk.symbol_rate); stv0299_set_FEC (state, p->u.qpsk.fec_inner); } } else { ******************************************************** **** This applies for all other stv0299 based cards **** ******************************************************** stv0299_writeregI(state, 0x05, 0xb5); /* enable i2c repeater on stv0299 */ state->config->pll_set(fe, state->i2c, p); stv0299_writeregI(state, 0x05, 0x35); /* disable i2c repeater on stv0299 */ stv0299_set_FEC (state, p->u.qpsk.fec_inner); stv0299_set_symbolrate (fe, p->u.qpsk.symbol_rate); stv0299_writeregI(state, 0x22, 0x00); stv0299_writeregI(state, 0x23, 0x00); stv0299_readreg (state, 0x23); stv0299_writeregI(state, 0x12, 0xb9); } Could someone perhaps check this - seems the finetuning code brings the card to some weird state... Thanks & kind regards, M. -------------------------------------------------------------------------- ---- ---- ---- Marian Durkovic network manager ---- ---- ---- ---- Slovak Technical University Tel: +421 2 524 51 301 ---- ---- Computer Centre, Nam. Slobody 17 Fax: +421 2 524 94 351 ---- ---- 812 43 Bratislava, Slovak Republic E-mail/sip: md@xxxxxx ---- ---- ---- --------------------------------------------------------------------------