All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/3] Add FEC rates, S2X params and 64K transmission
@ 2018-03-13 22:18 Daniel Scheller
  2018-03-13 22:18 ` [PATCH v3 1/3] [media] dvb_frontend: add S2X and misc. other enums Daniel Scheller
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Daniel Scheller @ 2018-03-13 22:18 UTC (permalink / raw)
  To: linux-media, mchehab, mchehab; +Cc: rascobie

From: Daniel Scheller <d.scheller@gmx.net>

Note: This v3 doesn't yet implement anything to allow userspace to detect
bits regarding S2X, nor does it implement anything new to report frontend
capabilities. At the moment, the main purpose for this is to enable any
demod frontend to report the current signal parameters more accurate.
Right now this (partially) is for the stv0910 demod, and with additional
hardware currently in development in mind which supports more S2X bits.
There's quite a lot missing from fe_caps right now which almost all
demods autodetect anyway, so let's at least properly report signal stats.

dddvb brings a few additional FEC rates (1/4 and 1/3), 64/128/256APSK
modulations and more rolloff factors (DVB-S2X), and 64K transmission mode
(DVB-T2). These rather trivial patches bring them to mainline, and puts
these missing bits into the stv0910's get_frontend() callback (FEC 1/4
and 1/3 are handled throughout the rest of the demod driver already). In
addition (as suggestion from Richard Scobie), the stv0910 driver now
reports it's active delivery system.

Changes from v2 to v3:
- API bits squashed into one commit, stv0910 changes squashed into another
  single commit
- DVB-S2X related bits added to the uAPI docs
- DVB API bumped to v5.12

Changes from v1 to v2:
- DVB-S2X rolloff factors and reporting
- report of the active delivery system in stv0910:get_frontend()

Daniel Scheller (3):
  [media] dvb_frontend: add S2X and misc. other enums
  [media] docs: documentation bits for S2X and the 64K transmission mode
  [media] dvb-frontends/stv0910: more detailed reporting in
    get_frontend()

 Documentation/media/frontend.h.rst.exceptions      |  9 ++++
 .../media/uapi/dvb/fe_property_parameters.rst      | 50 ++++++++++++++--------
 .../dvb/frontend-property-satellite-systems.rst    |  8 ++--
 drivers/media/dvb-core/dvb_frontend.c              |  9 ++++
 drivers/media/dvb-frontends/stv0910.c              | 16 ++++---
 include/uapi/linux/dvb/frontend.h                  | 29 ++++++++++---
 include/uapi/linux/dvb/version.h                   |  2 +-
 7 files changed, 90 insertions(+), 33 deletions(-)

-- 
2.16.1

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v3 1/3] [media] dvb_frontend: add S2X and misc. other enums
  2018-03-13 22:18 [PATCH v3 0/3] Add FEC rates, S2X params and 64K transmission Daniel Scheller
@ 2018-03-13 22:18 ` Daniel Scheller
  2018-05-04 15:51   ` Mauro Carvalho Chehab
  2018-03-13 22:18 ` [PATCH v3 2/3] [media] docs: documentation bits for S2X and the 64K transmission mode Daniel Scheller
  2018-03-13 22:18 ` [PATCH v3 3/3] [media] dvb-frontends/stv0910: more detailed reporting in get_frontend() Daniel Scheller
  2 siblings, 1 reply; 6+ messages in thread
From: Daniel Scheller @ 2018-03-13 22:18 UTC (permalink / raw)
  To: linux-media, mchehab, mchehab; +Cc: rascobie

From: Daniel Scheller <d.scheller@gmx.net>

Additional enums:
 * FEC ratios 1/4 and 1/3
 * 64/128/256-APSK modulations (DVB-S2X)
 * 15%, 10% and 5% rolloff factors (DVB-S2X)
 * 64K transmission mode (DVB-T2)

Add these enums to the frontend.h docs exceptions aswell (uapi docs are
updated separately).

Also, bump the DVB API version to 5.12 to make userspace aware of these
new enums.

Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
---
v2 to v3:
- All new enum patches squashed into one commit
- DVB API bump to 5.12

Please take note of some additional things in the cover letter.

 Documentation/media/frontend.h.rst.exceptions |  9 +++++++++
 drivers/media/dvb-core/dvb_frontend.c         |  9 +++++++++
 include/uapi/linux/dvb/frontend.h             | 29 ++++++++++++++++++++++-----
 include/uapi/linux/dvb/version.h              |  2 +-
 4 files changed, 43 insertions(+), 6 deletions(-)

diff --git a/Documentation/media/frontend.h.rst.exceptions b/Documentation/media/frontend.h.rst.exceptions
index f7c4df620a52..c1643ce93426 100644
--- a/Documentation/media/frontend.h.rst.exceptions
+++ b/Documentation/media/frontend.h.rst.exceptions
@@ -84,6 +84,9 @@ ignore symbol APSK_16
 ignore symbol APSK_32
 ignore symbol DQPSK
 ignore symbol QAM_4_NR
+ignore symbol APSK_64
+ignore symbol APSK_128
+ignore symbol APSK_256
 
 ignore symbol SEC_VOLTAGE_13
 ignore symbol SEC_VOLTAGE_18
@@ -117,6 +120,8 @@ ignore symbol FEC_AUTO
 ignore symbol FEC_3_5
 ignore symbol FEC_9_10
 ignore symbol FEC_2_5
+ignore symbol FEC_1_4
+ignore symbol FEC_1_3
 
 ignore symbol TRANSMISSION_MODE_AUTO
 ignore symbol TRANSMISSION_MODE_1K
@@ -129,6 +134,7 @@ ignore symbol TRANSMISSION_MODE_C1
 ignore symbol TRANSMISSION_MODE_C3780
 ignore symbol TRANSMISSION_MODE_2K
 ignore symbol TRANSMISSION_MODE_8K
+ignore symbol TRANSMISSION_MODE_64K
 
 ignore symbol GUARD_INTERVAL_AUTO
 ignore symbol GUARD_INTERVAL_1_128
@@ -161,6 +167,9 @@ ignore symbol ROLLOFF_35
 ignore symbol ROLLOFF_20
 ignore symbol ROLLOFF_25
 ignore symbol ROLLOFF_AUTO
+ignore symbol ROLLOFF_15
+ignore symbol ROLLOFF_10
+ignore symbol ROLLOFF_5
 
 ignore symbol INVERSION_ON
 ignore symbol INVERSION_OFF
diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
index a7ed16e0841d..52c76e32f864 100644
--- a/drivers/media/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb-core/dvb_frontend.c
@@ -2183,6 +2183,15 @@ static int dtv_set_frontend(struct dvb_frontend *fe)
 		break;
 	case SYS_DVBS2:
 		switch (c->rolloff) {
+		case ROLLOFF_5:
+			rolloff = 105;
+			break;
+		case ROLLOFF_10:
+			rolloff = 110;
+			break;
+		case ROLLOFF_15:
+			rolloff = 115;
+			break;
 		case ROLLOFF_20:
 			rolloff = 120;
 			break;
diff --git a/include/uapi/linux/dvb/frontend.h b/include/uapi/linux/dvb/frontend.h
index 4f9b4551c534..8bf1c63627a2 100644
--- a/include/uapi/linux/dvb/frontend.h
+++ b/include/uapi/linux/dvb/frontend.h
@@ -296,6 +296,8 @@ enum fe_spectral_inversion {
  * @FEC_3_5:  Forward Error Correction Code 3/5
  * @FEC_9_10: Forward Error Correction Code 9/10
  * @FEC_2_5:  Forward Error Correction Code 2/5
+ * @FEC_1_4:  Forward Error Correction Code 1/4
+ * @FEC_1_3:  Forward Error Correction Code 1/3
  *
  * Please note that not all FEC types are supported by a given standard.
  */
@@ -313,6 +315,8 @@ enum fe_code_rate {
 	FEC_3_5,
 	FEC_9_10,
 	FEC_2_5,
+	FEC_1_4,
+	FEC_1_3,
 };
 
 /**
@@ -331,6 +335,9 @@ enum fe_code_rate {
  * @APSK_32:	32-APSK modulation
  * @DQPSK:	DQPSK modulation
  * @QAM_4_NR:	4-QAM-NR modulation
+ * @APSK_64:	64-APSK modulation
+ * @APSK_128:	128-APSK modulation
+ * @APSK_256:	256-APSK modulation
  *
  * Please note that not all modulations are supported by a given standard.
  *
@@ -350,6 +357,9 @@ enum fe_modulation {
 	APSK_32,
 	DQPSK,
 	QAM_4_NR,
+	APSK_64,
+	APSK_128,
+	APSK_256,
 };
 
 /**
@@ -374,6 +384,8 @@ enum fe_modulation {
  *	Single Carrier (C=1) transmission mode (DTMB only)
  * @TRANSMISSION_MODE_C3780:
  *	Multi Carrier (C=3780) transmission mode (DTMB only)
+ * @TRANSMISSION_MODE_64K:
+ *	Transmission mode 64K
  *
  * Please note that not all transmission modes are supported by a given
  * standard.
@@ -388,6 +400,7 @@ enum fe_transmit_mode {
 	TRANSMISSION_MODE_32K,
 	TRANSMISSION_MODE_C1,
 	TRANSMISSION_MODE_C3780,
+	TRANSMISSION_MODE_64K,
 };
 
 /**
@@ -567,20 +580,26 @@ enum fe_pilot {
 
 /**
  * enum fe_rolloff - Rolloff factor
- * @ROLLOFF_35:		Roloff factor: α=35%
- * @ROLLOFF_20:		Roloff factor: α=20%
- * @ROLLOFF_25:		Roloff factor: α=25%
- * @ROLLOFF_AUTO:	Auto-detect the roloff factor.
+ * @ROLLOFF_35:		Rolloff factor: α=35%
+ * @ROLLOFF_20:		Rolloff factor: α=20%
+ * @ROLLOFF_25:		Rolloff factor: α=25%
+ * @ROLLOFF_AUTO:	Auto-detect the rolloff factor.
+ * @ROLLOFF_15:		Rolloff factor: α=15%
+ * @ROLLOFF_10:		Rolloff factor: α=10%
+ * @ROLLOFF_5:		Rolloff factor: α=5%
  *
  * .. note:
  *
- *    Roloff factor of 35% is implied on DVB-S. On DVB-S2, it is default.
+ *    Rolloff factor of 35% is implied on DVB-S. On DVB-S2, it is default.
  */
 enum fe_rolloff {
 	ROLLOFF_35,
 	ROLLOFF_20,
 	ROLLOFF_25,
 	ROLLOFF_AUTO,
+	ROLLOFF_15,
+	ROLLOFF_10,
+	ROLLOFF_5,
 };
 
 /**
diff --git a/include/uapi/linux/dvb/version.h b/include/uapi/linux/dvb/version.h
index 2c5cffe6d2a0..204d39b82039 100644
--- a/include/uapi/linux/dvb/version.h
+++ b/include/uapi/linux/dvb/version.h
@@ -25,6 +25,6 @@
 #define _DVBVERSION_H_
 
 #define DVB_API_VERSION 5
-#define DVB_API_VERSION_MINOR 11
+#define DVB_API_VERSION_MINOR 12
 
 #endif /*_DVBVERSION_H_*/
-- 
2.16.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v3 2/3] [media] docs: documentation bits for S2X and the 64K transmission mode
  2018-03-13 22:18 [PATCH v3 0/3] Add FEC rates, S2X params and 64K transmission Daniel Scheller
  2018-03-13 22:18 ` [PATCH v3 1/3] [media] dvb_frontend: add S2X and misc. other enums Daniel Scheller
