Commit f9d79126 authored by Athanasios Oikonomou's avatar Athanasios Oikonomou Committed by Mauro Carvalho Chehab

media: dvb_frontend: add physical layer scrambling support

This commit adds a new property DTV_SCRAMBLING_SEQUENCE_INDEX.

This 18 bit field, when present, carries the index of the DVB-S2 physical
layer scrambling sequence as defined in clause 5.5.4 of EN 302 307.
There is no explicit signalling method to convey scrambling sequence index
to the receiver. If S2 satellite delivery system descriptor is available
it can be used to read the scrambling sequence index (EN 300 468 table 41).

By default, gold scrambling sequence index 0 is used. The valid scrambling
sequence index range is from 0 to 262142.

Increase the DVB API version in order userspace to be aware of the changes.
Signed-off-by: default avatarAthanasios Oikonomou <athoik@gmail.com>
Acked-by: default avatarRalph Metzler <rjkm@metzlerbros.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 24538879
...@@ -987,3 +987,21 @@ Possible values: 0, 1, LNA_AUTO ...@@ -987,3 +987,21 @@ Possible values: 0, 1, LNA_AUTO
1, LNA on 1, LNA on
use the special macro LNA_AUTO to set LNA auto use the special macro LNA_AUTO to set LNA auto
.. _DTV-SCRAMBLING-SEQUENCE-INDEX:
DTV_SCRAMBLING_SEQUENCE_INDEX
=============================
Used on DVB-S2.
This 18 bit field, when present, carries the index of the DVB-S2 physical
layer scrambling sequence as defined in clause 5.5.4 of EN 302 307.
There is no explicit signalling method to convey scrambling sequence index
to the receiver. If S2 satellite delivery system descriptor is available
it can be used to read the scrambling sequence index (EN 300 468 table 41).
By default, gold scrambling sequence index 0 is used.
The valid scrambling sequence index range is from 0 to 262142.
...@@ -60,6 +60,8 @@ following parameters: ...@@ -60,6 +60,8 @@ following parameters:
- :ref:`DTV_STREAM_ID <DTV-STREAM-ID>` - :ref:`DTV_STREAM_ID <DTV-STREAM-ID>`
- :ref:`DTV_SCRAMBLING_SEQUENCE_INDEX <DTV-SCRAMBLING-SEQUENCE-INDEX>`
In addition, the :ref:`DTV QoS statistics <frontend-stat-properties>` In addition, the :ref:`DTV QoS statistics <frontend-stat-properties>`
are also valid. are also valid.
......
...@@ -982,6 +982,7 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe) ...@@ -982,6 +982,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->scrambling_sequence_index = 0;/* default sequence */
switch (c->delivery_system) { switch (c->delivery_system) {
case SYS_DVBS: case SYS_DVBS:
...@@ -1072,6 +1073,7 @@ static struct dtv_cmds_h dtv_cmds[DTV_MAX_COMMAND + 1] = { ...@@ -1072,6 +1073,7 @@ 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),
/* Get */ /* Get */
...@@ -1417,6 +1419,11 @@ static int dtv_property_process_get(struct dvb_frontend *fe, ...@@ -1417,6 +1419,11 @@ static int dtv_property_process_get(struct dvb_frontend *fe,
tvp->u.data = c->stream_id; tvp->u.data = c->stream_id;
break; break;
/* Physical layer scrambling support */
case DTV_SCRAMBLING_SEQUENCE_INDEX:
tvp->u.data = c->scrambling_sequence_index;
break;
/* ATSC-MH */ /* ATSC-MH */
case DTV_ATSCMH_FIC_VER: case DTV_ATSCMH_FIC_VER:
tvp->u.data = fe->dtv_property_cache.atscmh_fic_ver; tvp->u.data = fe->dtv_property_cache.atscmh_fic_ver;
...@@ -1900,6 +1907,11 @@ static int dtv_property_process_set(struct dvb_frontend *fe, ...@@ -1900,6 +1907,11 @@ static int dtv_property_process_set(struct dvb_frontend *fe,
c->stream_id = data; c->stream_id = data;
break; break;
/* Physical layer scrambling support */
case DTV_SCRAMBLING_SEQUENCE_INDEX:
c->scrambling_sequence_index = data;
break;
/* ATSC-MH */ /* ATSC-MH */
case DTV_ATSCMH_PARADE_ID: case DTV_ATSCMH_PARADE_ID:
fe->dtv_property_cache.atscmh_parade_id = data; fe->dtv_property_cache.atscmh_parade_id = data;
......
...@@ -513,6 +513,8 @@ struct dvb_fe_events { ...@@ -513,6 +513,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)
...@@ -591,6 +593,9 @@ struct dtv_frontend_properties { ...@@ -591,6 +593,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;
......
...@@ -547,7 +547,10 @@ enum fe_interleaving { ...@@ -547,7 +547,10 @@ 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_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT /* Physical layer scrambling */
#define DTV_SCRAMBLING_SEQUENCE_INDEX 70
#define DTV_MAX_COMMAND DTV_SCRAMBLING_SEQUENCE_INDEX
/** /**
* enum fe_pilot - Type of pilot tone * enum fe_pilot - Type of pilot tone
......
...@@ -25,6 +25,6 @@ ...@@ -25,6 +25,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_*/
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment