mirror of
https://github.com/DigitalDevices/dddvb.git
synced 2023-10-10 13:37:43 +02:00
change pls to official scrambling_sequence_index
This commit is contained in:
parent
bda6c538ae
commit
4f136e5659
@ -383,20 +383,23 @@ unlock:
|
|||||||
mci_cmd(state, &cmd, NULL);
|
mci_cmd(state, &cmd, NULL);
|
||||||
mci_config(state, ts_config);
|
mci_config(state, ts_config);
|
||||||
}
|
}
|
||||||
|
if (p->stream_id != NO_STREAM_ID_FILTER && p->stream_id != 0x80000000)
|
||||||
|
flags |= 0x80;
|
||||||
printk("frontend %u: tuner=%u demod=%u\n", state->nr, state->tuner, state->demod);
|
printk("frontend %u: tuner=%u demod=%u\n", state->nr, state->tuner, state->demod);
|
||||||
cmd.command = MCI_CMD_SEARCH_DVBS;
|
cmd.command = MCI_CMD_SEARCH_DVBS;
|
||||||
cmd.dvbs2_search.flags = flags;
|
cmd.dvbs2_search.flags = flags;
|
||||||
cmd.dvbs2_search.s2_modulation_mask = modmask & ((1 << (bits_per_symbol - 1)) - 1);
|
cmd.dvbs2_search.s2_modulation_mask = modmask & ((1 << (bits_per_symbol - 1)) - 1);
|
||||||
cmd.dvbs2_search.retry = 255; /* forever */
|
cmd.dvbs2_search.retry = 2;
|
||||||
cmd.dvbs2_search.frequency = p->frequency * 1000;
|
cmd.dvbs2_search.frequency = p->frequency * 1000;
|
||||||
cmd.dvbs2_search.symbol_rate = p->symbol_rate;
|
cmd.dvbs2_search.symbol_rate = p->symbol_rate;
|
||||||
cmd.dvbs2_search.scrambling_sequence_index =
|
cmd.dvbs2_search.scrambling_sequence_index =
|
||||||
(p->pls != NO_SCRAMBLING_CODE) ? p->pls : 0;
|
p->scrambling_sequence_index;
|
||||||
cmd.dvbs2_search.input_stream_id =
|
cmd.dvbs2_search.input_stream_id = p->stream_id;
|
||||||
(p->stream_id != NO_STREAM_ID_FILTER) ? p->stream_id : 0;
|
|
||||||
cmd.tuner = state->tuner;
|
cmd.tuner = state->tuner;
|
||||||
cmd.demod = state->demod;
|
cmd.demod = state->demod;
|
||||||
cmd.output = state->nr;
|
cmd.output = state->nr;
|
||||||
|
if (p->stream_id == 0x80000000)
|
||||||
|
cmd.output |= 0x80;
|
||||||
stat = mci_cmd(state, &cmd, NULL);
|
stat = mci_cmd(state, &cmd, NULL);
|
||||||
if (stat)
|
if (stat)
|
||||||
stop(fe);
|
stop(fe);
|
||||||
|
@ -972,7 +972,7 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe)
|
|||||||
}
|
}
|
||||||
|
|
||||||
c->stream_id = NO_STREAM_ID_FILTER;
|
c->stream_id = NO_STREAM_ID_FILTER;
|
||||||
c->pls = NO_SCRAMBLING_CODE;
|
c->scrambling_sequence_index = 0;/* default sequence */
|
||||||
c->input = NO_INPUT;
|
c->input = NO_INPUT;
|
||||||
|
|
||||||
switch (c->delivery_system) {
|
switch (c->delivery_system) {
|
||||||
@ -1064,9 +1064,9 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = {
|
|||||||
|
|
||||||
_DTV_CMD(DTV_STREAM_ID, 1, 0),
|
_DTV_CMD(DTV_STREAM_ID, 1, 0),
|
||||||
_DTV_CMD(DTV_DVBT2_PLP_ID_LEGACY, 1, 0),
|
_DTV_CMD(DTV_DVBT2_PLP_ID_LEGACY, 1, 0),
|
||||||
|
_DTV_CMD(DTV_SCRAMBLING_SEQUENCE_INDEX, 1, 0),
|
||||||
_DTV_CMD(DTV_LNA, 1, 0),
|
_DTV_CMD(DTV_LNA, 1, 0),
|
||||||
_DTV_CMD(DTV_INPUT, 1, 0),
|
_DTV_CMD(DTV_INPUT, 1, 0),
|
||||||
_DTV_CMD(DTV_PLS, 1, 0),
|
|
||||||
|
|
||||||
/* Get */
|
/* Get */
|
||||||
_DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),
|
_DTV_CMD(DTV_DISEQC_SLAVE_REPLY, 0, 1),
|
||||||
@ -1505,8 +1505,9 @@ static int dtv_property_process_get(struct dvb_frontend *fe,
|
|||||||
tvp->u.buffer.len = 4;
|
tvp->u.buffer.len = 4;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DTV_PLS:
|
/* Physical layer scrambling support */
|
||||||
tvp->u.data = c->pls;
|
case DTV_SCRAMBLING_SEQUENCE_INDEX:
|
||||||
|
tvp->u.data = c->scrambling_sequence_index;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* Fill quality measures */
|
/* Fill quality measures */
|
||||||
@ -1946,10 +1947,11 @@ static int dtv_property_process_set(struct dvb_frontend *fe,
|
|||||||
r = fe->ops.set_input(fe, c->input);
|
r = fe->ops.set_input(fe, c->input);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DTV_PLS:
|
/* Physical layer scrambling support */
|
||||||
c->pls = tvp->u.data;
|
case DTV_SCRAMBLING_SEQUENCE_INDEX:
|
||||||
|
c->scrambling_sequence_index = tvp->u.data;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -529,6 +529,8 @@ struct dvb_fe_events {
|
|||||||
* @layer.interleaving: per layer interleaving.
|
* @layer.interleaving: per layer interleaving.
|
||||||
* @stream_id: If different than zero, enable substream filtering, if
|
* @stream_id: If different than zero, enable substream filtering, if
|
||||||
* hardware supports (DVB-S2 and DVB-T2).
|
* hardware supports (DVB-S2 and DVB-T2).
|
||||||
|
* @scrambling_sequence_index: Carries the index of the DVB-S2 physical layer
|
||||||
|
* scrambling sequence.
|
||||||
* @atscmh_fic_ver: Version number of the FIC (Fast Information Channel)
|
* @atscmh_fic_ver: Version number of the FIC (Fast Information Channel)
|
||||||
* signaling data (only ATSC-M/H)
|
* signaling data (only ATSC-M/H)
|
||||||
* @atscmh_parade_id: Parade identification number (only ATSC-M/H)
|
* @atscmh_parade_id: Parade identification number (only ATSC-M/H)
|
||||||
@ -607,6 +609,9 @@ struct dtv_frontend_properties {
|
|||||||
/* Multistream specifics */
|
/* Multistream specifics */
|
||||||
u32 stream_id;
|
u32 stream_id;
|
||||||
|
|
||||||
|
/* Physical Layer Scrambling specifics */
|
||||||
|
u32 scrambling_sequence_index;
|
||||||
|
|
||||||
/* ATSC-MH specifics */
|
/* ATSC-MH specifics */
|
||||||
u8 atscmh_fic_ver;
|
u8 atscmh_fic_ver;
|
||||||
u8 atscmh_parade_id;
|
u8 atscmh_parade_id;
|
||||||
@ -627,7 +632,6 @@ struct dtv_frontend_properties {
|
|||||||
|
|
||||||
u32 lna;
|
u32 lna;
|
||||||
s32 input;
|
s32 input;
|
||||||
u32 pls;
|
|
||||||
|
|
||||||
/* statistics data */
|
/* statistics data */
|
||||||
struct dtv_fe_stats strength;
|
struct dtv_fe_stats strength;
|
||||||
|
@ -448,10 +448,7 @@ static int cfg_scrambler(struct mxl *state, u32 gold)
|
|||||||
0, 0, 0, 0, 1, 0, 0, 0,
|
0, 0, 0, 0, 1, 0, 0, 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (gold != NO_SCRAMBLING_CODE)
|
root = gold2root(gold);
|
||||||
root = gold2root(gold);
|
|
||||||
else
|
|
||||||
root = 1;
|
|
||||||
buf[25] = (root >> 24) & 0xff;
|
buf[25] = (root >> 24) & 0xff;
|
||||||
buf[24] = (root >> 16) & 0xff;
|
buf[24] = (root >> 16) & 0xff;
|
||||||
buf[23] = (root >> 8) & 0xff;
|
buf[23] = (root >> 8) & 0xff;
|
||||||
@ -530,7 +527,7 @@ static int set_parameters(struct dvb_frontend *fe)
|
|||||||
demodChanCfg.rollOff = MXL_HYDRA_ROLLOFF_AUTO;
|
demodChanCfg.rollOff = MXL_HYDRA_ROLLOFF_AUTO;
|
||||||
demodChanCfg.modulationScheme = MXL_HYDRA_MOD_AUTO;
|
demodChanCfg.modulationScheme = MXL_HYDRA_MOD_AUTO;
|
||||||
demodChanCfg.pilots = MXL_HYDRA_PILOTS_AUTO;
|
demodChanCfg.pilots = MXL_HYDRA_PILOTS_AUTO;
|
||||||
cfg_scrambler(state, p->pls);
|
cfg_scrambler(state, p->scrambling_sequence_index);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -3537,8 +3537,8 @@ static enum dvbfe_search stv090x_search(struct dvb_frontend *fe, struct dvb_fron
|
|||||||
if ((props->stream_id != NO_STREAM_ID_FILTER) &&
|
if ((props->stream_id != NO_STREAM_ID_FILTER) &&
|
||||||
(props->stream_id & 0xffffff00))
|
(props->stream_id & 0xffffff00))
|
||||||
pls = props->stream_id >> 8;
|
pls = props->stream_id >> 8;
|
||||||
if (props->pls != NO_SCRAMBLING_CODE)
|
/* props->scrambling_sequence_index is always gold code */
|
||||||
pls = props->pls | 0x40000; /* props->pls is always gold code */
|
pls = props->scrambling_sequence_index | 0x40000;
|
||||||
stv090x_set_pls(state, (pls >> 18) & 3, pls & 0x3ffff);
|
stv090x_set_pls(state, (pls >> 18) & 3, pls & 0x3ffff);
|
||||||
stv090x_set_mis(state, props->stream_id);
|
stv090x_set_mis(state, props->stream_id);
|
||||||
|
|
||||||
|
@ -893,9 +893,8 @@ static void set_stream_modes(struct stv *state, struct dtv_frontend_properties *
|
|||||||
if ((p->stream_id != NO_STREAM_ID_FILTER) &&
|
if ((p->stream_id != NO_STREAM_ID_FILTER) &&
|
||||||
(p->stream_id & 0xfffff00))
|
(p->stream_id & 0xfffff00))
|
||||||
scrambling_code = 0xfffff & (p->stream_id >> 8);
|
scrambling_code = 0xfffff & (p->stream_id >> 8);
|
||||||
/* p->pls is always gold code ! */
|
/* p->scrambling_sequence_index is always gold code ! */
|
||||||
if (p->pls != NO_SCRAMBLING_CODE)
|
scrambling_code = p->scrambling_sequence_index | 0x40000;
|
||||||
scrambling_code = p->pls | 0x40000;
|
|
||||||
set_pls(state, scrambling_code);
|
set_pls(state, scrambling_code);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1850,7 +1849,7 @@ struct dvb_frontend *stv0910_attach(struct i2c_adapter *i2c,
|
|||||||
state->search_range = 16000000;
|
state->search_range = 16000000;
|
||||||
state->demod = 0x10; /* Inversion : Auto with reset to 0 */
|
state->demod = 0x10; /* Inversion : Auto with reset to 0 */
|
||||||
state->receive_mode = RCVMODE_NONE;
|
state->receive_mode = RCVMODE_NONE;
|
||||||
state->cur_scrambling_code = NO_SCRAMBLING_CODE;
|
state->cur_scrambling_code = 0xffffffff;
|
||||||
state->single = cfg->single ? 1 : 0;
|
state->single = cfg->single ? 1 : 0;
|
||||||
|
|
||||||
base = match_base(i2c, cfg->adr);
|
base = match_base(i2c, cfg->adr);
|
||||||
|
@ -551,10 +551,11 @@ enum fe_interleaving {
|
|||||||
#define DTV_STAT_ERROR_BLOCK_COUNT 68
|
#define DTV_STAT_ERROR_BLOCK_COUNT 68
|
||||||
#define DTV_STAT_TOTAL_BLOCK_COUNT 69
|
#define DTV_STAT_TOTAL_BLOCK_COUNT 69
|
||||||
|
|
||||||
#define DTV_INPUT 70
|
/* Physical layer scrambling */
|
||||||
#define DTV_PLS 71
|
#define DTV_SCRAMBLING_SEQUENCE_INDEX 70
|
||||||
|
#define DTV_INPUT 71
|
||||||
|
|
||||||
#define DTV_MAX_COMMAND DTV_PLS
|
#define DTV_MAX_COMMAND DTV_INPUT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum fe_pilot - Type of pilot tone
|
* enum fe_pilot - Type of pilot tone
|
||||||
@ -739,7 +740,6 @@ enum atscmh_rs_code_mode {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define NO_STREAM_ID_FILTER (~0U)
|
#define NO_STREAM_ID_FILTER (~0U)
|
||||||
#define NO_SCRAMBLING_CODE (~0U)
|
|
||||||
#define LNA_AUTO (~0U)
|
#define LNA_AUTO (~0U)
|
||||||
#define NO_INPUT (~0U)
|
#define NO_INPUT (~0U)
|
||||||
|
|
||||||
|
@ -24,6 +24,6 @@
|
|||||||
#define _DVBVERSION_H_
|
#define _DVBVERSION_H_
|
||||||
|
|
||||||
#define DVB_API_VERSION 5
|
#define DVB_API_VERSION 5
|
||||||
#define DVB_API_VERSION_MINOR 10
|
#define DVB_API_VERSION_MINOR 11
|
||||||
|
|
||||||
#endif /*_DVBVERSION_H_*/
|
#endif /*_DVBVERSION_H_*/
|
||||||
|
Loading…
Reference in New Issue
Block a user