@ 2018-03-13 22:18 ` Daniel Scheller
  2018-03-13 22:18 ` [PATCH v3 3/3] [media] dvb-frontends/stv0910: more detailed reporting in get_frontend() Daniel Scheller
  2 siblings, 0 replies; 6+ messages in thread
From: Daniel Scheller @ 2018-03-13 22:18 UTC (permalink / raw)
  To: linux-media, mchehab, mchehab; +Cc: rascobie

From: Daniel Scheller <d.scheller@gmx.net>

Add documentation bits regarding DVB-S2X. Since S2X only brings more
APSK modulations and rolloff's, notice that S2 equals S2X where
appropriate, and mention the additional modulations and rolloff's
at the appropriate places.

Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
---
v2 to v3:
- Added these documentation bits

Please take note of some additional things in the cover letter.

 .../media/uapi/dvb/fe_property_parameters.rst      | 50 ++++++++++++++--------
 .../dvb/frontend-property-satellite-systems.rst    |  8 ++--
 2 files changed, 36 insertions(+), 22 deletions(-)

diff --git a/Documentation/media/uapi/dvb/fe_property_parameters.rst b/Documentation/media/uapi/dvb/fe_property_parameters.rst
index 3524dcae4604..fa98a0d6b3fc 100644
--- a/Documentation/media/uapi/dvb/fe_property_parameters.rst
+++ b/Documentation/media/uapi/dvb/fe_property_parameters.rst
@@ -92,7 +92,8 @@ DVB-C Annex B		64-QAM.
 DVB-T			QPSK, 16-QAM and 64-QAM.
 DVB-T2			QPSK, 16-QAM, 64-QAM and 256-QAM.
 DVB-S			No need to set. It supports only QPSK.
