• Home
  • Raw
  • Download

Lines Matching +full:ati +full:- +full:target

2  *    Support for NXT2002 and NXT2004 - VSB/QAM
5 * Copyright (C) 2006-2014 Michael Krufky <mkrufky@linuxtv.org>
7 * and nxt2004 by Jean-Francois Thibert <jeanfrancois@sagetv.com>
25 * B2C2/BBTI Technisat Air2PC - ATSC (NXT2002)
27 * ATI HDTV Wonder (NXT2004)
41 #define NXT2002_DEFAULT_FIRMWARE "dvb-fe-nxt2002.fw"
42 #define NXT2004_DEFAULT_FIRMWARE "dvb-fe-nxt2004.fw"
73 if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) { in i2c_writebytes()
76 return -EREMOTEIO; in i2c_writebytes()
86 if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) { in i2c_readbytes()
89 return -EREMOTEIO; in i2c_readbytes()
99 …struct i2c_msg msg = { .addr = state->config->demod_address, .flags = 0, .buf = buf2, .len = len +… in nxt200x_writebytes()
104 return -EINVAL; in nxt200x_writebytes()
110 if ((err = i2c_transfer (state->i2c, &msg, 1)) != 1) { in nxt200x_writebytes()
112 __func__, state->config->demod_address, err); in nxt200x_writebytes()
113 return -EREMOTEIO; in nxt200x_writebytes()
122 …struct i2c_msg msg [] = { { .addr = state->config->demod_address, .flags = 0, .buf = reg2, .len = … in nxt200x_readbytes()
123 { .addr = state->config->demod_address, .flags = I2C_M_RD, .buf = buf, .len = len } }; in nxt200x_readbytes()
127 if ((err = i2c_transfer (state->i2c, msg, 2)) != 2) { in nxt200x_readbytes()
129 __func__, state->config->demod_address, err); in nxt200x_readbytes()
130 return -EREMOTEIO; in nxt200x_readbytes()
162 switch (state->demod_chip) { in nxt200x_writereg_multibyte()
180 return -EINVAL; in nxt200x_writereg_multibyte()
192 switch (state->demod_chip) { in nxt200x_writereg_multibyte()
202 return -EINVAL; in nxt200x_writereg_multibyte()
220 switch (state->demod_chip) { in nxt200x_readreg_multibyte()
254 return -EINVAL; in nxt200x_readreg_multibyte()
265 switch (state->demod_chip) { in nxt200x_microcontroller_stop()
342 switch (state->demod_chip) { in nxt200x_writetuner()
386 return -EINVAL; in nxt200x_writetuner()
397 switch (state->demod_chip) { in nxt200x_agc_reset()
420 struct nxt200x_state* state = fe->demodulator_priv; in nxt2002_load_firmware()
425 dprintk("Firmware is %zu bytes\n", fw->size); in nxt2002_load_firmware()
441 for (position = 0; position < fw->size; position++) { in nxt2002_load_firmware()
455 nxt200x_writebytes(state, chunkpos, &fw->data[position-3], 4); in nxt2002_load_firmware()
457 crc = nxt200x_crc(crc, fw->data[position]); in nxt2002_load_firmware()
459 if ((written == 255) || (position+1 == fw->size)) { in nxt2002_load_firmware()
461 nxt200x_writebytes(state, chunkpos+4-(written %4), in nxt2002_load_firmware()
462 &fw->data[position-(written %4) + 1], in nxt2002_load_firmware()
487 struct nxt200x_state* state = fe->demodulator_priv; in nxt2004_load_firmware()
492 dprintk("Firmware is %zu bytes\n", fw->size); in nxt2004_load_firmware()
502 for (position = 0; position < fw->size; position++) { in nxt2004_load_firmware()
503 crc = nxt200x_crc(crc, fw->data[position]); in nxt2004_load_firmware()
512 for (position = 0; position < fw->size;) { in nxt2004_load_firmware()
513 nxt200x_writebytes(state, 0x2C, &fw->data[position], in nxt2004_load_firmware()
514 fw->size-position > 255 ? 255 : fw->size-position); in nxt2004_load_firmware()
515 position += (fw->size-position > 255 ? 255 : fw->size-position); in nxt2004_load_firmware()
537 struct dtv_frontend_properties *p = &fe->dtv_property_cache; in nxt200x_setup_frontend_parameters()
538 struct nxt200x_state* state = fe->demodulator_priv; in nxt200x_setup_frontend_parameters()
544 if (state->demod_chip == NXT2004) { in nxt200x_setup_frontend_parameters()
553 switch (p->modulation) { in nxt200x_setup_frontend_parameters()
558 if (state->config->set_ts_params) in nxt200x_setup_frontend_parameters()
559 state->config->set_ts_params(fe, 1); in nxt200x_setup_frontend_parameters()
562 /* Set non-punctured clock for VSB */ in nxt200x_setup_frontend_parameters()
563 if (state->config->set_ts_params) in nxt200x_setup_frontend_parameters()
564 state->config->set_ts_params(fe, 0); in nxt200x_setup_frontend_parameters()
567 return -EINVAL; in nxt200x_setup_frontend_parameters()
571 if (fe->ops.tuner_ops.calc_regs) { in nxt200x_setup_frontend_parameters()
573 fe->ops.tuner_ops.calc_regs(fe, buf, 5); in nxt200x_setup_frontend_parameters()
582 /* set target power level */ in nxt200x_setup_frontend_parameters()
583 switch (p->modulation) { in nxt200x_setup_frontend_parameters()
592 return -EINVAL; in nxt200x_setup_frontend_parameters()
598 switch (state->demod_chip) { in nxt200x_setup_frontend_parameters()
606 return -EINVAL; in nxt200x_setup_frontend_parameters()
614 switch (state->demod_chip) { in nxt200x_setup_frontend_parameters()
622 return -EINVAL; in nxt200x_setup_frontend_parameters()
627 switch (p->modulation) { in nxt200x_setup_frontend_parameters()
638 return -EINVAL; in nxt200x_setup_frontend_parameters()
642 switch (state->demod_chip) { in nxt200x_setup_frontend_parameters()
650 return -EINVAL; in nxt200x_setup_frontend_parameters()
658 if (state->demod_chip == NXT2004) { in nxt200x_setup_frontend_parameters()
668 switch (state->demod_chip) { in nxt200x_setup_frontend_parameters()
676 return -EINVAL; in nxt200x_setup_frontend_parameters()
692 if (state->demod_chip == NXT2004) { in nxt200x_setup_frontend_parameters()
721 switch (p->modulation) { in nxt200x_setup_frontend_parameters()
732 return -EINVAL; in nxt200x_setup_frontend_parameters()
744 switch (state->demod_chip) { in nxt200x_setup_frontend_parameters()
754 return -EINVAL; in nxt200x_setup_frontend_parameters()
764 if (state->demod_chip == NXT2004) { in nxt200x_setup_frontend_parameters()
781 struct nxt200x_state* state = fe->demodulator_priv; in nxt200x_read_status()
798 struct nxt200x_state* state = fe->demodulator_priv; in nxt200x_read_ber()
810 struct nxt200x_state* state = fe->demodulator_priv; in nxt200x_read_signal_strength()
822 *strength = ((0x7FFF - temp) & 0x0FFF) * 16; in nxt200x_read_signal_strength()
830 struct nxt200x_state* state = fe->demodulator_priv; in nxt200x_read_snr()
843 temp2 = 0x7FFF - temp; in nxt200x_read_snr()
847 snrdb = 1000*24 + ( 1000*(30-24) * ( temp2 - 0x7F00 ) / ( 0x7FFF - 0x7F00 ) ); in nxt200x_read_snr()
849 snrdb = 1000*18 + ( 1000*(24-18) * ( temp2 - 0x7EC0 ) / ( 0x7F00 - 0x7EC0 ) ); in nxt200x_read_snr()
851 snrdb = 1000*12 + ( 1000*(18-12) * ( temp2 - 0x7C00 ) / ( 0x7EC0 - 0x7C00 ) ); in nxt200x_read_snr()
853 snrdb = 1000*0 + ( 1000*(12-0) * ( temp2 - 0 ) / ( 0x7C00 - 0 ) ); in nxt200x_read_snr()
863 struct nxt200x_state* state = fe->demodulator_priv; in nxt200x_read_ucblocks()
879 struct nxt200x_state* state = fe->demodulator_priv; in nxt2002_init()
888 state->i2c->dev.parent); in nxt2002_init()
942 struct nxt200x_state* state = fe->demodulator_priv; in nxt2004_init()
955 state->i2c->dev.parent); in nxt2004_init()
1114 struct nxt200x_state* state = fe->demodulator_priv; in nxt200x_init()
1117 if (!state->initialised) { in nxt200x_init()
1118 switch (state->demod_chip) { in nxt200x_init()
1126 return -EINVAL; in nxt200x_init()
1129 state->initialised = 1; in nxt200x_init()
1136 fesettings->min_delay_ms = 500; in nxt200x_get_tune_settings()
1137 fesettings->step_size = 0; in nxt200x_get_tune_settings()
1138 fesettings->max_drift = 0; in nxt200x_get_tune_settings()
1144 struct nxt200x_state* state = fe->demodulator_priv; in nxt200x_release()
1162 state->config = config; in nxt200x_attach()
1163 state->i2c = i2c; in nxt200x_attach()
1164 state->initialised = 0; in nxt200x_attach()
1173 state->demod_chip = NXT2002; in nxt200x_attach()
1177 state->demod_chip = NXT2004; in nxt200x_attach()
1185 switch (state->demod_chip) { in nxt200x_attach()
1201 memcpy(&state->frontend.ops, &nxt200x_ops, sizeof(struct dvb_frontend_ops)); in nxt200x_attach()
1202 state->frontend.demodulator_priv = state; in nxt200x_attach()
1203 return &state->frontend; in nxt200x_attach()
1241 MODULE_DESCRIPTION("NXT200X (ATSC 8VSB & ITU-T J.83 AnnexB 64/256 QAM) Demodulator Driver");
1242 MODULE_AUTHOR("Kirk Lapray, Michael Krufky, Jean-Francois Thibert, and Taylor Jacob");