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, ¶ms);
- }
- 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