diff -r a4731ed28cac linux/drivers/media/dvb/frontends/stb0899_drv.c --- a/linux/drivers/media/dvb/frontends/stb0899_drv.c Tue Jan 27 23:29:44 2009 +0400 +++ b/linux/drivers/media/dvb/frontends/stb0899_drv.c Wed Jan 28 01:08:25 2009 +0400 @@ -1461,19 +1461,16 @@ struct stb0899_config *config = state->config; s32 iter_scale; - u32 reg; iter_scale = 17 * (internal->master_clk / 1000); iter_scale += 410000; - iter_scale /= (internal->srate / 1000000); - iter_scale /= 1000; + iter_scale /= (internal->srate / 1000); if (iter_scale > config->ldpc_max_iter) iter_scale = config->ldpc_max_iter; - reg = STB0899_READ_S2REG(STB0899_S2DEMOD, MAX_ITER); - STB0899_SETFIELD_VAL(MAX_ITERATIONS, reg, iter_scale); - stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_MAX_ITER, STB0899_OFF0_MAX_ITER, reg); + stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_MAX_ITER, STB0899_OFF0_MAX_ITER, iter_scale); + stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_ITER_SCALE, STB0899_OFF0_ITER_SCALE, iter_scale); } static enum dvbfe_search stb0899_search(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)