diff options
-rw-r--r-- | drivers/media/dvb-frontends/m88rs2000.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/drivers/media/dvb-frontends/m88rs2000.c b/drivers/media/dvb-frontends/m88rs2000.c index f9d04db7275c..002b109d9383 100644 --- a/drivers/media/dvb-frontends/m88rs2000.c +++ b/drivers/media/dvb-frontends/m88rs2000.c | |||
@@ -541,33 +541,38 @@ static int m88rs2000_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) | |||
541 | static int m88rs2000_set_fec(struct m88rs2000_state *state, | 541 | static int m88rs2000_set_fec(struct m88rs2000_state *state, |
542 | fe_code_rate_t fec) | 542 | fe_code_rate_t fec) |
543 | { | 543 | { |
544 | u16 fec_set; | 544 | u8 fec_set, reg; |
545 | int ret; | ||
546 | |||
545 | switch (fec) { | 547 | switch (fec) { |
546 | /* This is not confirmed kept for reference */ | 548 | case FEC_1_2: |
547 | /* case FEC_1_2: | 549 | fec_set = 0x8; |
548 | fec_set = 0x88; | ||
549 | break; | 550 | break; |
550 | case FEC_2_3: | 551 | case FEC_2_3: |
551 | fec_set = 0x68; | 552 | fec_set = 0x10; |
552 | break; | 553 | break; |
553 | case FEC_3_4: | 554 | case FEC_3_4: |
554 | fec_set = 0x48; | 555 | fec_set = 0x20; |
555 | break; | 556 | break; |
556 | case FEC_5_6: | 557 | case FEC_5_6: |
557 | fec_set = 0x28; | 558 | fec_set = 0x40; |
558 | break; | 559 | break; |
559 | case FEC_7_8: | 560 | case FEC_7_8: |
560 | fec_set = 0x18; | 561 | fec_set = 0x80; |
561 | break; */ | 562 | break; |
562 | case FEC_AUTO: | 563 | case FEC_AUTO: |
563 | default: | 564 | default: |
564 | fec_set = 0x08; | 565 | fec_set = 0x0; |
565 | } | 566 | } |
566 | m88rs2000_writereg(state, 0x76, fec_set); | ||
567 | 567 | ||
568 | return 0; | 568 | reg = m88rs2000_readreg(state, 0x70); |
569 | } | 569 | reg &= 0x7; |
570 | ret = m88rs2000_writereg(state, 0x70, reg | fec_set); | ||
570 | 571 | ||
572 | ret |= m88rs2000_writereg(state, 0x76, 0x8); | ||
573 | |||
574 | return ret; | ||
575 | } | ||
571 | 576 | ||
572 | static fe_code_rate_t m88rs2000_get_fec(struct m88rs2000_state *state) | 577 | static fe_code_rate_t m88rs2000_get_fec(struct m88rs2000_state *state) |
573 | { | 578 | { |
@@ -650,12 +655,8 @@ static int m88rs2000_set_frontend(struct dvb_frontend *fe) | |||
650 | if (ret < 0) | 655 | if (ret < 0) |
651 | return -ENODEV; | 656 | return -ENODEV; |
652 | 657 | ||
653 | /* Unknown */ | ||
654 | reg = m88rs2000_readreg(state, 0x70); | ||
655 | ret = m88rs2000_writereg(state, 0x70, reg); | ||
656 | |||
657 | /* Set FEC */ | 658 | /* Set FEC */ |
658 | ret |= m88rs2000_set_fec(state, c->fec_inner); | 659 | ret = m88rs2000_set_fec(state, c->fec_inner); |
659 | ret |= m88rs2000_writereg(state, 0x85, 0x1); | 660 | ret |= m88rs2000_writereg(state, 0x85, 0x1); |
660 | ret |= m88rs2000_writereg(state, 0x8a, 0xbf); | 661 | ret |= m88rs2000_writereg(state, 0x8a, 0xbf); |
661 | ret |= m88rs2000_writereg(state, 0x8d, 0x1e); | 662 | ret |= m88rs2000_writereg(state, 0x8d, 0x1e); |