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
443 ret = cx24116_lookup_fecmod(state, delsys, mod, fec); in cx24116_set_fec()
448 state->dnxt.fec = fec; in cx24116_set_fec()
449 state->dnxt.fec_val = CX24116_MODFEC_MODES[ret].val; in cx24116_set_fec()
450 state->dnxt.fec_mask = CX24116_MODFEC_MODES[ret].mask; in cx24116_set_fec()
452 state->dnxt.fec_mask, state->dnxt.fec_val); in cx24116_set_fec()
457 static int cx24116_set_symbolrate(struct cx24116_state *state, u32 rate) in cx24116_set_symbolrate() argument
462 if ((rate > state->frontend.ops.info.symbol_rate_max) || in cx24116_set_symbolrate()
463 (rate < state->frontend.ops.info.symbol_rate_min)) { in cx24116_set_symbolrate()
468 state->dnxt.symbol_rate = rate; in cx24116_set_symbolrate()
479 struct cx24116_state *state = fe->demodulator_priv; in cx24116_firmware_ondemand() local
485 if (cx24116_readreg(state, 0x20) > 0) { in cx24116_firmware_ondemand()
487 if (state->skip_fw_load) in cx24116_firmware_ondemand()
495 state->i2c->dev.parent); in cx24116_firmware_ondemand()
506 state->skip_fw_load = 1; in cx24116_firmware_ondemand()
519 state->skip_fw_load = 0; in cx24116_firmware_ondemand()
530 struct cx24116_state *state = fe->demodulator_priv; in cx24116_cmd_execute() local
546 cx24116_writereg(state, i, cmd->args[i]); in cx24116_cmd_execute()
550 cx24116_writereg(state, CX24116_REG_EXECUTE, 0x01); in cx24116_cmd_execute()
551 while (cx24116_readreg(state, CX24116_REG_EXECUTE)) { in cx24116_cmd_execute()
567 struct cx24116_state *state = fe->demodulator_priv; in cx24116_load_firmware() local
581 if (state->config->reset_device) in cx24116_load_firmware()
582 state->config->reset_device(fe); in cx24116_load_firmware()
588 cx24116_writereg(state, 0xE5, 0x00); in cx24116_load_firmware()
589 cx24116_writereg(state, 0xF1, 0x08); in cx24116_load_firmware()
590 cx24116_writereg(state, 0xF2, 0x13); in cx24116_load_firmware()
593 cx24116_writereg(state, 0xe0, 0x03); in cx24116_load_firmware()
594 cx24116_writereg(state, 0xe0, 0x00); in cx24116_load_firmware()
597 cx24116_writereg(state, CX24116_REG_CLKDIV, 0x46); in cx24116_load_firmware()
598 cx24116_writereg(state, CX24116_REG_RATEDIV, 0x00); in cx24116_load_firmware()
601 cx24116_writereg(state, 0xF0, 0x03); in cx24116_load_firmware()
602 cx24116_writereg(state, 0xF4, 0x81); in cx24116_load_firmware()
603 cx24116_writereg(state, 0xF5, 0x00); in cx24116_load_firmware()
604 cx24116_writereg(state, 0xF6, 0x00); in cx24116_load_firmware()
608 if (state->config->i2c_wr_max) in cx24116_load_firmware()
609 max = state->config->i2c_wr_max; in cx24116_load_firmware()
618 cx24116_writeregN(state, 0xF7, &fw->data[fw->size - remaining], in cx24116_load_firmware()
622 cx24116_writereg(state, 0xF4, 0x10); in cx24116_load_firmware()
623 cx24116_writereg(state, 0xF0, 0x00); in cx24116_load_firmware()
624 cx24116_writereg(state, 0xF8, 0x06); in cx24116_load_firmware()
642 cx24116_writereg(state, CX24116_REG_SSTATUS, 0x00); in cx24116_load_firmware()
653 cx24116_writereg(state, 0xe5, 0x00); in cx24116_load_firmware()
660 if (state->config->mpg_clk_pos_pol) in cx24116_load_firmware()
661 cmd.args[0x04] = state->config->mpg_clk_pos_pol; in cx24116_load_firmware()
678 vers[i] = cx24116_readreg(state, CX24116_REG_MAILBOX); in cx24116_load_firmware()
688 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_status() local
690 int lock = cx24116_readreg(state, CX24116_REG_SSTATUS) & in cx24116_read_status()
711 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_ber() local
715 *ber = (cx24116_readreg(state, CX24116_REG_BER24) << 24) | in cx24116_read_ber()
716 (cx24116_readreg(state, CX24116_REG_BER16) << 16) | in cx24116_read_ber()
717 (cx24116_readreg(state, CX24116_REG_BER8) << 8) | in cx24116_read_ber()
718 cx24116_readreg(state, CX24116_REG_BER0); in cx24116_read_ber()
727 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_signal_strength() local
742 (cx24116_readreg(state, in cx24116_read_signal_strength()
744 (cx24116_readreg(state, CX24116_REG_SIGNAL) << 6); in cx24116_read_signal_strength()
756 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_snr_pct() local
766 snr_reading = cx24116_readreg(state, CX24116_REG_QUALITY0); in cx24116_read_snr_pct()
786 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_snr_esno() local
790 *snr = cx24116_readreg(state, CX24116_REG_QUALITY8) << 8 | in cx24116_read_snr_esno()
791 cx24116_readreg(state, CX24116_REG_QUALITY0); in cx24116_read_snr_esno()
808 struct cx24116_state *state = fe->demodulator_priv; in cx24116_read_ucblocks() local
812 *ucblocks = (cx24116_readreg(state, CX24116_REG_UCB8) << 8) | in cx24116_read_ucblocks()
813 cx24116_readreg(state, CX24116_REG_UCB0); in cx24116_read_ucblocks()
821 struct cx24116_state *state = fe->demodulator_priv; in cx24116_clone_params() local
822 state->dcur = state->dnxt; in cx24116_clone_params()
828 struct cx24116_state *state = fe->demodulator_priv; in cx24116_wait_for_lnb() local
832 cx24116_readreg(state, CX24116_REG_QSTATUS)); in cx24116_wait_for_lnb()
836 if (cx24116_readreg(state, CX24116_REG_QSTATUS) & 0x20) in cx24116_wait_for_lnb()
920 struct cx24116_state *state = fe->demodulator_priv; in cx24116_diseqc_init() local
939 state->dsec_cmd.args[0x00] = CMD_LNBSEND; in cx24116_diseqc_init()
942 state->dsec_cmd.args[CX24116_DISEQC_BURST] = CX24116_DISEQC_MINI_A; in cx24116_diseqc_init()
945 state->dsec_cmd.args[CX24116_DISEQC_ARG2_2] = 0x02; in cx24116_diseqc_init()
946 state->dsec_cmd.args[CX24116_DISEQC_ARG3_0] = 0x00; in cx24116_diseqc_init()
948 state->dsec_cmd.args[CX24116_DISEQC_ARG4_0] = 0x00; in cx24116_diseqc_init()
951 state->dsec_cmd.args[CX24116_DISEQC_MSGLEN] = 0x00; in cx24116_diseqc_init()
954 state->dsec_cmd.len = CX24116_DISEQC_MSGOFS; in cx24116_diseqc_init()
963 struct cx24116_state *state = fe->demodulator_priv; in cx24116_send_diseqc_msg() local
983 state->dsec_cmd.args[CX24116_DISEQC_MSGOFS + i] = d->msg[i]; in cx24116_send_diseqc_msg()
986 state->dsec_cmd.args[CX24116_DISEQC_MSGLEN] = d->msg_len; in cx24116_send_diseqc_msg()
989 state->dsec_cmd.len = CX24116_DISEQC_MSGOFS + in cx24116_send_diseqc_msg()
990 state->dsec_cmd.args[CX24116_DISEQC_MSGLEN]; in cx24116_send_diseqc_msg()
999 state->dsec_cmd.args[CX24116_DISEQC_BURST] = 0; in cx24116_send_diseqc_msg()
1021 state->dsec_cmd.args[CX24116_DISEQC_BURST] = in cx24116_send_diseqc_msg()
1025 state->dsec_cmd.args[CX24116_DISEQC_BURST]); in cx24116_send_diseqc_msg()
1037 ret = cx24116_cmd_execute(fe, &state->dsec_cmd); in cx24116_send_diseqc_msg()
1050 msleep((state->dsec_cmd.args[CX24116_DISEQC_MSGLEN] << 4) + in cx24116_send_diseqc_msg()
1060 struct cx24116_state *state = fe->demodulator_priv; in cx24116_diseqc_send_burst() local
1067 state->dsec_cmd.args[CX24116_DISEQC_BURST] = in cx24116_diseqc_send_burst()
1070 state->dsec_cmd.args[CX24116_DISEQC_BURST] = in cx24116_diseqc_send_burst()
1091 ret = cx24116_cmd_execute(fe, &state->dsec_cmd); in cx24116_diseqc_send_burst()
1105 msleep((state->dsec_cmd.args[CX24116_DISEQC_MSGLEN] << 4) + 60); in cx24116_diseqc_send_burst()
1112 struct cx24116_state *state = fe->demodulator_priv; in cx24116_release() local
1114 kfree(state); in cx24116_release()
1122 struct cx24116_state *state = NULL; in cx24116_attach() local
1128 state = kzalloc(sizeof(struct cx24116_state), GFP_KERNEL); in cx24116_attach()
1129 if (state == NULL) in cx24116_attach()
1132 state->config = config; in cx24116_attach()
1133 state->i2c = i2c; in cx24116_attach()
1136 ret = (cx24116_readreg(state, 0xFF) << 8) | in cx24116_attach()
1137 cx24116_readreg(state, 0xFE); in cx24116_attach()
1144 memcpy(&state->frontend.ops, &cx24116_ops, in cx24116_attach()
1146 state->frontend.demodulator_priv = state; in cx24116_attach()
1147 return &state->frontend; in cx24116_attach()
1149 error2: kfree(state); in cx24116_attach()
1161 struct cx24116_state *state = fe->demodulator_priv; in cx24116_initfe() local
1168 cx24116_writereg(state, 0xe0, 0); in cx24116_initfe()
1169 cx24116_writereg(state, 0xe1, 0); in cx24116_initfe()
1170 cx24116_writereg(state, 0xea, 0); in cx24116_initfe()
1193 struct cx24116_state *state = fe->demodulator_priv; in cx24116_sleep() local
1208 cx24116_writereg(state, 0xea, 0xff); in cx24116_sleep()
1209 cx24116_writereg(state, 0xe1, 1); in cx24116_sleep()
1210 cx24116_writereg(state, 0xe0, 1); in cx24116_sleep()
1220 struct cx24116_state *state = fe->demodulator_priv; in cx24116_set_frontend() local
1240 state->dnxt.pilot_val = CX24116_PILOT_OFF; in cx24116_set_frontend()
1248 state->dnxt.rolloff_val = CX24116_ROLLOFF_035; in cx24116_set_frontend()
1266 state->dnxt.pilot_val = (c->modulation == QPSK) in cx24116_set_frontend()
1271 state->dnxt.pilot_val = CX24116_PILOT_OFF; in cx24116_set_frontend()
1274 state->dnxt.pilot_val = CX24116_PILOT_ON; in cx24116_set_frontend()
1284 state->dnxt.rolloff_val = CX24116_ROLLOFF_020; in cx24116_set_frontend()
1287 state->dnxt.rolloff_val = CX24116_ROLLOFF_025; in cx24116_set_frontend()
1290 state->dnxt.rolloff_val = CX24116_ROLLOFF_035; in cx24116_set_frontend()
1305 state->dnxt.delsys = c->delivery_system; in cx24116_set_frontend()
1306 state->dnxt.modulation = c->modulation; in cx24116_set_frontend()
1307 state->dnxt.frequency = c->frequency; in cx24116_set_frontend()
1308 state->dnxt.pilot = c->pilot; in cx24116_set_frontend()
1309 state->dnxt.rolloff = c->rolloff; in cx24116_set_frontend()
1311 ret = cx24116_set_inversion(state, c->inversion); in cx24116_set_frontend()
1316 ret = cx24116_set_fec(state, c->delivery_system, c->modulation, c->fec_inner); in cx24116_set_frontend()
1320 ret = cx24116_set_symbolrate(state, c->symbol_rate); in cx24116_set_frontend()
1327 dprintk("%s: delsys = %d\n", __func__, state->dcur.delsys); in cx24116_set_frontend()
1328 dprintk("%s: modulation = %d\n", __func__, state->dcur.modulation); in cx24116_set_frontend()
1329 dprintk("%s: frequency = %d\n", __func__, state->dcur.frequency); in cx24116_set_frontend()
1331 state->dcur.pilot, state->dcur.pilot_val); in cx24116_set_frontend()
1334 state->dcur.rolloff, state->dcur.rolloff_val); in cx24116_set_frontend()
1335 dprintk("%s: symbol_rate = %d\n", __func__, state->dcur.symbol_rate); in cx24116_set_frontend()
1337 state->dcur.fec, state->dcur.fec_mask, state->dcur.fec_val); in cx24116_set_frontend()
1339 state->dcur.inversion, state->dcur.inversion_val); in cx24116_set_frontend()
1342 if (state->config->set_ts_params) in cx24116_set_frontend()
1343 state->config->set_ts_params(fe, 0); in cx24116_set_frontend()
1357 cmd.args[0x01] = (state->dcur.frequency & 0xff0000) >> 16; in cx24116_set_frontend()
1358 cmd.args[0x02] = (state->dcur.frequency & 0x00ff00) >> 8; in cx24116_set_frontend()
1359 cmd.args[0x03] = (state->dcur.frequency & 0x0000ff); in cx24116_set_frontend()
1362 cmd.args[0x04] = ((state->dcur.symbol_rate / 1000) & 0xff00) >> 8; in cx24116_set_frontend()
1363 cmd.args[0x05] = ((state->dcur.symbol_rate / 1000) & 0x00ff); in cx24116_set_frontend()
1366 cmd.args[0x06] = state->dcur.inversion_val; in cx24116_set_frontend()
1369 cmd.args[0x07] = state->dcur.fec_val | state->dcur.pilot_val; in cx24116_set_frontend()
1375 cmd.args[0x0c] = state->dcur.rolloff_val; in cx24116_set_frontend()
1376 cmd.args[0x0d] = state->dcur.fec_mask; in cx24116_set_frontend()
1378 if (state->dcur.symbol_rate > 30000000) { in cx24116_set_frontend()
1384 cx24116_writereg(state, CX24116_REG_CLKDIV, 0x44); in cx24116_set_frontend()
1385 cx24116_writereg(state, CX24116_REG_RATEDIV, 0x01); in cx24116_set_frontend()
1392 cx24116_writereg(state, CX24116_REG_CLKDIV, 0x46); in cx24116_set_frontend()
1393 cx24116_writereg(state, CX24116_REG_RATEDIV, 0x00); in cx24116_set_frontend()
1404 status = cx24116_readreg(state, CX24116_REG_SSTATUS) in cx24116_set_frontend()
1406 cx24116_writereg(state, CX24116_REG_SSTATUS, status); in cx24116_set_frontend()
1432 if (state->dcur.pilot == PILOT_AUTO) in cx24116_set_frontend()