Lines Matching +full:frame +full:- +full:inversion

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 TDA10021 - Single Chip Cable Channel Receiver driver module
4 used on the Siemens DVB-C cards
63 struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf, .len = 2 }; in _tda10021_writereg()
66 ret = i2c_transfer (state->i2c, &msg, 1); in _tda10021_writereg()
69 state->frontend.dvb->num, __func__, reg, data, ret); in _tda10021_writereg()
72 return (ret != 1) ? -EREMOTEIO : 0; in _tda10021_writereg()
79 …struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = b0, .len = 1 … in tda10021_readreg()
80 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = b1, .len = 1 } }; in tda10021_readreg()
83 ret = i2c_transfer (state->i2c, msg, 2); in tda10021_readreg()
95 struct i2c_msg msg = {.addr=state->config->demod_address, .flags=0, .buf=buf, .len=2}; in lock_tuner()
97 if(i2c_transfer(state->i2c, &msg, 1) != 1) in lock_tuner()
100 return -EREMOTEIO; in lock_tuner()
109 struct i2c_msg msg_post={.addr=state->config->demod_address, .flags=0, .buf=buf, .len=2}; in unlock_tuner()
111 if(i2c_transfer(state->i2c, &msg_post, 1) != 1) in unlock_tuner()
114 return -EREMOTEIO; in unlock_tuner()
120 enum fe_spectral_inversion inversion) in tda10021_setup_reg0() argument
122 reg0 |= state->reg0 & 0x63; in tda10021_setup_reg0()
124 if ((INVERSION_ON == inversion) ^ (state->config->invert == 0)) in tda10021_setup_reg0()
132 state->reg0 = reg0; in tda10021_setup_reg0()
201 struct tda10021_state* state = fe->demodulator_priv; in tda10021_init()
204 dprintk("DVB: TDA10021(%d): init chip\n", fe->adapter->num); in tda10021_init()
211 _tda10021_writereg (state, 0x34, state->pwm); in tda10021_init()
214 //0x2A[3-0] == PDIV -> P multiplaying factor (P=PDIV+1)(default 0) in tda10021_init()
215 //0x2A[4] == BYPPLL -> Power down mode (default 1) in tda10021_init()
216 //0x2A[5] == LCK -> PLL Lock Flag in tda10021_init()
217 //0x2A[6] == POLAXIN -> Polarity of the input reference clock (default 0) in tda10021_init()
230 struct dtv_frontend_properties *c = &fe->dtv_property_cache; in tda10021_set_parameters()
231 u32 delsys = c->delivery_system; in tda10021_set_parameters()
232 unsigned qam = c->modulation; in tda10021_set_parameters()
235 struct tda10021_state* state = fe->demodulator_priv; in tda10021_set_parameters()
254 return -EINVAL; in tda10021_set_parameters()
259 * "if (qam > 5) return -EINVAL;" in tda10021_set_parameters()
273 return -EINVAL; in tda10021_set_parameters()
276 if (c->inversion != INVERSION_ON && c->inversion != INVERSION_OFF) in tda10021_set_parameters()
277 return -EINVAL; in tda10021_set_parameters()
279 /*printk("tda10021: set frequency to %d qam=%d symrate=%d\n", p->frequency,qam,p->symbol_rate);*/ in tda10021_set_parameters()
281 if (fe->ops.tuner_ops.set_params) { in tda10021_set_parameters()
282 fe->ops.tuner_ops.set_params(fe); in tda10021_set_parameters()
283 if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0); in tda10021_set_parameters()
286 tda10021_set_symbolrate(state, c->symbol_rate); in tda10021_set_parameters()
287 _tda10021_writereg(state, 0x34, state->pwm); in tda10021_set_parameters()
295 * Bit 0 == 0 means roll-off = 0.15 (Annex A) in tda10021_set_parameters()
296 * == 1 means roll-off = 0.13 (Annex C) in tda10021_set_parameters()
303 tda10021_setup_reg0(state, qam_params[qam].conf, c->inversion); in tda10021_set_parameters()
311 struct tda10021_state* state = fe->demodulator_priv; in tda10021_read_status()
315 //0x11[0] == EQALGO -> Equalizer algorithms state in tda10021_read_status()
316 //0x11[1] == CARLOCK -> Carrier locked in tda10021_read_status()
317 //0x11[2] == FSYNC -> Frame synchronisation in tda10021_read_status()
318 //0x11[3] == FEL -> Front End locked in tda10021_read_status()
319 //0x11[6] == NODVB -> DVB Mode Information in tda10021_read_status()
336 struct tda10021_state* state = fe->demodulator_priv; in tda10021_read_ber()
350 struct tda10021_state* state = fe->demodulator_priv; in tda10021_read_signal_strength()
364 struct tda10021_state* state = fe->demodulator_priv; in tda10021_read_snr()
374 struct tda10021_state* state = fe->demodulator_priv; in tda10021_read_ucblocks()
390 struct tda10021_state* state = fe->demodulator_priv; in tda10021_get_frontend()
400 state->frontend.dvb->num, afc, in tda10021_get_frontend()
401 -((s32)p->symbol_rate * afc) >> 10); in tda10021_get_frontend()
404 …p->inversion = ((state->reg0 & 0x20) == 0x20) ^ (state->config->invert != 0) ? INVERSION_ON : INVE… in tda10021_get_frontend()
405 p->modulation = ((state->reg0 >> 2) & 7) + QAM_16; in tda10021_get_frontend()
407 p->fec_inner = FEC_NONE; in tda10021_get_frontend()
408 p->frequency = ((p->frequency + 31250) / 62500) * 62500; in tda10021_get_frontend()
411 p->frequency -= ((s32)p->symbol_rate * afc) >> 10; in tda10021_get_frontend()
418 struct tda10021_state* state = fe->demodulator_priv; in tda10021_i2c_gate_ctrl()
430 struct tda10021_state* state = fe->demodulator_priv; in tda10021_sleep()
440 struct tda10021_state* state = fe->demodulator_priv; in tda10021_release()
458 state->config = config; in tda10021_attach()
459 state->i2c = i2c; in tda10021_attach()
460 state->pwm = pwm; in tda10021_attach()
461 state->reg0 = tda10021_inittab[0]; in tda10021_attach()
471 printk("TDA10021: i2c-addr = 0x%02x, id = 0x%02x\n", in tda10021_attach()
472 state->config->demod_address, id); in tda10021_attach()
475 memcpy(&state->frontend.ops, &tda10021_ops, sizeof(struct dvb_frontend_ops)); in tda10021_attach()
476 state->frontend.demodulator_priv = state; in tda10021_attach()
477 return &state->frontend; in tda10021_attach()
487 .name = "Philips TDA10021 DVB-C",
522 MODULE_DESCRIPTION("Philips TDA10021 DVB-C demodulator driver");