Lines Matching refs:state
63 static int mt312_read(struct mt312_state *state, const enum mt312_reg_addr reg, in mt312_read() argument
70 msg[0].addr = state->config->demod_address; in mt312_read()
74 msg[1].addr = state->config->demod_address; in mt312_read()
79 ret = i2c_transfer(state->i2c, msg, 2); in mt312_read()
97 static int mt312_write(struct mt312_state *state, const enum mt312_reg_addr reg, in mt312_write() argument
121 msg.addr = state->config->demod_address; in mt312_write()
126 ret = i2c_transfer(state->i2c, &msg, 1); in mt312_write()
136 static inline int mt312_readreg(struct mt312_state *state, in mt312_readreg() argument
139 return mt312_read(state, reg, val, 1); in mt312_readreg()
142 static inline int mt312_writereg(struct mt312_state *state, in mt312_writereg() argument
145 return mt312_write(state, reg, &val, 1); in mt312_writereg()
153 static int mt312_reset(struct mt312_state *state, const u8 full) in mt312_reset() argument
155 return mt312_writereg(state, RESET, full ? 0x80 : 0x40); in mt312_reset()
158 static int mt312_get_inversion(struct mt312_state *state, in mt312_get_inversion() argument
164 ret = mt312_readreg(state, VIT_MODE, &vit_mode); in mt312_get_inversion()
174 static int mt312_get_symbol_rate(struct mt312_state *state, u32 *sr) in mt312_get_symbol_rate() argument
183 ret = mt312_readreg(state, SYM_RATE_H, &sym_rate_h); in mt312_get_symbol_rate()
189 ret = mt312_writereg(state, MON_CTRL, 0x03); in mt312_get_symbol_rate()
193 ret = mt312_read(state, MONITOR_H, buf, sizeof(buf)); in mt312_get_symbol_rate()
202 ret = mt312_writereg(state, MON_CTRL, 0x05); in mt312_get_symbol_rate()
206 ret = mt312_read(state, MONITOR_H, buf, sizeof(buf)); in mt312_get_symbol_rate()
212 ret = mt312_read(state, SYM_RAT_OP_H, buf, sizeof(buf)); in mt312_get_symbol_rate()
221 (((state->xtal * 8192) / (sym_rat_op + 8192)) * in mt312_get_symbol_rate()
228 static int mt312_get_code_rate(struct mt312_state *state, enum fe_code_rate *cr) in mt312_get_code_rate() argument
237 ret = mt312_readreg(state, FEC_STATUS, &fec_status); in mt312_get_code_rate()
248 struct mt312_state *state = fe->demodulator_priv; in mt312_initfe() local
253 ret = mt312_writereg(state, CONFIG, in mt312_initfe()
254 (state->freq_mult == 6 ? 0x88 : 0x8c)); in mt312_initfe()
262 ret = mt312_reset(state, 1); in mt312_initfe()
272 ret = mt312_write(state, VIT_SETUP, buf_def, sizeof(buf_def)); in mt312_initfe()
277 switch (state->id) { in mt312_initfe()
280 ret = mt312_writereg(state, GPP_CTRL, 0x80); in mt312_initfe()
287 ret = mt312_write(state, HW_CTRL, buf, 2); in mt312_initfe()
292 ret = mt312_writereg(state, HW_CTRL, 0x00); in mt312_initfe()
296 ret = mt312_writereg(state, MPEG_CTRL, 0x00); in mt312_initfe()
304 buf[0] = mt312_div(state->xtal * state->freq_mult * 2, 1000000); in mt312_initfe()
307 buf[1] = mt312_div(state->xtal, 22000 * 4); in mt312_initfe()
309 ret = mt312_write(state, SYS_CLK, buf, sizeof(buf)); in mt312_initfe()
313 ret = mt312_writereg(state, SNR_THS_HIGH, 0x32); in mt312_initfe()
318 switch (state->id) { in mt312_initfe()
327 ret = mt312_writereg(state, OP_CTRL, buf[0]); in mt312_initfe()
335 ret = mt312_write(state, TS_SW_LIM_L, buf, sizeof(buf)); in mt312_initfe()
339 ret = mt312_writereg(state, CS_SW_LIM, 0x69); in mt312_initfe()
349 struct mt312_state *state = fe->demodulator_priv; in mt312_send_master_cmd() local
356 ret = mt312_readreg(state, DISEQC_MODE, &diseqc_mode); in mt312_send_master_cmd()
360 ret = mt312_write(state, (0x80 | DISEQC_INSTR), c->msg, c->msg_len); in mt312_send_master_cmd()
364 ret = mt312_writereg(state, DISEQC_MODE, in mt312_send_master_cmd()
375 ret = mt312_writereg(state, DISEQC_MODE, (diseqc_mode & 0x40)); in mt312_send_master_cmd()
386 struct mt312_state *state = fe->demodulator_priv; in mt312_send_burst() local
395 ret = mt312_readreg(state, DISEQC_MODE, &diseqc_mode); in mt312_send_burst()
399 ret = mt312_writereg(state, DISEQC_MODE, in mt312_send_burst()
410 struct mt312_state *state = fe->demodulator_priv; in mt312_set_tone() local
419 ret = mt312_readreg(state, DISEQC_MODE, &diseqc_mode); in mt312_set_tone()
423 ret = mt312_writereg(state, DISEQC_MODE, in mt312_set_tone()
434 struct mt312_state *state = fe->demodulator_priv; in mt312_set_voltage() local
442 if (state->config->voltage_inverted) in mt312_set_voltage()
445 return mt312_writereg(state, DISEQC_MODE, val); in mt312_set_voltage()
450 struct mt312_state *state = fe->demodulator_priv; in mt312_read_status() local
456 ret = mt312_read(state, QPSK_STAT_H, status, sizeof(status)); in mt312_read_status()
479 struct mt312_state *state = fe->demodulator_priv; in mt312_read_ber() local
483 ret = mt312_read(state, RS_BERCNT_H, buf, 3); in mt312_read_ber()
495 struct mt312_state *state = fe->demodulator_priv; in mt312_read_signal_strength() local
501 ret = mt312_read(state, AGC_H, buf, sizeof(buf)); in mt312_read_signal_strength()
517 struct mt312_state *state = fe->demodulator_priv; in mt312_read_snr() local
521 ret = mt312_read(state, M_SNR_H, buf, sizeof(buf)); in mt312_read_snr()
532 struct mt312_state *state = fe->demodulator_priv; in mt312_read_ucblocks() local
536 ret = mt312_read(state, RS_UBC_H, buf, sizeof(buf)); in mt312_read_ucblocks()
548 struct mt312_state *state = fe->demodulator_priv; in mt312_set_frontend() local
579 switch (state->id) { in mt312_set_frontend()
585 ret = mt312_readreg(state, CONFIG, &config_val); in mt312_set_frontend()
590 if (state->freq_mult == 6) { in mt312_set_frontend()
592 state->freq_mult = 9; in mt312_set_frontend()
598 if (state->freq_mult == 9) { in mt312_set_frontend()
600 state->freq_mult = 6; in mt312_set_frontend()
641 ret = mt312_write(state, SYM_RATE_H, buf, sizeof(buf)); in mt312_set_frontend()
645 mt312_reset(state, 0); in mt312_set_frontend()
653 struct mt312_state *state = fe->demodulator_priv; in mt312_get_frontend() local
656 ret = mt312_get_inversion(state, &p->inversion); in mt312_get_frontend()
660 ret = mt312_get_symbol_rate(state, &p->symbol_rate); in mt312_get_frontend()
664 ret = mt312_get_code_rate(state, &p->fec_inner); in mt312_get_frontend()
673 struct mt312_state *state = fe->demodulator_priv; in mt312_i2c_gate_ctrl() local
678 switch (state->id) { in mt312_i2c_gate_ctrl()
680 ret = mt312_readreg(state, GPP_CTRL, &val); in mt312_i2c_gate_ctrl()
694 ret = mt312_writereg(state, GPP_CTRL, val); in mt312_i2c_gate_ctrl()
702 struct mt312_state *state = fe->demodulator_priv; in mt312_sleep() local
707 ret = mt312_reset(state, 1); in mt312_sleep()
711 if (state->id == ID_ZL10313) { in mt312_sleep()
713 ret = mt312_writereg(state, GPP_CTRL, 0x00); in mt312_sleep()
718 ret = mt312_writereg(state, HW_CTRL, 0x0d); in mt312_sleep()
723 ret = mt312_readreg(state, CONFIG, &config); in mt312_sleep()
728 ret = mt312_writereg(state, CONFIG, config & 0x7f); in mt312_sleep()
746 struct mt312_state *state = fe->demodulator_priv; in mt312_release() local
747 kfree(state); in mt312_release()
793 struct mt312_state *state = NULL; in mt312_attach() local
796 state = kzalloc(sizeof(struct mt312_state), GFP_KERNEL); in mt312_attach()
797 if (state == NULL) in mt312_attach()
801 state->config = config; in mt312_attach()
802 state->i2c = i2c; in mt312_attach()
805 if (mt312_readreg(state, ID, &state->id) < 0) in mt312_attach()
809 memcpy(&state->frontend.ops, &mt312_ops, in mt312_attach()
811 state->frontend.demodulator_priv = state; in mt312_attach()
813 switch (state->id) { in mt312_attach()
815 strcpy(state->frontend.ops.info.name, "Zarlink VP310 DVB-S"); in mt312_attach()
816 state->xtal = MT312_PLL_CLK; in mt312_attach()
817 state->freq_mult = 9; in mt312_attach()
820 strcpy(state->frontend.ops.info.name, "Zarlink MT312 DVB-S"); in mt312_attach()
821 state->xtal = MT312_PLL_CLK; in mt312_attach()
822 state->freq_mult = 6; in mt312_attach()
825 strcpy(state->frontend.ops.info.name, "Zarlink ZL10313 DVB-S"); in mt312_attach()
826 state->xtal = MT312_PLL_CLK_10_111; in mt312_attach()
827 state->freq_mult = 9; in mt312_attach()
835 return &state->frontend; in mt312_attach()
838 kfree(state); in mt312_attach()