aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/dvb-frontends/m88rs2000.c37
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)
541static int m88rs2000_set_fec(struct m88rs2000_state *state, 541static 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
572static fe_code_rate_t m88rs2000_get_fec(struct m88rs2000_state *state) 577static 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);