Lines Matching refs:state
67 static int lg216x_write_reg(struct lg216x_state *state, u16 reg, u8 val) in lg216x_write_reg() argument
72 .addr = state->cfg->i2c_addr, .flags = 0, in lg216x_write_reg()
78 ret = i2c_transfer(state->i2c_adap, &msg, 1); in lg216x_write_reg()
91 static int lg216x_read_reg(struct lg216x_state *state, u16 reg, u8 *val) in lg216x_read_reg() argument
96 { .addr = state->cfg->i2c_addr, in lg216x_read_reg()
98 { .addr = state->cfg->i2c_addr, in lg216x_read_reg()
104 ret = i2c_transfer(state->i2c_adap, msg, 2); in lg216x_read_reg()
108 state->cfg->i2c_addr, reg, ret); in lg216x_read_reg()
122 static int lg216x_write_regs(struct lg216x_state *state, in lg216x_write_regs() argument
130 ret = lg216x_write_reg(state, regs[i].reg, regs[i].val); in lg216x_write_regs()
137 static int lg216x_set_reg_bit(struct lg216x_state *state, in lg216x_set_reg_bit() argument
145 ret = lg216x_read_reg(state, reg, &val); in lg216x_set_reg_bit()
152 ret = lg216x_write_reg(state, reg, val); in lg216x_set_reg_bit()
162 struct lg216x_state *state = fe->demodulator_priv; in lg216x_i2c_gate_ctrl() local
165 if (state->cfg->deny_i2c_rptr) in lg216x_i2c_gate_ctrl()
170 ret = lg216x_set_reg_bit(state, 0x0000, 0, enable ? 0 : 1); in lg216x_i2c_gate_ctrl()
177 static int lg216x_soft_reset(struct lg216x_state *state) in lg216x_soft_reset() argument
183 ret = lg216x_write_reg(state, 0x0002, 0x00); in lg216x_soft_reset()
188 ret = lg216x_write_reg(state, 0x0002, 0x01); in lg216x_soft_reset()
192 state->last_reset = jiffies_to_msecs(jiffies); in lg216x_soft_reset()
197 static int lg216x_initialize(struct lg216x_state *state) in lg216x_initialize() argument
226 switch (state->cfg->lg_chip) { in lg216x_initialize()
228 ret = lg216x_write_regs(state, in lg216x_initialize()
232 ret = lg216x_write_regs(state, in lg216x_initialize()
242 ret = lg216x_soft_reset(state); in lg216x_initialize()
250 static int lg216x_set_if(struct lg216x_state *state) in lg216x_set_if() argument
255 lg_dbg("%d KHz\n", state->cfg->if_khz); in lg216x_set_if()
257 ret = lg216x_read_reg(state, 0x0132, &val); in lg216x_set_if()
262 val |= (0 == state->cfg->if_khz) ? 0x04 : 0x00; in lg216x_set_if()
264 ret = lg216x_write_reg(state, 0x0132, val); in lg216x_set_if()
274 static int lg2160_agc_fix(struct lg216x_state *state, in lg2160_agc_fix() argument
280 ret = lg216x_read_reg(state, 0x0100, &val); in lg2160_agc_fix()
288 ret = lg216x_write_reg(state, 0x0100, val); in lg2160_agc_fix()
295 static int lg2160_agc_freeze(struct lg216x_state *state,
301 ret = lg216x_read_reg(state, 0x0100, &val);
309 ret = lg216x_write_reg(state, 0x0100, val);
316 static int lg2160_agc_polarity(struct lg216x_state *state, in lg2160_agc_polarity() argument
322 ret = lg216x_read_reg(state, 0x0100, &val); in lg2160_agc_polarity()
330 ret = lg216x_write_reg(state, 0x0100, val); in lg2160_agc_polarity()
336 static int lg2160_tuner_pwr_save_polarity(struct lg216x_state *state, in lg2160_tuner_pwr_save_polarity() argument
342 ret = lg216x_read_reg(state, 0x0008, &val); in lg2160_tuner_pwr_save_polarity()
349 ret = lg216x_write_reg(state, 0x0008, val); in lg2160_tuner_pwr_save_polarity()
355 static int lg2160_spectrum_polarity(struct lg216x_state *state, in lg2160_spectrum_polarity() argument
361 ret = lg216x_read_reg(state, 0x0132, &val); in lg2160_spectrum_polarity()
368 ret = lg216x_write_reg(state, 0x0132, val); in lg2160_spectrum_polarity()
371 return lg216x_soft_reset(state); in lg2160_spectrum_polarity()
374 static int lg2160_tuner_pwr_save(struct lg216x_state *state, int onoff) in lg2160_tuner_pwr_save() argument
379 ret = lg216x_read_reg(state, 0x0007, &val); in lg2160_tuner_pwr_save()
386 ret = lg216x_write_reg(state, 0x0007, val); in lg2160_tuner_pwr_save()
392 static int lg216x_set_parade(struct lg216x_state *state, int id) in lg216x_set_parade() argument
396 ret = lg216x_write_reg(state, 0x013e, id & 0x7f); in lg216x_set_parade()
400 state->parade_id = id & 0x7f; in lg216x_set_parade()
405 static int lg216x_set_ensemble(struct lg216x_state *state, int id) in lg216x_set_ensemble() argument
411 switch (state->cfg->lg_chip) { in lg216x_set_ensemble()
421 ret = lg216x_read_reg(state, reg, &val); in lg216x_set_ensemble()
428 ret = lg216x_write_reg(state, reg, val); in lg216x_set_ensemble()
434 static int lg2160_set_spi_clock(struct lg216x_state *state) in lg2160_set_spi_clock() argument
439 ret = lg216x_read_reg(state, 0x0014, &val); in lg2160_set_spi_clock()
444 val |= (state->cfg->spi_clock << 2); in lg2160_set_spi_clock()
446 ret = lg216x_write_reg(state, 0x0014, val); in lg2160_set_spi_clock()
452 static int lg2161_set_output_interface(struct lg216x_state *state) in lg2161_set_output_interface() argument
457 ret = lg216x_read_reg(state, 0x0014, &val); in lg2161_set_output_interface()
462 val |= state->cfg->output_if; /* FIXME: needs sanity check */ in lg2161_set_output_interface()
464 ret = lg216x_write_reg(state, 0x0014, val); in lg2161_set_output_interface()
470 static int lg216x_enable_fic(struct lg216x_state *state, int onoff) in lg216x_enable_fic() argument
474 ret = lg216x_write_reg(state, 0x0017, 0x23); in lg216x_enable_fic()
478 ret = lg216x_write_reg(state, 0x0016, 0xfc); in lg216x_enable_fic()
482 switch (state->cfg->lg_chip) { in lg216x_enable_fic()
484 ret = lg216x_write_reg(state, 0x0016, in lg216x_enable_fic()
488 ret = lg216x_write_reg(state, 0x0016, (onoff) ? 0x10 : 0x00); in lg216x_enable_fic()
494 ret = lg216x_initialize(state); in lg216x_enable_fic()
499 ret = lg216x_write_reg(state, 0x0017, 0x03); in lg216x_enable_fic()
508 static int lg216x_get_fic_version(struct lg216x_state *state, u8 *ficver) in lg216x_get_fic_version() argument
515 ret = lg216x_read_reg(state, 0x0128, &val); in lg216x_get_fic_version()
525 static int lg2160_get_parade_id(struct lg216x_state *state, u8 *id)
532 ret = lg216x_read_reg(state, 0x0123, &val);
542 static int lg216x_get_nog(struct lg216x_state *state, u8 *nog) in lg216x_get_nog() argument
549 ret = lg216x_read_reg(state, 0x0124, &val); in lg216x_get_nog()
558 static int lg216x_get_tnog(struct lg216x_state *state, u8 *tnog) in lg216x_get_tnog() argument
565 ret = lg216x_read_reg(state, 0x0125, &val); in lg216x_get_tnog()
574 static int lg216x_get_sgn(struct lg216x_state *state, u8 *sgn) in lg216x_get_sgn() argument
581 ret = lg216x_read_reg(state, 0x0124, &val); in lg216x_get_sgn()
590 static int lg216x_get_prc(struct lg216x_state *state, u8 *prc) in lg216x_get_prc() argument
597 ret = lg216x_read_reg(state, 0x0125, &val); in lg216x_get_prc()
608 static int lg216x_get_rs_frame_mode(struct lg216x_state *state, in lg216x_get_rs_frame_mode() argument
614 switch (state->cfg->lg_chip) { in lg216x_get_rs_frame_mode()
616 ret = lg216x_read_reg(state, 0x0410, &val); in lg216x_get_rs_frame_mode()
619 ret = lg216x_read_reg(state, 0x0513, &val); in lg216x_get_rs_frame_mode()
648 int lg216x_get_rs_frame_ensemble(struct lg216x_state *state, in lg216x_get_rs_frame_ensemble() argument
654 switch (state->cfg->lg_chip) { in lg216x_get_rs_frame_ensemble()
656 ret = lg216x_read_reg(state, 0x0400, &val); in lg216x_get_rs_frame_ensemble()
659 ret = lg216x_read_reg(state, 0x0500, &val); in lg216x_get_rs_frame_ensemble()
673 static int lg216x_get_rs_code_mode(struct lg216x_state *state, in lg216x_get_rs_code_mode() argument
680 switch (state->cfg->lg_chip) { in lg216x_get_rs_code_mode()
682 ret = lg216x_read_reg(state, 0x0410, &val); in lg216x_get_rs_code_mode()
685 ret = lg216x_read_reg(state, 0x0513, &val); in lg216x_get_rs_code_mode()
699 static int lg216x_get_sccc_block_mode(struct lg216x_state *state, in lg216x_get_sccc_block_mode() argument
705 switch (state->cfg->lg_chip) { in lg216x_get_sccc_block_mode()
707 ret = lg216x_read_reg(state, 0x0315, &val); in lg216x_get_sccc_block_mode()
710 ret = lg216x_read_reg(state, 0x0511, &val); in lg216x_get_sccc_block_mode()
733 static int lg216x_get_sccc_code_mode(struct lg216x_state *state, in lg216x_get_sccc_code_mode() argument
742 switch (state->cfg->lg_chip) { in lg216x_get_sccc_code_mode()
744 ret = lg216x_read_reg(state, 0x0316, &val); in lg216x_get_sccc_code_mode()
747 ret = lg216x_read_reg(state, 0x0512, &val); in lg216x_get_sccc_code_mode()
809 static int lg216x_read_fic_err_count(struct lg216x_state *state, u8 *err)
816 switch (state->cfg->lg_chip) {
818 ret = lg216x_read_reg(state, 0x0012, &fic_err);
821 ret = lg216x_read_reg(state, 0x001e, &fic_err);
832 static int lg2160_read_crc_err_count(struct lg216x_state *state, u16 *err)
839 ret = lg216x_read_reg(state, 0x0411, &crc_err1);
843 ret = lg216x_read_reg(state, 0x0412, &crc_err2);
852 static int lg2161_read_crc_err_count(struct lg216x_state *state, u16 *err)
859 ret = lg216x_read_reg(state, 0x0612, &crc_err);
868 static int lg216x_read_crc_err_count(struct lg216x_state *state, u16 *err)
871 switch (state->cfg->lg_chip) {
873 ret = lg2160_read_crc_err_count(state, err);
876 ret = lg2161_read_crc_err_count(state, err);
885 static int lg2160_read_rs_err_count(struct lg216x_state *state, u16 *err)
892 ret = lg216x_read_reg(state, 0x0413, &rs_err1);
896 ret = lg216x_read_reg(state, 0x0414, &rs_err2);
905 static int lg2161_read_rs_err_count(struct lg216x_state *state, u16 *err)
912 ret = lg216x_read_reg(state, 0x0613, &rs_err1);
916 ret = lg216x_read_reg(state, 0x0614, &rs_err2);
925 static int lg216x_read_rs_err_count(struct lg216x_state *state, u16 *err)
928 switch (state->cfg->lg_chip) {
930 ret = lg2160_read_rs_err_count(state, err);
933 ret = lg2161_read_rs_err_count(state, err);
947 struct lg216x_state *state = fe->demodulator_priv; in lg216x_get_frontend() local
953 fe->dtv_property_cache.frequency = state->current_frequency; in lg216x_get_frontend()
956 ret = lg216x_get_fic_version(state, in lg216x_get_frontend()
960 if (state->fic_ver != fe->dtv_property_cache.atscmh_fic_ver) { in lg216x_get_frontend()
961 state->fic_ver = fe->dtv_property_cache.atscmh_fic_ver; in lg216x_get_frontend()
964 ret = lg2160_get_parade_id(state, in lg216x_get_frontend()
969 fe->dtv_property_cache.atscmh_parade_id = state->parade_id; in lg216x_get_frontend()
971 ret = lg216x_get_nog(state, in lg216x_get_frontend()
975 ret = lg216x_get_tnog(state, in lg216x_get_frontend()
979 ret = lg216x_get_sgn(state, in lg216x_get_frontend()
983 ret = lg216x_get_prc(state, in lg216x_get_frontend()
988 ret = lg216x_get_rs_frame_mode(state, in lg216x_get_frontend()
993 ret = lg216x_get_rs_frame_ensemble(state, in lg216x_get_frontend()
998 ret = lg216x_get_rs_code_mode(state, in lg216x_get_frontend()
1005 ret = lg216x_get_sccc_block_mode(state, in lg216x_get_frontend()
1010 ret = lg216x_get_sccc_code_mode(state, in lg216x_get_frontend()
1023 ret = lg216x_read_fic_err_count(state, in lg216x_get_frontend()
1027 ret = lg216x_read_crc_err_count(state, in lg216x_get_frontend()
1031 ret = lg216x_read_rs_err_count(state, in lg216x_get_frontend()
1036 switch (state->cfg->lg_chip) { in lg216x_get_frontend()
1040 ((jiffies_to_msecs(jiffies) - state->last_reset) > 6000)) in lg216x_get_frontend()
1041 ret = lg216x_soft_reset(state); in lg216x_get_frontend()
1064 struct lg216x_state *state = fe->demodulator_priv; in lg2160_set_frontend() local
1075 state->current_frequency = fe->dtv_property_cache.frequency; in lg2160_set_frontend()
1078 ret = lg2160_agc_fix(state, 0, 0); in lg2160_set_frontend()
1081 ret = lg2160_agc_polarity(state, 0, 0); in lg2160_set_frontend()
1084 ret = lg2160_tuner_pwr_save_polarity(state, 1); in lg2160_set_frontend()
1087 ret = lg216x_set_if(state); in lg2160_set_frontend()
1090 ret = lg2160_spectrum_polarity(state, state->cfg->spectral_inversion); in lg2160_set_frontend()
1095 ret = lg216x_soft_reset(state); in lg2160_set_frontend()
1099 ret = lg2160_tuner_pwr_save(state, 0); in lg2160_set_frontend()
1103 switch (state->cfg->lg_chip) { in lg2160_set_frontend()
1105 ret = lg2160_set_spi_clock(state); in lg2160_set_frontend()
1110 ret = lg2161_set_output_interface(state); in lg2160_set_frontend()
1116 ret = lg216x_set_parade(state, fe->dtv_property_cache.atscmh_parade_id); in lg2160_set_frontend()
1120 ret = lg216x_set_ensemble(state, in lg2160_set_frontend()
1125 ret = lg216x_initialize(state); in lg2160_set_frontend()
1129 ret = lg216x_enable_fic(state, 1); in lg2160_set_frontend()
1139 static int lg2160_read_lock_status(struct lg216x_state *state, in lg2160_read_lock_status() argument
1148 ret = lg216x_read_reg(state, 0x011b, &val); in lg2160_read_lock_status()
1159 static int lg2161_read_lock_status(struct lg216x_state *state, in lg2161_read_lock_status() argument
1168 ret = lg216x_read_reg(state, 0x0304, &val); in lg2161_read_lock_status()
1174 ret = lg216x_read_reg(state, 0x011b, &val); in lg2161_read_lock_status()
1184 static int lg216x_read_lock_status(struct lg216x_state *state, in lg216x_read_lock_status() argument
1189 switch (state->cfg->lg_chip) { in lg216x_read_lock_status()
1191 ret = lg2160_read_lock_status(state, acq_lock, sync_lock); in lg216x_read_lock_status()
1194 ret = lg2161_read_lock_status(state, acq_lock, sync_lock); in lg216x_read_lock_status()
1202 return lg2160_read_lock_status(state, acq_lock, sync_lock); in lg216x_read_lock_status()
1208 struct lg216x_state *state = fe->demodulator_priv; in lg216x_read_status() local
1213 ret = lg216x_read_lock_status(state, &acq_lock, &sync_lock); in lg216x_read_status()
1237 struct lg216x_state *state = fe->demodulator_priv; in lg2160_read_snr() local
1243 ret = lg216x_read_reg(state, 0x0202, &snr1); in lg2160_read_snr()
1247 ret = lg216x_read_reg(state, 0x0203, &snr2); in lg2160_read_snr()
1265 struct lg216x_state *state = fe->demodulator_priv; in lg2161_read_snr() local
1271 ret = lg216x_read_reg(state, 0x0302, &snr1); in lg2161_read_snr()
1275 ret = lg216x_read_reg(state, 0x0303, &snr2); in lg2161_read_snr()
1299 struct lg216x_state *state = fe->demodulator_priv; in lg216x_read_signal_strength()
1310 if (state->snr >= 8960 * 0x10000) in lg216x_read_signal_strength()
1313 *strength = state->snr / 8960; in lg216x_read_signal_strength()
1326 struct lg216x_state *state = fe->demodulator_priv; in lg216x_read_ucblocks()
1329 ret = lg216x_read_rs_err_count(state, in lg216x_read_ucblocks()
1353 struct lg216x_state *state = fe->demodulator_priv; in lg216x_release() local
1355 kfree(state); in lg216x_release()
1417 struct lg216x_state *state = NULL; in lg2160_attach() local
1423 state = kzalloc(sizeof(struct lg216x_state), GFP_KERNEL); in lg2160_attach()
1424 if (!state) in lg2160_attach()
1427 state->cfg = config; in lg2160_attach()
1428 state->i2c_adap = i2c_adap; in lg2160_attach()
1429 state->fic_ver = 0xff; in lg2160_attach()
1430 state->parade_id = 0xff; in lg2160_attach()
1437 memcpy(&state->frontend.ops, &lg2160_ops, in lg2160_attach()
1441 memcpy(&state->frontend.ops, &lg2161_ops, in lg2160_attach()
1446 state->frontend.demodulator_priv = state; in lg2160_attach()
1447 state->current_frequency = -1; in lg2160_attach()
1449 state->frontend.dtv_property_cache.atscmh_parade_id = 1; in lg2160_attach()
1451 return &state->frontend; in lg2160_attach()