The patch number 9469 was added via Manu Abraham <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/v4l-dvb master development tree.

Kernel patches in this development tree may be modified to be backward
compatible with older kernels. Compatibility modifications will be
removed before inclusion into the mainstream Kernel

If anyone has any objections, please let us know by sending a message to:
        [EMAIL PROTECTED]

------

From: Manu Abraham  <[EMAIL PROTECTED]>
Port STB0899 and STB6100

Signed-off-by: Manu Abraham <[EMAIL PROTECTED]>


---

 linux/drivers/media/dvb/frontends/stb0899_algo.c |   18 -
 linux/drivers/media/dvb/frontends/stb0899_drv.c  |  258 +++------------
 linux/drivers/media/dvb/frontends/stb0899_priv.h |    4 
 linux/drivers/media/dvb/frontends/stb6100.c      |   30 -
 4 files changed, 85 insertions(+), 225 deletions(-)

diff -r dd8bb48423d6 -r 73efe37a69d7 
linux/drivers/media/dvb/frontends/stb0899_algo.c
--- a/linux/drivers/media/dvb/frontends/stb0899_algo.c  Wed Jul 09 22:38:27 
2008 +0400
+++ b/linux/drivers/media/dvb/frontends/stb0899_algo.c  Mon Oct 27 01:28:52 
2008 +0400
@@ -293,7 +293,7 @@ static enum stb0899_status stb0899_searc
                if (stb0899_check_carrier(state) == NOCARRIER) {
                        index++;
                        last_derot_freq = derot_freq;
-                       derot_freq += index * internal->direction * 
internal->derot_step; /* next zig zag derotator position    */
+                       derot_freq += index * internal->direction * 
internal->derot_step; /* next zig zag derotator position */
 
                        if(ABS(derot_freq) > derot_limit)
                                next_loop--;
@@ -309,11 +309,11 @@ static enum stb0899_status stb0899_searc
                        }
                }
 
