Lines Matching refs:state
199 static int cx24116_writereg(struct cx24116_state *state, int reg, int data) in cx24116_writereg() argument
202 struct i2c_msg msg = { .addr = state->config->demod_address, in cx24116_writereg()
210 err = i2c_transfer(state->i2c, &msg, 1); in cx24116_writereg()
221 static int cx24116_writeregN(struct cx24116_state *state, int reg, in cx24116_writeregN() argument
238 msg.addr = state->config->demod_address; in cx24116_writeregN()
247 ret = i2c_transfer(state->i2c, &msg, 1); in cx24116_writeregN()
260 static int cx24116_readreg(struct cx24116_state *state, u8 reg) in cx24116_readreg() argument
266 { .addr = state->config->demod_address, .flags = 0, in cx24116_readreg()
268 { .addr = state->config->demod_address, .flags = I2C_M_RD, in cx24116_readreg()
272 ret = i2c_transfer(state->i2c, msg, 2); in cx24116_readreg()
287 static int cx24116_set_inversion(struct cx24116_state *state, in cx24116_set_inversion() argument
294 state->dnxt.inversion_val = 0x00; in cx24116_set_inversion()
297 state->dnxt.inversion_val = 0x04; in cx24116_set_inversion()
300 state->dnxt.inversion_val = 0x0C; in cx24116_set_inversion()
306 state->dnxt.inversion = inversion; in cx24116_set_inversion()
417 static int cx24116_lookup_fecmod(struct cx24116_state *state, in cx24116_lookup_fecmod() argument
436 static int cx24116_set_fec(struct cx24116_state *state, in cx24116_set_fec() argument
445 ret = cx24116_lookup_fecmod(state, delsys, mod, fec); in cx24116_set_fec()
450 state->dnxt.fec = fec; in cx24116_set_fec()
451 state->dnxt.fec_val = CX24116_MODFEC_MODES[ret].val; in cx24116_set_fec()
452 state->dnxt.fec_mask = CX24116_MODFEC_MODES[ret].mask; in cx24116_set_fec()
454 state->dnxt.fec_mask, state->dnxt.fec_val); in cx24116_set_fec()
459 static int cx24116_set_symbolrate(struct cx24116_state *state, u32 rate) in cx24116_set_symbolrate() argument
464 if ((rate > state->frontend.ops.info.symbol_rate_max) || in cx24116_set_symbolrate()
465 (rate < state->frontend.ops.info.symbol_rate_min)) { in cx24116_set_symbolrate()
470 state->dnxt.symbol_rate = rate; in cx24116_set_symbolrate()
481 struct cx24116_state *state = fe->demodulator_priv; in cx24116_firmware_ondemand() local
487 if (cx24116_readreg(state, 0x20) > 0) { in cx24116_firmware_ondemand()
489 if (state->skip_fw_load) in cx24116_firmware_ondemand()
497 state->i2c->dev.parent); in cx24116_firmware_ondemand()
508 state->skip_fw_load = 1; in cx24116_firmware_ondemand()
521 state->skip_fw_load = 0; in cx24116_firmware_ondemand()
532 struct cx24116_state *state = fe->demodulator_priv; in cx24116_cmd_execute() local
548 cx24116_writereg(state, i, cmd->args[i]); in cx24116_cmd_execute()
552 cx24116_writereg(state, CX24116_REG_EXECUTE, 0x01); in cx24116_cmd_execute()
553 while (cx24116_readreg(state, CX24116_REG_EXECUTE)) { in cx24116_cmd_execute()
569 struct cx24116_state *state = fe->demodulator_priv; in cx24116_load_firmware() local
583 if (state->config->reset_device) in cx24116_load_firmware()
584 state->config->reset_device(fe); in cx24116_load_firmware()
590 cx24116_writereg(state, 0xE5, 0x00); in cx24116_load_firmware()
591 cx24116_writereg(state, 0xF1, 0x08); in cx24116_load_firmware()
592 cx24116_writereg(state, 0xF2, 0x13); in cx24116_load_firmware()
595 cx24116_writereg(state, 0xe0, 0x03); in cx24116_load_firmware()
596 cx24116_writereg(state, 0xe0, 0x00); in cx24116_load_firmware()
599 cx24116_writereg(state, CX24116_REG_CLKDIV, 0x46); in cx24116_load_firmware()
600 cx24116_writereg(state, CX24116_REG_RATEDIV, 0x00); in cx24116_load_firmware()
603 cx24116_writereg(state, 0xF0, 0x03); in cx24116_load_firmware()
604 cx24116_writereg(state, 0xF4, 0x81); in cx24116_load_firmware()
605 cx24116_writereg(state, 0xF5, 0x00); in cx24116_load_firmware()
606 cx24116_writereg(state, 0xF6, 0x00); in cx24116_load_firmware()
610 if (state->config->i2c_wr_max) in cx24116_load_firmware()
611 max = state->config->i2c_wr_max; in cx24116_load_firmware()
620 cx24116_writeregN(state, 0xF7, &fw->data[fw->size - remaining], in cx24116_load_firmware()
624 cx24116_writereg(state, 0xF4, 0x10); in cx24116_load_firmware()
625 cx24116_writereg(state, 0xF0, 0x00); in cx24116_load_firmware()
626 cx24116_writereg(state, 0xF8, 0x06); in cx24116_load_firmware()
644 cx24116_writereg(state, CX24116_REG_SSTATUS, 0x00); in cx24116_load_firmware()
655 cx24116_writereg(state, 0xe5, 0x00); in cx24116_load_firmware()
662 if (state->config->mpg_clk_pos_pol) in cx24116_load_firmware()
663 cmd.args[0x04] = state->config->mpg_clk_pos_pol; in cx24116_load_firmware()
680 vers[i] = cx24116_readreg(state, CX24116_REG_MAILBOX); in cx24116_load_firmware()
690 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_status() local
692 int lock = cx24116_readreg(state, CX24116_REG_SSTATUS) & in cx24116_read_status()
713 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_ber() local
717 *ber = (cx24116_readreg(state, CX24116_REG_BER24) << 24) | in cx24116_read_ber()
718 (cx24116_readreg(state, CX24116_REG_BER16) << 16) | in cx24116_read_ber()
719 (cx24116_readreg(state, CX24116_REG_BER8) << 8) | in cx24116_read_ber()
720 cx24116_readreg(state, CX24116_REG_BER0); in cx24116_read_ber()
729 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_signal_strength() local
744 (cx24116_readreg(state, in cx24116_read_signal_strength()
746 (cx24116_readreg(state, CX24116_REG_SIGNAL) << 6); in cx24116_read_signal_strength()
758 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_snr_pct() local
768 snr_reading = cx24116_readreg(state, CX24116_REG_QUALITY0); in cx24116_read_snr_pct()
788 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_snr_esno() local
792 *snr = cx24116_readreg(state, CX24116_REG_QUALITY8) << 8 | in cx24116_read_snr_esno()
793 cx24116_readreg(state, CX24116_REG_QUALITY0); in cx24116_read_snr_esno()
810 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_ucblocks() local
814 *ucblocks = (cx24116_readreg(state, CX24116_REG_UCB8) << 8) | in cx24116_read_ucblocks()
815 cx24116_readreg(state, CX24116_REG_UCB0); in cx24116_read_ucblocks()
823 struct cx24116_state *state = fe->demodulator_priv; in cx24116_clone_params() local
824 state->dcur = state->dnxt; in cx24116_clone_params()
830 struct cx24116_state *state = fe->demodulator_priv; in cx24116_wait_for_lnb() local
834 cx24116_readreg(state, CX24116_REG_QSTATUS)); in cx24116_wait_for_lnb()
838 if (cx24116_readreg(state, CX24116_REG_QSTATUS) & 0x20) in cx24116_wait_for_lnb()
922 struct cx24116_state *state = fe->demodulator_priv; in cx24116_diseqc_init() local
941 state->dsec_cmd.args[0x00] = CMD_LNBSEND; in cx24116_diseqc_init()
944 state->dsec_cmd.args[CX24116_DISEQC_BURST] = CX24116_DISEQC_MINI_A; in cx24116_diseqc_init()
947 state->dsec_cmd.args[CX24116_DISEQC_ARG2_2] = 0x02; in cx24116_diseqc_init()
948 state->dsec_cmd.args[CX24116_DISEQC_ARG3_0] = 0x00; in cx24116_diseqc_init()
950 state->dsec_cmd.args[CX24116_DISEQC_ARG4_0] = 0x00; in cx24116_diseqc_init()
953 state->dsec_cmd.args[CX24116_DISEQC_MSGLEN] = 0x00; in cx24116_diseqc_init()
956 state->dsec_cmd.len = CX24116_DISEQC_MSGOFS; in cx24116_diseqc_init()
965 struct cx24116_state *state = fe->demodulator_priv; in cx24116_send_diseqc_msg() local
985 state->dsec_cmd.args[CX24116_DISEQC_MSGOFS + i] = d->msg[i]; in cx24116_send_diseqc_msg()
988 state->dsec_cmd.args[CX24116_DISEQC_MSGLEN] = d->msg_len; in cx24116_send_diseqc_msg()
991 state->dsec_cmd.len = CX24116_DISEQC_MSGOFS + in cx24116_send_diseqc_msg()
992 state->dsec_cmd.args[CX24116_DISEQC_MSGLEN]; in cx24116_send_diseqc_msg()
1001 state->dsec_cmd.args[CX24116_DISEQC_BURST] = 0; in cx24116_send_diseqc_msg()
1023 state->dsec_cmd.args[CX24116_DISEQC_BURST] = in cx24116_send_diseqc_msg()
1027 state->dsec_cmd.args[CX24116_DISEQC_BURST]); in cx24116_send_diseqc_msg()
1039 ret = cx24116_cmd_execute(fe, &state->dsec_cmd); in cx24116_send_diseqc_msg()
1052 msleep((state->dsec_cmd.args[CX24116_DISEQC_MSGLEN] << 4) + in cx24116_send_diseqc_msg()
1062 struct cx24116_state *state = fe->demodulator_priv; in cx24116_diseqc_send_burst() local
1069 state->dsec_cmd.args[CX24116_DISEQC_BURST] = in cx24116_diseqc_send_burst()
1072 state->dsec_cmd.args[CX24116_DISEQC_BURST] = in cx24116_diseqc_send_burst()
1093 ret = cx24116_cmd_execute(fe, &state->dsec_cmd); in cx24116_diseqc_send_burst()
1107 msleep((state->dsec_cmd.args[CX24116_DISEQC_MSGLEN] << 4) + 60); in cx24116_diseqc_send_burst()
1114 struct cx24116_state *state = fe->demodulator_priv; in cx24116_release() local
1116 kfree(state); in cx24116_release()
1124 struct cx24116_state *state = NULL; in cx24116_attach() local
1130 state = kzalloc(sizeof(struct cx24116_state), GFP_KERNEL); in cx24116_attach()
1131 if (state == NULL) in cx24116_attach()
1134 state->config = config; in cx24116_attach()
1135 state->i2c = i2c; in cx24116_attach()
1138 ret = (cx24116_readreg(state, 0xFF) << 8) | in cx24116_attach()
1139 cx24116_readreg(state, 0xFE); in cx24116_attach()
1146 memcpy(&state->frontend.ops, &cx24116_ops, in cx24116_attach()
1148 state->frontend.demodulator_priv = state; in cx24116_attach()
1149 return &state->frontend; in cx24116_attach()
1151 error2: kfree(state); in cx24116_attach()
1163 struct cx24116_state *state = fe->demodulator_priv; in cx24116_initfe() local
1170 cx24116_writereg(state, 0xe0, 0); in cx24116_initfe()
1171 cx24116_writereg(state, 0xe1, 0); in cx24116_initfe()
1172 cx24116_writereg(state, 0xea, 0); in cx24116_initfe()
1195 struct cx24116_state *state = fe->demodulator_priv; in cx24116_sleep() local
1210 cx24116_writereg(state, 0xea, 0xff); in cx24116_sleep()
1211 cx24116_writereg(state, 0xe1, 1); in cx24116_sleep()
1212 cx24116_writereg(state, 0xe0, 1); in cx24116_sleep()
1222 struct cx24116_state *state = fe->demodulator_priv; in cx24116_set_frontend() local
1242 state->dnxt.pilot_val = CX24116_PILOT_OFF; in cx24116_set_frontend()
1250 state->dnxt.rolloff_val = CX24116_ROLLOFF_035; in cx24116_set_frontend()
1268 state->dnxt.pilot_val = (c->modulation == QPSK) in cx24116_set_frontend()
1273 state->dnxt.pilot_val = CX24116_PILOT_OFF; in cx24116_set_frontend()
1276 state->dnxt.pilot_val = CX24116_PILOT_ON; in cx24116_set_frontend()
1286 state->dnxt.rolloff_val = CX24116_ROLLOFF_020; in cx24116_set_frontend()
1289 state->dnxt.rolloff_val = CX24116_ROLLOFF_025; in cx24116_set_frontend()
1292 state->dnxt.rolloff_val = CX24116_ROLLOFF_035; in cx24116_set_frontend()
1307 state->dnxt.delsys = c->delivery_system; in cx24116_set_frontend()
1308 state->dnxt.modulation = c->modulation; in cx24116_set_frontend()
1309 state->dnxt.frequency = c->frequency; in cx24116_set_frontend()
1310 state->dnxt.pilot = c->pilot; in cx24116_set_frontend()
1311 state->dnxt.rolloff = c->rolloff; in cx24116_set_frontend()
1313 ret = cx24116_set_inversion(state, c->inversion); in cx24116_set_frontend()
1318 ret = cx24116_set_fec(state, c->delivery_system, c->modulation, c->fec_inner); in cx24116_set_frontend()
1322 ret = cx24116_set_symbolrate(state, c->symbol_rate); in cx24116_set_frontend()
1329 dprintk("%s: delsys = %d\n", __func__, state->dcur.delsys); in cx24116_set_frontend()
1330 dprintk("%s: modulation = %d\n", __func__, state->dcur.modulation); in cx24116_set_frontend()
1331 dprintk("%s: frequency = %d\n", __func__, state->dcur.frequency); in cx24116_set_frontend()
1333 state->dcur.pilot, state->dcur.pilot_val); in cx24116_set_frontend()
1336 state->dcur.rolloff, state->dcur.rolloff_val); in cx24116_set_frontend()
1337 dprintk("%s: symbol_rate = %d\n", __func__, state->dcur.symbol_rate); in cx24116_set_frontend()
1339 state->dcur.fec, state->dcur.fec_mask, state->dcur.fec_val); in cx24116_set_frontend()
1341 state->dcur.inversion, state->dcur.inversion_val); in cx24116_set_frontend()
1344 if (state->config->set_ts_params) in cx24116_set_frontend()
1345 state->config->set_ts_params(fe, 0); in cx24116_set_frontend()
1359 cmd.args[0x01] = (state->dcur.frequency & 0xff0000) >> 16; in cx24116_set_frontend()
1360 cmd.args[0x02] = (state->dcur.frequency & 0x00ff00) >> 8; in cx24116_set_frontend()
1361 cmd.args[0x03] = (state->dcur.frequency & 0x0000ff); in cx24116_set_frontend()
1364 cmd.args[0x04] = ((state->dcur.symbol_rate / 1000) & 0xff00) >> 8; in cx24116_set_frontend()
1365 cmd.args[0x05] = ((state->dcur.symbol_rate / 1000) & 0x00ff); in cx24116_set_frontend()
1368 cmd.args[0x06] = state->dcur.inversion_val; in cx24116_set_frontend()
1371 cmd.args[0x07] = state->dcur.fec_val | state->dcur.pilot_val; in cx24116_set_frontend()
1377 cmd.args[0x0c] = state->dcur.rolloff_val; in cx24116_set_frontend()
1378 cmd.args[0x0d] = state->dcur.fec_mask; in cx24116_set_frontend()
1380 if (state->dcur.symbol_rate > 30000000) { in cx24116_set_frontend()
1386 cx24116_writereg(state, CX24116_REG_CLKDIV, 0x44); in cx24116_set_frontend()
1387 cx24116_writereg(state, CX24116_REG_RATEDIV, 0x01); in cx24116_set_frontend()
1394 cx24116_writereg(state, CX24116_REG_CLKDIV, 0x46); in cx24116_set_frontend()
1395 cx24116_writereg(state, CX24116_REG_RATEDIV, 0x00); in cx24116_set_frontend()
1406 status = cx24116_readreg(state, CX24116_REG_SSTATUS) in cx24116_set_frontend()
1408 cx24116_writereg(state, CX24116_REG_SSTATUS, status); in cx24116_set_frontend()
1434 if (state->dcur.pilot == PILOT_AUTO) in cx24116_set_frontend()