xref: /openbmc/linux/Documentation/userspace-api/media/dvb/dvb-frontend-parameters.rst (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
1*059b1c5bSMauro Carvalho Chehab.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
254f38fcaSMauro Carvalho Chehab
354f38fcaSMauro Carvalho Chehab.. c:type:: dvb_frontend_parameters
454f38fcaSMauro Carvalho Chehab
554f38fcaSMauro Carvalho Chehab*******************
654f38fcaSMauro Carvalho Chehabfrontend parameters
754f38fcaSMauro Carvalho Chehab*******************
854f38fcaSMauro Carvalho Chehab
954f38fcaSMauro Carvalho ChehabThe kind of parameters passed to the frontend device for tuning depend
1054f38fcaSMauro Carvalho Chehabon the kind of hardware you are using.
1154f38fcaSMauro Carvalho Chehab
1254f38fcaSMauro Carvalho ChehabThe struct ``dvb_frontend_parameters`` uses a union with specific
1354f38fcaSMauro Carvalho Chehabper-system parameters. However, as newer delivery systems required more
1454f38fcaSMauro Carvalho Chehabdata, the structure size weren't enough to fit, and just extending its
1554f38fcaSMauro Carvalho Chehabsize would break the existing applications. So, those parameters were
1654f38fcaSMauro Carvalho Chehabreplaced by the usage of
1754f38fcaSMauro Carvalho Chehab:ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
1854f38fcaSMauro Carvalho Chehabioctl's. The new API is flexible enough to add new parameters to
1954f38fcaSMauro Carvalho Chehabexisting delivery systems, and to add newer delivery systems.
2054f38fcaSMauro Carvalho Chehab
2154f38fcaSMauro Carvalho ChehabSo, newer applications should use
2254f38fcaSMauro Carvalho Chehab:ref:`FE_GET_PROPERTY/FE_SET_PROPERTY <FE_GET_PROPERTY>`
2354f38fcaSMauro Carvalho Chehabinstead, in order to be able to support the newer System Delivery like
2454f38fcaSMauro Carvalho ChehabDVB-S2, DVB-T2, DVB-C2, ISDB, etc.
2554f38fcaSMauro Carvalho Chehab
2654f38fcaSMauro Carvalho ChehabAll kinds of parameters are combined as a union in the
2754f38fcaSMauro Carvalho Chehab``dvb_frontend_parameters`` structure:
2854f38fcaSMauro Carvalho Chehab
2954f38fcaSMauro Carvalho Chehab
3054f38fcaSMauro Carvalho Chehab.. code-block:: c
3154f38fcaSMauro Carvalho Chehab
3254f38fcaSMauro Carvalho Chehab    struct dvb_frontend_parameters {
3354f38fcaSMauro Carvalho Chehab	uint32_t frequency;     /* (absolute) frequency in Hz for QAM/OFDM */
3454f38fcaSMauro Carvalho Chehab		    /* intermediate frequency in kHz for QPSK */
3554f38fcaSMauro Carvalho Chehab	fe_spectral_inversion_t inversion;
3654f38fcaSMauro Carvalho Chehab	union {
3754f38fcaSMauro Carvalho Chehab	    struct dvb_qpsk_parameters qpsk;
3854f38fcaSMauro Carvalho Chehab	    struct dvb_qam_parameters  qam;
3954f38fcaSMauro Carvalho Chehab	    struct dvb_ofdm_parameters ofdm;
4054f38fcaSMauro Carvalho Chehab	    struct dvb_vsb_parameters  vsb;
4154f38fcaSMauro Carvalho Chehab	} u;
4254f38fcaSMauro Carvalho Chehab    };
4354f38fcaSMauro Carvalho Chehab
4454f38fcaSMauro Carvalho ChehabIn the case of QPSK frontends the ``frequency`` field specifies the
4554f38fcaSMauro Carvalho Chehabintermediate frequency, i.e. the offset which is effectively added to
4654f38fcaSMauro Carvalho Chehabthe local oscillator frequency (LOF) of the LNB. The intermediate
4754f38fcaSMauro Carvalho Chehabfrequency has to be specified in units of kHz. For QAM and OFDM
4854f38fcaSMauro Carvalho Chehabfrontends the ``frequency`` specifies the absolute frequency and is
4954f38fcaSMauro Carvalho Chehabgiven in Hz.
5054f38fcaSMauro Carvalho Chehab
5154f38fcaSMauro Carvalho Chehab
5254f38fcaSMauro Carvalho Chehab.. c:type:: dvb_qpsk_parameters
5354f38fcaSMauro Carvalho Chehab
5454f38fcaSMauro Carvalho ChehabQPSK parameters
5554f38fcaSMauro Carvalho Chehab===============
5654f38fcaSMauro Carvalho Chehab
5754f38fcaSMauro Carvalho ChehabFor satellite QPSK frontends you have to use the ``dvb_qpsk_parameters``
5854f38fcaSMauro Carvalho Chehabstructure:
5954f38fcaSMauro Carvalho Chehab
6054f38fcaSMauro Carvalho Chehab
6154f38fcaSMauro Carvalho Chehab.. code-block:: c
6254f38fcaSMauro Carvalho Chehab
6354f38fcaSMauro Carvalho Chehab     struct dvb_qpsk_parameters {
6454f38fcaSMauro Carvalho Chehab	 uint32_t        symbol_rate;  /* symbol rate in Symbols per second */
6554f38fcaSMauro Carvalho Chehab	 fe_code_rate_t  fec_inner;    /* forward error correction (see above) */
6654f38fcaSMauro Carvalho Chehab     };
6754f38fcaSMauro Carvalho Chehab
6854f38fcaSMauro Carvalho Chehab
6954f38fcaSMauro Carvalho Chehab.. c:type:: dvb_qam_parameters
7054f38fcaSMauro Carvalho Chehab
7154f38fcaSMauro Carvalho ChehabQAM parameters
7254f38fcaSMauro Carvalho Chehab==============
7354f38fcaSMauro Carvalho Chehab
7454f38fcaSMauro Carvalho Chehabfor cable QAM frontend you use the ``dvb_qam_parameters`` structure:
7554f38fcaSMauro Carvalho Chehab
7654f38fcaSMauro Carvalho Chehab
7754f38fcaSMauro Carvalho Chehab.. code-block:: c
7854f38fcaSMauro Carvalho Chehab
7954f38fcaSMauro Carvalho Chehab     struct dvb_qam_parameters {
8054f38fcaSMauro Carvalho Chehab	 uint32_t         symbol_rate; /* symbol rate in Symbols per second */
8154f38fcaSMauro Carvalho Chehab	 fe_code_rate_t   fec_inner;   /* forward error correction (see above) */
8254f38fcaSMauro Carvalho Chehab	 fe_modulation_t  modulation;  /* modulation type (see above) */
8354f38fcaSMauro Carvalho Chehab     };
8454f38fcaSMauro Carvalho Chehab
8554f38fcaSMauro Carvalho Chehab
8654f38fcaSMauro Carvalho Chehab.. c:type:: dvb_vsb_parameters
8754f38fcaSMauro Carvalho Chehab
8854f38fcaSMauro Carvalho ChehabVSB parameters
8954f38fcaSMauro Carvalho Chehab==============
9054f38fcaSMauro Carvalho Chehab
9154f38fcaSMauro Carvalho ChehabATSC frontends are supported by the ``dvb_vsb_parameters`` structure:
9254f38fcaSMauro Carvalho Chehab
9354f38fcaSMauro Carvalho Chehab
9454f38fcaSMauro Carvalho Chehab.. code-block:: c
9554f38fcaSMauro Carvalho Chehab
9654f38fcaSMauro Carvalho Chehab    struct dvb_vsb_parameters {
9754f38fcaSMauro Carvalho Chehab	fe_modulation_t modulation; /* modulation type (see above) */
9854f38fcaSMauro Carvalho Chehab    };
9954f38fcaSMauro Carvalho Chehab
10054f38fcaSMauro Carvalho Chehab
10154f38fcaSMauro Carvalho Chehab.. c:type:: dvb_ofdm_parameters
10254f38fcaSMauro Carvalho Chehab
10354f38fcaSMauro Carvalho ChehabOFDM parameters
10454f38fcaSMauro Carvalho Chehab===============
10554f38fcaSMauro Carvalho Chehab
10654f38fcaSMauro Carvalho ChehabDVB-T frontends are supported by the ``dvb_ofdm_parameters`` structure:
10754f38fcaSMauro Carvalho Chehab
10854f38fcaSMauro Carvalho Chehab
10954f38fcaSMauro Carvalho Chehab.. code-block:: c
11054f38fcaSMauro Carvalho Chehab
11154f38fcaSMauro Carvalho Chehab     struct dvb_ofdm_parameters {
11254f38fcaSMauro Carvalho Chehab	 fe_bandwidth_t      bandwidth;
11354f38fcaSMauro Carvalho Chehab	 fe_code_rate_t      code_rate_HP;  /* high priority stream code rate */
11454f38fcaSMauro Carvalho Chehab	 fe_code_rate_t      code_rate_LP;  /* low priority stream code rate */
11554f38fcaSMauro Carvalho Chehab	 fe_modulation_t     constellation; /* modulation type (see above) */
11654f38fcaSMauro Carvalho Chehab	 fe_transmit_mode_t  transmission_mode;
11754f38fcaSMauro Carvalho Chehab	 fe_guard_interval_t guard_interval;
11854f38fcaSMauro Carvalho Chehab	 fe_hierarchy_t      hierarchy_information;
11954f38fcaSMauro Carvalho Chehab     };
120