-DVB-S2			QPSK, 8-PSK, 16-APSK and 32-APSK.
+DVB-S2(X)		QPSK, 8-PSK, 16-APSK and 32-APSK. DVB-S2X additionally
+			supports 64-APSK, 128-APSK and 256-APSK.
 ISDB-T			QPSK, DQPSK, 16-QAM and 64-QAM.
 ISDB-S			8-PSK, QPSK and BPSK.
 ======================= =======================================================
@@ -146,7 +147,8 @@ ISDB-T			5MHz, 6MHz, 7MHz and 8MHz, although most places
      :ref:`DTV-SYMBOL-RATE`, and the rolloff factor, with is fixed for
      DVB-C and DVB-S.
 
-     For DVB-S2, the rolloff should also be set via :ref:`DTV-ROLLOFF`.
+     For DVB-S2 and DVB-S2X, the rolloff should also be set via
+     :ref:`DTV-ROLLOFF`.
 
 
 .. _DTV-INVERSION:
@@ -215,9 +217,9 @@ Currently not used.
 DTV_PILOT
 =========
 
-Used on DVB-S2.
+Used on DVB-S2 and DVB-S2X.
 
-Sets DVB-S2 pilot.
+Sets DVB-S2(X) pilot.
 
 The acceptable values are defined by :c:type:`fe_pilot`.
 
@@ -227,12 +229,17 @@ The acceptable values are defined by :c:type:`fe_pilot`.
 DTV_ROLLOFF
 ===========
 
-Used on DVB-S2.
+Used on DVB-S2 and DVB-S2X.
 
-Sets DVB-S2 rolloff.
+Sets DVB-S2(X) rolloff.
 
 The acceptable values are defined by :c:type:`fe_rolloff`.
 
+.. note::
+
+   Rolloff factors 15%, 10% an 5% are part of the DVB-S2X specifications
+   and thus are valid only for S2X-modulated transponders.
+
 
 .. _DTV-DISEQC-SLAVE-REPLY:
 
@@ -267,6 +274,12 @@ Specifies the type of the delivery system.
 
 The acceptable values are defined by :c:type:`fe_delivery_system`.
 
+.. note::
+
+   Since DVB-S2X only defines more rolloff's and more APSK modulations
+   without adding more attributes, DVB-S2X is handled via the DVB-S2
+   delivery system.
+
 
 .. _DTV-ISDBT-PARTIAL-RECEPTION:
 
@@ -894,7 +907,7 @@ The acceptable values are defined by :c:type:`fe_transmit_mode`.
 
    #. DVB-T specifies 2K and 8K as valid sizes.
 
-   #. DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.
+   #. DVB-T2 specifies 1K, 2K, 4K, 8K, 16K, 32K and 64K.
 
    #. DTMB specifies C1 and C3780.
 
@@ -916,14 +929,14 @@ The acceptable values are defined by :c:type:`fe_hierarchy`.
 DTV_STREAM_ID
 =============
 
-Used on DVB-S2, DVB-T2 and ISDB-S.
+Used on DVB-S2(X), DVB-T2 and ISDB-S.
 
-DVB-S2, DVB-T2 and ISDB-S support the transmission of several streams on
-a single transport stream. This property enables the digital TV driver to
-handle substream filtering, when supported by the hardware. By default,
+DVB-S2(X), DVB-T2 and ISDB-S support the transmission of several streams
+on a single transport stream. This property enables the digital TV driver
+to handle substream filtering, when supported by the hardware. By default,
 substream filtering is disabled.
 
