|
@@ -2445,7 +2445,8 @@ static int dib8000_autosearch_start(struct dvb_frontend *fe)
|
|
if (state->revision == 0x8090)
|
|
if (state->revision == 0x8090)
|
|
internal = dib8000_read32(state, 23) / 1000;
|
|
internal = dib8000_read32(state, 23) / 1000;
|
|
|
|
|
|
- if (state->autosearch_state == AS_SEARCHING_FFT) {
|
|
|
|
|
|
+ if ((state->revision >= 0x8002) &&
|
|
|
|
+ (state->autosearch_state == AS_SEARCHING_FFT)) {
|
|
dib8000_write_word(state, 37, 0x0065); /* P_ctrl_pha_off_max default values */
|
|
dib8000_write_word(state, 37, 0x0065); /* P_ctrl_pha_off_max default values */
|
|
dib8000_write_word(state, 116, 0x0000); /* P_ana_gain to 0 */
|
|
dib8000_write_word(state, 116, 0x0000); /* P_ana_gain to 0 */
|
|
|
|
|
|
@@ -2481,7 +2482,8 @@ static int dib8000_autosearch_start(struct dvb_frontend *fe)
|
|
dib8000_write_word(state, 770, (dib8000_read_word(state, 770) & 0xdfff) | (1 << 13)); /* P_restart_ccg = 1 */
|
|
dib8000_write_word(state, 770, (dib8000_read_word(state, 770) & 0xdfff) | (1 << 13)); /* P_restart_ccg = 1 */
|
|
dib8000_write_word(state, 770, (dib8000_read_word(state, 770) & 0xdfff) | (0 << 13)); /* P_restart_ccg = 0 */
|
|
dib8000_write_word(state, 770, (dib8000_read_word(state, 770) & 0xdfff) | (0 << 13)); /* P_restart_ccg = 0 */
|
|
dib8000_write_word(state, 0, (dib8000_read_word(state, 0) & 0x7ff) | (0 << 15) | (1 << 13)); /* P_restart_search = 0; */
|
|
dib8000_write_word(state, 0, (dib8000_read_word(state, 0) & 0x7ff) | (0 << 15) | (1 << 13)); /* P_restart_search = 0; */
|
|
- } else if (state->autosearch_state == AS_SEARCHING_GUARD) {
|
|
|
|
|
|
+ } else if ((state->revision >= 0x8002) &&
|
|
|
|
+ (state->autosearch_state == AS_SEARCHING_GUARD)) {
|
|
c->transmission_mode = TRANSMISSION_MODE_8K;
|
|
c->transmission_mode = TRANSMISSION_MODE_8K;
|
|
c->guard_interval = GUARD_INTERVAL_1_8;
|
|
c->guard_interval = GUARD_INTERVAL_1_8;
|
|
c->inversion = 0;
|
|
c->inversion = 0;
|
|
@@ -2583,7 +2585,8 @@ static int dib8000_autosearch_irq(struct dvb_frontend *fe)
|
|
struct dib8000_state *state = fe->demodulator_priv;
|
|
struct dib8000_state *state = fe->demodulator_priv;
|
|
u16 irq_pending = dib8000_read_word(state, 1284);
|
|
u16 irq_pending = dib8000_read_word(state, 1284);
|
|
|
|
|
|
- if (state->autosearch_state == AS_SEARCHING_FFT) {
|
|
|
|
|
|
+ if ((state->revision >= 0x8002) &&
|
|
|
|
+ (state->autosearch_state == AS_SEARCHING_FFT)) {
|
|
if (irq_pending & 0x1) {
|
|
if (irq_pending & 0x1) {
|
|
dprintk("dib8000_autosearch_irq: max correlation result available");
|
|
dprintk("dib8000_autosearch_irq: max correlation result available");
|
|
return 3;
|
|
return 3;
|