Ticket #2762: dvb-hg-tfec.diff

File dvb-hg-tfec.diff, 3.1 KB (added by Mark.Buechler@…, 14 years ago)

2 of 2 dvbs2 patches for LinuxDVB 062306, probably non dvb-s2 related.

  • linux/drivers/media/dvb/dvb-usb/gp8psk-fe.c

    old new  
    4141   return 0;
    4242}
    4343
     44static int gp8psk_set_standard(struct dvb_frontend* fe, u32 type)
     45{
     46   (void) fe;
     47   if (type == FE_DVB_S2 || type == FE_DVB_S) {
     48      fe->ops.info.type = type;
     49      return 0;
     50   } else {
     51      fe->ops.info.type = FE_QPSK;
     52      return 1;
     53   }
     54}
    4455/* not supported by this Frontend */
    4556static int gp8psk_fe_read_ber(struct dvb_frontend* fe, u32 *ber)
    4657{
     
    90101   return 0;
    91102}
    92103
    93 static int gp8psk_fe_set_frontend(struct dvb_frontend* fe,
    94               struct dvb_frontend_parameters *fep)
     104static int gp8psk_fe_set_frontend2(struct dvb_frontend* fe,
     105              struct dvb_frontend_parameters_new *fep)
    95106{
    96107   struct gp8psk_fe_state *state = fe->demodulator_priv;
    97108   u8 cmd[10];
     
    103114   cmd[7] = (freq >> 24) & 0xff;
    104115
    105116   switch(fe->ops.info.type) {
     117    case FE_DVB_S:
    106118   case FE_QPSK:
    107119      cmd[0] =  fep->u.qpsk.symbol_rate        & 0xff;
    108120      cmd[1] = (fep->u.qpsk.symbol_rate >>  8) & 0xff;
     
    111123      cmd[8] = ADV_MOD_DVB_QPSK;
    112124      cmd[9] = 0x03; /*ADV_MOD_FEC_XXX*/
    113125      break;
     126   case FE_DVB_S2:
     127      cmd[0] =  fep->u.qpsk2.symbol_rate        & 0xff;
     128      cmd[1] = (fep->u.qpsk2.symbol_rate >>  8) & 0xff;
     129      cmd[2] = (fep->u.qpsk2.symbol_rate >> 16) & 0xff;
     130      cmd[3] = (fep->u.qpsk2.symbol_rate >> 24) & 0xff;
     131      if (fep->u.qpsk2.modulation == MOD_8PSK)
     132         cmd[8] = ADV_MOD_TURBO_8PSK;
     133      else
     134         cmd[8] = ADV_MOD_DVB_QPSK;
     135      cmd[9] = 0x03; /*ADV_MOD_FEC_XXX*/
     136      break;
    114137   default:
    115138      // other modes are unsuported right now
    116139      cmd[0] = 0;
     
    129152   return 0;
    130153}
    131154
     155static int gp8psk_fe_set_frontend(struct dvb_frontend* fe,
     156              struct dvb_frontend_parameters *fep)
     157{
     158   return gp8psk_fe_set_frontend2(fe,
     159         (struct dvb_frontend_parameters_new *) fep);
     160}
     161
     162
    132163static int gp8psk_fe_get_frontend(struct dvb_frontend* fe,
    133164              struct dvb_frontend_parameters *fep)
    134165{
     
    246277      .caps = FE_CAN_INVERSION_AUTO |
    247278            FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
    248279            FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
    249             FE_CAN_QPSK
     280            FE_CAN_QPSK | FE_HAS_EXTENDED_INFO
     281   },
     282   .extended_info = {
     283      .fecs      = FEC_1_2 | FEC_2_3 | FEC_3_4 | FEC_5_6 |
     284                FEC_7_8 | FEC_AUTO,
     285      .modulations   = MOD_QPSK | MOD_BPSK | MOD_8PSK,
     286      .standards   = FE_DVB_S | FE_DVB_S2
    250287   },
     288   .set_standard = gp8psk_set_standard,
    251289
    252290   .release = gp8psk_fe_release,
    253291
     
    256294
    257295   .set_frontend = gp8psk_fe_set_frontend,
    258296   .get_frontend = gp8psk_fe_get_frontend,
     297
     298   .set_frontend2 = gp8psk_fe_set_frontend2,
     299   .get_frontend2 = NULL,
     300
    259301   .get_tune_settings = gp8psk_fe_get_tune_settings,
    260302
    261303   .read_status = gp8psk_fe_read_status,