Lines Matching refs:state

225 static int _stb0899_read_reg(struct stb0899_state *state, unsigned int reg)  in _stb0899_read_reg()  argument
234 .addr = state->config->demod_address, in _stb0899_read_reg()
239 .addr = state->config->demod_address, in _stb0899_read_reg()
246 ret = i2c_transfer(state->i2c, msg, 2); in _stb0899_read_reg()
249 dprintk(state->verbose, FE_ERROR, 1, in _stb0899_read_reg()
255 if (unlikely(*state->verbose >= FE_DEBUGREG)) in _stb0899_read_reg()
256 dprintk(state->verbose, FE_ERROR, 1, "Reg=[0x%02x], data=%02x", in _stb0899_read_reg()
262 int stb0899_read_reg(struct stb0899_state *state, unsigned int reg) in stb0899_read_reg() argument
266 result = _stb0899_read_reg(state, reg); in stb0899_read_reg()
274 _stb0899_read_reg(state, (reg | 0x00ff)); in stb0899_read_reg()
279 u32 _stb0899_read_s2reg(struct stb0899_state *state, in _stb0899_read_s2reg() argument
303 .addr = state->config->demod_address, in _stb0899_read_s2reg()
310 .addr = state->config->demod_address, in _stb0899_read_s2reg()
317 .addr = state->config->demod_address, in _stb0899_read_s2reg()
330 status = i2c_transfer(state->i2c, &msg_0, 1); in _stb0899_read_s2reg()
340 status = i2c_transfer(state->i2c, &msg_1, 1); in _stb0899_read_s2reg()
344 status = i2c_transfer(state->i2c, &msg_r, 1); in _stb0899_read_s2reg()
352 status = i2c_transfer(state->i2c, &msg_1, 1); in _stb0899_read_s2reg()
360 status = i2c_transfer(state->i2c, &msg_r, 1); in _stb0899_read_s2reg()
369 if (unlikely(*state->verbose >= FE_DEBUGREG)) in _stb0899_read_s2reg()
379 int stb0899_write_s2reg(struct stb0899_state *state, in stb0899_write_s2reg() argument
406 .addr = state->config->demod_address, in stb0899_write_s2reg()
413 .addr = state->config->demod_address, in stb0899_write_s2reg()
426 if (unlikely(*state->verbose >= FE_DEBUGREG)) in stb0899_write_s2reg()
430 status = i2c_transfer(state->i2c, &msg_0, 1); in stb0899_write_s2reg()
437 status = i2c_transfer(state->i2c, &msg_1, 1); in stb0899_write_s2reg()
452 int stb0899_read_regs(struct stb0899_state *state, unsigned int reg, u8 *buf, u32 count) in stb0899_read_regs() argument
460 .addr = state->config->demod_address, in stb0899_read_regs()
465 .addr = state->config->demod_address, in stb0899_read_regs()
472 status = i2c_transfer(state->i2c, msg, 2); in stb0899_read_regs()
486 _stb0899_read_reg(state, (reg | 0x00ff)); in stb0899_read_regs()
488 if (unlikely(*state->verbose >= FE_DEBUGREG)) { in stb0899_read_regs()
503 int stb0899_write_regs(struct stb0899_state *state, unsigned int reg, u8 *data, u32 count) in stb0899_write_regs() argument
508 .addr = state->config->demod_address, in stb0899_write_regs()
525 if (unlikely(*state->verbose >= FE_DEBUGREG)) { in stb0899_write_regs()
533 ret = i2c_transfer(state->i2c, &i2c_msg, 1); in stb0899_write_regs()
541 stb0899_read_reg(state, (reg | 0x00ff)); in stb0899_write_regs()
545 dprintk(state->verbose, FE_ERROR, 1, "Reg=[0x%04x], Data=[0x%02x ...], Count=%u, Status=%d", in stb0899_write_regs()
553 int stb0899_write_reg(struct stb0899_state *state, unsigned int reg, u8 data) in stb0899_write_reg() argument
555 return stb0899_write_regs(state, reg, &data, 1); in stb0899_write_reg()
563 static u32 stb0899_get_mclk(struct stb0899_state *state) in stb0899_get_mclk() argument
567 div = stb0899_read_reg(state, STB0899_NCOARSE); in stb0899_get_mclk()
568 mclk = (div + 1) * state->config->xtal_freq / 6; in stb0899_get_mclk()
569 dprintk(state->verbose, FE_DEBUG, 1, "div=%d, mclk=%d", div, mclk); in stb0899_get_mclk()
580 static void stb0899_set_mclk(struct stb0899_state *state, u32 Mclk) in stb0899_set_mclk() argument
582 struct stb0899_internal *internal = &state->internal; in stb0899_set_mclk()
585 dprintk(state->verbose, FE_DEBUG, 1, "state->config=%p", state->config); in stb0899_set_mclk()
586 mdiv = ((6 * Mclk) / state->config->xtal_freq) - 1; in stb0899_set_mclk()
587 dprintk(state->verbose, FE_DEBUG, 1, "mdiv=%d", mdiv); in stb0899_set_mclk()
589 stb0899_write_reg(state, STB0899_NCOARSE, mdiv); in stb0899_set_mclk()
590 internal->master_clk = stb0899_get_mclk(state); in stb0899_set_mclk()
592 dprintk(state->verbose, FE_DEBUG, 1, "MasterCLOCK=%d", internal->master_clk); in stb0899_set_mclk()
595 static int stb0899_postproc(struct stb0899_state *state, u8 ctl, int enable) in stb0899_postproc() argument
597 struct stb0899_config *config = state->config; in stb0899_postproc()
604 stb0899_write_reg(state, postproc[ctl].gpio, 0x02); in stb0899_postproc()
606 stb0899_write_reg(state, postproc[ctl].gpio, 0x82); in stb0899_postproc()
609 stb0899_write_reg(state, postproc[ctl].gpio, 0x82); in stb0899_postproc()
611 stb0899_write_reg(state, postproc[ctl].gpio, 0x02); in stb0899_postproc()
619 struct stb0899_state *state = fe->demodulator_priv; in stb0899_release() local
621 dprintk(state->verbose, FE_DEBUG, 1, "Release Frontend"); in stb0899_release()
623 stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 0); in stb0899_release()
624 kfree(state); in stb0899_release()
631 static int stb0899_get_alpha(struct stb0899_state *state) in stb0899_get_alpha() argument
635 mode_coeff = stb0899_read_reg(state, STB0899_DEMOD); in stb0899_get_alpha()
646 static void stb0899_init_calc(struct stb0899_state *state) in stb0899_init_calc() argument
648 struct stb0899_internal *internal = &state->internal; in stb0899_init_calc()
654 stb0899_read_regs(state, STB0899_AGC1REF, agc, 2); /* AGC1R and AGC2O */ in stb0899_init_calc()
657 master_clk = stb0899_get_mclk(state); in stb0899_init_calc()
662 internal->rolloff = stb0899_get_alpha(state); in stb0899_init_calc()
669 …stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_IF_AGC_CNTRL, STB0899_OFF0_IF_AGC_CNTRL, … in stb0899_init_calc()
686 static int stb0899_wait_diseqc_fifo_empty(struct stb0899_state *state, int timeout) in stb0899_wait_diseqc_fifo_empty() argument
692 reg = stb0899_read_reg(state, STB0899_DISSTATUS); in stb0899_wait_diseqc_fifo_empty()
696 dprintk(state->verbose, FE_ERROR, 1, "timed out !!"); in stb0899_wait_diseqc_fifo_empty()
706 struct stb0899_state *state = fe->demodulator_priv; in stb0899_send_diseqc_msg() local
713 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_send_diseqc_msg()
715 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_send_diseqc_msg()
718 if (stb0899_wait_diseqc_fifo_empty(state, 100) < 0) in stb0899_send_diseqc_msg()
721 stb0899_write_reg(state, STB0899_DISFIFO, cmd->msg[i]); in stb0899_send_diseqc_msg()
723 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_send_diseqc_msg()
725 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_send_diseqc_msg()
730 static int stb0899_wait_diseqc_rxidle(struct stb0899_state *state, int timeout) in stb0899_wait_diseqc_rxidle() argument
736 reg = stb0899_read_reg(state, STB0899_DISRX_ST0); in stb0899_wait_diseqc_rxidle()
738 dprintk(state->verbose, FE_ERROR, 1, "timed out!!"); in stb0899_wait_diseqc_rxidle()
749 struct stb0899_state *state = fe->demodulator_priv; in stb0899_recv_slave_reply() local
753 if (stb0899_wait_diseqc_rxidle(state, 100) < 0) in stb0899_recv_slave_reply()
756 reg = stb0899_read_reg(state, STB0899_DISRX_ST0); in stb0899_recv_slave_reply()
759 reg = stb0899_read_reg(state, STB0899_DISRX_ST1); in stb0899_recv_slave_reply()
770 reply->msg[i] = stb0899_read_reg(state, STB0899_DISFIFO); in stb0899_recv_slave_reply()
779 static int stb0899_wait_diseqc_txidle(struct stb0899_state *state, int timeout) in stb0899_wait_diseqc_txidle() argument
785 reg = stb0899_read_reg(state, STB0899_DISSTATUS); in stb0899_wait_diseqc_txidle()
787 dprintk(state->verbose, FE_ERROR, 1, "timed out!!"); in stb0899_wait_diseqc_txidle()
797 struct stb0899_state *state = fe->demodulator_priv; in stb0899_send_diseqc_burst() local
801 if (stb0899_wait_diseqc_txidle(state, 100) < 0) in stb0899_send_diseqc_burst()
804 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_send_diseqc_burst()
809 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_send_diseqc_burst()
813 stb0899_write_reg(state, STB0899_DISFIFO, 0x00); in stb0899_send_diseqc_burst()
817 stb0899_write_reg(state, STB0899_DISFIFO, 0xff); in stb0899_send_diseqc_burst()
820 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_send_diseqc_burst()
822 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_send_diseqc_burst()
824 if (stb0899_wait_diseqc_txidle(state, 100) < 0) in stb0899_send_diseqc_burst()
828 stb0899_write_reg(state, STB0899_DISCNTRL1, old_state); in stb0899_send_diseqc_burst()
833 static int stb0899_diseqc_init(struct stb0899_state *state) in stb0899_diseqc_init() argument
841 reg = stb0899_read_reg(state, STB0899_DISCNTRL2); in stb0899_diseqc_init()
843 stb0899_write_reg(state, STB0899_DISCNTRL2, reg); in stb0899_diseqc_init()
846 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_diseqc_init()
848 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_diseqc_init()
850 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_diseqc_init()
852 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_diseqc_init()
854 mclk = stb0899_get_mclk(state); in stb0899_diseqc_init()
856 stb0899_write_reg(state, STB0899_DISF22, f22_tx); /* DiSEqC Tx freq */ in stb0899_diseqc_init()
857 state->rx_freq = 20000; in stb0899_diseqc_init()
864 struct stb0899_state *state = fe->demodulator_priv; in stb0899_sleep() local
868 dprintk(state->verbose, FE_DEBUG, 1, "Going to Sleep .. (Really tired .. :-))"); in stb0899_sleep()
870 stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 0); in stb0899_sleep()
878 struct stb0899_state *state = fe->demodulator_priv; in stb0899_wakeup() local
880 if ((rc = stb0899_write_reg(state, STB0899_SYNTCTRL, STB0899_SELOSCI))) in stb0899_wakeup()
883 if ((rc = stb0899_write_reg(state, STB0899_STOPCLK1, 0x00))) in stb0899_wakeup()
885 if ((rc = stb0899_write_reg(state, STB0899_STOPCLK2, 0x00))) in stb0899_wakeup()
889 stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 1); in stb0899_wakeup()
897 struct stb0899_state *state = fe->demodulator_priv; in stb0899_init() local
898 struct stb0899_config *config = state->config; in stb0899_init()
900 dprintk(state->verbose, FE_DEBUG, 1, "Initializing STB0899 ... "); in stb0899_init()
903 dprintk(state->verbose, FE_DEBUG, 1, "init device"); in stb0899_init()
905 stb0899_write_reg(state, config->init_dev[i].address, config->init_dev[i].data); in stb0899_init()
907 dprintk(state->verbose, FE_DEBUG, 1, "init S2 demod"); in stb0899_init()
910 stb0899_write_s2reg(state, STB0899_S2DEMOD, in stb0899_init()
915 dprintk(state->verbose, FE_DEBUG, 1, "init S1 demod"); in stb0899_init()
918 stb0899_write_reg(state, config->init_s1_demod[i].address, config->init_s1_demod[i].data); in stb0899_init()
920 dprintk(state->verbose, FE_DEBUG, 1, "init S2 FEC"); in stb0899_init()
923 stb0899_write_s2reg(state, STB0899_S2FEC, in stb0899_init()
928 dprintk(state->verbose, FE_DEBUG, 1, "init TST"); in stb0899_init()
931 stb0899_write_reg(state, config->init_tst[i].address, config->init_tst[i].data); in stb0899_init()
933 stb0899_init_calc(state); in stb0899_init()
934 stb0899_diseqc_init(state); in stb0899_init()
967 struct stb0899_state *state = fe->demodulator_priv; in stb0899_read_signal_strength() local
968 struct stb0899_internal *internal = &state->internal; in stb0899_read_signal_strength()
973 switch (state->delsys) { in stb0899_read_signal_strength()
977 reg = stb0899_read_reg(state, STB0899_VSTATUS); in stb0899_read_signal_strength()
980 reg = stb0899_read_reg(state, STB0899_AGCIQIN); in stb0899_read_signal_strength()
985 dprintk(state->verbose, FE_DEBUG, 1, "AGCIQVALUE = 0x%02x, C = %d * 0.1 dBm", in stb0899_read_signal_strength()
997 dprintk(state->verbose, FE_DEBUG, 1, "IF_AGC_GAIN = 0x%04x, C = %d * 0.1 dBm", in stb0899_read_signal_strength()
1002 dprintk(state->verbose, FE_DEBUG, 1, "Unsupported delivery system"); in stb0899_read_signal_strength()
1011 struct stb0899_state *state = fe->demodulator_priv; in stb0899_read_snr() local
1012 struct stb0899_internal *internal = &state->internal; in stb0899_read_snr()
1019 reg = stb0899_read_reg(state, STB0899_VSTATUS); in stb0899_read_snr()
1020 switch (state->delsys) { in stb0899_read_snr()
1026 stb0899_read_regs(state, STB0899_NIRM, buf, 2); in stb0899_read_snr()
1030 dprintk(state->verbose, FE_DEBUG, 1, "NIR = 0x%02x%02x = %u, C/N = %d * 0.1 dBm\n", in stb0899_read_snr()
1054 …dprintk(state->verbose, FE_DEBUG, 1, "Es/N0 quant = %d (%d) estimate = %u (%d), C/N = %d * 0.1 dBm… in stb0899_read_snr()
1059 dprintk(state->verbose, FE_DEBUG, 1, "Unsupported delivery system"); in stb0899_read_snr()
1068 struct stb0899_state *state = fe->demodulator_priv; in stb0899_read_status() local
1069 struct stb0899_internal *internal = &state->internal; in stb0899_read_status()
1073 switch (state->delsys) { in stb0899_read_status()
1076 dprintk(state->verbose, FE_DEBUG, 1, "Delivery system DVB-S/DSS"); in stb0899_read_status()
1078 reg = stb0899_read_reg(state, STB0899_VSTATUS); in stb0899_read_status()
1080 dprintk(state->verbose, FE_DEBUG, 1, "--------> FE_HAS_CARRIER | FE_HAS_LOCK"); in stb0899_read_status()
1083 reg = stb0899_read_reg(state, STB0899_PLPARM); in stb0899_read_status()
1085 dprintk(state->verbose, FE_DEBUG, 1, "--------> FE_HAS_VITERBI | FE_HAS_SYNC"); in stb0899_read_status()
1088 stb0899_postproc(state, STB0899_POSTPROC_GPIO_LOCK, 1); in stb0899_read_status()
1094 dprintk(state->verbose, FE_DEBUG, 1, "Delivery system DVB-S2"); in stb0899_read_status()
1099 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_read_status()
1102 reg = stb0899_read_reg(state, STB0899_CFGPDELSTATUS1); in stb0899_read_status()
1105 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_read_status()
1111 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_read_status()
1116 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_read_status()
1119 stb0899_postproc(state, STB0899_POSTPROC_GPIO_LOCK, 1); in stb0899_read_status()
1125 dprintk(state->verbose, FE_DEBUG, 1, "Unsupported delivery system"); in stb0899_read_status()
1139 struct stb0899_state *state = fe->demodulator_priv; in stb0899_read_ber() local
1140 struct stb0899_internal *internal = &state->internal; in stb0899_read_ber()
1146 switch (state->delsys) { in stb0899_read_ber()
1150 lsb = stb0899_read_reg(state, STB0899_ECNT1L); in stb0899_read_ber()
1151 msb = stb0899_read_reg(state, STB0899_ECNT1M); in stb0899_read_ber()
1165 lsb = stb0899_read_reg(state, STB0899_ECNT1L); in stb0899_read_ber()
1166 msb = stb0899_read_reg(state, STB0899_ECNT1M); in stb0899_read_ber()
1174 dprintk(state->verbose, FE_DEBUG, 1, "Unsupported delivery system"); in stb0899_read_ber()
1183 struct stb0899_state *state = fe->demodulator_priv; in stb0899_set_voltage() local
1187 stb0899_write_reg(state, STB0899_GPIO00CFG, 0x82); in stb0899_set_voltage()
1188 stb0899_write_reg(state, STB0899_GPIO01CFG, 0x02); in stb0899_set_voltage()
1189 stb0899_write_reg(state, STB0899_GPIO02CFG, 0x00); in stb0899_set_voltage()
1192 stb0899_write_reg(state, STB0899_GPIO00CFG, 0x02); in stb0899_set_voltage()
1193 stb0899_write_reg(state, STB0899_GPIO01CFG, 0x02); in stb0899_set_voltage()
1194 stb0899_write_reg(state, STB0899_GPIO02CFG, 0x82); in stb0899_set_voltage()
1197 stb0899_write_reg(state, STB0899_GPIO00CFG, 0x82); in stb0899_set_voltage()
1198 stb0899_write_reg(state, STB0899_GPIO01CFG, 0x82); in stb0899_set_voltage()
1199 stb0899_write_reg(state, STB0899_GPIO02CFG, 0x82); in stb0899_set_voltage()
1210 struct stb0899_state *state = fe->demodulator_priv; in stb0899_set_tone() local
1211 struct stb0899_internal *internal = &state->internal; in stb0899_set_tone()
1216 if (stb0899_wait_diseqc_txidle(state, 100) < 0) in stb0899_set_tone()
1223 stb0899_write_reg(state, STB0899_DISEQCOCFG, 0x66); in stb0899_set_tone()
1224 reg = stb0899_read_reg(state, STB0899_ACRPRESC); in stb0899_set_tone()
1226 stb0899_write_reg(state, STB0899_ACRPRESC, reg); in stb0899_set_tone()
1227 stb0899_write_reg(state, STB0899_ACRDIV1, div); in stb0899_set_tone()
1230 stb0899_write_reg(state, STB0899_DISEQCOCFG, 0x20); in stb0899_set_tone()
1241 struct stb0899_state *state = fe->demodulator_priv; in stb0899_i2c_gate_ctrl() local
1243 i2c_stat = stb0899_read_reg(state, STB0899_I2CRPT); in stb0899_i2c_gate_ctrl()
1248 dprintk(state->verbose, FE_DEBUG, 1, "Enabling I2C Repeater ..."); in stb0899_i2c_gate_ctrl()
1250 if (stb0899_write_reg(state, STB0899_I2CRPT, i2c_stat) < 0) in stb0899_i2c_gate_ctrl()
1253 dprintk(state->verbose, FE_DEBUG, 1, "Disabling I2C Repeater ..."); in stb0899_i2c_gate_ctrl()
1255 if (stb0899_write_reg(state, STB0899_I2CRPT, i2c_stat) < 0) in stb0899_i2c_gate_ctrl()
1260 dprintk(state->verbose, FE_ERROR, 1, "I2C Repeater control failed"); in stb0899_i2c_gate_ctrl()
1274 static int stb0899_get_dev_id(struct stb0899_state *state) in stb0899_get_dev_id() argument
1282 id = stb0899_read_reg(state, STB0899_DEV_ID); in stb0899_get_dev_id()
1283 dprintk(state->verbose, FE_DEBUG, 1, "ID reg=[0x%02x]", id); in stb0899_get_dev_id()
1287 dprintk(state->verbose, FE_ERROR, 1, "Device ID=[%d], Release=[%d]", in stb0899_get_dev_id()
1293 …dprintk(state->verbose, FE_ERROR, 1, "Demodulator Core ID=[%s], Version=[%d]", (char *) &demod_str… in stb0899_get_dev_id()
1297 dprintk(state->verbose, FE_ERROR, 1, "couldn't find a STB 0899"); in stb0899_get_dev_id()
1301 dprintk(state->verbose, FE_ERROR, 1, "FEC Core ID=[%s], Version=[%d]", (char*) &fec_str, fec_ver); in stb0899_get_dev_id()
1306 static void stb0899_set_delivery(struct stb0899_state *state) in stb0899_set_delivery() argument
1311 stop_clk[0] = stb0899_read_reg(state, STB0899_STOPCLK1); in stb0899_set_delivery()
1312 stop_clk[1] = stb0899_read_reg(state, STB0899_STOPCLK2); in stb0899_set_delivery()
1314 switch (state->delsys) { in stb0899_set_delivery()
1316 dprintk(state->verbose, FE_DEBUG, 1, "Delivery System -- DVB-S"); in stb0899_set_delivery()
1318 reg = stb0899_read_reg(state, STB0899_FECM); in stb0899_set_delivery()
1321 stb0899_write_reg(state, STB0899_FECM, reg); in stb0899_set_delivery()
1323 stb0899_write_reg(state, STB0899_RSULC, 0xb1); in stb0899_set_delivery()
1324 stb0899_write_reg(state, STB0899_TSULC, 0x40); in stb0899_set_delivery()
1325 stb0899_write_reg(state, STB0899_RSLLC, 0x42); in stb0899_set_delivery()
1326 stb0899_write_reg(state, STB0899_TSLPL, 0x12); in stb0899_set_delivery()
1328 reg = stb0899_read_reg(state, STB0899_TSTRES); in stb0899_set_delivery()
1330 stb0899_write_reg(state, STB0899_TSTRES, reg); in stb0899_set_delivery()
1346 reg = stb0899_read_reg(state, STB0899_FECM); in stb0899_set_delivery()
1349 stb0899_write_reg(state, STB0899_FECM, reg); in stb0899_set_delivery()
1351 stb0899_write_reg(state, STB0899_RSULC, 0xb1); in stb0899_set_delivery()
1352 stb0899_write_reg(state, STB0899_TSULC, 0x42); in stb0899_set_delivery()
1353 stb0899_write_reg(state, STB0899_RSLLC, 0x40); in stb0899_set_delivery()
1354 stb0899_write_reg(state, STB0899_TSLPL, 0x02); in stb0899_set_delivery()
1356 reg = stb0899_read_reg(state, STB0899_TSTRES); in stb0899_set_delivery()
1358 stb0899_write_reg(state, STB0899_TSTRES, reg); in stb0899_set_delivery()
1374 reg = stb0899_read_reg(state, STB0899_FECM); in stb0899_set_delivery()
1377 stb0899_write_reg(state, STB0899_FECM, reg); in stb0899_set_delivery()
1379 stb0899_write_reg(state, STB0899_RSULC, 0xa1); in stb0899_set_delivery()
1380 stb0899_write_reg(state, STB0899_TSULC, 0x61); in stb0899_set_delivery()
1381 stb0899_write_reg(state, STB0899_RSLLC, 0x42); in stb0899_set_delivery()
1383 reg = stb0899_read_reg(state, STB0899_TSTRES); in stb0899_set_delivery()
1385 stb0899_write_reg(state, STB0899_TSTRES, reg); in stb0899_set_delivery()
1399 dprintk(state->verbose, FE_ERROR, 1, "Unsupported delivery system"); in stb0899_set_delivery()
1403 stb0899_write_regs(state, STB0899_STOPCLK1, stop_clk, 2); in stb0899_set_delivery()
1410 static void stb0899_set_iterations(struct stb0899_state *state) in stb0899_set_iterations() argument
1412 struct stb0899_internal *internal = &state->internal; in stb0899_set_iterations()
1413 struct stb0899_config *config = state->config; in stb0899_set_iterations()
1428 stb0899_write_s2reg(state, STB0899_S2FEC, STB0899_BASE_MAX_ITER, STB0899_OFF0_MAX_ITER, reg); in stb0899_set_iterations()
1433 struct stb0899_state *state = fe->demodulator_priv; in stb0899_search() local
1434 struct stb0899_params *i_params = &state->params; in stb0899_search()
1435 struct stb0899_internal *internal = &state->internal; in stb0899_search()
1436 struct stb0899_config *config = state->config; in stb0899_search()
1443 state->delsys = props->delivery_system; in stb0899_search()
1444 dprintk(state->verbose, FE_DEBUG, 1, "delivery system=%d", state->delsys); in stb0899_search()
1447 dprintk(state->verbose, FE_DEBUG, 1, "Frequency=%d, Srate=%d", i_params->freq, i_params->srate); in stb0899_search()
1450 dprintk(state->verbose, FE_DEBUG, 1, "Parameters IN RANGE"); in stb0899_search()
1451 stb0899_set_delivery(state); in stb0899_search()
1453 if (state->config->tuner_set_rfsiggain) { in stb0899_search()
1460 state->config->tuner_set_rfsiggain(fe, gain); in stb0899_search()
1464 stb0899_set_mclk(state, config->lo_clk); in stb0899_search()
1466 stb0899_set_mclk(state, config->hi_clk); in stb0899_search()
1468 switch (state->delsys) { in stb0899_search()
1471 dprintk(state->verbose, FE_DEBUG, 1, "DVB-S delivery system"); in stb0899_search()
1485 stb0899_i2c_gate_ctrl(&state->frontend, 1); in stb0899_search()
1487 if (state->config->tuner_set_bandwidth) in stb0899_search()
1488 state->config->tuner_set_bandwidth(fe, (13 * (stb0899_carr_width(state) + SearchRange)) / 10); in stb0899_search()
1489 if (state->config->tuner_get_bandwidth) in stb0899_search()
1490 state->config->tuner_get_bandwidth(fe, &internal->tuner_bw); in stb0899_search()
1493 stb0899_i2c_gate_ctrl(&state->frontend, 0); in stb0899_search()
1496 stb0899_write_reg(state, STB0899_AGCRFCFG, 0x11); in stb0899_search()
1499 dprintk(state->verbose, FE_DEBUG, 1, "running DVB-S search algo .."); in stb0899_search()
1500 if (stb0899_dvbs_algo(state) == RANGEOK) { in stb0899_search()
1502 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_search()
1524 stb0899_i2c_gate_ctrl(&state->frontend, 1); in stb0899_search()
1526 if (state->config->tuner_set_bandwidth) in stb0899_search()
1527 state->config->tuner_set_bandwidth(fe, (stb0899_carr_width(state) + SearchRange)); in stb0899_search()
1528 if (state->config->tuner_get_bandwidth) in stb0899_search()
1529 state->config->tuner_get_bandwidth(fe, &internal->tuner_bw); in stb0899_search()
1532 stb0899_i2c_gate_ctrl(&state->frontend, 0); in stb0899_search()
1537 stb0899_write_reg(state, STB0899_AGCRFCFG, 0x1c); in stb0899_search()
1540 stb0899_set_iterations(state); in stb0899_search()
1543 dprintk(state->verbose, FE_DEBUG, 1, "running DVB-S2 search algo .."); in stb0899_search()
1544 if (stb0899_dvbs2_algo(state) == DVBS2_FEC_LOCK) { in stb0899_search()
1546 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_search()
1561 dprintk(state->verbose, FE_ERROR, 1, "Unsupported delivery system"); in stb0899_search()
1572 struct stb0899_state *state = fe->demodulator_priv; in stb0899_get_frontend() local
1573 struct stb0899_internal *internal = &state->internal; in stb0899_get_frontend()
1575 dprintk(state->verbose, FE_DEBUG, 1, "Get params"); in stb0899_get_frontend()
1631 struct stb0899_state *state = NULL; in stb0899_attach() local
1633 state = kzalloc(sizeof (struct stb0899_state), GFP_KERNEL); in stb0899_attach()
1634 if (state == NULL) in stb0899_attach()
1637 state->verbose = &verbose; in stb0899_attach()
1638 state->config = config; in stb0899_attach()
1639 state->i2c = i2c; in stb0899_attach()
1640 state->frontend.ops = stb0899_ops; in stb0899_attach()
1641 state->frontend.demodulator_priv = state; in stb0899_attach()
1643 state->internal.inversion = config->inversion; in stb0899_attach()
1645 stb0899_wakeup(&state->frontend); in stb0899_attach()
1646 if (stb0899_get_dev_id(state) == -ENODEV) { in stb0899_attach()
1652 return &state->frontend; in stb0899_attach()
1655 kfree(state); in stb0899_attach()