aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/media/as102/as102_fe.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/media/as102/as102_fe.c')
-rw-r--r--drivers/staging/media/as102/as102_fe.c81
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
26extern int elna_enable; 26static void as10x_fe_copy_tps_parameters(struct dtv_frontend_properties *dst,
27
28static void as10x_fe_copy_tps_parameters(struct dvb_frontend_parameters *dst,
29 struct as10x_tps *src); 27 struct as10x_tps *src);
30 28
31static void as102_fe_copy_tune_parameters(struct as10x_tune_args *dst, 29static 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
34static int as102_fe_set_frontend(struct dvb_frontend *fe, 32static 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
63static int as102_fe_get_frontend(struct dvb_frontend *fe, 61static 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
282static struct dvb_frontend_ops as102_fe_ops = { 281static 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
349static void as10x_fe_copy_tps_parameters(struct dvb_frontend_parameters *dst, 348static 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
477static void as102_fe_copy_tune_parameters(struct as10x_tune_args *tune_args, 474static 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: */