diff options
Diffstat (limited to 'drivers/media/dvb/frontends/mt312.c')
-rw-r--r-- | drivers/media/dvb/frontends/mt312.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/drivers/media/dvb/frontends/mt312.c b/drivers/media/dvb/frontends/mt312.c index 83e6f1a1b700..e20bf13aa860 100644 --- a/drivers/media/dvb/frontends/mt312.c +++ b/drivers/media/dvb/frontends/mt312.c | |||
@@ -531,9 +531,9 @@ static int mt312_read_ucblocks(struct dvb_frontend *fe, u32 *ubc) | |||
531 | return 0; | 531 | return 0; |
532 | } | 532 | } |
533 | 533 | ||
534 | static int mt312_set_frontend(struct dvb_frontend *fe, | 534 | static int mt312_set_frontend(struct dvb_frontend *fe) |
535 | struct dvb_frontend_parameters *p) | ||
536 | { | 535 | { |
536 | struct dtv_frontend_properties *p = &fe->dtv_property_cache; | ||
537 | struct mt312_state *state = fe->demodulator_priv; | 537 | struct mt312_state *state = fe->demodulator_priv; |
538 | int ret; | 538 | int ret; |
539 | u8 buf[5], config_val; | 539 | u8 buf[5], config_val; |
@@ -553,16 +553,16 @@ static int mt312_set_frontend(struct dvb_frontend *fe, | |||
553 | || (p->inversion > INVERSION_ON)) | 553 | || (p->inversion > INVERSION_ON)) |
554 | return -EINVAL; | 554 | return -EINVAL; |
555 | 555 | ||
556 | if ((p->u.qpsk.symbol_rate < fe->ops.info.symbol_rate_min) | 556 | if ((p->symbol_rate < fe->ops.info.symbol_rate_min) |
557 | || (p->u.qpsk.symbol_rate > fe->ops.info.symbol_rate_max)) | 557 | || (p->symbol_rate > fe->ops.info.symbol_rate_max)) |
558 | return -EINVAL; | 558 | return -EINVAL; |
559 | 559 | ||
560 | if ((p->u.qpsk.fec_inner < FEC_NONE) | 560 | if ((p->fec_inner < FEC_NONE) |
561 | || (p->u.qpsk.fec_inner > FEC_AUTO)) | 561 | || (p->fec_inner > FEC_AUTO)) |
562 | return -EINVAL; | 562 | return -EINVAL; |
563 | 563 | ||
564 | if ((p->u.qpsk.fec_inner == FEC_4_5) | 564 | if ((p->fec_inner == FEC_4_5) |
565 | || (p->u.qpsk.fec_inner == FEC_8_9)) | 565 | || (p->fec_inner == FEC_8_9)) |
566 | return -EINVAL; | 566 | return -EINVAL; |
567 | 567 | ||
568 | switch (state->id) { | 568 | switch (state->id) { |
@@ -574,7 +574,7 @@ static int mt312_set_frontend(struct dvb_frontend *fe, | |||
574 | ret = mt312_readreg(state, CONFIG, &config_val); | 574 | ret = mt312_readreg(state, CONFIG, &config_val); |
575 | if (ret < 0) | 575 | if (ret < 0) |
576 | return ret; | 576 | return ret; |
577 | if (p->u.qpsk.symbol_rate >= 30000000) { | 577 | if (p->symbol_rate >= 30000000) { |
578 | /* Note that 30MS/s should use 90MHz */ | 578 | /* Note that 30MS/s should use 90MHz */ |
579 | if (state->freq_mult == 6) { | 579 | if (state->freq_mult == 6) { |
580 | /* We are running 60MHz */ | 580 | /* We are running 60MHz */ |
@@ -603,25 +603,25 @@ static int mt312_set_frontend(struct dvb_frontend *fe, | |||
603 | } | 603 | } |
604 | 604 | ||
605 | if (fe->ops.tuner_ops.set_params) { | 605 | if (fe->ops.tuner_ops.set_params) { |
606 | fe->ops.tuner_ops.set_params(fe, p); | 606 | fe->ops.tuner_ops.set_params(fe); |
607 | if (fe->ops.i2c_gate_ctrl) | 607 | if (fe->ops.i2c_gate_ctrl) |
608 | fe->ops.i2c_gate_ctrl(fe, 0); | 608 | fe->ops.i2c_gate_ctrl(fe, 0); |
609 | } | 609 | } |
610 | 610 | ||
611 | /* sr = (u16)(sr * 256.0 / 1000000.0) */ | 611 | /* sr = (u16)(sr * 256.0 / 1000000.0) */ |
612 | sr = mt312_div(p->u.qpsk.symbol_rate * 4, 15625); | 612 | sr = mt312_div(p->symbol_rate * 4, 15625); |
613 | 613 | ||
614 | /* SYM_RATE */ | 614 | /* SYM_RATE */ |
615 | buf[0] = (sr >> 8) & 0x3f; | 615 | buf[0] = (sr >> 8) & 0x3f; |
616 | buf[1] = (sr >> 0) & 0xff; | 616 | buf[1] = (sr >> 0) & 0xff; |
617 | 617 | ||
618 | /* VIT_MODE */ | 618 | /* VIT_MODE */ |
619 | buf[2] = inv_tab[p->inversion] | fec_tab[p->u.qpsk.fec_inner]; | 619 | buf[2] = inv_tab[p->inversion] | fec_tab[p->fec_inner]; |
620 | 620 | ||
621 | /* QPSK_CTRL */ | 621 | /* QPSK_CTRL */ |
622 | buf[3] = 0x40; /* swap I and Q before QPSK demodulation */ | 622 | buf[3] = 0x40; /* swap I and Q before QPSK demodulation */ |
623 | 623 | ||
624 | if (p->u.qpsk.symbol_rate < 10000000) | 624 | if (p->symbol_rate < 10000000) |
625 | buf[3] |= 0x04; /* use afc mode */ | 625 | buf[3] |= 0x04; /* use afc mode */ |
626 | 626 | ||
627 | /* GO */ | 627 | /* GO */ |
@@ -636,9 +636,9 @@ static int mt312_set_frontend(struct dvb_frontend *fe, | |||
636 | return 0; | 636 | return 0; |
637 | } | 637 | } |
638 | 638 | ||
639 | static int mt312_get_frontend(struct dvb_frontend *fe, | 639 | static int mt312_get_frontend(struct dvb_frontend *fe) |
640 | struct dvb_frontend_parameters *p) | ||
641 | { | 640 | { |
641 | struct dtv_frontend_properties *p = &fe->dtv_property_cache; | ||
642 | struct mt312_state *state = fe->demodulator_priv; | 642 | struct mt312_state *state = fe->demodulator_priv; |
643 | int ret; | 643 | int ret; |
644 | 644 | ||
@@ -646,11 +646,11 @@ static int mt312_get_frontend(struct dvb_frontend *fe, | |||
646 | if (ret < 0) | 646 | if (ret < 0) |
647 | return ret; | 647 | return ret; |
648 | 648 | ||
649 | ret = mt312_get_symbol_rate(state, &p->u.qpsk.symbol_rate); | 649 | ret = mt312_get_symbol_rate(state, &p->symbol_rate); |
650 | if (ret < 0) | 650 | if (ret < 0) |
651 | return ret; | 651 | return ret; |
652 | 652 | ||
653 | ret = mt312_get_code_rate(state, &p->u.qpsk.fec_inner); | 653 | ret = mt312_get_code_rate(state, &p->fec_inner); |
654 | if (ret < 0) | 654 | if (ret < 0) |
655 | return ret; | 655 | return ret; |
656 | 656 | ||
@@ -738,10 +738,9 @@ static void mt312_release(struct dvb_frontend *fe) | |||
738 | 738 | ||
739 | #define MT312_SYS_CLK 90000000UL /* 90 MHz */ | 739 | #define MT312_SYS_CLK 90000000UL /* 90 MHz */ |
740 | static struct dvb_frontend_ops mt312_ops = { | 740 | static struct dvb_frontend_ops mt312_ops = { |
741 | 741 | .delsys = { SYS_DVBS }, | |
742 | .info = { | 742 | .info = { |
743 | .name = "Zarlink ???? DVB-S", | 743 | .name = "Zarlink ???? DVB-S", |
744 | .type = FE_QPSK, | ||
745 | .frequency_min = 950000, | 744 | .frequency_min = 950000, |
746 | .frequency_max = 2150000, | 745 | .frequency_max = 2150000, |
747 | /* FIXME: adjust freq to real used xtal */ | 746 | /* FIXME: adjust freq to real used xtal */ |