-For DVB-S2 and DVB-T2, the valid substream id range is from 0 to 255.
+For DVB-S2(X) and DVB-T2, the valid substream id range is from 0 to 255.
 
 For ISDB, the valid substream id range is from 1 to 65535.
 
@@ -994,13 +1007,14 @@ use the special macro LNA_AUTO to set LNA auto
 DTV_SCRAMBLING_SEQUENCE_INDEX
 =============================
 
-Used on DVB-S2.
+Used on DVB-S2 and DVB-S2X.
 
-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).
+This 18 bit field, when present, carries the index of the DVB-S2(X)
+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.
 
diff --git a/Documentation/media/uapi/dvb/frontend-property-satellite-systems.rst b/Documentation/media/uapi/dvb/frontend-property-satellite-systems.rst
index 2929e6999a7a..9f20064850b1 100644
--- a/Documentation/media/uapi/dvb/frontend-property-satellite-systems.rst
+++ b/Documentation/media/uapi/dvb/frontend-property-satellite-systems.rst
@@ -46,11 +46,11 @@ Future implementations might add those two missing parameters:
 
 .. _dvbs2-params:
 
-DVB-S2 delivery system
-======================
+DVB-S2 and -S2X delivery systems
+================================
 
-In addition to all parameters valid for DVB-S, DVB-S2 supports the
-following parameters:
+In addition to all parameters valid for DVB-S, both DVB-S2 and DVB-S2X
+support the following parameters:
 
 -  :ref:`DTV_MODULATION <DTV-MODULATION>`
 
-- 
2.16.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v3 3/3] [media] dvb-frontends/stv0910: more detailed reporting in get_frontend()
  2018-03-13 22:18 [PATCH v3 0/3] Add FEC rates, S2X params and 64K transmission Daniel Scheller
  2018-03-13 22:18 ` [PATCH v3 1/3] [media] dvb_frontend: add S2X and misc. other enums Daniel Scheller
  2018-03-13 22:18 ` [PATCH v3 2/3] [media] docs: documentation bits for S2X and the 64K transmission mode Daniel Scheller
@ 2018-03-13 22:18 ` Daniel Scheller
  2 siblings, 0 replies; 6+ messages in thread
From: Daniel Scheller @ 2018-03-13 22:18 UTC (permalink / raw)
  To: linux-media, mchehab, mchehab; +Cc: rascobie

From: Daniel Scheller <d.scheller@gmx.net>

The first two missing FECs in the modcod2fec fe_code_rate table were 1/4
and 1/3. Add them as they're now defined by the API. Also, report the
currently used S2 rolloff factor in get_frontend(). For cosmetic reasons,
also change all feroll_off occurences to fe_rolloff. In addition,
Richard Scobie <rascobie@slingshot.co.nz> suggested to report the
currently active delivery system aswell, so add this while at it.

Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
---
v2 to v3:
- Squashed all stv0910 get_frontend() reporting into a single commit

Please take note of some additional things in the cover letter.

 drivers/media/dvb-frontends/stv0910.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/media/dvb-frontends/stv0910.c b/drivers/media/dvb-frontends/stv0910.c
index 52355c14fd64..e12bc87de87b 100644
--- a/drivers/media/dvb-frontends/stv0910.c
+++ b/drivers/media/dvb-frontends/stv0910.c
@@ -113,7 +113,7 @@ struct stv {
 	enum fe_stv0910_mod_cod  mod_cod;
 	enum dvbs2_fectype       fectype;
 	u32                      pilots;
-	enum fe_stv0910_roll_off feroll_off;
+	enum fe_stv0910_roll_off fe_rolloff;
 
 	int   is_standard_broadcast;
 	int   is_vcm;
@@ -541,7 +541,7 @@ static int get_signal_parameters(struct stv *state)
 		}
 		state->is_vcm = 0;
 		state->is_standard_broadcast = 1;
-		state->feroll_off = FE_SAT_35;
+		state->fe_rolloff = FE_SAT_35;
 	}
 	return 0;
 }
@@ -1300,14 +1300,14 @@ static int manage_matype_info(struct stv *state)
 
 		read_regs(state, RSTV0910_P2_MATSTR1 + state->regoff,
 			  bbheader, 2);
-		state->feroll_off =
+		state->fe_rolloff =
 			(enum fe_stv0910_roll_off)(bbheader[0] & 0x03);
 		state->is_vcm = (bbheader[0] & 0x10) == 0;
 		state->is_standard_broadcast = (bbheader[0] & 0xFC) == 0xF0;
 	} else if (state->receive_mode == RCVMODE_DVBS) {
 		state->is_vcm = 0;
 		state->is_standard_broadcast = 1;
-		state->feroll_off = FE_SAT_35;
+		state->fe_rolloff = FE_SAT_35;
 	}
 	return 0;
 }
@@ -1562,7 +1562,7 @@ static int get_frontend(struct dvb_frontend *fe,
 			APSK_32,
 		};
 		const enum fe_code_rate modcod2fec[0x20] = {
-			FEC_NONE, FEC_NONE, FEC_NONE, FEC_2_5,
+			FEC_NONE, FEC_1_4, FEC_1_3, FEC_2_5,
 			FEC_1_2, FEC_3_5, FEC_2_3, FEC_3_4,
 			FEC_4_5, FEC_5_6, FEC_8_9, FEC_9_10,
 			FEC_3_5, FEC_2_3, FEC_3_4, FEC_5_6,
@@ -1571,11 +1571,16 @@ static int get_frontend(struct dvb_frontend *fe,
 			FEC_3_4, FEC_4_5, FEC_5_6, FEC_8_9,
 			FEC_9_10
 		};
+		const enum fe_rolloff ro2ro[4] = {
+			ROLLOFF_35, ROLLOFF_25, ROLLOFF_20, ROLLOFF_15,
+		};
 		read_reg(state, RSTV0910_P2_DMDMODCOD + state->regoff, &tmp);
 		mc = ((tmp & 0x7c) >> 2);
 		p->pilot = (tmp & 0x01) ? PILOT_ON : PILOT_OFF;
 		p->modulation = modcod2mod[mc];
 		p->fec_inner = modcod2fec[mc];
+		p->rolloff = ro2ro[state->fe_rolloff];
+		p->delivery_system = SYS_DVBS2;
 	} else if (state->receive_mode == RCVMODE_DVBS) {
 		read_reg(state, RSTV0910_P2_VITCURPUN + state->regoff, &tmp);
 		switch (tmp & 0x1F) {
@@ -1599,6 +1604,7 @@ static int get_frontend(struct dvb_frontend *fe,
 			break;
 		}
 		p->rolloff = ROLLOFF_35;
+		p->delivery_system = SYS_DVBS;
 	}
 
 	if (state->receive_mode != RCVMODE_NONE) {
-- 
2.16.1

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 1/3] [media] dvb_frontend: add S2X and misc. other enums
  2018-03-13 22:18 ` [PATCH v3 1/3] [media] dvb_frontend: add S2X and misc. other enums Daniel Scheller
