Lines Matching refs:state

181 static int af9013_write_ofsm_regs(struct af9013_state *state, u16 reg, u8 *val,  in af9013_write_ofsm_regs()  argument
185 return af9013_wr_regs_i2c(state, mbox, reg, val, len); in af9013_write_ofsm_regs()
188 static int af9013_wr_reg_bits(struct af9013_state *state, u16 reg, int pos, in af9013_wr_reg_bits() argument
196 ret = af9013_rd_reg(state, reg, &tmp); in af9013_wr_reg_bits()
206 return af9013_wr_reg(state, reg, val); in af9013_wr_reg_bits()
209 static int af9013_rd_reg_bits(struct af9013_state *state, u16 reg, int pos, in af9013_rd_reg_bits() argument
215 ret = af9013_rd_reg(state, reg, &tmp); in af9013_rd_reg_bits()
225 static int af9013_set_gpio(struct af9013_state *state, u8 gpio, u8 gpioval) in af9013_set_gpio() argument
231 dev_dbg(&state->i2c->dev, "%s: gpio=%d gpioval=%02x\n", in af9013_set_gpio()
250 dev_err(&state->i2c->dev, "%s: invalid gpio=%d\n", in af9013_set_gpio()
268 ret = af9013_wr_reg_bits(state, addr, pos, 4, gpioval); in af9013_set_gpio()
274 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_set_gpio()
278 static u32 af9013_div(struct af9013_state *state, u32 a, u32 b, u32 x) in af9013_div() argument
282 dev_dbg(&state->i2c->dev, "%s: a=%d b=%d x=%d\n", __func__, a, b, x); in af9013_div()
299 dev_dbg(&state->i2c->dev, "%s: a=%d b=%d x=%d r=%d r=%x\n", in af9013_div()
305 static int af9013_power_ctrl(struct af9013_state *state, u8 onoff) in af9013_power_ctrl() argument
310 dev_dbg(&state->i2c->dev, "%s: onoff=%d\n", __func__, onoff); in af9013_power_ctrl()
313 ret = af9013_wr_reg_bits(state, 0xd417, 4, 1, 1); in af9013_power_ctrl()
318 ret = af9013_wr_reg(state, 0xaeff, 1); in af9013_power_ctrl()
324 ret = af9013_rd_reg_bits(state, 0xd417, 1, 1, &tmp); in af9013_power_ctrl()
339 ret = af9013_wr_reg_bits(state, 0xd417, 1, 1, 0); in af9013_power_ctrl()
344 ret = af9013_wr_reg_bits(state, 0xd417, 4, 1, 0); in af9013_power_ctrl()
347 ret = af9013_wr_reg_bits(state, 0xd73a, 3, 1, 0); in af9013_power_ctrl()
350 ret = af9013_wr_reg_bits(state, 0xd73a, 3, 1, 1); in af9013_power_ctrl()
355 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_power_ctrl()
361 struct af9013_state *state = fe->demodulator_priv; in af9013_statistics_ber_unc_start() local
364 dev_dbg(&state->i2c->dev, "%s:\n", __func__); in af9013_statistics_ber_unc_start()
367 ret = af9013_wr_reg_bits(state, 0xd391, 4, 1, 1); in af9013_statistics_ber_unc_start()
373 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_statistics_ber_unc_start()
379 struct af9013_state *state = fe->demodulator_priv; in af9013_statistics_ber_unc_result() local
383 dev_dbg(&state->i2c->dev, "%s:\n", __func__); in af9013_statistics_ber_unc_result()
386 ret = af9013_rd_reg_bits(state, 0xd391, 4, 1, &buf[0]); in af9013_statistics_ber_unc_result()
391 dev_dbg(&state->i2c->dev, "%s: not ready\n", __func__); in af9013_statistics_ber_unc_result()
395 ret = af9013_rd_regs(state, 0xd387, buf, 5); in af9013_statistics_ber_unc_result()
399 state->ber = (buf[2] << 16) | (buf[1] << 8) | buf[0]; in af9013_statistics_ber_unc_result()
400 state->ucblocks += (buf[4] << 8) | buf[3]; in af9013_statistics_ber_unc_result()
404 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_statistics_ber_unc_result()
410 struct af9013_state *state = fe->demodulator_priv; in af9013_statistics_snr_start() local
413 dev_dbg(&state->i2c->dev, "%s:\n", __func__); in af9013_statistics_snr_start()
416 ret = af9013_wr_reg_bits(state, 0xd2e1, 3, 1, 1); in af9013_statistics_snr_start()
422 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_statistics_snr_start()
428 struct af9013_state *state = fe->demodulator_priv; in af9013_statistics_snr_result() local
434 dev_dbg(&state->i2c->dev, "%s:\n", __func__); in af9013_statistics_snr_result()
437 ret = af9013_rd_reg_bits(state, 0xd2e1, 3, 1, &tmp); in af9013_statistics_snr_result()
442 dev_dbg(&state->i2c->dev, "%s: not ready\n", __func__); in af9013_statistics_snr_result()
447 ret = af9013_rd_regs(state, 0xd2e3, buf, 3); in af9013_statistics_snr_result()
454 ret = af9013_rd_reg(state, 0xd3c1, &tmp); in af9013_statistics_snr_result()
481 state->snr = tmp * 10; /* dB/10 */ in af9013_statistics_snr_result()
485 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_statistics_snr_result()
491 struct af9013_state *state = fe->demodulator_priv; in af9013_statistics_signal_strength() local
496 dev_dbg(&state->i2c->dev, "%s:\n", __func__); in af9013_statistics_signal_strength()
498 if (!state->signal_strength_en) in af9013_statistics_signal_strength()
501 ret = af9013_rd_regs(state, 0xd07c, buf, 2); in af9013_statistics_signal_strength()
509 (9 * (state->rf_50 + state->if_50) - \ in af9013_statistics_signal_strength()
510 11 * (state->rf_80 + state->if_80))) * \ in af9013_statistics_signal_strength()
512 11 * (state->rf_80 + state->if_80)); in af9013_statistics_signal_strength()
518 state->signal_strength = signal_strength; in af9013_statistics_signal_strength()
522 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_statistics_signal_strength()
528 struct af9013_state *state = container_of(work, in af9013_statistics_work() local
533 if (!(state->fe_status & FE_HAS_LOCK)) { in af9013_statistics_work()
534 state->statistics_step = 0; in af9013_statistics_work()
535 state->ber = 0; in af9013_statistics_work()
536 state->snr = 0; in af9013_statistics_work()
539 switch (state->statistics_step) { in af9013_statistics_work()
541 state->statistics_step = 0; in af9013_statistics_work()
543 af9013_statistics_signal_strength(&state->fe); in af9013_statistics_work()
544 state->statistics_step++; in af9013_statistics_work()
548 af9013_statistics_snr_start(&state->fe); in af9013_statistics_work()
549 state->statistics_step++; in af9013_statistics_work()
553 af9013_statistics_ber_unc_start(&state->fe); in af9013_statistics_work()
554 state->statistics_step++; in af9013_statistics_work()
558 af9013_statistics_snr_result(&state->fe); in af9013_statistics_work()
559 state->statistics_step++; in af9013_statistics_work()
563 af9013_statistics_ber_unc_result(&state->fe); in af9013_statistics_work()
564 state->statistics_step++; in af9013_statistics_work()
569 schedule_delayed_work(&state->statistics_work, in af9013_statistics_work()
585 struct af9013_state *state = fe->demodulator_priv; in af9013_set_frontend() local
592 dev_dbg(&state->i2c->dev, "%s: frequency=%d bandwidth_hz=%d\n", in af9013_set_frontend()
600 if (c->bandwidth_hz != state->bandwidth_hz) { in af9013_set_frontend()
602 if (coeff_lut[i].clock == state->config.clock && in af9013_set_frontend()
612 ret = af9013_wr_regs(state, 0xae00, coeff_lut[i].val, in af9013_set_frontend()
617 if (c->bandwidth_hz != state->bandwidth_hz || state->first_tune) { in af9013_set_frontend()
622 if_frequency = state->config.if_frequency; in af9013_set_frontend()
624 dev_dbg(&state->i2c->dev, "%s: if_frequency=%d\n", in af9013_set_frontend()
629 while (sampling_freq > (state->config.clock / 2)) in af9013_set_frontend()
630 sampling_freq -= state->config.clock; in af9013_set_frontend()
634 spec_inv = state->config.spec_inv; in af9013_set_frontend()
636 spec_inv = !state->config.spec_inv; in af9013_set_frontend()
639 freq_cw = af9013_div(state, sampling_freq, state->config.clock, in af9013_set_frontend()
655 ret = af9013_wr_regs(state, 0xd140, buf, 3); in af9013_set_frontend()
659 ret = af9013_wr_regs(state, 0x9be7, buf, 6); in af9013_set_frontend()
665 ret = af9013_wr_reg_bits(state, 0xd330, 3, 1, 1); in af9013_set_frontend()
670 ret = af9013_wr_reg_bits(state, 0xd507, 6, 1, 0); in af9013_set_frontend()
675 ret = af9013_wr_reg_bits(state, 0x9bfe, 0, 1, 0); in af9013_set_frontend()
680 ret = af9013_wr_reg_bits(state, 0x9bc2, 0, 1, 0); in af9013_set_frontend()
698 dev_dbg(&state->i2c->dev, "%s: invalid transmission_mode\n", in af9013_set_frontend()
719 dev_dbg(&state->i2c->dev, "%s: invalid guard_interval\n", in af9013_set_frontend()
740 dev_dbg(&state->i2c->dev, "%s: invalid hierarchy\n", __func__); in af9013_set_frontend()
757 dev_dbg(&state->i2c->dev, "%s: invalid modulation\n", __func__); in af9013_set_frontend()
783 dev_dbg(&state->i2c->dev, "%s: invalid code_rate_HP\n", in af9013_set_frontend()
809 dev_dbg(&state->i2c->dev, "%s: invalid code_rate_LP\n", in af9013_set_frontend()
824 dev_dbg(&state->i2c->dev, "%s: invalid bandwidth_hz\n", in af9013_set_frontend()
830 ret = af9013_wr_regs(state, 0xd3c0, buf, 3); in af9013_set_frontend()
836 ret = af9013_wr_reg(state, 0xaefd, 0); in af9013_set_frontend()
840 dev_dbg(&state->i2c->dev, "%s: auto params\n", __func__); in af9013_set_frontend()
843 ret = af9013_wr_reg(state, 0xaefd, 1); in af9013_set_frontend()
847 ret = af9013_wr_reg(state, 0xaefe, 0); in af9013_set_frontend()
851 dev_dbg(&state->i2c->dev, "%s: manual params\n", __func__); in af9013_set_frontend()
855 ret = af9013_wr_reg(state, 0xffff, 0); in af9013_set_frontend()
859 state->bandwidth_hz = c->bandwidth_hz; in af9013_set_frontend()
860 state->set_frontend_jiffies = jiffies; in af9013_set_frontend()
861 state->first_tune = false; in af9013_set_frontend()
865 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_set_frontend()
872 struct af9013_state *state = fe->demodulator_priv; in af9013_get_frontend() local
876 dev_dbg(&state->i2c->dev, "%s:\n", __func__); in af9013_get_frontend()
878 ret = af9013_rd_regs(state, 0xd3c0, buf, 3); in af9013_get_frontend()
982 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_get_frontend()
988 struct af9013_state *state = fe->demodulator_priv; in af9013_read_status() local
997 state->read_status_jiffies + msecs_to_jiffies(2000)) && in af9013_read_status()
999 state->set_frontend_jiffies + msecs_to_jiffies(4000)) in af9013_read_status()
1001 *status = state->fe_status; in af9013_read_status()
1008 ret = af9013_rd_reg_bits(state, 0xd507, 6, 1, &tmp); in af9013_read_status()
1018 ret = af9013_rd_reg_bits(state, 0xd330, 3, 1, &tmp); in af9013_read_status()
1027 state->fe_status = *status; in af9013_read_status()
1028 state->read_status_jiffies = jiffies; in af9013_read_status()
1032 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_read_status()
1038 struct af9013_state *state = fe->demodulator_priv; in af9013_read_snr() local
1039 *snr = state->snr; in af9013_read_snr()
1045 struct af9013_state *state = fe->demodulator_priv; in af9013_read_signal_strength() local
1046 *strength = state->signal_strength; in af9013_read_signal_strength()
1052 struct af9013_state *state = fe->demodulator_priv; in af9013_read_ber() local
1053 *ber = state->ber; in af9013_read_ber()
1059 struct af9013_state *state = fe->demodulator_priv; in af9013_read_ucblocks() local
1060 *ucblocks = state->ucblocks; in af9013_read_ucblocks()
1066 struct af9013_state *state = fe->demodulator_priv; in af9013_init() local
1072 dev_dbg(&state->i2c->dev, "%s:\n", __func__); in af9013_init()
1075 ret = af9013_power_ctrl(state, 1); in af9013_init()
1080 ret = af9013_wr_reg(state, 0xd73a, 0xa4); in af9013_init()
1085 ret = af9013_wr_regs(state, 0x9bf2, state->config.api_version, 4); in af9013_init()
1090 switch (state->config.clock) { in af9013_init()
1104 dev_err(&state->i2c->dev, "%s: invalid clock\n", in af9013_init()
1109 adc_cw = af9013_div(state, state->config.clock, 1000000ul, 19); in af9013_init()
1114 ret = af9013_wr_regs(state, 0xd180, buf, 3); in af9013_init()
1118 ret = af9013_wr_reg_bits(state, 0x9bd2, 0, 4, tmp); in af9013_init()
1123 ret = af9013_wr_reg(state, 0xd416, 0x14); in af9013_init()
1128 ret = af9013_wr_reg_bits(state, 0xd700, 1, 1, 1); in af9013_init()
1133 ret = af9013_wr_reg_bits(state, 0xd700, 2, 1, 0); in af9013_init()
1138 ret = af9013_wr_reg_bits(state, 0xd371, 1, 1, 1); in af9013_init()
1143 if (state->config.ts_mode == AF9013_TS_USB) { in af9013_init()
1145 ret = af9013_wr_reg_bits(state, 0xd50b, 2, 1, 1); in af9013_init()
1150 ret = af9013_wr_reg_bits(state, 0xd500, 3, 1, 1); in af9013_init()
1155 ret = af9013_wr_reg_bits(state, 0xd502, 4, 1, 1); in af9013_init()
1160 ret = af9013_wr_reg_bits(state, 0xd520, 4, 1, 1); in af9013_init()
1165 dev_dbg(&state->i2c->dev, "%s: load ofsm settings\n", __func__); in af9013_init()
1169 ret = af9013_wr_reg_bits(state, init[i].addr, init[i].pos, in af9013_init()
1176 dev_dbg(&state->i2c->dev, "%s: load tuner specific settings\n", in af9013_init()
1178 switch (state->config.tuner) { in af9013_init()
1223 ret = af9013_wr_reg_bits(state, init[i].addr, init[i].pos, in af9013_init()
1230 ret = af9013_wr_reg_bits(state, 0xd500, 1, 2, state->config.ts_mode); in af9013_init()
1235 ret = af9013_wr_reg_bits(state, 0xd730, 0, 1, 1); in af9013_init()
1240 if (!state->signal_strength_en) { in af9013_init()
1241 ret = af9013_rd_reg_bits(state, 0x9bee, 0, 1, in af9013_init()
1242 &state->signal_strength_en); in af9013_init()
1248 if (state->signal_strength_en && !state->rf_50) { in af9013_init()
1249 ret = af9013_rd_reg(state, 0x9bbd, &state->rf_50); in af9013_init()
1253 ret = af9013_rd_reg(state, 0x9bd0, &state->rf_80); in af9013_init()
1257 ret = af9013_rd_reg(state, 0x9be2, &state->if_50); in af9013_init()
1261 ret = af9013_rd_reg(state, 0x9be4, &state->if_80); in af9013_init()
1267 ret = af9013_wr_reg(state, 0xd2e2, 1); in af9013_init()
1274 ret = af9013_wr_regs(state, 0xd385, buf, 2); in af9013_init()
1279 ret = af9013_wr_reg_bits(state, 0xd392, 1, 1, 1); in af9013_init()
1283 state->first_tune = true; in af9013_init()
1284 schedule_delayed_work(&state->statistics_work, msecs_to_jiffies(400)); in af9013_init()
1288 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_init()
1294 struct af9013_state *state = fe->demodulator_priv; in af9013_sleep() local
1297 dev_dbg(&state->i2c->dev, "%s:\n", __func__); in af9013_sleep()
1300 cancel_delayed_work_sync(&state->statistics_work); in af9013_sleep()
1303 ret = af9013_wr_reg_bits(state, 0xd730, 0, 1, 0); in af9013_sleep()
1308 ret = af9013_power_ctrl(state, 0); in af9013_sleep()
1314 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_sleep()
1321 struct af9013_state *state = fe->demodulator_priv; in af9013_i2c_gate_ctrl() local
1323 dev_dbg(&state->i2c->dev, "%s: enable=%d\n", __func__, enable); in af9013_i2c_gate_ctrl()
1326 if (state->i2c_gate_state == enable) in af9013_i2c_gate_ctrl()
1329 if (state->config.ts_mode == AF9013_TS_USB) in af9013_i2c_gate_ctrl()
1330 ret = af9013_wr_reg_bits(state, 0xd417, 3, 1, enable); in af9013_i2c_gate_ctrl()
1332 ret = af9013_wr_reg_bits(state, 0xd607, 2, 1, enable); in af9013_i2c_gate_ctrl()
1336 state->i2c_gate_state = enable; in af9013_i2c_gate_ctrl()
1340 dev_dbg(&state->i2c->dev, "%s: failed=%d\n", __func__, ret); in af9013_i2c_gate_ctrl()
1346 struct af9013_state *state = fe->demodulator_priv; in af9013_release() local
1347 kfree(state); in af9013_release()
1352 static int af9013_download_firmware(struct af9013_state *state) in af9013_download_firmware() argument
1363 ret = af9013_rd_reg(state, 0x98be, &val); in af9013_download_firmware()
1367 dev_dbg(&state->i2c->dev, "%s: firmware status=%02x\n", in af9013_download_firmware()
1373 dev_info(&state->i2c->dev, "%s: found a '%s' in cold state, will try " \ in af9013_download_firmware()
1378 ret = request_firmware(&fw, fw_file, state->i2c->dev.parent); in af9013_download_firmware()
1380 dev_info(&state->i2c->dev, "%s: did not find the firmware " \ in af9013_download_firmware()
1387 dev_info(&state->i2c->dev, "%s: downloading firmware from file '%s'\n", in af9013_download_firmware()
1400 ret = af9013_write_ofsm_regs(state, 0x50fc, in af9013_download_firmware()
1412 ret = af9013_write_ofsm_regs(state, in af9013_download_firmware()
1416 dev_err(&state->i2c->dev, in af9013_download_firmware()
1424 ret = af9013_wr_reg(state, 0xe205, 1); in af9013_download_firmware()
1432 ret = af9013_rd_reg(state, 0x98be, &val); in af9013_download_firmware()
1436 dev_dbg(&state->i2c->dev, "%s: firmware status=%02x\n", in af9013_download_firmware()
1444 dev_err(&state->i2c->dev, "%s: firmware did not run\n", in af9013_download_firmware()
1448 dev_err(&state->i2c->dev, "%s: firmware boot timeout\n", in af9013_download_firmware()
1458 dev_info(&state->i2c->dev, "%s: found a '%s' in warm state\n", in af9013_download_firmware()
1467 struct af9013_state *state = NULL; in af9013_attach() local
1471 state = kzalloc(sizeof(struct af9013_state), GFP_KERNEL); in af9013_attach()
1472 if (state == NULL) in af9013_attach()
1476 state->i2c = i2c; in af9013_attach()
1477 memcpy(&state->config, config, sizeof(struct af9013_config)); in af9013_attach()
1480 if (state->config.ts_mode != AF9013_TS_USB) { in af9013_attach()
1481 ret = af9013_download_firmware(state); in af9013_attach()
1487 ret = af9013_rd_regs(state, 0x5103, buf, 4); in af9013_attach()
1491 dev_info(&state->i2c->dev, "%s: firmware version %d.%d.%d.%d\n", in af9013_attach()
1495 for (i = 0; i < sizeof(state->config.gpio); i++) { in af9013_attach()
1496 ret = af9013_set_gpio(state, i, state->config.gpio[i]); in af9013_attach()
1502 memcpy(&state->fe.ops, &af9013_ops, in af9013_attach()
1504 state->fe.demodulator_priv = state; in af9013_attach()
1506 INIT_DELAYED_WORK(&state->statistics_work, af9013_statistics_work); in af9013_attach()
1508 return &state->fe; in af9013_attach()
1510 kfree(state); in af9013_attach()