diff options
Diffstat (limited to 'drivers/staging/media/as102/as102_fe.c')
-rw-r--r-- | drivers/staging/media/as102/as102_fe.c | 81 |
1 files changed, 38 insertions, 43 deletions
diff --git a/drivers/staging/media/as102/as102_fe.c b/drivers/staging/media/as102/as102_fe.c index 3550f905367..bdc5a38cddf 100644 --- a/drivers/staging/media/as102/as102_fe.c +++ b/drivers/staging/media/as102/as102_fe.c | |||
@@ -23,17 +23,15 @@ | |||
23 | #include "as10x_types.h" | 23 | #include "as10x_types.h" |
24 | #include "as10x_cmd.h" | 24 | #include "as10x_cmd.h" |
25 | 25 | ||
26 | extern int elna_enable; | 26 | static void as10x_fe_copy_tps_parameters(struct dtv_frontend_properties *dst, |
27 | |||
28 | static void as10x_fe_copy_tps_parameters(struct dvb_frontend_parameters *dst, | ||
29 | struct as10x_tps *src); | 27 | struct as10x_tps *src); |
30 | 28 | ||
31 | static void as102_fe_copy_tune_parameters(struct as10x_tune_args *dst, | 29 | static void as102_fe_copy_tune_parameters(struct as10x_tune_args *dst, |
32 | struct dvb_frontend_parameters *src); | 30 | struct dtv_frontend_properties *src); |
33 | 31 | ||
34 | static int as102_fe_set_frontend(struct dvb_frontend *fe, | 32 | static int as102_fe_set_frontend(struct dvb_frontend *fe) |
35 | struct dvb_frontend_parameters *params) | ||
36 | { | 33 | { |
34 | struct dtv_frontend_properties *p = &fe->dtv_property_cache; | ||
37 | int ret = 0; | 35 | int ret = 0; |
38 | struct as102_dev_t *dev; | 36 | struct as102_dev_t *dev; |
39 | struct as10x_tune_args tune_args = { 0 }; | 37 | struct as10x_tune_args tune_args = { 0 }; |
@@ -47,7 +45,7 @@ static int as102_fe_set_frontend(struct dvb_frontend *fe, | |||
47 | if (mutex_lock_interruptible(&dev->bus_adap.lock)) | 45 | if (mutex_lock_interruptible(&dev->bus_adap.lock)) |
48 | return -EBUSY; | 46 | return -EBUSY; |
49 | 47 | ||
50 | as102_fe_copy_tune_parameters(&tune_args, params); | 48 | as102_fe_copy_tune_parameters(&tune_args, p); |
51 | 49 | ||
52 | /* send abilis command: SET_TUNE */ | 50 | /* send abilis command: SET_TUNE */ |
53 | ret = as10x_cmd_set_tune(&dev->bus_adap, &tune_args); | 51 | ret = as10x_cmd_set_tune(&dev->bus_adap, &tune_args); |
@@ -60,8 +58,9 @@ static int as102_fe_set_frontend(struct dvb_frontend *fe, | |||
60 | return (ret < 0) ? -EINVAL : 0; | 58 | return (ret < 0) ? -EINVAL : 0; |
61 | } | 59 | } |
62 | 60 | ||
63 | static int as102_fe_get_frontend(struct dvb_frontend *fe, | 61 | static int as102_fe_get_frontend(struct dvb_frontend *fe) |
64 | struct dvb_frontend_parameters *p) { | 62 | { |
63 | struct dtv_frontend_properties *p = &fe->dtv_property_cache; | ||
65 | int ret = 0; | 64 | int ret = 0; |
66 | struct as102_dev_t *dev; | 65 | struct as102_dev_t *dev; |
67 | struct as10x_tps tps = { 0 }; | 66 | struct as10x_tps tps = { 0 }; |
@@ -280,9 +279,9 @@ static int as102_fe_ts_bus_ctrl(struct dvb_frontend *fe, int acquire) | |||
280 | } | 279 | } |
281 | 280 | ||
282 | static struct dvb_frontend_ops as102_fe_ops = { | 281 | static struct dvb_frontend_ops as102_fe_ops = { |
282 | .delsys = { SYS_DVBT }, | ||
283 | .info = { | 283 | .info = { |
284 | .name = "Unknown AS102 device", | 284 | .name = "Unknown AS102 device", |
285 | .type = FE_OFDM, | ||
286 | .frequency_min = 174000000, | 285 | .frequency_min = 174000000, |
287 | .frequency_max = 862000000, | 286 | .frequency_max = 862000000, |
288 | .frequency_stepsize = 166667, | 287 | .frequency_stepsize = 166667, |
@@ -346,38 +345,36 @@ int as102_dvb_register_fe(struct as102_dev_t *as102_dev, | |||
346 | return errno; | 345 | return errno; |
347 | } | 346 | } |
348 | 347 | ||
349 | static void as10x_fe_copy_tps_parameters(struct dvb_frontend_parameters *dst, | 348 | static void as10x_fe_copy_tps_parameters(struct dtv_frontend_properties *fe_tps, |
350 | struct as10x_tps *as10x_tps) | 349 | struct as10x_tps *as10x_tps) |
351 | { | 350 | { |
352 | 351 | ||
353 | struct dvb_ofdm_parameters *fe_tps = &dst->u.ofdm; | ||
354 | |||
355 | /* extract consteallation */ | 352 | /* extract consteallation */ |
356 | switch (as10x_tps->constellation) { | 353 | switch (as10x_tps->modulation) { |
357 | case CONST_QPSK: | 354 | case CONST_QPSK: |
358 | fe_tps->constellation = QPSK; | 355 | fe_tps->modulation = QPSK; |
359 | break; | 356 | break; |
360 | case CONST_QAM16: | 357 | case CONST_QAM16: |
361 | fe_tps->constellation = QAM_16; | 358 | fe_tps->modulation = QAM_16; |
362 | break; | 359 | break; |
363 | case CONST_QAM64: | 360 | case CONST_QAM64: |
364 | fe_tps->constellation = QAM_64; | 361 | fe_tps->modulation = QAM_64; |
365 | break; | 362 | break; |
366 | } | 363 | } |
367 | 364 | ||
368 | /* extract hierarchy */ | 365 | /* extract hierarchy */ |
369 | switch (as10x_tps->hierarchy) { | 366 | switch (as10x_tps->hierarchy) { |
370 | case HIER_NONE: | 367 | case HIER_NONE: |
371 | fe_tps->hierarchy_information = HIERARCHY_NONE; | 368 | fe_tps->hierarchy = HIERARCHY_NONE; |
372 | break; | 369 | break; |
373 | case HIER_ALPHA_1: | 370 | case HIER_ALPHA_1: |
374 | fe_tps->hierarchy_information = HIERARCHY_1; | 371 | fe_tps->hierarchy = HIERARCHY_1; |
375 | break; | 372 | break; |
376 | case HIER_ALPHA_2: | 373 | case HIER_ALPHA_2: |
377 | fe_tps->hierarchy_information = HIERARCHY_2; | 374 | fe_tps->hierarchy = HIERARCHY_2; |
378 | break; | 375 | break; |
379 | case HIER_ALPHA_4: | 376 | case HIER_ALPHA_4: |
380 | fe_tps->hierarchy_information = HIERARCHY_4; | 377 | fe_tps->hierarchy = HIERARCHY_4; |
381 | break; | 378 | break; |
382 | } | 379 | } |
383 | 380 | ||
@@ -475,7 +472,7 @@ static uint8_t as102_fe_get_code_rate(fe_code_rate_t arg) | |||
475 | } | 472 | } |
476 | 473 | ||
477 | static void as102_fe_copy_tune_parameters(struct as10x_tune_args *tune_args, | 474 | static void as102_fe_copy_tune_parameters(struct as10x_tune_args *tune_args, |
478 | struct dvb_frontend_parameters *params) | 475 | struct dtv_frontend_properties *params) |
479 | { | 476 | { |
480 | 477 | ||
481 | /* set frequency */ | 478 | /* set frequency */ |
@@ -484,21 +481,21 @@ static void as102_fe_copy_tune_parameters(struct as10x_tune_args *tune_args, | |||
484 | /* fix interleaving_mode */ | 481 | /* fix interleaving_mode */ |
485 | tune_args->interleaving_mode = INTLV_NATIVE; | 482 | tune_args->interleaving_mode = INTLV_NATIVE; |
486 | 483 | ||
487 | switch (params->u.ofdm.bandwidth) { | 484 | switch (params->bandwidth_hz) { |
488 | case BANDWIDTH_8_MHZ: | 485 | case 8000000: |
489 | tune_args->bandwidth = BW_8_MHZ; | 486 | tune_args->bandwidth = BW_8_MHZ; |
490 | break; | 487 | break; |
491 | case BANDWIDTH_7_MHZ: | 488 | case 7000000: |
492 | tune_args->bandwidth = BW_7_MHZ; | 489 | tune_args->bandwidth = BW_7_MHZ; |
493 | break; | 490 | break; |
494 | case BANDWIDTH_6_MHZ: | 491 | case 6000000: |
495 | tune_args->bandwidth = BW_6_MHZ; | 492 | tune_args->bandwidth = BW_6_MHZ; |
496 | break; | 493 | break; |
497 | default: | 494 | default: |
498 | tune_args->bandwidth = BW_8_MHZ; | 495 | tune_args->bandwidth = BW_8_MHZ; |
499 | } | 496 | } |
500 | 497 | ||
501 | switch (params->u.ofdm.guard_interval) { | 498 | switch (params->guard_interval) { |
502 | case GUARD_INTERVAL_1_32: | 499 | case GUARD_INTERVAL_1_32: |
503 | tune_args->guard_interval = GUARD_INT_1_32; | 500 | tune_args->guard_interval = GUARD_INT_1_32; |
504 | break; | 501 | break; |
@@ -517,22 +514,22 @@ static void as102_fe_copy_tune_parameters(struct as10x_tune_args *tune_args, | |||
517 | break; | 514 | break; |
518 | } | 515 | } |
519 | 516 | ||
520 | switch (params->u.ofdm.constellation) { | 517 | switch (params->modulation) { |
521 | case QPSK: | 518 | case QPSK: |
522 | tune_args->constellation = CONST_QPSK; | 519 | tune_args->modulation = CONST_QPSK; |
523 | break; | 520 | break; |
524 | case QAM_16: | 521 | case QAM_16: |
525 | tune_args->constellation = CONST_QAM16; | 522 | tune_args->modulation = CONST_QAM16; |
526 | break; | 523 | break; |
527 | case QAM_64: | 524 | case QAM_64: |
528 | tune_args->constellation = CONST_QAM64; | 525 | tune_args->modulation = CONST_QAM64; |
529 | break; | 526 | break; |
530 | default: | 527 | default: |
531 | tune_args->constellation = CONST_UNKNOWN; | 528 | tune_args->modulation = CONST_UNKNOWN; |
532 | break; | 529 | break; |
533 | } | 530 | } |
534 | 531 | ||
535 | switch (params->u.ofdm.transmission_mode) { | 532 | switch (params->transmission_mode) { |
536 | case TRANSMISSION_MODE_2K: | 533 | case TRANSMISSION_MODE_2K: |
537 | tune_args->transmission_mode = TRANS_MODE_2K; | 534 | tune_args->transmission_mode = TRANS_MODE_2K; |
538 | break; | 535 | break; |
@@ -543,7 +540,7 @@ static void as102_fe_copy_tune_parameters(struct as10x_tune_args *tune_args, | |||
543 | tune_args->transmission_mode = TRANS_MODE_UNKNOWN; | 540 | tune_args->transmission_mode = TRANS_MODE_UNKNOWN; |
544 | } | 541 | } |
545 | 542 | ||
546 | switch (params->u.ofdm.hierarchy_information) { | 543 | switch (params->hierarchy) { |
547 | case HIERARCHY_NONE: | 544 | case HIERARCHY_NONE: |
548 | tune_args->hierarchy = HIER_NONE; | 545 | tune_args->hierarchy = HIER_NONE; |
549 | break; | 546 | break; |
@@ -571,19 +568,19 @@ static void as102_fe_copy_tune_parameters(struct as10x_tune_args *tune_args, | |||
571 | * if HP/LP are both set to FEC_NONE, HP will be selected. | 568 | * if HP/LP are both set to FEC_NONE, HP will be selected. |
572 | */ | 569 | */ |
573 | if ((tune_args->hierarchy != HIER_NONE) && | 570 | if ((tune_args->hierarchy != HIER_NONE) && |
574 | ((params->u.ofdm.code_rate_LP == FEC_NONE) || | 571 | ((params->code_rate_LP == FEC_NONE) || |
575 | (params->u.ofdm.code_rate_HP == FEC_NONE))) { | 572 | (params->code_rate_HP == FEC_NONE))) { |
576 | 573 | ||
577 | if (params->u.ofdm.code_rate_LP == FEC_NONE) { | 574 | if (params->code_rate_LP == FEC_NONE) { |
578 | tune_args->hier_select = HIER_HIGH_PRIORITY; | 575 | tune_args->hier_select = HIER_HIGH_PRIORITY; |
579 | tune_args->code_rate = | 576 | tune_args->code_rate = |
580 | as102_fe_get_code_rate(params->u.ofdm.code_rate_HP); | 577 | as102_fe_get_code_rate(params->code_rate_HP); |
581 | } | 578 | } |
582 | 579 | ||
583 | if (params->u.ofdm.code_rate_HP == FEC_NONE) { | 580 | if (params->code_rate_HP == FEC_NONE) { |
584 | tune_args->hier_select = HIER_LOW_PRIORITY; | 581 | tune_args->hier_select = HIER_LOW_PRIORITY; |
585 | tune_args->code_rate = | 582 | tune_args->code_rate = |
586 | as102_fe_get_code_rate(params->u.ofdm.code_rate_LP); | 583 | as102_fe_get_code_rate(params->code_rate_LP); |
587 | } | 584 | } |
588 | 585 | ||
589 | dprintk(debug, "\thierarchy: 0x%02x " | 586 | dprintk(debug, "\thierarchy: 0x%02x " |
@@ -596,8 +593,6 @@ static void as102_fe_copy_tune_parameters(struct as10x_tune_args *tune_args, | |||
596 | tune_args->code_rate); | 593 | tune_args->code_rate); |
597 | } else { | 594 | } else { |
598 | tune_args->code_rate = | 595 | tune_args->code_rate = |
599 | as102_fe_get_code_rate(params->u.ofdm.code_rate_HP); | 596 | as102_fe_get_code_rate(params->code_rate_HP); |
600 | } | 597 | } |
601 | } | 598 | } |
602 | |||
603 | /* EOF - vim: set textwidth=80 ts=8 sw=8 sts=8 noet: */ | ||