@ 2018-05-04 15:51   ` Mauro Carvalho Chehab
  2018-05-07 16:04     ` Daniel Scheller
  0 siblings, 1 reply; 6+ messages in thread
From: Mauro Carvalho Chehab @ 2018-05-04 15:51 UTC (permalink / raw)
  To: Daniel Scheller; +Cc: linux-media, mchehab, rascobie

Em Tue, 13 Mar 2018 23:18:03 +0100
Daniel Scheller <d.scheller.oss@gmail.com> escreveu:

> From: Daniel Scheller <d.scheller@gmx.net>
> 
> Additional enums:
>  * FEC ratios 1/4 and 1/3
>  * 64/128/256-APSK modulations (DVB-S2X)
>  * 15%, 10% and 5% rolloff factors (DVB-S2X)
>  * 64K transmission mode (DVB-T2)
> 
> Add these enums to the frontend.h docs exceptions aswell (uapi docs are
> updated separately).
> 
> Also, bump the DVB API version to 5.12 to make userspace aware of these
> new enums.

Series look good, except for one detail: how userspace would know if
a device supports S2(X) or not?

> 
> Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
> ---
> v2 to v3:
> - All new enum patches squashed into one commit
> - DVB API bump to 5.12
> 
> Please take note of some additional things in the cover letter.
> 
>  Documentation/media/frontend.h.rst.exceptions |  9 +++++++++
>  drivers/media/dvb-core/dvb_frontend.c         |  9 +++++++++
>  include/uapi/linux/dvb/frontend.h             | 29 ++++++++++++++++++++++-----
>  include/uapi/linux/dvb/version.h              |  2 +-
>  4 files changed, 43 insertions(+), 6 deletions(-)
> 
> diff --git a/Documentation/media/frontend.h.rst.exceptions b/Documentation/media/frontend.h.rst.exceptions
> index f7c4df620a52..c1643ce93426 100644
> --- a/Documentation/media/frontend.h.rst.exceptions
> +++ b/Documentation/media/frontend.h.rst.exceptions
> @@ -84,6 +84,9 @@ ignore symbol APSK_16
>  ignore symbol APSK_32
>  ignore symbol DQPSK
>  ignore symbol QAM_4_NR
> +ignore symbol APSK_64
> +ignore symbol APSK_128
> +ignore symbol APSK_256
>  
>  ignore symbol SEC_VOLTAGE_13
>  ignore symbol SEC_VOLTAGE_18
> @@ -117,6 +120,8 @@ ignore symbol FEC_AUTO
>  ignore symbol FEC_3_5
>  ignore symbol FEC_9_10
>  ignore symbol FEC_2_5
> +ignore symbol FEC_1_4
> +ignore symbol FEC_1_3
>  
>  ignore symbol TRANSMISSION_MODE_AUTO
>  ignore symbol TRANSMISSION_MODE_1K
> @@ -129,6 +134,7 @@ ignore symbol TRANSMISSION_MODE_C1
>  ignore symbol TRANSMISSION_MODE_C3780
>  ignore symbol TRANSMISSION_MODE_2K
>  ignore symbol TRANSMISSION_MODE_8K
> +ignore symbol TRANSMISSION_MODE_64K
>  
>  ignore symbol GUARD_INTERVAL_AUTO
>  ignore symbol GUARD_INTERVAL_1_128
> @@ -161,6 +167,9 @@ ignore symbol ROLLOFF_35
>  ignore symbol ROLLOFF_20
>  ignore symbol ROLLOFF_25
>  ignore symbol ROLLOFF_AUTO
> +ignore symbol ROLLOFF_15
> +ignore symbol ROLLOFF_10
> +ignore symbol ROLLOFF_5
>  
>  ignore symbol INVERSION_ON
>  ignore symbol INVERSION_OFF
> diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
> index a7ed16e0841d..52c76e32f864 100644
> --- a/drivers/media/dvb-core/dvb_frontend.c
> +++ b/drivers/media/dvb-core/dvb_frontend.c
> @@ -2183,6 +2183,15 @@ static int dtv_set_frontend(struct dvb_frontend *fe)
>  		break;
>  	case SYS_DVBS2:
>  		switch (c->rolloff) {
> +		case ROLLOFF_5:
> +			rolloff = 105;
> +			break;
> +		case ROLLOFF_10:
> +			rolloff = 110;
> +			break;
> +		case ROLLOFF_15:
> +			rolloff = 115;
> +			break;
>  		case ROLLOFF_20:
>  			rolloff = 120;
>  			break;
> diff --git a/include/uapi/linux/dvb/frontend.h b/include/uapi/linux/dvb/frontend.h
> index 4f9b4551c534..8bf1c63627a2 100644
> --- a/include/uapi/linux/dvb/frontend.h
> +++ b/include/uapi/linux/dvb/frontend.h
> @@ -296,6 +296,8 @@ enum fe_spectral_inversion {
>   * @FEC_3_5:  Forward Error Correction Code 3/5
>   * @FEC_9_10: Forward Error Correction Code 9/10
>   * @FEC_2_5:  Forward Error Correction Code 2/5
> + * @FEC_1_4:  Forward Error Correction Code 1/4
> + * @FEC_1_3:  Forward Error Correction Code 1/3
>   *
>   * Please note that not all FEC types are supported by a given standard.
>   */
> @@ -313,6 +315,8 @@ enum fe_code_rate {
>  	FEC_3_5,
>  	FEC_9_10,
>  	FEC_2_5,
> +	FEC_1_4,
> +	FEC_1_3,
>  };
>  
>  /**
> @@ -331,6 +335,9 @@ enum fe_code_rate {
>   * @APSK_32:	32-APSK modulation
>   * @DQPSK:	DQPSK modulation
>   * @QAM_4_NR:	4-QAM-NR modulation
> + * @APSK_64:	64-APSK modulation
> + * @APSK_128:	128-APSK modulation
> + * @APSK_256:	256-APSK modulation
>   *
>   * Please note that not all modulations are supported by a given standard.
>   *
> @@ -350,6 +357,9 @@ enum fe_modulation {
>  	APSK_32,
>  	DQPSK,
>  	QAM_4_NR,
> +	APSK_64,
> +	APSK_128,
> +	APSK_256,
>  };
>  
>  /**
> @@ -374,6 +384,8 @@ enum fe_modulation {
>   *	Single Carrier (C=1) transmission mode (DTMB only)
>   * @TRANSMISSION_MODE_C3780:
>   *	Multi Carrier (C=3780) transmission mode (DTMB only)
> + * @TRANSMISSION_MODE_64K:
> + *	Transmission mode 64K
>   *
>   * Please note that not all transmission modes are supported by a given
>   * standard.
> @@ -388,6 +400,7 @@ enum fe_transmit_mode {
>  	TRANSMISSION_MODE_32K,
>  	TRANSMISSION_MODE_C1,
>  	TRANSMISSION_MODE_C3780,
> +	TRANSMISSION_MODE_64K,
>  };
>  
>  /**
> @@ -567,20 +580,26 @@ enum fe_pilot {
>  
>  /**
>   * enum fe_rolloff - Rolloff factor
> - * @ROLLOFF_35:		Roloff factor: α=35%
> - * @ROLLOFF_20:		Roloff factor: α=20%
> - * @ROLLOFF_25:		Roloff factor: α=25%
> - * @ROLLOFF_AUTO:	Auto-detect the roloff factor.
> + * @ROLLOFF_35:		Rolloff factor: α=35%
> + * @ROLLOFF_20:		Rolloff factor: α=20%
> + * @ROLLOFF_25:		Rolloff factor: α=25%
> + * @ROLLOFF_AUTO:	Auto-detect the rolloff factor.
> + * @ROLLOFF_15:		Rolloff factor: α=15%
> + * @ROLLOFF_10:		Rolloff factor: α=10%
> + * @ROLLOFF_5:		Rolloff factor: α=5%
>   *
>   * .. note:
>   *
> - *    Roloff factor of 35% is implied on DVB-S. On DVB-S2, it is default.
> + *    Rolloff factor of 35% is implied on DVB-S. On DVB-S2, it is default.
>   */
>  enum fe_rolloff {
>  	ROLLOFF_35,
>  	ROLLOFF_20,
>  	ROLLOFF_25,
>  	ROLLOFF_AUTO,
> +	ROLLOFF_15,
> +	ROLLOFF_10,
> +	ROLLOFF_5,
>  };
>  
>  /**
> diff --git a/include/uapi/linux/dvb/version.h b/include/uapi/linux/dvb/version.h
> index 2c5cffe6d2a0..204d39b82039 100644
> --- a/include/uapi/linux/dvb/version.h
> +++ b/include/uapi/linux/dvb/version.h
> @@ -25,6 +25,6 @@
>  #define _DVBVERSION_H_
>  
>  #define DVB_API_VERSION 5
> -#define DVB_API_VERSION_MINOR 11
> +#define DVB_API_VERSION_MINOR 12
>  
>  #endif /*_DVBVERSION_H_*/



Thanks,
Mauro

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v3 1/3] [media] dvb_frontend: add S2X and misc. other enums
  2018-05-04 15:51   ` Mauro Carvalho Chehab
@ 2018-05-07 16:04     ` Daniel Scheller
  0 siblings, 0 replies; 6+ messages in thread
From: Daniel Scheller @ 2018-05-07 16:04 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: linux-media, mchehab, rascobie

Am Fri, 4 May 2018 12:51:02 -0300
schrieb Mauro Carvalho Chehab <mchehab+samsung@kernel.org>:

> Em Tue, 13 Mar 2018 23:18:03 +0100
> Daniel Scheller <d.scheller.oss@gmail.com> escreveu:
> 
> > From: Daniel Scheller <d.scheller@gmx.net>
> > 
> > Additional enums:
> >  * FEC ratios 1/4 and 1/3
> >  * 64/128/256-APSK modulations (DVB-S2X)
> >  * 15%, 10% and 5% rolloff factors (DVB-S2X)
> >  * 64K transmission mode (DVB-T2)
> > 
> > Add these enums to the frontend.h docs exceptions aswell (uapi docs are
> > updated separately).
> > 
> > Also, bump the DVB API version to 5.12 to make userspace aware of these
> > new enums.  
> 
> Series look good, except for one detail: how userspace would know if
> a device supports S2(X) or not?

I don't think userspace (applications) actually do really need to
know since there's nothing additionally applications have to set up wrt
dealing with S2X. They simply set frequency, symbolrate and
optionally SYS_DVBS2 (and I have a feeling they don't even have to do
this since drivers or demods, even, will care about S or S2, or S2X
themselves). In fact, all that these patches do (and what is
necessary, and what S2X is about) is to add the enum values which demod
drivers then can report via the get_frontend IOCTL.

Of course we can add a SYS_DVBS2X and put that to the caps fe_ops of
S2X supporting drivers, but in the end we would only change all

  if (SYS_DVBS2...) {}

to

  if (SYS_DVBS2 || SYS_DVBS2X...) {}

as there are no new fancy properties for S2X but only more rolloffs and
modulation types. Adding a FE_CAN_DVBS2X won't work at this time since
there are no more bits left on this caps value.

So (since you marked the series as "Changes requested"), please maybe
reconsider, and I believe a SYS_DVBS2X would add more clutter than it'd
help. Or: Please advise.

Note: If you prefer to overhaul all the caps things (as we had a quick
chat about on IRC), I prefer to leave this task up to someone else due
to lack of time, and someone else even might even better know what's
necessary.

> 
> > 
> > Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
> > ---
> > v2 to v3:
> > - All new enum patches squashed into one commit
> > - DVB API bump to 5.12
> > 
> > Please take note of some additional things in the cover letter.
> > 
> >  Documentation/media/frontend.h.rst.exceptions |  9 +++++++++
> >  drivers/media/dvb-core/dvb_frontend.c         |  9 +++++++++
> >  include/uapi/linux/dvb/frontend.h             | 29 ++++++++++++++++++++++-----
> >  include/uapi/linux/dvb/version.h              |  2 +-
> >  4 files changed, 43 insertions(+), 6 deletions(-)
> > 
> > diff --git a/Documentation/media/frontend.h.rst.exceptions b/Documentation/media/frontend.h.rst.exceptions
> > index f7c4df620a52..c1643ce93426 100644
> > --- a/Documentation/media/frontend.h.rst.exceptions
> > +++ b/Documentation/media/frontend.h.rst.exceptions
> > @@ -84,6 +84,9 @@ ignore symbol APSK_16
> >  ignore symbol APSK_32
> >  ignore symbol DQPSK
> >  ignore symbol QAM_4_NR
> > +ignore symbol APSK_64
> > +ignore symbol APSK_128
> > +ignore symbol APSK_256
> >  
> >  ignore symbol SEC_VOLTAGE_13
> >  ignore symbol SEC_VOLTAGE_18
> > @@ -117,6 +120,8 @@ ignore symbol FEC_AUTO
> >  ignore symbol FEC_3_5
> >  ignore symbol FEC_9_10
> >  ignore symbol FEC_2_5
> > +ignore symbol FEC_1_4
> > +ignore symbol FEC_1_3
> >  
> >  ignore symbol TRANSMISSION_MODE_AUTO
> >  ignore symbol TRANSMISSION_MODE_1K
> > @@ -129,6 +134,7 @@ ignore symbol TRANSMISSION_MODE_C1
> >  ignore symbol TRANSMISSION_MODE_C3780
> >  ignore symbol TRANSMISSION_MODE_2K
> >  ignore symbol TRANSMISSION_MODE_8K
> > +ignore symbol TRANSMISSION_MODE_64K
> >  
> >  ignore symbol GUARD_INTERVAL_AUTO
> >  ignore symbol GUARD_INTERVAL_1_128
> > @@ -161,6 +167,9 @@ ignore symbol ROLLOFF_35
> >  ignore symbol ROLLOFF_20
> >  ignore symbol ROLLOFF_25
> >  ignore symbol ROLLOFF_AUTO
> > +ignore symbol ROLLOFF_15
> > +ignore symbol ROLLOFF_10
> > +ignore symbol ROLLOFF_5
> >  
> >  ignore symbol INVERSION_ON
> >  ignore symbol INVERSION_OFF
> > diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
> > index a7ed16e0841d..52c76e32f864 100644
> > --- a/drivers/media/dvb-core/dvb_frontend.c
> > +++ b/drivers/media/dvb-core/dvb_frontend.c
> > @@ -2183,6 +2183,15 @@ static int dtv_set_frontend(struct dvb_frontend *fe)
> >  		break;
> >  	case SYS_DVBS2:
> >  		switch (c->rolloff) {
> > +		case ROLLOFF_5:
> > +			rolloff = 105;
> > +			break;
> > +		case ROLLOFF_10:
> > +			rolloff = 110;
> > +			break;
> > +		case ROLLOFF_15:
> > +			rolloff = 115;
> > +			break;
> >  		case ROLLOFF_20:
> >  			rolloff = 120;
> >  			break;
> > diff --git a/include/uapi/linux/dvb/frontend.h b/include/uapi/linux/dvb/frontend.h
> > index 4f9b4551c534..8bf1c63627a2 100644
> > --- a/include/uapi/linux/dvb/frontend.h
> > +++ b/include/uapi/linux/dvb/frontend.h
> > @@ -296,6 +296,8 @@ enum fe_spectral_inversion {
> >   * @FEC_3_5:  Forward Error Correction Code 3/5
> >   * @FEC_9_10: Forward Error Correction Code 9/10
> >   * @FEC_2_5:  Forward Error Correction Code 2/5
> > + * @FEC_1_4:  Forward Error Correction Code 1/4
> > + * @FEC_1_3:  Forward Error Correction Code 1/3
> >   *
> >   * Please note that not all FEC types are supported by a given standard.
> >   */
> > @@ -313,6 +315,8 @@ enum fe_code_rate {
> >  	FEC_3_5,
> >  	FEC_9_10,
> >  	FEC_2_5,
> > +	FEC_1_4,
> > +	FEC_1_3,
> >  };
> >  
> >  /**
> > @@ -331,6 +335,9 @@ enum fe_code_rate {
> >   * @APSK_32:	32-APSK modulation
> >   * @DQPSK:	DQPSK modulation
> >   * @QAM_4_NR:	4-QAM-NR modulation
> > + * @APSK_64:	64-APSK modulation
> > + * @APSK_128:	128-APSK modulation
> > + * @APSK_256:	256-APSK modulation
> >   *
> >   * Please note that not all modulations are supported by a given standard.
> >   *
> > @@ -350,6 +357,9 @@ enum fe_modulation {
> >  	APSK_32,
> >  	DQPSK,
> >  	QAM_4_NR,
> > +	APSK_64,
> > +	APSK_128,
> > +	APSK_256,
> >  };
> >  
> >  /**
> > @@ -374,6 +384,8 @@ enum fe_modulation {
> >   *	Single Carrier (C=1) transmission mode (DTMB only)
> >   * @TRANSMISSION_MODE_C3780:
> >   *	Multi Carrier (C=3780) transmission mode (DTMB only)
> > + * @TRANSMISSION_MODE_64K:
> > + *	Transmission mode 64K
> >   *
> >   * Please note that not all transmission modes are supported by a given
> >   * standard.
> > @@ -388,6 +400,7 @@ enum fe_transmit_mode {
> >  	TRANSMISSION_MODE_32K,
> >  	TRANSMISSION_MODE_C1,
> >  	TRANSMISSION_MODE_C3780,
> > +	TRANSMISSION_MODE_64K,
> >  };
> >  
> >  /**
> > @@ -567,20 +580,26 @@ enum fe_pilot {
> >  
> >  /**
> >   * enum fe_rolloff - Rolloff factor
> > - * @ROLLOFF_35:		Roloff factor: α=35%
> > - * @ROLLOFF_20:		Roloff factor: α=20%
> > - * @ROLLOFF_25:		Roloff factor: α=25%
> > - * @ROLLOFF_AUTO:	Auto-detect the roloff factor.
> > + * @ROLLOFF_35:		Rolloff factor: α=35%
> > + * @ROLLOFF_20:		Rolloff factor: α=20%
> > + * @ROLLOFF_25:		Rolloff factor: α=25%
> > + * @ROLLOFF_AUTO:	Auto-detect the rolloff factor.
> > + * @ROLLOFF_15:		Rolloff factor: α=15%
> > + * @ROLLOFF_10:		Rolloff factor: α=10%
> > + * @ROLLOFF_5:		Rolloff factor: α=5%
> >   *
> >   * .. note:
> >   *
> > - *    Roloff factor of 35% is implied on DVB-S. On DVB-S2, it is default.
> > + *    Rolloff factor of 35% is implied on DVB-S. On DVB-S2, it is default.
> >   */
> >  enum fe_rolloff {
> >  	ROLLOFF_35,
> >  	ROLLOFF_20,
> >  	ROLLOFF_25,
> >  	ROLLOFF_AUTO,
> > +	ROLLOFF_15,
> > +	ROLLOFF_10,
> > +	ROLLOFF_5,
> >  };
> >  
> >  /**
> > diff --git a/include/uapi/linux/dvb/version.h b/include/uapi/linux/dvb/version.h
> > index 2c5cffe6d2a0..204d39b82039 100644
> > --- a/include/uapi/linux/dvb/version.h
> > +++ b/include/uapi/linux/dvb/version.h
> > @@ -25,6 +25,6 @@
> >  #define _DVBVERSION_H_
> >  
> >  #define DVB_API_VERSION 5
> > -#define DVB_API_VERSION_MINOR 11
> > +#define DVB_API_VERSION_MINOR 12
> >  
> >  #endif /*_DVBVERSION_H_*/  
> 
> Thanks,
> Mauro

Best regards,
Daniel Scheller
-- 
https://github.com/herrnst

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2018-05-07 16:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-13 22:18 [PATCH v3 0/3] Add FEC rates, S2X params and 64K transmission Daniel Scheller
2018-03-13 22:18 ` [PATCH v3 1/3] [media] dvb_frontend: add S2X and misc. other enums Daniel Scheller
2018-05-04 15:51   ` Mauro Carvalho Chehab
2018-05-07 16:04     ` Daniel Scheller
2018-03-13 22:18 ` [PATCH v3 2/3] [media] docs: documentation bits for S2X and the 64K transmission mode Daniel Scheller
2018-03-13 22:18 ` [PATCH v3 3/3] [media] dvb-frontends/stv0910: more detailed reporting in get_frontend() Daniel Scheller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.