aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@redhat.com>2011-12-22 18:34:47 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-12-31 06:16:34 -0500
commitfe08492935e6b20fc2e30ced262acb0546b32e0f (patch)
tree497cc80e7d739a5326a1f03ed572460c45788967
parent9e9c5bf73ffa8bbd870139589e5e490f1b02a283 (diff)
[media] dib3000mb: convert set_fontend to use DVBv5 parameters
Instead of using dvb_frontend_parameters struct, that were designed for a subset of the supported standards, use the DVBv5 cache information. Also, fill the supported delivery systems at dvb_frontend_ops struct. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb/frontends/dib3000mb.c111
1 files changed, 54 insertions, 57 deletions
diff --git a/drivers/media/dvb/frontends/dib3000mb.c b/drivers/media/dvb/frontends/dib3000mb.c
index 77af24098fc5..de9ed6cf1422 100644
--- a/drivers/media/dvb/frontends/dib3000mb.c
+++ b/drivers/media/dvb/frontends/dib3000mb.c
@@ -113,13 +113,12 @@ static u16 dib3000_seq[2][2][2] = /* fft,gua, inv */
113 }; 113 };
114 114
115static int dib3000mb_get_frontend(struct dvb_frontend* fe, 115static int dib3000mb_get_frontend(struct dvb_frontend* fe,
116 struct dvb_frontend_parameters *fep); 116 struct dtv_frontend_properties *c);
117 117
118static int dib3000mb_set_frontend(struct dvb_frontend* fe, 118static int dib3000mb_set_frontend(struct dvb_frontend *fe, int tuner)
119 struct dvb_frontend_parameters *fep, int tuner)
120{ 119{
121 struct dib3000_state* state = fe->demodulator_priv; 120 struct dib3000_state* state = fe->demodulator_priv;
122 struct dvb_ofdm_parameters *ofdm = &fep->u.ofdm; 121 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
123 fe_code_rate_t fe_cr = FEC_NONE; 122 fe_code_rate_t fe_cr = FEC_NONE;
124 int search_state, seq; 123 int search_state, seq;
125 124
@@ -128,23 +127,23 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
128 if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0); 127 if (fe->ops.i2c_gate_ctrl) fe->ops.i2c_gate_ctrl(fe, 0);
129 128
130 deb_setf("bandwidth: "); 129 deb_setf("bandwidth: ");
131 switch (ofdm->bandwidth) { 130 switch (c->bandwidth_hz) {
132 case BANDWIDTH_8_MHZ: 131 case 8000000:
133 deb_setf("8 MHz\n"); 132 deb_setf("8 MHz\n");
134 wr_foreach(dib3000mb_reg_timing_freq, dib3000mb_timing_freq[2]); 133 wr_foreach(dib3000mb_reg_timing_freq, dib3000mb_timing_freq[2]);
135 wr_foreach(dib3000mb_reg_bandwidth, dib3000mb_bandwidth_8mhz); 134 wr_foreach(dib3000mb_reg_bandwidth, dib3000mb_bandwidth_8mhz);
136 break; 135 break;
137 case BANDWIDTH_7_MHZ: 136 case 7000000:
138 deb_setf("7 MHz\n"); 137 deb_setf("7 MHz\n");
139 wr_foreach(dib3000mb_reg_timing_freq, dib3000mb_timing_freq[1]); 138 wr_foreach(dib3000mb_reg_timing_freq, dib3000mb_timing_freq[1]);
140 wr_foreach(dib3000mb_reg_bandwidth, dib3000mb_bandwidth_7mhz); 139 wr_foreach(dib3000mb_reg_bandwidth, dib3000mb_bandwidth_7mhz);
141 break; 140 break;
142 case BANDWIDTH_6_MHZ: 141 case 6000000:
143 deb_setf("6 MHz\n"); 142 deb_setf("6 MHz\n");
144 wr_foreach(dib3000mb_reg_timing_freq, dib3000mb_timing_freq[0]); 143 wr_foreach(dib3000mb_reg_timing_freq, dib3000mb_timing_freq[0]);
145 wr_foreach(dib3000mb_reg_bandwidth, dib3000mb_bandwidth_6mhz); 144 wr_foreach(dib3000mb_reg_bandwidth, dib3000mb_bandwidth_6mhz);
146 break; 145 break;
147 case BANDWIDTH_AUTO: 146 case 0:
148 return -EOPNOTSUPP; 147 return -EOPNOTSUPP;
149 default: 148 default:
150 err("unknown bandwidth value."); 149 err("unknown bandwidth value.");
@@ -154,7 +153,7 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
154 wr(DIB3000MB_REG_LOCK1_MASK, DIB3000MB_LOCK1_SEARCH_4); 153 wr(DIB3000MB_REG_LOCK1_MASK, DIB3000MB_LOCK1_SEARCH_4);
155 154
156 deb_setf("transmission mode: "); 155 deb_setf("transmission mode: ");
157 switch (ofdm->transmission_mode) { 156 switch (c->transmission_mode) {
158 case TRANSMISSION_MODE_2K: 157 case TRANSMISSION_MODE_2K:
159 deb_setf("2k\n"); 158 deb_setf("2k\n");
160 wr(DIB3000MB_REG_FFT, DIB3000_TRANSMISSION_MODE_2K); 159 wr(DIB3000MB_REG_FFT, DIB3000_TRANSMISSION_MODE_2K);
@@ -171,7 +170,7 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
171 } 170 }
172 171
173 deb_setf("guard: "); 172 deb_setf("guard: ");
174 switch (ofdm->guard_interval) { 173 switch (c->guard_interval) {
175 case GUARD_INTERVAL_1_32: 174 case GUARD_INTERVAL_1_32:
176 deb_setf("1_32\n"); 175 deb_setf("1_32\n");
177 wr(DIB3000MB_REG_GUARD_TIME, DIB3000_GUARD_TIME_1_32); 176 wr(DIB3000MB_REG_GUARD_TIME, DIB3000_GUARD_TIME_1_32);
@@ -196,7 +195,7 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
196 } 195 }
197 196
198 deb_setf("inversion: "); 197 deb_setf("inversion: ");
199 switch (fep->inversion) { 198 switch (c->inversion) {
200 case INVERSION_OFF: 199 case INVERSION_OFF:
201 deb_setf("off\n"); 200 deb_setf("off\n");
202 wr(DIB3000MB_REG_DDS_INV, DIB3000_DDS_INVERSION_OFF); 201 wr(DIB3000MB_REG_DDS_INV, DIB3000_DDS_INVERSION_OFF);
@@ -212,8 +211,8 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
212 return -EINVAL; 211 return -EINVAL;
213 } 212 }
214 213
215 deb_setf("constellation: "); 214 deb_setf("modulation: ");
216 switch (ofdm->constellation) { 215 switch (c->modulation) {
217 case QPSK: 216 case QPSK:
218 deb_setf("qpsk\n"); 217 deb_setf("qpsk\n");
219 wr(DIB3000MB_REG_QAM, DIB3000_CONSTELLATION_QPSK); 218 wr(DIB3000MB_REG_QAM, DIB3000_CONSTELLATION_QPSK);
@@ -232,7 +231,7 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
232 return -EINVAL; 231 return -EINVAL;
233 } 232 }
234 deb_setf("hierarchy: "); 233 deb_setf("hierarchy: ");
235 switch (ofdm->hierarchy_information) { 234 switch (c->hierarchy) {
236 case HIERARCHY_NONE: 235 case HIERARCHY_NONE:
237 deb_setf("none "); 236 deb_setf("none ");
238 /* fall through */ 237 /* fall through */
@@ -256,16 +255,16 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
256 } 255 }
257 256
258 deb_setf("hierarchy: "); 257 deb_setf("hierarchy: ");
259 if (ofdm->hierarchy_information == HIERARCHY_NONE) { 258 if (c->hierarchy == HIERARCHY_NONE) {
260 deb_setf("none\n"); 259 deb_setf("none\n");
261 wr(DIB3000MB_REG_VIT_HRCH, DIB3000_HRCH_OFF); 260 wr(DIB3000MB_REG_VIT_HRCH, DIB3000_HRCH_OFF);
262 wr(DIB3000MB_REG_VIT_HP, DIB3000_SELECT_HP); 261 wr(DIB3000MB_REG_VIT_HP, DIB3000_SELECT_HP);
263 fe_cr = ofdm->code_rate_HP; 262 fe_cr = c->code_rate_HP;
264 } else if (ofdm->hierarchy_information != HIERARCHY_AUTO) { 263 } else if (c->hierarchy != HIERARCHY_AUTO) {
265 deb_setf("on\n"); 264 deb_setf("on\n");
266 wr(DIB3000MB_REG_VIT_HRCH, DIB3000_HRCH_ON); 265 wr(DIB3000MB_REG_VIT_HRCH, DIB3000_HRCH_ON);
267 wr(DIB3000MB_REG_VIT_HP, DIB3000_SELECT_LP); 266 wr(DIB3000MB_REG_VIT_HP, DIB3000_SELECT_LP);
268 fe_cr = ofdm->code_rate_LP; 267 fe_cr = c->code_rate_LP;
269 } 268 }
270 deb_setf("fec: "); 269 deb_setf("fec: ");
271 switch (fe_cr) { 270 switch (fe_cr) {
@@ -300,9 +299,9 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
300 } 299 }
301 300
302 seq = dib3000_seq 301 seq = dib3000_seq
303 [ofdm->transmission_mode == TRANSMISSION_MODE_AUTO] 302 [c->transmission_mode == TRANSMISSION_MODE_AUTO]
304 [ofdm->guard_interval == GUARD_INTERVAL_AUTO] 303 [c->guard_interval == GUARD_INTERVAL_AUTO]
305 [fep->inversion == INVERSION_AUTO]; 304 [c->inversion == INVERSION_AUTO];
306 305
307 deb_setf("seq? %d\n", seq); 306 deb_setf("seq? %d\n", seq);
308 307
@@ -310,8 +309,8 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
310 309
311 wr(DIB3000MB_REG_ISI, seq ? DIB3000MB_ISI_INHIBIT : DIB3000MB_ISI_ACTIVATE); 310 wr(DIB3000MB_REG_ISI, seq ? DIB3000MB_ISI_INHIBIT : DIB3000MB_ISI_ACTIVATE);
312 311
313 if (ofdm->transmission_mode == TRANSMISSION_MODE_2K) { 312 if (c->transmission_mode == TRANSMISSION_MODE_2K) {
314 if (ofdm->guard_interval == GUARD_INTERVAL_1_8) { 313 if (c->guard_interval == GUARD_INTERVAL_1_8) {
315 wr(DIB3000MB_REG_SYNC_IMPROVEMENT, DIB3000MB_SYNC_IMPROVE_2K_1_8); 314 wr(DIB3000MB_REG_SYNC_IMPROVEMENT, DIB3000MB_SYNC_IMPROVE_2K_1_8);
316 } else { 315 } else {
317 wr(DIB3000MB_REG_SYNC_IMPROVEMENT, DIB3000MB_SYNC_IMPROVE_DEFAULT); 316 wr(DIB3000MB_REG_SYNC_IMPROVEMENT, DIB3000MB_SYNC_IMPROVE_DEFAULT);
@@ -339,10 +338,10 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
339 wr_foreach(dib3000mb_reg_agc_bandwidth, dib3000mb_agc_bandwidth_low); 338 wr_foreach(dib3000mb_reg_agc_bandwidth, dib3000mb_agc_bandwidth_low);
340 339
341 /* something has to be auto searched */ 340 /* something has to be auto searched */
342 if (ofdm->constellation == QAM_AUTO || 341 if (c->modulation == QAM_AUTO ||
343 ofdm->hierarchy_information == HIERARCHY_AUTO || 342 c->hierarchy == HIERARCHY_AUTO ||
344 fe_cr == FEC_AUTO || 343 fe_cr == FEC_AUTO ||
345 fep->inversion == INVERSION_AUTO) { 344 c->inversion == INVERSION_AUTO) {
346 int as_count=0; 345 int as_count=0;
347 346
348 deb_setf("autosearch enabled.\n"); 347 deb_setf("autosearch enabled.\n");
@@ -361,10 +360,9 @@ static int dib3000mb_set_frontend(struct dvb_frontend* fe,
361 deb_setf("search_state after autosearch %d after %d checks\n",search_state,as_count); 360 deb_setf("search_state after autosearch %d after %d checks\n",search_state,as_count);
362 361
363 if (search_state == 1) { 362 if (search_state == 1) {
364 struct dvb_frontend_parameters feps; 363 if (dib3000mb_get_frontend(fe, c) == 0) {
365 if (dib3000mb_get_frontend(fe, &feps) == 0) {
366 deb_setf("reading tuning data from frontend succeeded.\n"); 364 deb_setf("reading tuning data from frontend succeeded.\n");
367 return dib3000mb_set_frontend(fe, &feps, 0); 365 return dib3000mb_set_frontend(fe, 0);
368 } 366 }
369 } 367 }
370 368
@@ -454,10 +452,9 @@ static int dib3000mb_fe_init(struct dvb_frontend* fe, int mobile_mode)
454} 452}
455 453
456static int dib3000mb_get_frontend(struct dvb_frontend* fe, 454static int dib3000mb_get_frontend(struct dvb_frontend* fe,
457 struct dvb_frontend_parameters *fep) 455 struct dtv_frontend_properties *c)
458{ 456{
459 struct dib3000_state* state = fe->demodulator_priv; 457 struct dib3000_state* state = fe->demodulator_priv;
460 struct dvb_ofdm_parameters *ofdm = &fep->u.ofdm;
461 fe_code_rate_t *cr; 458 fe_code_rate_t *cr;
462 u16 tps_val; 459 u16 tps_val;
463 int inv_test1,inv_test2; 460 int inv_test1,inv_test2;
@@ -484,25 +481,25 @@ static int dib3000mb_get_frontend(struct dvb_frontend* fe,
484 else 481 else
485 inv_test2 = 2; 482 inv_test2 = 2;
486 483
487 fep->inversion = 484 c->inversion =
488 ((inv_test2 == 2) && (inv_test1==1 || inv_test1==0)) || 485 ((inv_test2 == 2) && (inv_test1==1 || inv_test1==0)) ||
489 ((inv_test2 == 0) && (inv_test1==1 || inv_test1==2)) ? 486 ((inv_test2 == 0) && (inv_test1==1 || inv_test1==2)) ?
490 INVERSION_ON : INVERSION_OFF; 487 INVERSION_ON : INVERSION_OFF;
491 488
492 deb_getf("inversion %d %d, %d\n", inv_test2, inv_test1, fep->inversion); 489 deb_getf("inversion %d %d, %d\n", inv_test2, inv_test1, c->inversion);
493 490
494 switch ((tps_val = rd(DIB3000MB_REG_TPS_QAM))) { 491 switch ((tps_val = rd(DIB3000MB_REG_TPS_QAM))) {
495 case DIB3000_CONSTELLATION_QPSK: 492 case DIB3000_CONSTELLATION_QPSK:
496 deb_getf("QPSK "); 493 deb_getf("QPSK ");
497 ofdm->constellation = QPSK; 494 c->modulation = QPSK;
498 break; 495 break;
499 case DIB3000_CONSTELLATION_16QAM: 496 case DIB3000_CONSTELLATION_16QAM:
500 deb_getf("QAM16 "); 497 deb_getf("QAM16 ");
501 ofdm->constellation = QAM_16; 498 c->modulation = QAM_16;
502 break; 499 break;
503 case DIB3000_CONSTELLATION_64QAM: 500 case DIB3000_CONSTELLATION_64QAM:
504 deb_getf("QAM64 "); 501 deb_getf("QAM64 ");
505 ofdm->constellation = QAM_64; 502 c->modulation = QAM_64;
506 break; 503 break;
507 default: 504 default:
508 err("Unexpected constellation returned by TPS (%d)", tps_val); 505 err("Unexpected constellation returned by TPS (%d)", tps_val);
@@ -512,24 +509,24 @@ static int dib3000mb_get_frontend(struct dvb_frontend* fe,
512 509
513 if (rd(DIB3000MB_REG_TPS_HRCH)) { 510 if (rd(DIB3000MB_REG_TPS_HRCH)) {
514 deb_getf("HRCH ON\n"); 511 deb_getf("HRCH ON\n");
515 cr = &ofdm->code_rate_LP; 512 cr = &c->code_rate_LP;
516 ofdm->code_rate_HP = FEC_NONE; 513 c->code_rate_HP = FEC_NONE;
517 switch ((tps_val = rd(DIB3000MB_REG_TPS_VIT_ALPHA))) { 514 switch ((tps_val = rd(DIB3000MB_REG_TPS_VIT_ALPHA))) {
518 case DIB3000_ALPHA_0: 515 case DIB3000_ALPHA_0:
519 deb_getf("HIERARCHY_NONE "); 516 deb_getf("HIERARCHY_NONE ");
520 ofdm->hierarchy_information = HIERARCHY_NONE; 517 c->hierarchy = HIERARCHY_NONE;
521 break; 518 break;
522 case DIB3000_ALPHA_1: 519 case DIB3000_ALPHA_1:
523 deb_getf("HIERARCHY_1 "); 520 deb_getf("HIERARCHY_1 ");
524 ofdm->hierarchy_information = HIERARCHY_1; 521 c->hierarchy = HIERARCHY_1;
525 break; 522 break;
526 case DIB3000_ALPHA_2: 523 case DIB3000_ALPHA_2:
527 deb_getf("HIERARCHY_2 "); 524 deb_getf("HIERARCHY_2 ");
528 ofdm->hierarchy_information = HIERARCHY_2; 525 c->hierarchy = HIERARCHY_2;
529 break; 526 break;
530 case DIB3000_ALPHA_4: 527 case DIB3000_ALPHA_4:
531 deb_getf("HIERARCHY_4 "); 528 deb_getf("HIERARCHY_4 ");
532 ofdm->hierarchy_information = HIERARCHY_4; 529 c->hierarchy = HIERARCHY_4;
533 break; 530 break;
534 default: 531 default:
535 err("Unexpected ALPHA value returned by TPS (%d)", tps_val); 532 err("Unexpected ALPHA value returned by TPS (%d)", tps_val);
@@ -540,9 +537,9 @@ static int dib3000mb_get_frontend(struct dvb_frontend* fe,
540 tps_val = rd(DIB3000MB_REG_TPS_CODE_RATE_LP); 537 tps_val = rd(DIB3000MB_REG_TPS_CODE_RATE_LP);
541 } else { 538 } else {
542 deb_getf("HRCH OFF\n"); 539 deb_getf("HRCH OFF\n");
543 cr = &ofdm->code_rate_HP; 540 cr = &c->code_rate_HP;
544 ofdm->code_rate_LP = FEC_NONE; 541 c->code_rate_LP = FEC_NONE;
545 ofdm->hierarchy_information = HIERARCHY_NONE; 542 c->hierarchy = HIERARCHY_NONE;
546 543
547 tps_val = rd(DIB3000MB_REG_TPS_CODE_RATE_HP); 544 tps_val = rd(DIB3000MB_REG_TPS_CODE_RATE_HP);
548 } 545 }
@@ -577,19 +574,19 @@ static int dib3000mb_get_frontend(struct dvb_frontend* fe,
577 switch ((tps_val = rd(DIB3000MB_REG_TPS_GUARD_TIME))) { 574 switch ((tps_val = rd(DIB3000MB_REG_TPS_GUARD_TIME))) {
578 case DIB3000_GUARD_TIME_1_32: 575 case DIB3000_GUARD_TIME_1_32:
579 deb_getf("GUARD_INTERVAL_1_32 "); 576 deb_getf("GUARD_INTERVAL_1_32 ");
580 ofdm->guard_interval = GUARD_INTERVAL_1_32; 577 c->guard_interval = GUARD_INTERVAL_1_32;
581 break; 578 break;
582 case DIB3000_GUARD_TIME_1_16: 579 case DIB3000_GUARD_TIME_1_16:
583 deb_getf("GUARD_INTERVAL_1_16 "); 580 deb_getf("GUARD_INTERVAL_1_16 ");
584 ofdm->guard_interval = GUARD_INTERVAL_1_16; 581 c->guard_interval = GUARD_INTERVAL_1_16;
585 break; 582 break;
586 case DIB3000_GUARD_TIME_1_8: 583 case DIB3000_GUARD_TIME_1_8:
587 deb_getf("GUARD_INTERVAL_1_8 "); 584 deb_getf("GUARD_INTERVAL_1_8 ");
588 ofdm->guard_interval = GUARD_INTERVAL_1_8; 585 c->guard_interval = GUARD_INTERVAL_1_8;
589 break; 586 break;
590 case DIB3000_GUARD_TIME_1_4: 587 case DIB3000_GUARD_TIME_1_4:
591 deb_getf("GUARD_INTERVAL_1_4 "); 588 deb_getf("GUARD_INTERVAL_1_4 ");
592 ofdm->guard_interval = GUARD_INTERVAL_1_4; 589 c->guard_interval = GUARD_INTERVAL_1_4;
593 break; 590 break;
594 default: 591 default:
595 err("Unexpected Guard Time returned by TPS (%d)", tps_val); 592 err("Unexpected Guard Time returned by TPS (%d)", tps_val);
@@ -600,11 +597,11 @@ static int dib3000mb_get_frontend(struct dvb_frontend* fe,
600 switch ((tps_val = rd(DIB3000MB_REG_TPS_FFT))) { 597 switch ((tps_val = rd(DIB3000MB_REG_TPS_FFT))) {
601 case DIB3000_TRANSMISSION_MODE_2K: 598 case DIB3000_TRANSMISSION_MODE_2K:
602 deb_getf("TRANSMISSION_MODE_2K "); 599 deb_getf("TRANSMISSION_MODE_2K ");
603 ofdm->transmission_mode = TRANSMISSION_MODE_2K; 600 c->transmission_mode = TRANSMISSION_MODE_2K;
604 break; 601 break;
605 case DIB3000_TRANSMISSION_MODE_8K: 602 case DIB3000_TRANSMISSION_MODE_8K:
606 deb_getf("TRANSMISSION_MODE_8K "); 603 deb_getf("TRANSMISSION_MODE_8K ");
607 ofdm->transmission_mode = TRANSMISSION_MODE_8K; 604 c->transmission_mode = TRANSMISSION_MODE_8K;
608 break; 605 break;
609 default: 606 default:
610 err("unexpected transmission mode return by TPS (%d)", tps_val); 607 err("unexpected transmission mode return by TPS (%d)", tps_val);
@@ -701,9 +698,9 @@ static int dib3000mb_fe_init_nonmobile(struct dvb_frontend* fe)
701 return dib3000mb_fe_init(fe, 0); 698 return dib3000mb_fe_init(fe, 0);
702} 699}
703 700
704static int dib3000mb_set_frontend_and_tuner(struct dvb_frontend* fe, struct dvb_frontend_parameters *fep) 701static int dib3000mb_set_frontend_and_tuner(struct dvb_frontend *fe)
705{ 702{
706 return dib3000mb_set_frontend(fe, fep, 1); 703 return dib3000mb_set_frontend(fe, 1);
707} 704}
708 705
709static void dib3000mb_release(struct dvb_frontend* fe) 706static void dib3000mb_release(struct dvb_frontend* fe)
@@ -794,7 +791,7 @@ error:
794} 791}
795 792
796static struct dvb_frontend_ops dib3000mb_ops = { 793static struct dvb_frontend_ops dib3000mb_ops = {
797 794 .delsys = { SYS_DVBT },
798 .info = { 795 .info = {
799 .name = "DiBcom 3000M-B DVB-T", 796 .name = "DiBcom 3000M-B DVB-T",
800 .type = FE_OFDM, 797 .type = FE_OFDM,
@@ -816,8 +813,8 @@ static struct dvb_frontend_ops dib3000mb_ops = {
816 .init = dib3000mb_fe_init_nonmobile, 813 .init = dib3000mb_fe_init_nonmobile,
817 .sleep = dib3000mb_sleep, 814 .sleep = dib3000mb_sleep,
818 815
819 .set_frontend_legacy = dib3000mb_set_frontend_and_tuner, 816 .set_frontend = dib3000mb_set_frontend_and_tuner,
820 .get_frontend_legacy = dib3000mb_get_frontend, 817 .get_frontend = dib3000mb_get_frontend,
821 .get_tune_settings = dib3000mb_fe_get_tune_settings, 818 .get_tune_settings = dib3000mb_fe_get_tune_settings,
822 819
823 .read_status = dib3000mb_read_status, 820 .read_status = dib3000mb_read_status,