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()
798 struct stb0899_state *state = fe->demodulator_priv; in stb0899_send_diseqc_burst() local
802 if (stb0899_wait_diseqc_txidle(state, 100) < 0) in stb0899_send_diseqc_burst()
805 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_send_diseqc_burst()
810 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_send_diseqc_burst()
814 stb0899_write_reg(state, STB0899_DISFIFO, 0x00); in stb0899_send_diseqc_burst()
818 stb0899_write_reg(state, STB0899_DISFIFO, 0xff); in stb0899_send_diseqc_burst()
821 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_send_diseqc_burst()
823 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_send_diseqc_burst()
825 if (stb0899_wait_diseqc_txidle(state, 100) < 0) in stb0899_send_diseqc_burst()
829 stb0899_write_reg(state, STB0899_DISCNTRL1, old_state); in stb0899_send_diseqc_burst()
834 static int stb0899_diseqc_init(struct stb0899_state *state) in stb0899_diseqc_init() argument
842 reg = stb0899_read_reg(state, STB0899_DISCNTRL2); in stb0899_diseqc_init()
844 stb0899_write_reg(state, STB0899_DISCNTRL2, reg); in stb0899_diseqc_init()
847 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_diseqc_init()
849 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_diseqc_init()
851 reg = stb0899_read_reg(state, STB0899_DISCNTRL1); in stb0899_diseqc_init()
853 stb0899_write_reg(state, STB0899_DISCNTRL1, reg); in stb0899_diseqc_init()
855 mclk = stb0899_get_mclk(state); in stb0899_diseqc_init()
857 stb0899_write_reg(state, STB0899_DISF22, f22_tx); /* DiSEqC Tx freq */ in stb0899_diseqc_init()
858 state->rx_freq = 20000; in stb0899_diseqc_init()
865 struct stb0899_state *state = fe->demodulator_priv; in stb0899_sleep() local
869 dprintk(state->verbose, FE_DEBUG, 1, "Going to Sleep .. (Really tired .. :-))"); in stb0899_sleep()
871 stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 0); in stb0899_sleep()
879 struct stb0899_state *state = fe->demodulator_priv; in stb0899_wakeup() local
881 if ((rc = stb0899_write_reg(state, STB0899_SYNTCTRL, STB0899_SELOSCI))) in stb0899_wakeup()
884 if ((rc = stb0899_write_reg(state, STB0899_STOPCLK1, 0x00))) in stb0899_wakeup()
886 if ((rc = stb0899_write_reg(state, STB0899_STOPCLK2, 0x00))) in stb0899_wakeup()
890 stb0899_postproc(state, STB0899_POSTPROC_GPIO_POWER, 1); in stb0899_wakeup()
898 struct stb0899_state *state = fe->demodulator_priv; in stb0899_init() local
899 struct stb0899_config *config = state->config; in stb0899_init()
901 dprintk(state->verbose, FE_DEBUG, 1, "Initializing STB0899 ... "); in stb0899_init()
904 dprintk(state->verbose, FE_DEBUG, 1, "init device"); in stb0899_init()
906 stb0899_write_reg(state, config->init_dev[i].address, config->init_dev[i].data); in stb0899_init()
908 dprintk(state->verbose, FE_DEBUG, 1, "init S2 demod"); in stb0899_init()
911 stb0899_write_s2reg(state, STB0899_S2DEMOD, in stb0899_init()
916 dprintk(state->verbose, FE_DEBUG, 1, "init S1 demod"); in stb0899_init()
919 stb0899_write_reg(state, config->init_s1_demod[i].address, config->init_s1_demod[i].data); in stb0899_init()
921 dprintk(state->verbose, FE_DEBUG, 1, "init S2 FEC"); in stb0899_init()
924 stb0899_write_s2reg(state, STB0899_S2FEC, in stb0899_init()
929 dprintk(state->verbose, FE_DEBUG, 1, "init TST"); in stb0899_init()
932 stb0899_write_reg(state, config->init_tst[i].address, config->init_tst[i].data); in stb0899_init()
934 stb0899_init_calc(state); in stb0899_init()
935 stb0899_diseqc_init(state); in stb0899_init()
968 struct stb0899_state *state = fe->demodulator_priv; in stb0899_read_signal_strength() local
969 struct stb0899_internal *internal = &state->internal; in stb0899_read_signal_strength()
974 switch (state->delsys) { in stb0899_read_signal_strength()
978 reg = stb0899_read_reg(state, STB0899_VSTATUS); in stb0899_read_signal_strength()
981 reg = stb0899_read_reg(state, STB0899_AGCIQIN); in stb0899_read_signal_strength()
986 dprintk(state->verbose, FE_DEBUG, 1, "AGCIQVALUE = 0x%02x, C = %d * 0.1 dBm", in stb0899_read_signal_strength()
998 dprintk(state->verbose, FE_DEBUG, 1, "IF_AGC_GAIN = 0x%04x, C = %d * 0.1 dBm", in stb0899_read_signal_strength()
1003 dprintk(state->verbose, FE_DEBUG, 1, "Unsupported delivery system"); in stb0899_read_signal_strength()
1012 struct stb0899_state *state = fe->demodulator_priv; in stb0899_read_snr() local
1013 struct stb0899_internal *internal = &state->internal; in stb0899_read_snr()
1020 reg = stb0899_read_reg(state, STB0899_VSTATUS); in stb0899_read_snr()
1021 switch (state->delsys) { in stb0899_read_snr()
1027 stb0899_read_regs(state, STB0899_NIRM, buf, 2); in stb0899_read_snr()
1031 dprintk(state->verbose, FE_DEBUG, 1, "NIR = 0x%02x%02x = %u, C/N = %d * 0.1 dBm\n", in stb0899_read_snr()
1055 …dprintk(state->verbose, FE_DEBUG, 1, "Es/N0 quant = %d (%d) estimate = %u (%d), C/N = %d * 0.1 dBm… in stb0899_read_snr()
1060 dprintk(state->verbose, FE_DEBUG, 1, "Unsupported delivery system"); in stb0899_read_snr()
1069 struct stb0899_state *state = fe->demodulator_priv; in stb0899_read_status() local
1070 struct stb0899_internal *internal = &state->internal; in stb0899_read_status()
1074 switch (state->delsys) { in stb0899_read_status()
1077 dprintk(state->verbose, FE_DEBUG, 1, "Delivery system DVB-S/DSS"); in stb0899_read_status()
1079 reg = stb0899_read_reg(state, STB0899_VSTATUS); in stb0899_read_status()
1081 dprintk(state->verbose, FE_DEBUG, 1, "--------> FE_HAS_CARRIER | FE_HAS_LOCK"); in stb0899_read_status()
1084 reg = stb0899_read_reg(state, STB0899_PLPARM); in stb0899_read_status()
1086 dprintk(state->verbose, FE_DEBUG, 1, "--------> FE_HAS_VITERBI | FE_HAS_SYNC"); in stb0899_read_status()
1089 stb0899_postproc(state, STB0899_POSTPROC_GPIO_LOCK, 1); in stb0899_read_status()
1095 dprintk(state->verbose, FE_DEBUG, 1, "Delivery system DVB-S2"); in stb0899_read_status()
1100 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_read_status()
1103 reg = stb0899_read_reg(state, STB0899_CFGPDELSTATUS1); in stb0899_read_status()
1106 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_read_status()
1112 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_read_status()
1117 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_read_status()
1120 stb0899_postproc(state, STB0899_POSTPROC_GPIO_LOCK, 1); in stb0899_read_status()
1126 dprintk(state->verbose, FE_DEBUG, 1, "Unsupported delivery system"); in stb0899_read_status()
1140 struct stb0899_state *state = fe->demodulator_priv; in stb0899_read_ber() local
1141 struct stb0899_internal *internal = &state->internal; in stb0899_read_ber()
1147 switch (state->delsys) { in stb0899_read_ber()
1151 lsb = stb0899_read_reg(state, STB0899_ECNT1L); in stb0899_read_ber()
1152 msb = stb0899_read_reg(state, STB0899_ECNT1M); in stb0899_read_ber()
1166 lsb = stb0899_read_reg(state, STB0899_ECNT1L); in stb0899_read_ber()
1167 msb = stb0899_read_reg(state, STB0899_ECNT1M); in stb0899_read_ber()
1175 dprintk(state->verbose, FE_DEBUG, 1, "Unsupported delivery system"); in stb0899_read_ber()
1185 struct stb0899_state *state = fe->demodulator_priv; in stb0899_set_voltage() local
1189 stb0899_write_reg(state, STB0899_GPIO00CFG, 0x82); in stb0899_set_voltage()
1190 stb0899_write_reg(state, STB0899_GPIO01CFG, 0x02); in stb0899_set_voltage()
1191 stb0899_write_reg(state, STB0899_GPIO02CFG, 0x00); in stb0899_set_voltage()
1194 stb0899_write_reg(state, STB0899_GPIO00CFG, 0x02); in stb0899_set_voltage()
1195 stb0899_write_reg(state, STB0899_GPIO01CFG, 0x02); in stb0899_set_voltage()
1196 stb0899_write_reg(state, STB0899_GPIO02CFG, 0x82); in stb0899_set_voltage()
1199 stb0899_write_reg(state, STB0899_GPIO00CFG, 0x82); in stb0899_set_voltage()
1200 stb0899_write_reg(state, STB0899_GPIO01CFG, 0x82); in stb0899_set_voltage()
1201 stb0899_write_reg(state, STB0899_GPIO02CFG, 0x82); in stb0899_set_voltage()
1212 struct stb0899_state *state = fe->demodulator_priv; in stb0899_set_tone() local
1213 struct stb0899_internal *internal = &state->internal; in stb0899_set_tone()
1218 if (stb0899_wait_diseqc_txidle(state, 100) < 0) in stb0899_set_tone()
1225 stb0899_write_reg(state, STB0899_DISEQCOCFG, 0x66); in stb0899_set_tone()
1226 reg = stb0899_read_reg(state, STB0899_ACRPRESC); in stb0899_set_tone()
1228 stb0899_write_reg(state, STB0899_ACRPRESC, reg); in stb0899_set_tone()
1229 stb0899_write_reg(state, STB0899_ACRDIV1, div); in stb0899_set_tone()
1232 stb0899_write_reg(state, STB0899_DISEQCOCFG, 0x20); in stb0899_set_tone()
1243 struct stb0899_state *state = fe->demodulator_priv; in stb0899_i2c_gate_ctrl() local
1245 i2c_stat = stb0899_read_reg(state, STB0899_I2CRPT); in stb0899_i2c_gate_ctrl()
1250 dprintk(state->verbose, FE_DEBUG, 1, "Enabling I2C Repeater ..."); in stb0899_i2c_gate_ctrl()
1252 if (stb0899_write_reg(state, STB0899_I2CRPT, i2c_stat) < 0) in stb0899_i2c_gate_ctrl()
1255 dprintk(state->verbose, FE_DEBUG, 1, "Disabling I2C Repeater ..."); in stb0899_i2c_gate_ctrl()
1257 if (stb0899_write_reg(state, STB0899_I2CRPT, i2c_stat) < 0) in stb0899_i2c_gate_ctrl()
1262 dprintk(state->verbose, FE_ERROR, 1, "I2C Repeater control failed"); in stb0899_i2c_gate_ctrl()
1276 static int stb0899_get_dev_id(struct stb0899_state *state) in stb0899_get_dev_id() argument
1284 id = stb0899_read_reg(state, STB0899_DEV_ID); in stb0899_get_dev_id()
1285 dprintk(state->verbose, FE_DEBUG, 1, "ID reg=[0x%02x]", id); in stb0899_get_dev_id()
1289 dprintk(state->verbose, FE_ERROR, 1, "Device ID=[%d], Release=[%d]", in stb0899_get_dev_id()
1295 …dprintk(state->verbose, FE_ERROR, 1, "Demodulator Core ID=[%s], Version=[%d]", (char *) &demod_str… in stb0899_get_dev_id()
1299 dprintk(state->verbose, FE_ERROR, 1, "couldn't find a STB 0899"); in stb0899_get_dev_id()
1303 dprintk(state->verbose, FE_ERROR, 1, "FEC Core ID=[%s], Version=[%d]", (char*) &fec_str, fec_ver); in stb0899_get_dev_id()
1308 static void stb0899_set_delivery(struct stb0899_state *state) in stb0899_set_delivery() argument
1313 stop_clk[0] = stb0899_read_reg(state, STB0899_STOPCLK1); in stb0899_set_delivery()
1314 stop_clk[1] = stb0899_read_reg(state, STB0899_STOPCLK2); in stb0899_set_delivery()
1316 switch (state->delsys) { in stb0899_set_delivery()
1318 dprintk(state->verbose, FE_DEBUG, 1, "Delivery System -- DVB-S"); in stb0899_set_delivery()
1320 reg = stb0899_read_reg(state, STB0899_FECM); in stb0899_set_delivery()
1323 stb0899_write_reg(state, STB0899_FECM, reg); in stb0899_set_delivery()
1325 stb0899_write_reg(state, STB0899_RSULC, 0xb1); in stb0899_set_delivery()
1326 stb0899_write_reg(state, STB0899_TSULC, 0x40); in stb0899_set_delivery()
1327 stb0899_write_reg(state, STB0899_RSLLC, 0x42); in stb0899_set_delivery()
1328 stb0899_write_reg(state, STB0899_TSLPL, 0x12); in stb0899_set_delivery()
1330 reg = stb0899_read_reg(state, STB0899_TSTRES); in stb0899_set_delivery()
1332 stb0899_write_reg(state, STB0899_TSTRES, reg); in stb0899_set_delivery()
1348 reg = stb0899_read_reg(state, STB0899_FECM); in stb0899_set_delivery()
1351 stb0899_write_reg(state, STB0899_FECM, reg); in stb0899_set_delivery()
1353 stb0899_write_reg(state, STB0899_RSULC, 0xb1); in stb0899_set_delivery()
1354 stb0899_write_reg(state, STB0899_TSULC, 0x42); in stb0899_set_delivery()
1355 stb0899_write_reg(state, STB0899_RSLLC, 0x40); in stb0899_set_delivery()
1356 stb0899_write_reg(state, STB0899_TSLPL, 0x02); in stb0899_set_delivery()
1358 reg = stb0899_read_reg(state, STB0899_TSTRES); in stb0899_set_delivery()
1360 stb0899_write_reg(state, STB0899_TSTRES, reg); in stb0899_set_delivery()
1376 reg = stb0899_read_reg(state, STB0899_FECM); in stb0899_set_delivery()
1379 stb0899_write_reg(state, STB0899_FECM, reg); in stb0899_set_delivery()
1381 stb0899_write_reg(state, STB0899_RSULC, 0xa1); in stb0899_set_delivery()
1382 stb0899_write_reg(state, STB0899_TSULC, 0x61); in stb0899_set_delivery()
1383 stb0899_write_reg(state, STB0899_RSLLC, 0x42); in stb0899_set_delivery()
1385 reg = stb0899_read_reg(state, STB0899_TSTRES); in stb0899_set_delivery()
1387 stb0899_write_reg(state, STB0899_TSTRES, reg); in stb0899_set_delivery()
1401 dprintk(state->verbose, FE_ERROR, 1, "Unsupported delivery system"); in stb0899_set_delivery()
1405 stb0899_write_regs(state, STB0899_STOPCLK1, stop_clk, 2); in stb0899_set_delivery()
1412 static void stb0899_set_iterations(struct stb0899_state *state) in stb0899_set_iterations() argument
1414 struct stb0899_internal *internal = &state->internal; in stb0899_set_iterations()
1415 struct stb0899_config *config = state->config; in stb0899_set_iterations()
1430 stb0899_write_s2reg(state, STB0899_S2FEC, STB0899_BASE_MAX_ITER, STB0899_OFF0_MAX_ITER, reg); in stb0899_set_iterations()
1435 struct stb0899_state *state = fe->demodulator_priv; in stb0899_search() local
1436 struct stb0899_params *i_params = &state->params; in stb0899_search()
1437 struct stb0899_internal *internal = &state->internal; in stb0899_search()
1438 struct stb0899_config *config = state->config; in stb0899_search()
1445 state->delsys = props->delivery_system; in stb0899_search()
1446 dprintk(state->verbose, FE_DEBUG, 1, "delivery system=%d", state->delsys); in stb0899_search()
1449 dprintk(state->verbose, FE_DEBUG, 1, "Frequency=%d, Srate=%d", i_params->freq, i_params->srate); in stb0899_search()
1452 dprintk(state->verbose, FE_DEBUG, 1, "Parameters IN RANGE"); in stb0899_search()
1453 stb0899_set_delivery(state); in stb0899_search()
1455 if (state->config->tuner_set_rfsiggain) { in stb0899_search()
1462 state->config->tuner_set_rfsiggain(fe, gain); in stb0899_search()
1466 stb0899_set_mclk(state, config->lo_clk); in stb0899_search()
1468 stb0899_set_mclk(state, config->hi_clk); in stb0899_search()
1470 switch (state->delsys) { in stb0899_search()
1473 dprintk(state->verbose, FE_DEBUG, 1, "DVB-S delivery system"); in stb0899_search()
1487 stb0899_i2c_gate_ctrl(&state->frontend, 1); in stb0899_search()
1489 if (state->config->tuner_set_bandwidth) in stb0899_search()
1490 state->config->tuner_set_bandwidth(fe, (13 * (stb0899_carr_width(state) + SearchRange)) / 10); in stb0899_search()
1491 if (state->config->tuner_get_bandwidth) in stb0899_search()
1492 state->config->tuner_get_bandwidth(fe, &internal->tuner_bw); in stb0899_search()
1495 stb0899_i2c_gate_ctrl(&state->frontend, 0); in stb0899_search()
1498 stb0899_write_reg(state, STB0899_AGCRFCFG, 0x11); in stb0899_search()
1501 dprintk(state->verbose, FE_DEBUG, 1, "running DVB-S search algo .."); in stb0899_search()
1502 if (stb0899_dvbs_algo(state) == RANGEOK) { in stb0899_search()
1504 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_search()
1526 stb0899_i2c_gate_ctrl(&state->frontend, 1); in stb0899_search()
1528 if (state->config->tuner_set_bandwidth) in stb0899_search()
1529 state->config->tuner_set_bandwidth(fe, (stb0899_carr_width(state) + SearchRange)); in stb0899_search()
1530 if (state->config->tuner_get_bandwidth) in stb0899_search()
1531 state->config->tuner_get_bandwidth(fe, &internal->tuner_bw); in stb0899_search()
1534 stb0899_i2c_gate_ctrl(&state->frontend, 0); in stb0899_search()
1539 stb0899_write_reg(state, STB0899_AGCRFCFG, 0x1c); in stb0899_search()
1542 stb0899_set_iterations(state); in stb0899_search()
1545 dprintk(state->verbose, FE_DEBUG, 1, "running DVB-S2 search algo .."); in stb0899_search()
1546 if (stb0899_dvbs2_algo(state) == DVBS2_FEC_LOCK) { in stb0899_search()
1548 dprintk(state->verbose, FE_DEBUG, 1, in stb0899_search()
1563 dprintk(state->verbose, FE_ERROR, 1, "Unsupported delivery system"); in stb0899_search()
1574 struct stb0899_state *state = fe->demodulator_priv; in stb0899_get_frontend() local
1575 struct stb0899_internal *internal = &state->internal; in stb0899_get_frontend()
1577 dprintk(state->verbose, FE_DEBUG, 1, "Get params"); in stb0899_get_frontend()
1633 struct stb0899_state *state = NULL; in stb0899_attach() local
1635 state = kzalloc(sizeof (struct stb0899_state), GFP_KERNEL); in stb0899_attach()
1636 if (state == NULL) in stb0899_attach()
1639 state->verbose = &verbose; in stb0899_attach()
1640 state->config = config; in stb0899_attach()
1641 state->i2c = i2c; in stb0899_attach()
1642 state->frontend.ops = stb0899_ops; in stb0899_attach()
1643 state->frontend.demodulator_priv = state; in stb0899_attach()
1645 state->internal.inversion = config->inversion; in stb0899_attach()
1647 stb0899_wakeup(&state->frontend); in stb0899_attach()
1648 if (stb0899_get_dev_id(state) == -ENODEV) { in stb0899_attach()
1654 return &state->frontend; in stb0899_attach()
1657 kfree(state); in stb0899_attach()