Lines Matching full:state
86 static void dib7090_setDibTxMux(struct dib7000p_state *state, int mode);
87 static void dib7090_setHostBusMux(struct dib7000p_state *state, int mode);
89 static u16 dib7000p_read_word(struct dib7000p_state *state, u16 reg) in dib7000p_read_word() argument
93 if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) { in dib7000p_read_word()
98 state->i2c_write_buffer[0] = reg >> 8; in dib7000p_read_word()
99 state->i2c_write_buffer[1] = reg & 0xff; in dib7000p_read_word()
101 memset(state->msg, 0, 2 * sizeof(struct i2c_msg)); in dib7000p_read_word()
102 state->msg[0].addr = state->i2c_addr >> 1; in dib7000p_read_word()
103 state->msg[0].flags = 0; in dib7000p_read_word()
104 state->msg[0].buf = state->i2c_write_buffer; in dib7000p_read_word()
105 state->msg[0].len = 2; in dib7000p_read_word()
106 state->msg[1].addr = state->i2c_addr >> 1; in dib7000p_read_word()
107 state->msg[1].flags = I2C_M_RD; in dib7000p_read_word()
108 state->msg[1].buf = state->i2c_read_buffer; in dib7000p_read_word()
109 state->msg[1].len = 2; in dib7000p_read_word()
111 if (i2c_transfer(state->i2c_adap, state->msg, 2) != 2) in dib7000p_read_word()
114 ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1]; in dib7000p_read_word()
115 mutex_unlock(&state->i2c_buffer_lock); in dib7000p_read_word()
119 static int dib7000p_write_word(struct dib7000p_state *state, u16 reg, u16 val) in dib7000p_write_word() argument
123 if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) { in dib7000p_write_word()
128 state->i2c_write_buffer[0] = (reg >> 8) & 0xff; in dib7000p_write_word()
129 state->i2c_write_buffer[1] = reg & 0xff; in dib7000p_write_word()
130 state->i2c_write_buffer[2] = (val >> 8) & 0xff; in dib7000p_write_word()
131 state->i2c_write_buffer[3] = val & 0xff; in dib7000p_write_word()
133 memset(&state->msg[0], 0, sizeof(struct i2c_msg)); in dib7000p_write_word()
134 state->msg[0].addr = state->i2c_addr >> 1; in dib7000p_write_word()
135 state->msg[0].flags = 0; in dib7000p_write_word()
136 state->msg[0].buf = state->i2c_write_buffer; in dib7000p_write_word()
137 state->msg[0].len = 4; in dib7000p_write_word()
139 ret = (i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ? in dib7000p_write_word()
141 mutex_unlock(&state->i2c_buffer_lock); in dib7000p_write_word()
145 static void dib7000p_write_tab(struct dib7000p_state *state, u16 * buf) in dib7000p_write_tab() argument
154 dib7000p_write_word(state, r, *n++); in dib7000p_write_tab()
161 static int dib7000p_set_output_mode(struct dib7000p_state *state, int mode) in dib7000p_set_output_mode() argument
168 smo_mode = (dib7000p_read_word(state, 235) & 0x0050) | (1 << 1); in dib7000p_set_output_mode()
170 dprintk("setting output mode for demod %p to %d", &state->demod, mode); in dib7000p_set_output_mode()
183 if (state->cfg.hostbus_diversity) in dib7000p_set_output_mode()
200 dprintk("Unhandled output_mode passed to be set for demod %p", &state->demod); in dib7000p_set_output_mode()
204 if (state->cfg.output_mpeg2_in_188_bytes) in dib7000p_set_output_mode()
207 ret |= dib7000p_write_word(state, 235, smo_mode); in dib7000p_set_output_mode()
208 ret |= dib7000p_write_word(state, 236, fifo_threshold); /* synchronous fread */ in dib7000p_set_output_mode()
209 if (state->version != SOC7090) in dib7000p_set_output_mode()
210 ret |= dib7000p_write_word(state, 1286, outreg); /* P_Div_active */ in dib7000p_set_output_mode()
217 struct dib7000p_state *state = demod->demodulator_priv; in dib7000p_set_diversity_in() local
219 if (state->div_force_off) { in dib7000p_set_diversity_in()
222 dib7000p_write_word(state, 207, 0); in dib7000p_set_diversity_in()
224 dib7000p_write_word(state, 207, (state->div_sync_wait << 4) | (1 << 2) | (2 << 0)); in dib7000p_set_diversity_in()
226 state->div_state = (u8) onoff; in dib7000p_set_diversity_in()
229 dib7000p_write_word(state, 204, 6); in dib7000p_set_diversity_in()
230 dib7000p_write_word(state, 205, 16); in dib7000p_set_diversity_in()
233 dib7000p_write_word(state, 204, 1); in dib7000p_set_diversity_in()
234 dib7000p_write_word(state, 205, 0); in dib7000p_set_diversity_in()
240 static int dib7000p_set_power_mode(struct dib7000p_state *state, enum dib7000p_power_mode mode) in dib7000p_set_power_mode() argument
243 …g_776 = 0x0007, reg_899 = 0x0003, reg_1280 = (0xfe00) | (dib7000p_read_word(state, 1280) & 0x01ff); in dib7000p_set_power_mode()
253 if (state->version == SOC7090) in dib7000p_set_power_mode()
265 if (state->version != SOC7090) in dib7000p_set_power_mode()
272 if (state->version == SOC7090) in dib7000p_set_power_mode()
281 dib7000p_write_word(state, 774, reg_774); in dib7000p_set_power_mode()
282 dib7000p_write_word(state, 775, reg_775); in dib7000p_set_power_mode()
283 dib7000p_write_word(state, 776, reg_776); in dib7000p_set_power_mode()
284 dib7000p_write_word(state, 1280, reg_1280); in dib7000p_set_power_mode()
285 if (state->version != SOC7090) in dib7000p_set_power_mode()
286 dib7000p_write_word(state, 899, reg_899); in dib7000p_set_power_mode()
291 static void dib7000p_set_adc_state(struct dib7000p_state *state, enum dibx000_adc_states no) in dib7000p_set_adc_state() argument
296 if (state->version != SOC7090) { in dib7000p_set_adc_state()
297 reg_908 = dib7000p_read_word(state, 908); in dib7000p_set_adc_state()
298 reg_909 = dib7000p_read_word(state, 909); in dib7000p_set_adc_state()
303 if (state->version == SOC7090) { in dib7000p_set_adc_state()
304 reg = dib7000p_read_word(state, 1925); in dib7000p_set_adc_state()
306 …dib7000p_write_word(state, 1925, reg | (1 << 4) | (1 << 2)); /* en_slowAdc = 1 & reset_sladc = 1 */ in dib7000p_set_adc_state()
308 reg = dib7000p_read_word(state, 1925); /* read acces to make it works... strange ... */ in dib7000p_set_adc_state()
310 dib7000p_write_word(state, 1925, reg & ~(1 << 4)); /* en_slowAdc = 1 & reset_sladc = 0 */ in dib7000p_set_adc_state()
312 reg = dib7000p_read_word(state, 72) & ~((0x3 << 14) | (0x3 << 12)); in dib7000p_set_adc_state()
313 …dib7000p_write_word(state, 72, reg | (1 << 14) | (3 << 12) | 524); /* ref = Vin1 => Vbg ; sel = Vi… in dib7000p_set_adc_state()
316 dib7000p_write_word(state, 909, reg_909); in dib7000p_set_adc_state()
322 if (state->version == SOC7090) { in dib7000p_set_adc_state()
323 reg = dib7000p_read_word(state, 1925); in dib7000p_set_adc_state()
324 …dib7000p_write_word(state, 1925, (reg & ~(1 << 2)) | (1 << 4)); /* reset_sladc = 1 en_slowAdc = 0 … in dib7000p_set_adc_state()
353 reg_909 |= (state->cfg.disable_sample_and_hold & 1) << 4; in dib7000p_set_adc_state()
354 reg_908 |= (state->cfg.enable_current_mirror & 1) << 7; in dib7000p_set_adc_state()
356 if (state->version != SOC7090) { in dib7000p_set_adc_state()
357 dib7000p_write_word(state, 908, reg_908); in dib7000p_set_adc_state()
358 dib7000p_write_word(state, 909, reg_909); in dib7000p_set_adc_state()
362 static int dib7000p_set_bandwidth(struct dib7000p_state *state, u32 bw) in dib7000p_set_bandwidth() argument
367 state->current_bandwidth = bw; in dib7000p_set_bandwidth()
369 if (state->timf == 0) { in dib7000p_set_bandwidth()
371 timf = state->cfg.bw->timf; in dib7000p_set_bandwidth()
374 timf = state->timf; in dib7000p_set_bandwidth()
379 dib7000p_write_word(state, 23, (u16) ((timf >> 16) & 0xffff)); in dib7000p_set_bandwidth()
380 dib7000p_write_word(state, 24, (u16) ((timf) & 0xffff)); in dib7000p_set_bandwidth()
385 static int dib7000p_sad_calib(struct dib7000p_state *state) in dib7000p_sad_calib() argument
388 dib7000p_write_word(state, 73, (0 << 1) | (0 << 0)); in dib7000p_sad_calib()
390 if (state->version == SOC7090) in dib7000p_sad_calib()
391 dib7000p_write_word(state, 74, 2048); in dib7000p_sad_calib()
393 dib7000p_write_word(state, 74, 776); in dib7000p_sad_calib()
396 dib7000p_write_word(state, 73, (1 << 0)); in dib7000p_sad_calib()
397 dib7000p_write_word(state, 73, (0 << 0)); in dib7000p_sad_calib()
406 struct dib7000p_state *state = demod->demodulator_priv; in dib7000p_set_wbd_ref() local
409 state->wbd_ref = value; in dib7000p_set_wbd_ref()
410 return dib7000p_write_word(state, 105, (dib7000p_read_word(state, 105) & 0xf000) | value); in dib7000p_set_wbd_ref()
417 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_get_agc_values() local
420 *agc_global = dib7000p_read_word(state, 394); in dib7000p_get_agc_values()
422 *agc1 = dib7000p_read_word(state, 392); in dib7000p_get_agc_values()
424 *agc2 = dib7000p_read_word(state, 393); in dib7000p_get_agc_values()
426 *wbd = dib7000p_read_word(state, 397); in dib7000p_get_agc_values()
432 static void dib7000p_reset_pll(struct dib7000p_state *state) in dib7000p_reset_pll() argument
434 struct dibx000_bandwidth_config *bw = &state->cfg.bw[0]; in dib7000p_reset_pll()
437 if (state->version == SOC7090) { in dib7000p_reset_pll()
438 …dib7000p_write_word(state, 1856, (!bw->pll_reset << 13) | (bw->pll_range << 12) | (bw->pll_ratio <… in dib7000p_reset_pll()
440 while (((dib7000p_read_word(state, 1856) >> 15) & 0x1) != 1) in dib7000p_reset_pll()
443 dib7000p_write_word(state, 1857, dib7000p_read_word(state, 1857) | (!bw->pll_bypass << 15)); in dib7000p_reset_pll()
449 dib7000p_write_word(state, 900, clk_cfg0); in dib7000p_reset_pll()
452 …dib7000p_write_word(state, 903, (bw->pll_prediv << 5) | (((bw->pll_ratio >> 6) & 0x3) << 3) | (bw-… in dib7000p_reset_pll()
454 dib7000p_write_word(state, 900, clk_cfg0); in dib7000p_reset_pll()
457 dib7000p_write_word(state, 18, (u16) (((bw->internal * 1000) >> 16) & 0xffff)); in dib7000p_reset_pll()
458 dib7000p_write_word(state, 19, (u16) ((bw->internal * 1000) & 0xffff)); in dib7000p_reset_pll()
459 dib7000p_write_word(state, 21, (u16) ((bw->ifreq >> 16) & 0xffff)); in dib7000p_reset_pll()
460 dib7000p_write_word(state, 22, (u16) ((bw->ifreq) & 0xffff)); in dib7000p_reset_pll()
462 dib7000p_write_word(state, 72, bw->sad_cfg); in dib7000p_reset_pll()
465 static u32 dib7000p_get_internal_freq(struct dib7000p_state *state) in dib7000p_get_internal_freq() argument
467 u32 internal = (u32) dib7000p_read_word(state, 18) << 16; in dib7000p_get_internal_freq()
468 internal |= (u32) dib7000p_read_word(state, 19); in dib7000p_get_internal_freq()
476 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_update_pll() local
477 u16 reg_1857, reg_1856 = dib7000p_read_word(state, 1856); in dib7000p_update_pll()
488 reg_1857 = dib7000p_read_word(state, 1857); in dib7000p_update_pll()
489 dib7000p_write_word(state, 1857, reg_1857 & ~(1 << 15)); in dib7000p_update_pll()
491 …dib7000p_write_word(state, 1856, reg_1856 | ((bw->pll_ratio & 0x3f) << 6) | (bw->pll_prediv & 0x3f… in dib7000p_update_pll()
494 internal = dib7000p_get_internal_freq(state); in dib7000p_update_pll()
497 dib7000p_write_word(state, 18, (u16) ((internal >> 16) & 0xffff)); in dib7000p_update_pll()
498 dib7000p_write_word(state, 19, (u16) (internal & 0xffff)); in dib7000p_update_pll()
500 dib7000p_write_word(state, 1857, reg_1857 | (1 << 15)); in dib7000p_update_pll()
502 while (((dib7000p_read_word(state, 1856) >> 15) & 0x1) != 1) in dib7000p_update_pll()
544 struct dib7000p_state *state = demod->demodulator_priv; in dib7000p_set_gpio() local
545 return dib7000p_cfg_gpio(state, num, dir, val); in dib7000p_set_gpio()
632 static int dib7000p_demod_reset(struct dib7000p_state *state) in dib7000p_demod_reset() argument
634 dib7000p_set_power_mode(state, DIB7000P_POWER_ALL); in dib7000p_demod_reset()
636 if (state->version == SOC7090) in dib7000p_demod_reset()
637 dibx000_reset_i2c_master(&state->i2c_master); in dib7000p_demod_reset()
639 dib7000p_set_adc_state(state, DIBX000_VBG_ENABLE); in dib7000p_demod_reset()
642 dib7000p_write_word(state, 770, 0xffff); in dib7000p_demod_reset()
643 dib7000p_write_word(state, 771, 0xffff); in dib7000p_demod_reset()
644 dib7000p_write_word(state, 772, 0x001f); in dib7000p_demod_reset()
645 dib7000p_write_word(state, 1280, 0x001f - ((1 << 4) | (1 << 3))); in dib7000p_demod_reset()
647 dib7000p_write_word(state, 770, 0); in dib7000p_demod_reset()
648 dib7000p_write_word(state, 771, 0); in dib7000p_demod_reset()
649 dib7000p_write_word(state, 772, 0); in dib7000p_demod_reset()
650 dib7000p_write_word(state, 1280, 0); in dib7000p_demod_reset()
652 if (state->version != SOC7090) { in dib7000p_demod_reset()
653 dib7000p_write_word(state, 898, 0x0003); in dib7000p_demod_reset()
654 dib7000p_write_word(state, 898, 0); in dib7000p_demod_reset()
658 dib7000p_reset_pll(state); in dib7000p_demod_reset()
660 if (dib7000p_reset_gpio(state) != 0) in dib7000p_demod_reset()
663 if (state->version == SOC7090) { in dib7000p_demod_reset()
664 dib7000p_write_word(state, 899, 0); in dib7000p_demod_reset()
667 dib7000p_write_word(state, 42, (1<<5) | 3); /* P_iqc_thsat_ipc = 1 ; P_iqc_win2 = 3 */ in dib7000p_demod_reset()
668 dib7000p_write_word(state, 43, 0x2d4); /*-300 fag P_iqc_dect_min = -280 */ in dib7000p_demod_reset()
669 dib7000p_write_word(state, 44, 300); /* 300 fag P_iqc_dect_min = +280 */ in dib7000p_demod_reset()
670 dib7000p_write_word(state, 273, (0<<6) | 30); in dib7000p_demod_reset()
672 if (dib7000p_set_output_mode(state, OUTMODE_HIGH_Z) != 0) in dib7000p_demod_reset()
675 dib7000p_set_adc_state(state, DIBX000_SLOW_ADC_ON); in dib7000p_demod_reset()
676 dib7000p_sad_calib(state); in dib7000p_demod_reset()
677 dib7000p_set_adc_state(state, DIBX000_SLOW_ADC_OFF); in dib7000p_demod_reset()
680 dib7000p_write_word(state, 1285, dib7000p_read_word(state, 1285) & ~(1 << 1)); in dib7000p_demod_reset()
682 dib7000p_set_bandwidth(state, 8000); in dib7000p_demod_reset()
684 if (state->version == SOC7090) { in dib7000p_demod_reset()
685 …dib7000p_write_word(state, 36, 0x0755);/* P_iqc_impnc_on =1 & P_iqc_corr_inh = 1 for impulsive noi… in dib7000p_demod_reset()
687 if (state->cfg.tuner_is_baseband) in dib7000p_demod_reset()
688 dib7000p_write_word(state, 36, 0x0755); in dib7000p_demod_reset()
690 dib7000p_write_word(state, 36, 0x1f55); in dib7000p_demod_reset()
693 dib7000p_write_tab(state, dib7000p_defaults); in dib7000p_demod_reset()
694 if (state->version != SOC7090) { in dib7000p_demod_reset()
695 dib7000p_write_word(state, 901, 0x0006); in dib7000p_demod_reset()
696 dib7000p_write_word(state, 902, (3 << 10) | (1 << 6)); in dib7000p_demod_reset()
697 dib7000p_write_word(state, 905, 0x2c8e); in dib7000p_demod_reset()
700 dib7000p_set_power_mode(state, DIB7000P_POWER_INTERFACE_ONLY); in dib7000p_demod_reset()
705 static void dib7000p_pll_clk_cfg(struct dib7000p_state *state) in dib7000p_pll_clk_cfg() argument
708 tmp = dib7000p_read_word(state, 903); in dib7000p_pll_clk_cfg()
709 dib7000p_write_word(state, 903, (tmp | 0x1)); in dib7000p_pll_clk_cfg()
710 tmp = dib7000p_read_word(state, 900); in dib7000p_pll_clk_cfg()
711 dib7000p_write_word(state, 900, (tmp & 0x7fff) | (1 << 6)); in dib7000p_pll_clk_cfg()
714 static void dib7000p_restart_agc(struct dib7000p_state *state) in dib7000p_restart_agc() argument
717 dib7000p_write_word(state, 770, (1 << 11) | (1 << 9)); in dib7000p_restart_agc()
718 dib7000p_write_word(state, 770, 0x0000); in dib7000p_restart_agc()
721 static int dib7000p_update_lna(struct dib7000p_state *state) in dib7000p_update_lna() argument
725 if (state->cfg.update_lna) { in dib7000p_update_lna()
726 dyn_gain = dib7000p_read_word(state, 394); in dib7000p_update_lna()
727 if (state->cfg.update_lna(&state->demod, dyn_gain)) { in dib7000p_update_lna()
728 dib7000p_restart_agc(state); in dib7000p_update_lna()
736 static int dib7000p_set_agc_config(struct dib7000p_state *state, u8 band) in dib7000p_set_agc_config() argument
740 if (state->current_band == band && state->current_agc != NULL) in dib7000p_set_agc_config()
742 state->current_band = band; in dib7000p_set_agc_config()
744 for (i = 0; i < state->cfg.agc_config_count; i++) in dib7000p_set_agc_config()
745 if (state->cfg.agc[i].band_caps & band) { in dib7000p_set_agc_config()
746 agc = &state->cfg.agc[i]; in dib7000p_set_agc_config()
755 state->current_agc = agc; in dib7000p_set_agc_config()
758 dib7000p_write_word(state, 75, agc->setup); in dib7000p_set_agc_config()
759 dib7000p_write_word(state, 76, agc->inv_gain); in dib7000p_set_agc_config()
760 dib7000p_write_word(state, 77, agc->time_stabiliz); in dib7000p_set_agc_config()
761 dib7000p_write_word(state, 100, (agc->alpha_level << 12) | agc->thlock); in dib7000p_set_agc_config()
764 dib7000p_write_word(state, 101, (agc->alpha_mant << 5) | agc->alpha_exp); in dib7000p_set_agc_config()
765 dib7000p_write_word(state, 102, (agc->beta_mant << 6) | agc->beta_exp); in dib7000p_set_agc_config()
769 …state->wbd_ref != 0 ? state->wbd_ref : agc->wbd_ref, agc->wbd_sel, !agc->perform_agc_softsplit, ag… in dib7000p_set_agc_config()
771 if (state->wbd_ref != 0) in dib7000p_set_agc_config()
772 dib7000p_write_word(state, 105, (agc->wbd_inv << 12) | state->wbd_ref); in dib7000p_set_agc_config()
774 dib7000p_write_word(state, 105, (agc->wbd_inv << 12) | agc->wbd_ref); in dib7000p_set_agc_config()
776 …dib7000p_write_word(state, 106, (agc->wbd_sel << 13) | (agc->wbd_alpha << 9) | (agc->perform_agc_s… in dib7000p_set_agc_config()
778 dib7000p_write_word(state, 107, agc->agc1_max); in dib7000p_set_agc_config()
779 dib7000p_write_word(state, 108, agc->agc1_min); in dib7000p_set_agc_config()
780 dib7000p_write_word(state, 109, agc->agc2_max); in dib7000p_set_agc_config()
781 dib7000p_write_word(state, 110, agc->agc2_min); in dib7000p_set_agc_config()
782 dib7000p_write_word(state, 111, (agc->agc1_pt1 << 8) | agc->agc1_pt2); in dib7000p_set_agc_config()
783 dib7000p_write_word(state, 112, agc->agc1_pt3); in dib7000p_set_agc_config()
784 dib7000p_write_word(state, 113, (agc->agc1_slope1 << 8) | agc->agc1_slope2); in dib7000p_set_agc_config()
785 dib7000p_write_word(state, 114, (agc->agc2_pt1 << 8) | agc->agc2_pt2); in dib7000p_set_agc_config()
786 dib7000p_write_word(state, 115, (agc->agc2_slope1 << 8) | agc->agc2_slope2); in dib7000p_set_agc_config()
790 static void dib7000p_set_dds(struct dib7000p_state *state, s32 offset_khz) in dib7000p_set_dds() argument
792 u32 internal = dib7000p_get_internal_freq(state); in dib7000p_set_dds()
795 u32 dds = state->cfg.bw->ifreq & 0x1ffffff; in dib7000p_set_dds()
796 u8 invert = !!(state->cfg.bw->ifreq & (1 << 25)); in dib7000p_set_dds()
810 dib7000p_write_word(state, 21, (u16) (((dds >> 16) & 0x1ff) | (0 << 10) | (invert << 9))); in dib7000p_set_dds()
811 dib7000p_write_word(state, 22, (u16) (dds & 0xffff)); in dib7000p_set_dds()
818 struct dib7000p_state *state = demod->demodulator_priv; in dib7000p_agc_startup() local
820 u8 *agc_state = &state->agc_state; in dib7000p_agc_startup()
825 switch (state->agc_state) { in dib7000p_agc_startup()
827 dib7000p_set_power_mode(state, DIB7000P_POWER_ALL); in dib7000p_agc_startup()
828 if (state->version == SOC7090) { in dib7000p_agc_startup()
829 reg = dib7000p_read_word(state, 0x79b) & 0xff00; in dib7000p_agc_startup()
830 dib7000p_write_word(state, 0x79a, upd_demod_gain_period & 0xFFFF); /* lsb */ in dib7000p_agc_startup()
831 dib7000p_write_word(state, 0x79b, reg | (1 << 14) | ((upd_demod_gain_period >> 16) & 0xFF)); in dib7000p_agc_startup()
834 reg = dib7000p_read_word(state, 0x780); in dib7000p_agc_startup()
835 dib7000p_write_word(state, 0x780, (reg | (0x3)) & (~(1 << 7))); in dib7000p_agc_startup()
837 dib7000p_set_adc_state(state, DIBX000_ADC_ON); in dib7000p_agc_startup()
838 dib7000p_pll_clk_cfg(state); in dib7000p_agc_startup()
841 if (dib7000p_set_agc_config(state, BAND_OF_FREQUENCY(ch->frequency / 1000)) != 0) in dib7000p_agc_startup()
844 dib7000p_set_dds(state, 0); in dib7000p_agc_startup()
850 if (state->cfg.agc_control) in dib7000p_agc_startup()
851 state->cfg.agc_control(&state->demod, 1); in dib7000p_agc_startup()
853 dib7000p_write_word(state, 78, 32768); in dib7000p_agc_startup()
854 if (!state->current_agc->perform_agc_softsplit) { in dib7000p_agc_startup()
857 …dib7000p_write_word(state, 106, (state->current_agc->wbd_sel << 13) | (state->current_agc->wbd_alp… in dib7000p_agc_startup()
867 dib7000p_restart_agc(state); in dib7000p_agc_startup()
871 dib7000p_write_word(state, 75, state->current_agc->setup | (1 << 4)); /* freeze AGC loop */ in dib7000p_agc_startup()
872 …dib7000p_write_word(state, 106, (state->current_agc->wbd_sel << 13) | (2 << 9) | (0 << 8)); /* fas… in dib7000p_agc_startup()
878 agc_split = (u8) dib7000p_read_word(state, 396); /* store the split value for the next time */ in dib7000p_agc_startup()
879 dib7000p_write_word(state, 78, dib7000p_read_word(state, 394)); /* set AGC gain start value */ in dib7000p_agc_startup()
881 dib7000p_write_word(state, 75, state->current_agc->setup); /* std AGC loop */ in dib7000p_agc_startup()
882 …dib7000p_write_word(state, 106, (state->current_agc->wbd_sel << 13) | (state->current_agc->wbd_alp… in dib7000p_agc_startup()
884 dib7000p_restart_agc(state); in dib7000p_agc_startup()
895 if (dib7000p_update_lna(state)) in dib7000p_agc_startup()
902 if (state->cfg.agc_control) in dib7000p_agc_startup()
903 state->cfg.agc_control(&state->demod, 0); in dib7000p_agc_startup()
912 static void dib7000p_update_timf(struct dib7000p_state *state) in dib7000p_update_timf() argument
914 u32 timf = (dib7000p_read_word(state, 427) << 16) | dib7000p_read_word(state, 428); in dib7000p_update_timf()
915 state->timf = timf * 160 / (state->current_bandwidth / 50); in dib7000p_update_timf()
916 dib7000p_write_word(state, 23, (u16) (timf >> 16)); in dib7000p_update_timf()
917 dib7000p_write_word(state, 24, (u16) (timf & 0xffff)); in dib7000p_update_timf()
918 dprintk("updated timf_frequency: %d (default: %d)", state->timf, state->cfg.bw->timf); in dib7000p_update_timf()
924 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_ctrl_timf() local
927 state->timf = timf; in dib7000p_ctrl_timf()
930 dib7000p_update_timf(state); in dib7000p_ctrl_timf()
935 dib7000p_set_bandwidth(state, state->current_bandwidth); in dib7000p_ctrl_timf()
936 return state->timf; in dib7000p_ctrl_timf()
940 static void dib7000p_set_channel(struct dib7000p_state *state, in dib7000p_set_channel() argument
945 dib7000p_set_bandwidth(state, BANDWIDTH_TO_KHZ(ch->bandwidth_hz)); in dib7000p_set_channel()
1000 dib7000p_write_word(state, 0, value); in dib7000p_set_channel()
1001 dib7000p_write_word(state, 5, (seq << 4) | 1); /* do not force tps, search list 0 */ in dib7000p_set_channel()
1029 dib7000p_write_word(state, 208, value); in dib7000p_set_channel()
1032 dib7000p_write_word(state, 26, 0x6680); in dib7000p_set_channel()
1033 dib7000p_write_word(state, 32, 0x0003); in dib7000p_set_channel()
1034 dib7000p_write_word(state, 29, 0x1273); in dib7000p_set_channel()
1035 dib7000p_write_word(state, 33, 0x0005); in dib7000p_set_channel()
1065 if (state->cfg.diversity_delay == 0) in dib7000p_set_channel()
1066 state->div_sync_wait = (value * 3) / 2 + 48; in dib7000p_set_channel()
1068 state->div_sync_wait = (value * 3) / 2 + state->cfg.diversity_delay; in dib7000p_set_channel()
1071 state->div_force_off = !1 && ch->transmission_mode != TRANSMISSION_MODE_8K; in dib7000p_set_channel()
1072 dib7000p_set_diversity_in(&state->demod, state->div_state); in dib7000p_set_channel()
1096 dib7000p_write_word(state, 187 + value, est[value]); in dib7000p_set_channel()
1102 struct dib7000p_state *state = demod->demodulator_priv; in dib7000p_autosearch_start() local
1105 u32 internal = dib7000p_get_internal_freq(state); in dib7000p_autosearch_start()
1115 dib7000p_set_channel(state, &schan, 7); in dib7000p_autosearch_start()
1119 if (state->version == SOC7090) in dib7000p_autosearch_start()
1127 dib7000p_write_word(state, 6, (u16) ((value >> 16) & 0xffff)); in dib7000p_autosearch_start()
1128 dib7000p_write_word(state, 7, (u16) (value & 0xffff)); in dib7000p_autosearch_start()
1130 dib7000p_write_word(state, 8, (u16) ((value >> 16) & 0xffff)); in dib7000p_autosearch_start()
1131 dib7000p_write_word(state, 9, (u16) (value & 0xffff)); in dib7000p_autosearch_start()
1133 dib7000p_write_word(state, 10, (u16) ((value >> 16) & 0xffff)); in dib7000p_autosearch_start()
1134 dib7000p_write_word(state, 11, (u16) (value & 0xffff)); in dib7000p_autosearch_start()
1136 value = dib7000p_read_word(state, 0); in dib7000p_autosearch_start()
1137 dib7000p_write_word(state, 0, (u16) ((1 << 9) | value)); in dib7000p_autosearch_start()
1138 dib7000p_read_word(state, 1284); in dib7000p_autosearch_start()
1139 dib7000p_write_word(state, 0, (u16) value); in dib7000p_autosearch_start()
1146 struct dib7000p_state *state = demod->demodulator_priv; in dib7000p_autosearch_is_irq() local
1147 u16 irq_pending = dib7000p_read_word(state, 1284); in dib7000p_autosearch_is_irq()
1158 static void dib7000p_spur_protect(struct dib7000p_state *state, u32 rf_khz, u32 bw) in dib7000p_spur_protect() argument
1180 u32 xtal = state->cfg.bw->xtal_hz / 1000; in dib7000p_spur_protect()
1194 dib7000p_write_word(state, 142, 0x0610); in dib7000p_spur_protect()
1239 dib7000p_write_word(state, 143, (0 << 14) | (k << 10) | (coef_re[k] & 0x3ff)); in dib7000p_spur_protect()
1240 dib7000p_write_word(state, 144, coef_im[k] & 0x3ff); in dib7000p_spur_protect()
1241 dib7000p_write_word(state, 143, (1 << 14) | (k << 10) | (coef_re[k] & 0x3ff)); in dib7000p_spur_protect()
1243 dib7000p_write_word(state, 143, 0); in dib7000p_spur_protect()
1249 struct dib7000p_state *state = demod->demodulator_priv; in dib7000p_tune() local
1253 dib7000p_set_channel(state, ch, 0); in dib7000p_tune()
1258 dib7000p_write_word(state, 770, 0x4000); in dib7000p_tune()
1259 dib7000p_write_word(state, 770, 0x0000); in dib7000p_tune()
1264 if (state->sfn_workaround_active) { in dib7000p_tune()
1267 dib7000p_write_word(state, 166, 0x4000); in dib7000p_tune()
1269 dib7000p_write_word(state, 166, 0x0000); in dib7000p_tune()
1271 dib7000p_write_word(state, 29, tmp); in dib7000p_tune()
1274 if (state->timf == 0) in dib7000p_tune()
1293 dib7000p_write_word(state, 26, tmp); /* timf_a(6xxx) */ in dib7000p_tune()
1309 dib7000p_write_word(state, 32, tmp); in dib7000p_tune()
1325 dib7000p_write_word(state, 33, tmp); in dib7000p_tune()
1327 tmp = dib7000p_read_word(state, 509); in dib7000p_tune()
1330 tmp = dib7000p_read_word(state, 771); in dib7000p_tune()
1331 dib7000p_write_word(state, 771, tmp | (1 << 1)); in dib7000p_tune()
1332 dib7000p_write_word(state, 771, tmp); in dib7000p_tune()
1334 tmp = dib7000p_read_word(state, 509); in dib7000p_tune()
1338 dib7000p_update_timf(state); in dib7000p_tune()
1340 tmp = dib7000p_read_word(state, 26); in dib7000p_tune()
1341 dib7000p_write_word(state, 26, (tmp & ~(0xf << 12)) | ((((tmp >> 12) & 0xf) + 5) << 12)); in dib7000p_tune()
1344 if (state->cfg.spur_protect) in dib7000p_tune()
1345 dib7000p_spur_protect(state, ch->frequency / 1000, BANDWIDTH_TO_KHZ(ch->bandwidth_hz)); in dib7000p_tune()
1347 dib7000p_set_bandwidth(state, BANDWIDTH_TO_KHZ(ch->bandwidth_hz)); in dib7000p_tune()
1353 struct dib7000p_state *state = demod->demodulator_priv; in dib7000p_wakeup() local
1354 dib7000p_set_power_mode(state, DIB7000P_POWER_ALL); in dib7000p_wakeup()
1355 dib7000p_set_adc_state(state, DIBX000_SLOW_ADC_ON); in dib7000p_wakeup()
1356 if (state->version == SOC7090) in dib7000p_wakeup()
1357 dib7000p_sad_calib(state); in dib7000p_wakeup()
1363 struct dib7000p_state *state = demod->demodulator_priv; in dib7000p_sleep() local
1364 if (state->version == SOC7090) in dib7000p_sleep()
1365 return dib7000p_set_power_mode(state, DIB7000P_POWER_INTERFACE_ONLY); in dib7000p_sleep()
1366 …return dib7000p_set_output_mode(state, OUTMODE_HIGH_Z) | dib7000p_set_power_mode(state, DIB7000P_P… in dib7000p_sleep()
1390 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_get_frontend() local
1391 u16 tps = dib7000p_read_word(state, 463); in dib7000p_get_frontend()
1395 fep->bandwidth_hz = BANDWIDTH_TO_HZ(state->current_bandwidth); in dib7000p_get_frontend()
1478 /* native interleaver: (dib7000p_read_word(state, 464) >> 5) & 0x1 */ in dib7000p_get_frontend()
1486 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_set_frontend() local
1489 if (state->version == SOC7090) in dib7000p_set_frontend()
1492 dib7000p_set_output_mode(state, OUTMODE_HIGH_Z); in dib7000p_set_frontend()
1495 state->sfn_workaround_active = buggy_sfn_workaround; in dib7000p_set_frontend()
1501 state->agc_state = 0; in dib7000p_set_frontend()
1528 if (state->version == SOC7090) { in dib7000p_set_frontend()
1529 dib7090_set_output_mode(fe, state->cfg.output_mode); in dib7000p_set_frontend()
1530 if (state->cfg.enMpegOutput == 0) { in dib7000p_set_frontend()
1531 dib7090_setDibTxMux(state, MPEG_ON_DIBTX); in dib7000p_set_frontend()
1532 dib7090_setHostBusMux(state, DIBTX_ON_HOSTBUS); in dib7000p_set_frontend()
1535 dib7000p_set_output_mode(state, state->cfg.output_mode); in dib7000p_set_frontend()
1542 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_read_status() local
1543 u16 lock = dib7000p_read_word(state, 509); in dib7000p_read_status()
1563 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_read_ber() local
1564 *ber = (dib7000p_read_word(state, 500) << 16) | dib7000p_read_word(state, 501); in dib7000p_read_ber()
1570 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_read_unc_blocks() local
1571 *unc = dib7000p_read_word(state, 506); in dib7000p_read_unc_blocks()
1577 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_read_signal_strength() local
1578 u16 val = dib7000p_read_word(state, 394); in dib7000p_read_signal_strength()
1585 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_read_snr() local
1590 val = dib7000p_read_word(state, 479); in dib7000p_read_snr()
1593 val = dib7000p_read_word(state, 480); in dib7000p_read_snr()
1687 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_pid_filter_ctrl() local
1688 u16 val = dib7000p_read_word(state, 235) & 0xffef; in dib7000p_pid_filter_ctrl()
1691 return dib7000p_write_word(state, 235, val); in dib7000p_pid_filter_ctrl()
1697 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_pid_filter() local
1699 return dib7000p_write_word(state, 241 + id, onoff ? (1 << 13) | pid : 0); in dib7000p_pid_filter()
1770 struct dib7000p_state *state = fe->demodulator_priv; in dib7000p_get_adc_power() local
1776 buf[0] = dib7000p_read_word(state, 0x184); in dib7000p_get_adc_power()
1777 buf[1] = dib7000p_read_word(state, 0x185); in dib7000p_get_adc_power()
1819 struct dib7000p_state *state = i2c_get_adapdata(i2c_adap); in w7090p_tuner_write_serpar() local
1825 n_overflow = (dib7000p_read_word(state, 1984) >> 1) & 0x1; in w7090p_tuner_write_serpar()
1830 dib7000p_write_word(state, 1985, (1 << 6) | (serpar_num & 0x3f)); in w7090p_tuner_write_serpar()
1831 dib7000p_write_word(state, 1986, (msg[0].buf[1] << 8) | msg[0].buf[2]); in w7090p_tuner_write_serpar()
1838 struct dib7000p_state *state = i2c_get_adapdata(i2c_adap); in w7090p_tuner_read_serpar() local
1845 n_overflow = (dib7000p_read_word(state, 1984) >> 1) & 0x1; in w7090p_tuner_read_serpar()
1850 dib7000p_write_word(state, 1985, (0 << 6) | (serpar_num & 0x3f)); in w7090p_tuner_read_serpar()
1854 n_empty = dib7000p_read_word(state, 1984) & 0x1; in w7090p_tuner_read_serpar()
1859 read_word = dib7000p_read_word(state, 1987); in w7090p_tuner_read_serpar()
1881 struct dib7000p_state *state = i2c_get_adapdata(i2c_adap); in dib7090p_rw_on_apb() local
1885 dib7000p_write_word(state, apb_address, ((msg[0].buf[1] << 8) | (msg[0].buf[2]))); in dib7090p_rw_on_apb()
1887 word = dib7000p_read_word(state, apb_address); in dib7090p_rw_on_apb()
1897 struct dib7000p_state *state = i2c_get_adapdata(i2c_adap); in dib7090_tuner_xfer() local
1987 i = ((dib7000p_read_word(state, 72) >> 12) & 0x3); in dib7090_tuner_xfer()
1988 word = dib7000p_read_word(state, 384 + i); in dib7090_tuner_xfer()
1996 word = (dib7000p_read_word(state, 72) & ~(3 << 12)) | (word << 12); in dib7090_tuner_xfer()
1997 dib7000p_write_word(state, 72, word); /* Set the proper input */ in dib7090_tuner_xfer()
2027 static int dib7090_host_bus_drive(struct dib7000p_state *state, u8 drive) in dib7090_host_bus_drive() argument
2032 reg = dib7000p_read_word(state, 1798) & ~((0x7) | (0x7 << 6) | (0x7 << 12)); in dib7090_host_bus_drive()
2034 dib7000p_write_word(state, 1798, reg); in dib7090_host_bus_drive()
2037 reg = dib7000p_read_word(state, 1799) & ~((0x7 << 2) | (0x7 << 8)); in dib7090_host_bus_drive()
2039 dib7000p_write_word(state, 1799, reg); in dib7090_host_bus_drive()
2042 reg = dib7000p_read_word(state, 1800) & ~((0x7) | (0x7 << 6) | (0x7 << 12)); in dib7090_host_bus_drive()
2044 dib7000p_write_word(state, 1800, reg); in dib7090_host_bus_drive()
2047 reg = dib7000p_read_word(state, 1801) & ~((0x7 << 2) | (0x7 << 8)); in dib7090_host_bus_drive()
2049 dib7000p_write_word(state, 1801, reg); in dib7090_host_bus_drive()
2052 reg = dib7000p_read_word(state, 1802) & ~((0x7) | (0x7 << 6) | (0x7 << 12)); in dib7090_host_bus_drive()
2054 dib7000p_write_word(state, 1802, reg); in dib7090_host_bus_drive()
2077 static int dib7090_cfg_DibTx(struct dib7000p_state *state, u32 P_Kin, u32 P_Kout, u32 insertExtSync… in dib7090_cfg_DibTx() argument
2081 dib7000p_write_word(state, 1615, 1); in dib7090_cfg_DibTx()
2082 dib7000p_write_word(state, 1603, P_Kin); in dib7090_cfg_DibTx()
2083 dib7000p_write_word(state, 1605, P_Kout); in dib7090_cfg_DibTx()
2084 dib7000p_write_word(state, 1606, insertExtSynchro); in dib7090_cfg_DibTx()
2085 dib7000p_write_word(state, 1608, synchroMode); in dib7090_cfg_DibTx()
2086 dib7000p_write_word(state, 1609, (syncWord >> 16) & 0xffff); in dib7090_cfg_DibTx()
2087 dib7000p_write_word(state, 1610, syncWord & 0xffff); in dib7090_cfg_DibTx()
2088 dib7000p_write_word(state, 1612, syncSize); in dib7090_cfg_DibTx()
2089 dib7000p_write_word(state, 1615, 0); in dib7090_cfg_DibTx()
2094 static int dib7090_cfg_DibRx(struct dib7000p_state *state, u32 P_Kin, u32 P_Kout, u32 synchroMode, … in dib7090_cfg_DibRx() argument
2102 dib7000p_write_word(state, 1542, syncFreq); in dib7090_cfg_DibRx()
2104 dib7000p_write_word(state, 1554, 1); in dib7090_cfg_DibRx()
2105 dib7000p_write_word(state, 1536, P_Kin); in dib7090_cfg_DibRx()
2106 dib7000p_write_word(state, 1537, P_Kout); in dib7090_cfg_DibRx()
2107 dib7000p_write_word(state, 1539, synchroMode); in dib7090_cfg_DibRx()
2108 dib7000p_write_word(state, 1540, (syncWord >> 16) & 0xffff); in dib7090_cfg_DibRx()
2109 dib7000p_write_word(state, 1541, syncWord & 0xffff); in dib7090_cfg_DibRx()
2110 dib7000p_write_word(state, 1543, syncSize); in dib7090_cfg_DibRx()
2111 dib7000p_write_word(state, 1544, dataOutRate); in dib7090_cfg_DibRx()
2112 dib7000p_write_word(state, 1554, 0); in dib7090_cfg_DibRx()
2117 static void dib7090_enMpegMux(struct dib7000p_state *state, int onoff) in dib7090_enMpegMux() argument
2119 u16 reg_1287 = dib7000p_read_word(state, 1287); in dib7090_enMpegMux()
2130 dib7000p_write_word(state, 1287, reg_1287); in dib7090_enMpegMux()
2133 static void dib7090_configMpegMux(struct dib7000p_state *state, in dib7090_configMpegMux() argument
2138 dib7090_enMpegMux(state, 0); in dib7090_configMpegMux()
2141 if ((enSerialMode == 1) && (state->input_mode_mpeg == 1)) in dib7090_configMpegMux()
2144 dib7000p_write_word(state, 1287, ((pulseWidth & 0x1f) << 2) in dib7090_configMpegMux()
2148 dib7090_enMpegMux(state, 1); in dib7090_configMpegMux()
2151 static void dib7090_setDibTxMux(struct dib7000p_state *state, int mode) in dib7090_setDibTxMux() argument
2153 u16 reg_1288 = dib7000p_read_word(state, 1288) & ~(0x7 << 7); in dib7090_setDibTxMux()
2158 dib7090_cfg_DibTx(state, 8, 5, 0, 0, 0, 0); in dib7090_setDibTxMux()
2163 dib7090_cfg_DibTx(state, 5, 5, 0, 0, 0, 0); in dib7090_setDibTxMux()
2168 dib7090_cfg_DibTx(state, 20, 5, 10, 0, 0, 0); in dib7090_setDibTxMux()
2174 dib7000p_write_word(state, 1288, reg_1288); in dib7090_setDibTxMux()
2177 static void dib7090_setHostBusMux(struct dib7000p_state *state, int mode) in dib7090_setHostBusMux() argument
2179 u16 reg_1288 = dib7000p_read_word(state, 1288) & ~(0x7 << 4); in dib7090_setHostBusMux()
2184 dib7090_enMpegMux(state, 0); in dib7090_setHostBusMux()
2189 dib7090_enMpegMux(state, 0); in dib7090_setHostBusMux()
2199 dib7000p_write_word(state, 1288, reg_1288); in dib7090_setHostBusMux()
2204 struct dib7000p_state *state = fe->demodulator_priv; in dib7090_set_diversity_in() local
2210 dib7090_cfg_DibRx(state, 8, 5, 0, 0, 0, 8, 0); in dib7090_set_diversity_in()
2214 reg_1287 = dib7000p_read_word(state, 1287); in dib7090_set_diversity_in()
2219 dib7000p_write_word(state, 1287, reg_1287); in dib7090_set_diversity_in()
2221 state->input_mode_mpeg = 1; in dib7090_set_diversity_in()
2226 dib7090_cfg_DibRx(state, 5, 5, 0, 0, 0, 0, 0); in dib7090_set_diversity_in()
2227 state->input_mode_mpeg = 0; in dib7090_set_diversity_in()
2231 dib7000p_set_diversity_in(&state->demod, onoff); in dib7090_set_diversity_in()
2237 struct dib7000p_state *state = fe->demodulator_priv; in dib7090_set_output_mode() local
2243 dib7090_host_bus_drive(state, 1); in dib7090_set_output_mode()
2246 smo_mode = (dib7000p_read_word(state, 235) & 0x0050) | (1 << 1); in dib7090_set_output_mode()
2247 outreg = dib7000p_read_word(state, 1286) & ~((1 << 10) | (0x7 << 6) | (1 << 1)); in dib7090_set_output_mode()
2257 dib7090_configMpegMux(state, 3, 1, 1); in dib7090_set_output_mode()
2258 dib7090_setHostBusMux(state, MPEG_ON_HOSTBUS); in dib7090_set_output_mode()
2261 dib7090_setHostBusMux(state, DEMOUT_ON_HOSTBUS); in dib7090_set_output_mode()
2269 dib7090_configMpegMux(state, 2, 0, 0); in dib7090_set_output_mode()
2270 dib7090_setHostBusMux(state, MPEG_ON_HOSTBUS); in dib7090_set_output_mode()
2273 dib7090_setHostBusMux(state, DEMOUT_ON_HOSTBUS); in dib7090_set_output_mode()
2280 dib7090_setHostBusMux(state, DEMOUT_ON_HOSTBUS); in dib7090_set_output_mode()
2286 dib7090_setHostBusMux(state, DEMOUT_ON_HOSTBUS); in dib7090_set_output_mode()
2294 dib7090_setDibTxMux(state, DIV_ON_DIBTX); in dib7090_set_output_mode()
2295 dib7090_setHostBusMux(state, DIBTX_ON_HOSTBUS); in dib7090_set_output_mode()
2300 dib7090_setDibTxMux(state, ADC_ON_DIBTX); in dib7090_set_output_mode()
2301 dib7090_setHostBusMux(state, DIBTX_ON_HOSTBUS); in dib7090_set_output_mode()
2307 if (state->cfg.output_mpeg2_in_188_bytes) in dib7090_set_output_mode()
2310 ret |= dib7000p_write_word(state, 235, smo_mode); in dib7090_set_output_mode()
2311 ret |= dib7000p_write_word(state, 236, fifo_threshold); /* synchronous fread */ in dib7090_set_output_mode()
2312 ret |= dib7000p_write_word(state, 1286, outreg); in dib7090_set_output_mode()
2319 struct dib7000p_state *state = fe->demodulator_priv; in dib7090_tuner_sleep() local
2324 en_cur_state = dib7000p_read_word(state, 1922); in dib7090_tuner_sleep()
2327 state->tuner_enable = en_cur_state; in dib7090_tuner_sleep()
2332 if (state->tuner_enable != 0) in dib7090_tuner_sleep()
2333 en_cur_state = state->tuner_enable; in dib7090_tuner_sleep()
2336 dib7000p_write_word(state, 1922, en_cur_state); in dib7090_tuner_sleep()
2350 struct dib7000p_state *state = fe->demodulator_priv; in dib7090_slave_reset() local
2353 reg = dib7000p_read_word(state, 1794); in dib7090_slave_reset()
2354 dib7000p_write_word(state, 1794, reg | (4 << 12)); in dib7090_slave_reset()
2356 dib7000p_write_word(state, 1032, 0xffff); in dib7090_slave_reset()