-               internal->direction = -internal->direction; /* Change zigzag 
direction  */
+               internal->direction = -internal->direction; /* Change zigzag 
direction */
        } while ((internal->status != CARRIEROK) && next_loop);
 
        if (internal->status == CARRIEROK) {
-               stb0899_read_regs(state, STB0899_CFRM, cfr, 2); /* get 
derotator frequency      */
+               stb0899_read_regs(state, STB0899_CFRM, cfr, 2); /* get 
derotator frequency */
                internal->derot_freq = state->config->inversion * 
MAKEWORD16(cfr[0], cfr[1]);
                dprintk(state->verbose, FE_DEBUG, 1, "----> CARRIER OK !, Derot 
Freq=%d", internal->derot_freq);
        } else {
@@ -396,7 +396,7 @@ static enum stb0899_status stb0899_searc
        do {
                if ((internal->status != CARRIEROK) || 
(stb0899_check_data(state) != DATAOK)) {
 
-                       derot_freq += index * internal->direction * derot_step; 
/* next zig zag derotator position      */
+                       derot_freq += index * internal->direction * derot_step; 
/* next zig zag derotator position */
                        if (ABS(derot_freq) > derot_limit)
                                next_loop--;
 
@@ -414,11 +414,11 @@ static enum stb0899_status stb0899_searc
                                index++;
                        }
                }
-               internal->direction = -internal->direction; /* change zig zag 
direction         */
+               internal->direction = -internal->direction; /* change zig zag 
direction */
        } while ((internal->status != DATAOK) && next_loop);
 
        if (internal->status == DATAOK) {
-               stb0899_read_regs(state, STB0899_CFRM, cfr, 2); /* get 
derotator frequency      */
+               stb0899_read_regs(state, STB0899_CFRM, cfr, 2); /* get 
derotator frequency */
                internal->derot_freq = state->config->inversion * 
MAKEWORD16(cfr[0], cfr[1]);
                dprintk(state->verbose, FE_DEBUG, 1, "------> DATAOK ! Derot 
Freq=%d", internal->derot_freq);
        }
@@ -568,12 +568,12 @@ enum stb0899_status stb0899_dvbs_algo(st
        STB0899_SETFIELD_VAL(DEMAPVIT_KDIVIDER, reg, 60);
        stb0899_write_reg(state, STB0899_DEMAPVIT, reg);
 
-       stb0899_write_reg(state, STB0899_EQON, 0x01); /* Equalizer OFF while 
acquiring  */
+       stb0899_write_reg(state, STB0899_EQON, 0x01); /* Equalizer OFF while 
acquiring */
        stb0899_write_reg(state, STB0899_VITSYNC, 0x19);
 
        stb0899_first_subrange(state);
        do {
-               /* Initialisations      */
+               /* Initialisations */
                cfr[0] = cfr[1] = 0;
                stb0899_write_regs(state, STB0899_CFRM, cfr, 2); /* RESET 
derotator frequency   */
 
@@ -588,7 +588,7 @@ enum stb0899_status stb0899_dvbs_algo(st
                /* enable tuner I/O */
                stb0899_i2c_gate_ctrl(&state->frontend, 1);
 
-               /* Move tuner to frequency      */
+               /* Move tuner to frequency */
                dprintk(state->verbose, FE_DEBUG, 1, "Tuner set frequency");
                if (state->config->tuner_set_frequency)
                        state->config->tuner_set_frequency(&state->frontend, 
internal->freq);
diff -r dd8bb48423d6 -r 73efe37a69d7 
linux/drivers/media/dvb/frontends/stb0899_drv.c
--- a/linux/drivers/media/dvb/frontends/stb0899_drv.c   Wed Jul 09 22:38:27 
2008 +0400
+++ b/linux/drivers/media/dvb/frontends/stb0899_drv.c   Mon Oct 27 01:28:52 
2008 +0400
@@ -823,16 +823,17 @@ static int stb0899_diseqc_init(struct st
 static int stb0899_diseqc_init(struct stb0899_state *state)
 {
        struct dvb_diseqc_master_cmd tx_data;
+/*
        struct dvb_diseqc_slave_reply rx_data;
-
+*/
        u8 f22_tx, f22_rx, reg;
 
-       u32 mclk, tx_freq = 22000, count = 0, i;
-
+       u32 mclk, tx_freq = 22000;/* count = 0, i; */
+#if 0
        u32 trial = 0;  /* try max = 2 (try 20khz and 17.5 khz) */
        u32 ret_1 = 0;  /* 20 Khz status        */
        u32 ret_2 = 0;  /* 17.5 Khz status      */
-
+#endif
        tx_data.msg[0] = 0xe2;
        tx_data.msg_len = 3;
        reg = stb0899_read_reg(state, STB0899_DISCNTRL2);
@@ -896,8 +897,9 @@ static int stb0899_sleep(struct dvb_fron
 static int stb0899_sleep(struct dvb_frontend *fe)
 {
        struct stb0899_state *state = fe->demodulator_priv;
+/*
        u8 reg;
-
+*/
        dprintk(state->verbose, FE_DEBUG, 1, "Going to Sleep .. (Really tired 
.. :-))");
 #if 0
        reg = stb0899_read_reg(state, STB0899_SYNTCTRL);
@@ -936,7 +938,6 @@ static int stb0899_init(struct dvb_front
        struct stb0899_config *config = state->config;
 
        dprintk(state->verbose, FE_DEBUG, 1, "Initializing STB0899 ... ");
-//     mutex_init(&state->search_lock);
 
        /* init device          */
        dprintk(state->verbose, FE_DEBUG, 1, "init device");
@@ -1009,8 +1010,8 @@ static int stb0899_read_signal_strength(
        int val;
        u32 reg;
        switch (state->delsys) {
-       case DVBFE_DELSYS_DVBS:
-       case DVBFE_DELSYS_DSS:
+       case SYS_DVBS:
+       case SYS_DSS:
                if (internal->lock) {
                        reg  = stb0899_read_reg(state, STB0899_VSTATUS);
                        if (STB0899_GETFIELD(VSTATUS_LOCKEDVIT, reg)) {
@@ -1025,7 +1026,7 @@ static int stb0899_read_signal_strength(
                        }
                }
                break;
-       case DVBFE_DELSYS_DVBS2:
+       case SYS_DVBS2:
                if (internal->lock) {
                        reg = STB0899_READ_S2REG(STB0899_DEMOD, IF_AGC_GAIN);
                        val = STB0899_GETFIELD(IF_AGC_GAIN, reg);
@@ -1055,8 +1056,8 @@ static int stb0899_read_snr(struct dvb_f
 
        reg  = stb0899_read_reg(state, STB0899_VSTATUS);
        switch (state->delsys) {
-       case DVBFE_DELSYS_DVBS:
-       case DVBFE_DELSYS_DSS:
+       case SYS_DVBS:
+       case SYS_DSS:
                if (internal->lock) {
                        if (STB0899_GETFIELD(VSTATUS_LOCKEDVIT, reg)) {
 
@@ -1069,7 +1070,7 @@ static int stb0899_read_snr(struct dvb_f
                        }
                }
                break;
-       case DVBFE_DELSYS_DVBS2:
+       case SYS_DVBS2:
                if (internal->lock) {
                        reg = STB0899_READ_S2REG(STB0899_S2DEMOD, UWP_CNTRL1);
                        quant = STB0899_GETFIELD(UWP_ESN0_QUANT, reg);
@@ -1108,8 +1109,8 @@ static int stb0899_read_status(struct dv
        *status = 0;
 
        switch (state->delsys) {
-       case DVBFE_DELSYS_DVBS:
-       case DVBFE_DELSYS_DSS:
+       case SYS_DVBS:
+       case SYS_DSS:
                dprintk(state->verbose, FE_DEBUG, 1, "Delivery system 
DVB-S/DSS");
                if (internal->lock) {
                        reg  = stb0899_read_reg(state, STB0899_VSTATUS);
@@ -1127,7 +1128,7 @@ static int stb0899_read_status(struct dv
                        }
                }
                break;
-       case DVBFE_DELSYS_DVBS2:
+       case SYS_DVBS2:
                dprintk(state->verbose, FE_DEBUG, 1, "Delivery system DVB-S2");
                if (internal->lock) {
                        reg = STB0899_READ_S2REG(STB0899_S2DEMOD, DMD_STAT2);
@@ -1182,8 +1183,8 @@ static int stb0899_read_ber(struct dvb_f
        *ber = 0;
 
        switch (state->delsys) {
-       case DVBFE_DELSYS_DVBS:
-       case DVBFE_DELSYS_DSS:
+       case SYS_DVBS:
+       case SYS_DSS:
                if (internal->lock) {
                        /* average 5 BER values */
                        for (i = 0; i < 5; i++) {
@@ -1203,7 +1204,7 @@ static int stb0899_read_ber(struct dvb_f
                        }
                }
                break;
-       case DVBFE_DELSYS_DVBS2:
+       case SYS_DVBS2:
                if (internal->lock) {
                        /* Average 5 PER values */
                        for (i = 0; i < 5; i++) {
@@ -1350,97 +1351,6 @@ int stb0899_get_dev_id(struct stb0899_st
        return 0;
 }
 
-static const struct dvbfe_info dvbs_info       = {
-       .name                                   = "STB0899 DVB-S",
-       .delsys                                 = {
-               .dvbs.modulation                = DVBFE_MOD_QPSK,
-               .dvbs.fec                       = DVBFE_FEC_1_2 | DVBFE_FEC_2_3 
|
-                                                 DVBFE_FEC_3_4 | DVBFE_FEC_5_6 
|
-                                                 DVBFE_FEC_6_7
-       },
-
-       .frequency_min                          = 950000,
-       .frequency_max                          = 2150000,
-       .frequency_step                         = 0,
-       .symbol_rate_min                        = 1000000,
-       .symbol_rate_max                        = 45000000,
-       .symbol_rate_tolerance                  = 0
-};
-
-static const struct dvbfe_info dss_info                = {
-       .name                                   = "STB0899 DSS",
-       .delsys                                 = {
-               .dss.modulation                 = DVBFE_MOD_BPSK | 
DVBFE_MOD_QPSK,
-               .dss.fec                        = DVBFE_FEC_1_2  | 
DVBFE_FEC_2_3 |
-                                                 DVBFE_FEC_3_4  | 
DVBFE_FEC_5_6 |
-                                                 DVBFE_FEC_6_7
-       },
-
-       .frequency_min                          = 950000,
-       .frequency_max                          = 2150000,
-       .frequency_step                         = 0,
-       .symbol_rate_min                        = 1000000,
-       .symbol_rate_max                        = 45000000,
-       .symbol_rate_tolerance                  = 0
-};
-
-static const struct dvbfe_info dvbs2_info      = {
-       .name                                   = "STB0899 DVB-S2",
-       .delsys                                 = {
-               .dvbs2.modulation               = DVBFE_MOD_QPSK   | 
DVBFE_MOD_8PSK |
-                                                 DVBFE_MOD_16APSK | 
DVBFE_MOD_32APSK,
-
-               .dvbs2.fec                      = DVBFE_FEC_1_4 | DVBFE_FEC_1_3 
|
-                                                 DVBFE_FEC_2_5 | DVBFE_FEC_1_2 
|
-                                                 DVBFE_FEC_3_5 | DVBFE_FEC_2_3 
|
-                                                 DVBFE_FEC_3_4 | DVBFE_FEC_4_5 
|
-                                                 DVBFE_FEC_5_6 | DVBFE_FEC_8_9 
|
-                                                 DVBFE_FEC_9_10,
-       },
-
-       .frequency_min          = 950000,
-       .frequency_max          = 2150000,
-       .frequency_step         = 0,
-       .symbol_rate_min        = 1000000,
-       .symbol_rate_max        = 45000000,
-       .symbol_rate_tolerance  = 0
-};
-
-static int stb0899_get_info(struct dvb_frontend *fe, struct dvbfe_info 
*fe_info)
-{
-       struct stb0899_state *state = fe->demodulator_priv;
-
-       dprintk(state->verbose, FE_DEBUG, 1, "Get Info");
-
-       switch (state->delsys) {
-       case DVBFE_DELSYS_DVBS:
-               dprintk(state->verbose, FE_ERROR, 1, "Querying DVB-S info");
-               memcpy(fe_info, &dvbs_info, sizeof (struct dvbfe_info));
-               break;
-       case DVBFE_DELSYS_DSS:
-               dprintk(state->verbose, FE_ERROR, 1, "Querying DSS info");
-               memcpy(fe_info, &dss_info, sizeof (struct dvbfe_info));
-               break;
-       case DVBFE_DELSYS_DVBS2:
-               dprintk(state->verbose, FE_ERROR, 1, "Querying DVB-S2 info");
-               memcpy(fe_info, &dvbs2_info, sizeof (struct dvbfe_info));
-               break;
-       default:
-               dprintk(state->verbose, FE_ERROR, 1, "Unsupported delivery 
system");
-               return -EINVAL;
-       }
-       dprintk(state->verbose, FE_DEBUG, 1, "delivery system=%d", 
state->delsys);
-
-       return 0;
-}
-
-static int stb0899_get_delsys(struct dvb_frontend *fe, enum dvbfe_delsys 
*fe_delsys)
-{
-       *fe_delsys = DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DSS | DVBFE_DELSYS_DVBS2;
-
-       return 0;
-}
-
 static void stb0899_set_delivery(struct stb0899_state *state)
 {
        u8 reg;
@@ -1450,7 +1360,7 @@ static void stb0899_set_delivery(struct 
        stop_clk[1] = stb0899_read_reg(state, STB0899_STOPCLK2);
 
        switch (state->delsys) {
-       case DVBFE_DELSYS_DVBS:
+       case SYS_DVBS:
                dprintk(state->verbose, FE_DEBUG, 1, "Delivery System -- 
DVB-S");
                /* FECM/Viterbi ON      */
                reg = stb0899_read_reg(state, STB0899_FECM);
@@ -1479,7 +1389,7 @@ static void stb0899_set_delivery(struct 
 
                STB0899_SETFIELD_VAL(STOP_CKS2DMD108, stop_clk[1], 1);
                break;
-       case DVBFE_DELSYS_DVBS2:
+       case SYS_DVBS2:
                /* FECM/Viterbi OFF     */
                reg = stb0899_read_reg(state, STB0899_FECM);
                STB0899_SETFIELD_VAL(FECM_RSVD0, reg, 0);
@@ -1507,7 +1417,7 @@ static void stb0899_set_delivery(struct 
 
                STB0899_SETFIELD_VAL(STOP_CKS2DMD108, stop_clk[1], 0);
                break;
-       case DVBFE_DELSYS_DSS:
+       case SYS_DSS:
                /* FECM/Viterbi ON      */
                reg = stb0899_read_reg(state, STB0899_FECM);
                STB0899_SETFIELD_VAL(FECM_RSVD0, reg, 1);
@@ -1566,33 +1476,19 @@ static void stb0899_set_iterations(struc
        stb0899_write_s2reg(state, STB0899_S2DEMOD, STB0899_BASE_MAX_ITER, 
STB0899_OFF0_MAX_ITER, reg);
 }
 
-static enum dvbfe_search stb0899_search(struct dvb_frontend *fe, struct 
dvbfe_params *params)
+static enum dvbfe_search stb0899_search(struct dvb_frontend *fe, struct 
dvb_frontend_parameters *p)
 {
        struct stb0899_state *state = fe->demodulator_priv;
        struct stb0899_params *i_params = &state->params;
        struct stb0899_internal *internal = &state->internal;
        struct stb0899_config *config = state->config;
+       struct dtv_frontend_properties *props = &fe->dtv_property_cache;
 
        u32 SearchRange, gain;
 
-       i_params->freq  = params->frequency;
-       switch (state->delsys) {
-       case DVBFE_DELSYS_DVBS:
-               dprintk(state->verbose, FE_ERROR, 1, "set DVB-S params");
-               i_params->srate = params->delsys.dvbs.symbol_rate;
-               break;
-       case DVBFE_DELSYS_DSS:
-               dprintk(state->verbose, FE_ERROR, 1, "set DSS params");
-               i_params->srate = params->delsys.dss.symbol_rate;
-               break;
-       case DVBFE_DELSYS_DVBS2:
-               dprintk(state->verbose, FE_ERROR, 1, "set DVB-S2 params");
-               i_params->srate = params->delsys.dvbs2.symbol_rate;
-               break;
-       default:
-               dprintk(state->verbose, FE_ERROR, 1, "Unsupported delivery 
system");
-               return -EINVAL;
-       }
+       i_params->freq  = p->frequency;
+       i_params->srate = p->u.qpsk.symbol_rate;
+       state->delsys = props->delivery_system;
        dprintk(state->verbose, FE_DEBUG, 1, "delivery system=%d", 
state->delsys);
 
        SearchRange = 10000000;
@@ -1604,11 +1500,11 @@ static enum dvbfe_search stb0899_search(
 
                if (state->config->tuner_set_rfsiggain) {
                        if (internal->srate > 15000000)
-                               gain =  8;      /* 15Mb < srate < 45Mb, gain = 
8dB      */
+                               gain =  8; /* 15Mb < srate < 45Mb, gain = 8dB   
*/
                        else if (internal->srate > 5000000)
-                               gain = 12;      /*  5Mb < srate < 15Mb, gain = 
12dB     */
+                               gain = 12; /*  5Mb < srate < 15Mb, gain = 12dB  
*/
                        else
-                               gain = 14;      /*  1Mb < srate <  5Mb, gain = 
14db     */
+                               gain = 14; /*  1Mb < srate <  5Mb, gain = 14db  
*/
                        state->config->tuner_set_rfsiggain(fe, gain);
                }
 
@@ -1618,8 +1514,8 @@ static enum dvbfe_search stb0899_search(
                        stb0899_set_mclk(state, config->hi_clk);
 
                switch (state->delsys) {
-               case DVBFE_DELSYS_DVBS:
-               case DVBFE_DELSYS_DSS:
+               case SYS_DVBS:
+               case SYS_DSS:
                        dprintk(state->verbose, FE_DEBUG, 1, "DVB-S delivery 
system");
                        internal->freq  = i_params->freq;
                        internal->srate = i_params->srate;
@@ -1667,7 +1563,7 @@ static enum dvbfe_search stb0899_search(
                                return DVBFE_ALGO_SEARCH_FAILED;
                        }
                        break;
-               case DVBFE_DELSYS_DVBS2:
+               case SYS_DVBS2:
                        internal->freq                  = i_params->freq;
                        internal->srate                 = i_params->srate;
                        internal->srch_range            = SearchRange;
@@ -1717,7 +1613,7 @@ static enum dvbfe_search stb0899_search(
 
        return DVBFE_ALGO_SEARCH_ERROR;
 }
-
+#if 0
 static enum stb0899_status stb0899_track_carrier(struct stb0899_state *state)
 {
        u8 reg;
@@ -1752,26 +1648,26 @@ static enum stb0899_status stb0899_get_i
        return NOAGC1;
 }
 
-static int stb0899_get_s1fec(struct stb0899_internal *internal, enum dvbfe_fec 
*fec)
+static int stb0899_get_s1fec(struct stb0899_internal *internal, enum 
fe_code_rate *fec)
 {
        switch (internal->fecrate) {
        case STB0899_FEC_1_2:
-               *fec = DVBFE_FEC_1_2;
+               *fec = FEC_1_2;
                break;
        case STB0899_FEC_2_3:
-               *fec = DVBFE_FEC_2_3;
+               *fec = FEC_2_3;
                break;
        case STB0899_FEC_3_4:
-               *fec = DVBFE_FEC_3_4;
+               *fec = FEC_3_4;
                break;
        case STB0899_FEC_5_6:
-               *fec = DVBFE_FEC_5_6;
+               *fec = FEC_5_6;
                break;
        case STB0899_FEC_6_7:
-               *fec = DVBFE_FEC_6_7;
+               *fec = FEC_6_7;
                break;
        case STB0899_FEC_7_8:
-               *fec = DVBFE_FEC_7_8;
+               *fec = FEC_7_8;
                break;
        default:
                return -EINVAL;
@@ -1905,7 +1801,7 @@ static int stb0899_get_modcod(struct stb
 
        return 0;
 }
-
+#endif
 /*
  * stb0899_track
  * periodically check the signal level against a specified
@@ -1922,14 +1818,14 @@ static int stb0899_get_modcod(struct stb
  * Once a new lock has established, the internal state
  * frequency (internal->freq) is updated
  */
-static int stb0899_track(struct dvb_frontend *fe, struct dvbfe_params *params, 
int *delay)
-{
+static int stb0899_track(struct dvb_frontend *fe, struct 
dvb_frontend_parameters *p)
+{
+#if 0
        u32 lock_lost;
 
        struct stb0899_state *state             = fe->demodulator_priv;
        struct stb0899_internal *internal       = &state->internal;
 
-#if 0
        switch (state->delsys) {
        case DVBFE_DELSYS_DVBS:
                dprintk(state->verbose, FE_DEBUG, 1, "Tracking DVB-S state");
@@ -1981,40 +1877,19 @@ static int stb0899_track(struct dvb_fron
                dprintk(state->verbose, FE_ERROR, 1, "Unsupported delivery 
system");
                return -EINVAL;
        }
+
+//     *delay = HZ/10;
 #endif
-
-       *delay = HZ/10;
-
-       return 0;
-}
-
-static int stb0899_get_params(struct dvb_frontend *fe, struct dvbfe_params 
*params)
+       return 0;
+}
+
+static int stb0899_get_frontend(struct dvb_frontend *fe, struct 
dvb_frontend_parameters *p)
 {
        struct stb0899_state *state             = fe->demodulator_priv;
        struct stb0899_internal *internal       = &state->internal;
 
-       params->frequency                       = internal->freq;
-       params->inversion                       = internal->inversion;
-       params->delivery                        = state->delsys;
-       switch (state->delsys) {
-       case DVBFE_DELSYS_DVBS:
-               dprintk(state->verbose, FE_DEBUG, 1, "Get DVB-S params");
-               params->delsys.dvbs.symbol_rate         = internal->srate;
-               params->delsys.dvbs.modulation          = DVBFE_MOD_QPSK;
-               break;
-       case DVBFE_DELSYS_DSS:
-               dprintk(state->verbose, FE_DEBUG, 1, "Get DSS params");
-               params->delsys.dss.symbol_rate          = internal->srate;
-               params->delsys.dss.modulation           = DVBFE_MOD_QPSK;
-               break;
-       case DVBFE_DELSYS_DVBS2:
-               dprintk(state->verbose, FE_DEBUG, 1, "Get DVB-S2 params");
-               params->delsys.dvbs2.symbol_rate        = internal->srate;
-               break;
-       default:
-               dprintk(state->verbose, FE_ERROR, 1, "Unsupported delivery 
system");
-               return -EINVAL;
-       }
+       dprintk(state->verbose, FE_DEBUG, 1, "Get params");
+       p->u.qpsk.symbol_rate = internal->srate;
 
        return 0;
 }
@@ -2024,18 +1899,21 @@ static enum dvbfe_algo stb0899_frontend_
        return DVBFE_ALGO_CUSTOM;
 }
 
-static int stb0899_set_delsys(struct dvb_frontend *fe, enum dvbfe_delsys 
delsys)
-{
-       struct stb0899_state *state     = fe->demodulator_priv;
-
-       state->delsys = delsys;
-       return 0;
-}
-
 static struct dvb_frontend_ops stb0899_ops = {
 
        .info = {
-               .name                   = "STB0899 Multistandard",
+               .name                   = "STB0899 Multistandard",
+               .type                   = FE_QPSK,
+               .frequency_min          = 950000,
+               .frequency_max          = 2150000,
+               .frequency_stepsize     = 0,
+               .frequency_tolerance    = 0,
+               .symbol_rate_min        =  5000000,
+               .symbol_rate_max        = 45000000,
+
+               .caps                   = FE_CAN_INVERSION_AUTO |
+                                         FE_CAN_FEC_AUTO       |
+                                         FE_CAN_QPSK
        },
 
        .release                        = stb0899_release,
@@ -2044,14 +1922,12 @@ static struct dvb_frontend_ops stb0899_o
 //     .wakeup                         = stb0899_wakeup,
 
        .i2c_gate_ctrl                  = stb0899_i2c_gate_ctrl,
-       .get_info                       = stb0899_get_info,
-       .get_delsys                     = stb0899_get_delsys,
-       .set_delsys                     = stb0899_set_delsys,
 
        .get_frontend_algo              = stb0899_frontend_algo,
        .search                         = stb0899_search,
        .track                          = stb0899_track,
-       .get_params                     = stb0899_get_params,
+       .get_frontend                   = stb0899_get_frontend,
+
 
        .read_status                    = stb0899_read_status,
        .read_snr                       = stb0899_read_snr,
diff -r dd8bb48423d6 -r 73efe37a69d7 
linux/drivers/media/dvb/frontends/stb0899_priv.h
--- a/linux/drivers/media/dvb/frontends/stb0899_priv.h  Wed Jul 09 22:38:27 
2008 +0400
+++ b/linux/drivers/media/dvb/frontends/stb0899_priv.h  Mon Oct 27 01:28:52 
2008 +0400
@@ -160,7 +160,7 @@ struct stb0899_params {
 struct stb0899_params {
        u32     freq;                                   /* Frequency    */
        u32     srate;                                  /* Symbol rate  */
-       enum dvbfe_fec fecrate;
+       enum fe_code_rate fecrate;
 };
 
 struct stb0899_internal {
@@ -220,7 +220,7 @@ struct stb0899_state {
        struct stb0899_internal         internal;       /* Device internal 
parameters           */
 
        /*      cached params from API  */
-       enum dvbfe_delsys               delsys;
+       enum fe_delivery_system         delsys;
        struct stb0899_params           params;
 
        u32                             rx_freq;        /* DiSEqC 2.0 receiver 
freq             */
diff -r dd8bb48423d6 -r 73efe37a69d7 linux/drivers/media/dvb/frontends/stb6100.c
--- a/linux/drivers/media/dvb/frontends/stb6100.c       Wed Jul 09 22:38:27 
2008 +0400
+++ b/linux/drivers/media/dvb/frontends/stb6100.c       Mon Oct 27 01:28:52 
2008 +0400
@@ -312,7 +312,7 @@ static int stb6100_set_frequency(struct 
        int rc;
        const struct stb6100_lkup *ptr;
        struct stb6100_state *state = fe->tuner_priv;
-       struct dvbfe_params params;
+       struct dvb_frontend_parameters p;
 
        u32 srate = 0, fvco, nint, nfrac;
        u8 regs[STB6100_NUMREGS];
@@ -320,28 +320,12 @@ static int stb6100_set_frequency(struct 
 
        if ((rc = stb6100_read_regs(state, regs)) < 0)
                return rc;
-       if (fe->ops.get_params) {
-               dprintk(verbose, FE_DEBUG, 1, "Get Frontend parameters");
-               fe->ops.get_params(fe, &params);
-       }
-       switch (params.delivery) {
-       case DVBFE_DELSYS_DVBS:
-               srate = params.delsys.dvbs.symbol_rate;
-               dprintk(verbose, FE_DEBUG, 1, "Delivery system = DVB-S, Symbol 
Rate=[%d]", srate);
-               break;
-       case DVBFE_DELSYS_DSS:
-               dprintk(verbose, FE_DEBUG, 1, "Delivery system = DSS, Symbol 
Rate=[%d]", srate);
-               srate = params.delsys.dss.symbol_rate;
-               break;
-       case DVBFE_DELSYS_DVBS2:
-               dprintk(verbose, FE_DEBUG, 1, "Delivery system = DVB-S2, Symbol 
Rate=[%d]", srate);
-               srate = params.delsys.dvbs2.symbol_rate;
-               break;
-       default:
-               dprintk(verbose, FE_NOTICE, 1, "symbol rate unknown!");
-               srate = 22000000; /* just a typical default value       */
-               break;
-       }
+
+       if (fe->ops.get_frontend) {
+               dprintk(verbose, FE_DEBUG, 1, "Get frontend parameters");
+               fe->ops.get_frontend(fe, &p);
+       }
+       srate = p.u.qpsk.symbol_rate;
 
        /* Baseband gain.       */
        if (srate >= 15000000)


---

Patch is available at: 
http://linuxtv.org/hg/v4l-dvb/rev/73efe37a69d70836151402309c074dbd8d198531

_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to