Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1725065 > unrolled thread
| Started by | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| First post | 2017-09-01 15:30 +0200 |
| Last post | 2017-09-03 22:40 +0200 |
| Articles | 19 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH v2 00/26] Improve DVB documentation and reduce its gap Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:30 +0200
[PATCH v2 11/27] media: fe_property_parameters.rst: better document bandwidth Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:40 +0200
[PATCH v2 23/27] media: ca-get-slot-info.rst: document this ioctl Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:40 +0200
[PATCH v2 18/27] media: ca.h: get rid of CA_SET_PID Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:40 +0200
[PATCH v2 10/27] media: fe_property_parameters.rst: better define properties usage Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:40 +0200
[PATCH v2 15/27] media: dmx.h: get rid of GET_DMX_EVENT Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:40 +0200
[PATCH v2 12/27] media: dmx.h: get rid of unused DMX_KERNEL_CLIENT Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:40 +0200
[PATCH v2 21/27] media: ca-reset.rst: add some description to this ioctl Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:40 +0200
[PATCH v2 17/27] media: net.rst: Fix the level of a section of the net chapter Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:40 +0200
[PATCH v2 03/27] media: dvb/intro: use the term Digital TV to refer to the system Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:50 +0200
[PATCH v2 27/27] media: dst_ca: remove CA_SET_DESCR boilerplate Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-01 15:50 +0200
Re: [PATCH v2 00/26] Improve DVB documentation and reduce its gap Honza Petrouš <jpetrous@gmail.com> - 2017-09-03 22:10 +0200
Re: [PATCH v2 00/26] Improve DVB documentation and reduce its gap Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-04 03:00 +0200
Re: [PATCH v2 00/26] Improve DVB documentation and reduce its gap Honza Petrouš <jpetrous@gmail.com> - 2017-09-04 09:20 +0200
Re: [PATCH v2 00/26] Improve DVB documentation and reduce its gap Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-04 11:10 +0200
Re: [PATCH v2 00/26] Improve DVB documentation and reduce its gap Honza Petrouš <jpetrous@gmail.com> - 2017-09-04 11:50 +0200
Re: [PATCH v2 00/26] Improve DVB documentation and reduce its gap Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-04 13:50 +0200
Re: [PATCH v2 00/26] Improve DVB documentation and reduce its gap Mauro Carvalho Chehab <mchehab@s-opensource.com> - 2017-09-04 03:20 +0200
Re: [PATCH v2 00/26] Improve DVB documentation and reduce its gap Honza Petrouš <jpetrous@gmail.com> - 2017-09-03 22:40 +0200
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:30 +0200 |
| Subject | [PATCH v2 00/26] Improve DVB documentation and reduce its gap |
| Message-ID | <ukUbf-5pL-5@gated-at.bofh.it> |
The DVB documentation was negligected for a long time, with resulted on several gaps between the API description and its documentation. I'm doing a new reading at the documentation. As result of it, this series: - improves the introductory chapter, making it more generic; - Do some adjustments at the frontend API, using kernel-doc when possible. - Remove unused APIs at DVB demux. I suspect that the drivers implementing such APIs were either never merged upstream, or the API itself were never used or was deprecated a long time ago. In any case, it doesn't make any sense to carry on APIs that aren't properly documented, nor are used on the upstream Kernel. With this patch series, the gap between documentation and code is solved for 3 DVB APIs: - Frontend API; - Demux API; - Net API. There is still a gap at the CA API, as there are three ioctls that are used only by a few drivers and whose structs are not properly documented: CA_GET_MSG, CA_SEND_MSG and CA_SET_DESCR. The first two ones seem to be related to a way that a few drivers provide to send/receive messages. Yet, I was unable to get what "index" and "type" means on those ioctls. The CA_SET_DESCR is only supported by av7110 driver, and has an even weirder undocumented struct. I was unable to discover at the Kernel, VDR or Kaffeine how those structs are filled. I suspect that there's something wrong there, but I won't risk trying to fix without knowing more about them. So, let's just document that those are needing documentation :-) --- v2: Added CA API patches at the end and verified that everything compiles after each patch. Also do some fixes at dst_ca for it to report the error code to userspace and remove boilerplate code there. Mauro Carvalho Chehab (27): media: ca.h: split typedefs from structs media: dmx.h: split typedefs from structs media: dvb/intro: use the term Digital TV to refer to the system media: dvb/intro: update references for TV standards media: dvb/intro: update the history part of the document media: dvb/intro: adjust the notices about optional hardware media: dvb/frontend.h: move out a private internal structure media: dvb/frontend.h: document the uAPI file media: dvb frontend docs: use kernel-doc documentation media: fe_property_parameters.rst: better define properties usage media: fe_property_parameters.rst: better document bandwidth media: dmx.h: get rid of unused DMX_KERNEL_CLIENT media: dmx.h: get rid of DMX_GET_CAPS media: dmx.h: get rid of DMX_SET_SOURCE media: dmx.h: get rid of GET_DMX_EVENT media: dmx.h: add kernel-doc markups and use it at Documentation/ media: net.rst: Fix the level of a section of the net chapter media: ca.h: get rid of CA_SET_PID media: ca.h: document most CA data types media: dst_ca: return a proper error code from CA errors media: ca-reset.rst: add some description to this ioctl media: ca-get-cap.rst: document this ioctl media: ca-get-slot-info.rst: document this ioctl media: ca-get-descr-info.rst: document this ioctl media: dvb CA docs: place undocumented data together with ioctls media: dvb rst: identify the documentation gap at the API media: dst_ca: remove CA_SET_DESCR boilerplate Documentation/media/ca.h.rst.exceptions | 1 - Documentation/media/dmx.h.rst.exceptions | 20 +- Documentation/media/dvb-drivers/ci.rst | 1 - Documentation/media/frontend.h.rst.exceptions | 185 ++- Documentation/media/uapi/dvb/ca-get-cap.rst | 36 +- Documentation/media/uapi/dvb/ca-get-descr-info.rst | 29 +- Documentation/media/uapi/dvb/ca-get-msg.rst | 38 +- Documentation/media/uapi/dvb/ca-get-slot-info.rst | 98 +- Documentation/media/uapi/dvb/ca-reset.rst | 3 +- Documentation/media/uapi/dvb/ca-set-descr.rst | 10 + Documentation/media/uapi/dvb/ca-set-pid.rst | 60 - Documentation/media/uapi/dvb/ca.rst | 5 + Documentation/media/uapi/dvb/ca_data_types.rst | 103 +- Documentation/media/uapi/dvb/ca_function_calls.rst | 1 - Documentation/media/uapi/dvb/dmx-get-caps.rst | 41 - Documentation/media/uapi/dvb/dmx-get-event.rst | 60 - Documentation/media/uapi/dvb/dmx-set-source.rst | 44 - Documentation/media/uapi/dvb/dmx_fcalls.rst | 3 - Documentation/media/uapi/dvb/dmx_types.rst | 225 +--- Documentation/media/uapi/dvb/dtv-fe-stats.rst | 17 - Documentation/media/uapi/dvb/dtv-properties.rst | 15 - Documentation/media/uapi/dvb/dtv-property.rst | 31 - Documentation/media/uapi/dvb/dtv-stats.rst | 18 - Documentation/media/uapi/dvb/dvbproperty-006.rst | 12 - Documentation/media/uapi/dvb/dvbproperty.rst | 28 +- .../media/uapi/dvb/fe-diseqc-recv-slave-reply.rst | 40 +- .../media/uapi/dvb/fe-diseqc-send-burst.rst | 31 +- .../media/uapi/dvb/fe-diseqc-send-master-cmd.rst | 29 +- Documentation/media/uapi/dvb/fe-get-info.rst | 370 +----- Documentation/media/uapi/dvb/fe-get-property.rst | 2 +- Documentation/media/uapi/dvb/fe-read-status.rst | 83 -- Documentation/media/uapi/dvb/fe-set-tone.rst | 30 - .../media/uapi/dvb/fe_property_parameters.rst | 1383 +++----------------- Documentation/media/uapi/dvb/frontend-header.rst | 4 + Documentation/media/uapi/dvb/intro.rst | 76 +- Documentation/media/uapi/dvb/legacy_dvb_apis.rst | 5 + Documentation/media/uapi/dvb/net.rst | 1 - drivers/media/dvb-core/dmxdev.c | 4 +- drivers/media/dvb-core/dvb_frontend.c | 11 + drivers/media/pci/bt8xx/dst_ca.c | 70 +- drivers/media/pci/ttpci/av7110.h | 2 +- drivers/media/pci/ttpci/av7110_ca.c | 12 +- include/uapi/linux/dvb/ca.h | 128 +- include/uapi/linux/dvb/dmx.h | 191 ++- include/uapi/linux/dvb/frontend.h | 591 +++++++-- 45 files changed, 1267 insertions(+), 2880 deletions(-) delete mode 100644 Documentation/media/uapi/dvb/ca-set-pid.rst delete mode 100644 Documentation/media/uapi/dvb/dmx-get-caps.rst delete mode 100644 Documentation/media/uapi/dvb/dmx-get-event.rst delete mode 100644 Documentation/media/uapi/dvb/dmx-set-source.rst delete mode 100644 Documentation/media/uapi/dvb/dtv-fe-stats.rst delete mode 100644 Documentation/media/uapi/dvb/dtv-properties.rst delete mode 100644 Documentation/media/uapi/dvb/dtv-property.rst delete mode 100644 Documentation/media/uapi/dvb/dtv-stats.rst delete mode 100644 Documentation/media/uapi/dvb/dvbproperty-006.rst create mode 100644 Documentation/media/uapi/dvb/frontend-header.rst -- 2.13.5
[toc] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:40 +0200 |
| Subject | [PATCH v2 11/27] media: fe_property_parameters.rst: better document bandwidth |
| Message-ID | <ukUkV-5wR-7@gated-at.bofh.it> |
| In reply to | #1725065 |
Use a table to document the supported bandwidths. That makes
it clearer to readers.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
.../media/uapi/dvb/fe_property_parameters.rst | 44 +++++++++++++---------
1 file changed, 26 insertions(+), 18 deletions(-)
diff --git a/Documentation/media/uapi/dvb/fe_property_parameters.rst b/Documentation/media/uapi/dvb/fe_property_parameters.rst
index e085e84fef38..49470f7dda02 100644
--- a/Documentation/media/uapi/dvb/fe_property_parameters.rst
+++ b/Documentation/media/uapi/dvb/fe_property_parameters.rst
@@ -116,30 +116,38 @@ Should be set only for terrestrial delivery systems.
Possible values: ``1712000``, ``5000000``, ``6000000``, ``7000000``,
``8000000``, ``10000000``.
+======================= =======================================================
+Terrestrial Standard Possible values for bandwidth
+======================= =======================================================
+ATSC (version 1) No need to set. It is always 6MHz.
+DMTB No need to set. It is always 8MHz.
+DVB-T 6MHz, 7MHz and 8MHz.
+DVB-T2 1.172 MHz, 5MHz, 6MHz, 7MHz, 8MHz and 10MHz
+ISDB-T 5MHz, 6MHz, 7MHz and 8MHz, although most places
+ use 6MHz.
+======================= =======================================================
+
+
.. note::
- #. DVB-T supports 6, 7 and 8MHz.
- #. DVB-T2 supports 1.172, 5, 6, 7, 8 and 10MHz.
+ #. For ISDB-Tsb, the bandwidth can vary depending on the number of
+ connected segments.
- #. ISDB-T supports 5MHz, 6MHz, 7MHz and 8MHz, although most
- places use 6MHz.
-
- #. On DVB-C and DVB-S/S2, the bandwidth depends on the symbol rate.
- So, the Kernel will silently ignore setting :ref:`DTV-BANDWIDTH-HZ`.
-
- #. For DVB-C and DVB-S/S2, the Kernel will return an estimation of the
- bandwidth, calculated from :ref:`DTV-SYMBOL-RATE` and from
- the rolloff, with is fixed for DVB-C and DVB-S.
-
- #. For DVB-S2, the bandwidth estimation will use :ref:`DTV-ROLLOFF`.
-
- #. For ISDB-Tsb, it can vary depending on the number of connected
- segments.
-
- #. Bandwidth in ISDB-Tsb can be easily derived from other parameters
+ It can be easily derived from other parameters
(DTV_ISDBT_SB_SEGMENT_IDX, DTV_ISDBT_SB_SEGMENT_COUNT).
+ #. On Satellite and Cable delivery systems, the bandwidth depends on
+ the symbol rate. So, the Kernel will silently ignore any setting
+ :ref:`DTV-BANDWIDTH-HZ`. I will however fill it back with a
+ bandwidth estimation.
+
+ Such bandwidth estimation takes into account the symbol rate set with
+ :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`.
+
.. _DTV-INVERSION:
--
2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:40 +0200 |
| Subject | [PATCH v2 23/27] media: ca-get-slot-info.rst: document this ioctl |
| Message-ID | <ukUkW-5wR-21@gated-at.bofh.it> |
| In reply to | #1725065 |
Instead of a generic boilerplate, fill it with relevant information about this ioctl. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> --- Documentation/media/uapi/dvb/ca-get-slot-info.rst | 98 +++-------------------- 1 file changed, 11 insertions(+), 87 deletions(-) diff --git a/Documentation/media/uapi/dvb/ca-get-slot-info.rst b/Documentation/media/uapi/dvb/ca-get-slot-info.rst index 54e5dc78a2dc..d7e41e038ca7 100644 --- a/Documentation/media/uapi/dvb/ca-get-slot-info.rst +++ b/Documentation/media/uapi/dvb/ca-get-slot-info.rst @@ -26,100 +26,24 @@ Arguments File descriptor returned by a previous call to :c:func:`open() <cec-open>`. ``info`` - Pointer to struct c:type:`ca_slot_info`. - -.. _ca_slot_info_type: - -.. flat-table:: ca_slot_info types - :header-rows: 1 - :stub-columns: 0 - - - - - type - - name - - description - - - - CA_CI - - 1 - - CI high level interface - - - - - CA_CI_LINK - - 2 - - CI link layer level interface - - - - - CA_CI_PHYS - - 4 - - CI physical layer level interface - - - - - CA_DESCR - - 8 - - built-in descrambler - - - - - CA_SC - - 128 - - simple smart card interface - -.. _ca_slot_info_flag: - -.. flat-table:: ca_slot_info flags - :header-rows: 1 - :stub-columns: 0 - - - - - type - - name - - description - - - - - CA_CI_MODULE_PRESENT - - 1 - - module (or card) inserted - - - - - CA_CI_MODULE_READY - - 2 - - - -.. c:type:: ca_slot_info - -.. flat-table:: struct ca_slot_info - :header-rows: 1 - :stub-columns: 0 - - - - - type - - name - - description - - - - - int - - num - - slot number - - - - - int - - type - - CA interface this slot supports, as defined at :ref:`ca_slot_info_type`. - - - - - unsigned int - - flags - - flags as defined at :ref:`ca_slot_info_flag`. - + Pointer to struct :c:type:`ca_slot_info`. Description ----------- -.. note:: This ioctl is undocumented. Documentation is welcome. +Returns information about a CA slot identified by +:c:type:`ca_slot_info`.slot_num. Return Value ------------ -On success 0 is returned, on error -1 and the ``errno`` variable is set -appropriately. The generic error codes are described at the +On success 0 is returned, and :c:type:`ca_slot_info` is filled. + +On error -1 is returned, and the ``errno`` variable is set +appropriately. + +If the slot is not available, ``errno`` will contain ``-EINVAL``. + +The generic error codes are described at the :ref:`Generic Error Codes <gen-errors>` chapter. -- 2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:40 +0200 |
| Subject | [PATCH v2 18/27] media: ca.h: get rid of CA_SET_PID |
| Message-ID | <ukUkW-5wR-25@gated-at.bofh.it> |
| In reply to | #1725065 |
This ioctl seems to be some attempt to support a feature
at the bt8xx dst_ca driver. Yet, as said there, it
"needs more work". Right now, the code there is just
a boilerplate.
At the end of the day, no driver uses this ioctl, nor it is
documented anywhere (except for "needs more work").
So, get rid of it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
Documentation/media/ca.h.rst.exceptions | 1 -
Documentation/media/dvb-drivers/ci.rst | 1 -
Documentation/media/uapi/dvb/ca-set-pid.rst | 60 ----------------------
Documentation/media/uapi/dvb/ca_data_types.rst | 14 -----
Documentation/media/uapi/dvb/ca_function_calls.rst | 1 -
drivers/media/pci/bt8xx/dst_ca.c | 16 ------
include/uapi/linux/dvb/ca.h | 7 ---
7 files changed, 100 deletions(-)
delete mode 100644 Documentation/media/uapi/dvb/ca-set-pid.rst
diff --git a/Documentation/media/ca.h.rst.exceptions b/Documentation/media/ca.h.rst.exceptions
index d7c9fed8c004..553559cc6ad7 100644
--- a/Documentation/media/ca.h.rst.exceptions
+++ b/Documentation/media/ca.h.rst.exceptions
@@ -16,7 +16,6 @@ replace define CA_NDS :c:type:`ca_descr_info`
replace define CA_DSS :c:type:`ca_descr_info`
# some typedefs should point to struct/enums
-replace typedef ca_pid_t :c:type:`ca_pid`
replace typedef ca_slot_info_t :c:type:`ca_slot_info`
replace typedef ca_descr_info_t :c:type:`ca_descr_info`
replace typedef ca_caps_t :c:type:`ca_caps`
diff --git a/Documentation/media/dvb-drivers/ci.rst b/Documentation/media/dvb-drivers/ci.rst
index 69b07e9d1816..87f3748c49b9 100644
--- a/Documentation/media/dvb-drivers/ci.rst
+++ b/Documentation/media/dvb-drivers/ci.rst
@@ -143,7 +143,6 @@ All these ioctls are also valid for the High level CI interface
#define CA_GET_MSG _IOR('o', 132, ca_msg_t)
#define CA_SEND_MSG _IOW('o', 133, ca_msg_t)
#define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
-#define CA_SET_PID _IOW('o', 135, ca_pid_t)
On querying the device, the device yields information thus:
diff --git a/Documentation/media/uapi/dvb/ca-set-pid.rst b/Documentation/media/uapi/dvb/ca-set-pid.rst
deleted file mode 100644
index 891c1c72ef24..000000000000
--- a/Documentation/media/uapi/dvb/ca-set-pid.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-.. -*- coding: utf-8; mode: rst -*-
-
-.. _CA_SET_PID:
-
-==========
-CA_SET_PID
-==========
-
-Name
-----
-
-CA_SET_PID
-
-
-Synopsis
---------
-
-.. c:function:: int ioctl(fd, CA_SET_PID, struct ca_pid *pid)
- :name: CA_SET_PID
-
-
-Arguments
----------
-
-``fd``
- File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`.
-
-``pid``
- Pointer to struct :c:type:`ca_pid`.
-
-.. c:type:: ca_pid
-
-.. flat-table:: struct ca_pid
- :header-rows: 1
- :stub-columns: 0
-
- -
- - unsigned int
- - pid
- - Program ID
-
- -
- - int
- - index
- - PID index. Use -1 to disable.
-
-
-
-Description
------------
-
-.. note:: This ioctl is undocumented. Documentation is welcome.
-
-
-Return Value
-------------
-
-On success 0 is returned, on error -1 and the ``errno`` variable is set
-appropriately. The generic error codes are described at the
-:ref:`Generic Error Codes <gen-errors>` chapter.
diff --git a/Documentation/media/uapi/dvb/ca_data_types.rst b/Documentation/media/uapi/dvb/ca_data_types.rst
index d9e27c77426c..555b5137936b 100644
--- a/Documentation/media/uapi/dvb/ca_data_types.rst
+++ b/Documentation/media/uapi/dvb/ca_data_types.rst
@@ -94,17 +94,3 @@ ca_descr_t
unsigned int parity;
unsigned char cw[8];
} ca_descr_t;
-
-
-.. c:type:: ca_pid
-
-ca-pid
-======
-
-
-.. code-block:: c
-
- typedef struct ca_pid {
- unsigned int pid;
- int index; /* -1 == disable*/
- } ca_pid_t;
diff --git a/Documentation/media/uapi/dvb/ca_function_calls.rst b/Documentation/media/uapi/dvb/ca_function_calls.rst
index c085a0ebbc05..87d697851e82 100644
--- a/Documentation/media/uapi/dvb/ca_function_calls.rst
+++ b/Documentation/media/uapi/dvb/ca_function_calls.rst
@@ -18,4 +18,3 @@ CA Function Calls
ca-get-msg
ca-send-msg
ca-set-descr
- ca-set-pid
diff --git a/drivers/media/pci/bt8xx/dst_ca.c b/drivers/media/pci/bt8xx/dst_ca.c
index 90f4263452d3..7db47d8bbe15 100644
--- a/drivers/media/pci/bt8xx/dst_ca.c
+++ b/drivers/media/pci/bt8xx/dst_ca.c
@@ -64,13 +64,6 @@ static int ca_set_slot_descr(void)
return -EOPNOTSUPP;
}
-/* Need some more work */
-static int ca_set_pid(void)
-{
- /* We could make this more graceful ? */
- return -EOPNOTSUPP;
-}
-
static void put_command_and_length(u8 *data, int command, int length)
{
data[0] = (command >> 16) & 0xff;
@@ -629,15 +622,6 @@ static long dst_ca_ioctl(struct file *file, unsigned int cmd, unsigned long ioct
}
dprintk(verbose, DST_CA_INFO, 1, " -->CA_SET_DESCR Success !");
break;
- case CA_SET_PID:
- dprintk(verbose, DST_CA_INFO, 1, " Setting PID");
- if ((ca_set_pid()) < 0) {
- dprintk(verbose, DST_CA_ERROR, 1, " -->CA_SET_PID Failed !");
- result = -1;
- goto free_mem_and_exit;
- }
- dprintk(verbose, DST_CA_INFO, 1, " -->CA_SET_PID Success !");
- break;
default:
result = -EOPNOTSUPP;
}
diff --git a/include/uapi/linux/dvb/ca.h b/include/uapi/linux/dvb/ca.h
index 00cf24587bea..859f6c0c4751 100644
--- a/include/uapi/linux/dvb/ca.h
+++ b/include/uapi/linux/dvb/ca.h
@@ -73,11 +73,6 @@ struct ca_descr {
unsigned char cw[8];
};
-struct ca_pid {
- unsigned int pid;
- int index; /* -1 == disable*/
-};
-
#define CA_RESET _IO('o', 128)
#define CA_GET_CAP _IOR('o', 129, struct ca_caps)
#define CA_GET_SLOT_INFO _IOR('o', 130, struct ca_slot_info)
@@ -85,7 +80,6 @@ struct ca_pid {
#define CA_GET_MSG _IOR('o', 132, struct ca_msg)
#define CA_SEND_MSG _IOW('o', 133, struct ca_msg)
#define CA_SET_DESCR _IOW('o', 134, struct ca_descr)
-#define CA_SET_PID _IOW('o', 135, struct ca_pid)
#if !defined (__KERNEL__)
@@ -95,7 +89,6 @@ typedef struct ca_descr_info ca_descr_info_t;
typedef struct ca_caps ca_caps_t;
typedef struct ca_msg ca_msg_t;
typedef struct ca_descr ca_descr_t;
-typedef struct ca_pid ca_pid_t;
#endif
--
2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:40 +0200 |
| Subject | [PATCH v2 10/27] media: fe_property_parameters.rst: better define properties usage |
| Message-ID | <ukUkW-5wR-29@gated-at.bofh.it> |
| In reply to | #1725065 |
Several frontend properties are specific to a subset of the delivery systems. Make it clearer when describing each property. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> --- .../media/uapi/dvb/fe_property_parameters.rst | 82 ++++++++++++++++++++-- 1 file changed, 75 insertions(+), 7 deletions(-) diff --git a/Documentation/media/uapi/dvb/fe_property_parameters.rst b/Documentation/media/uapi/dvb/fe_property_parameters.rst index c6eb74f59b00..e085e84fef38 100644 --- a/Documentation/media/uapi/dvb/fe_property_parameters.rst +++ b/Documentation/media/uapi/dvb/fe_property_parameters.rst @@ -111,6 +111,8 @@ DTV_BANDWIDTH_HZ Bandwidth for the channel, in HZ. +Should be set only for terrestrial delivery systems. + Possible values: ``1712000``, ``5000000``, ``6000000``, ``7000000``, ``8000000``, ``10000000``. @@ -148,6 +150,7 @@ Specifies if the frontend should do spectral inversion or not. The acceptable values are defined by :c:type:`fe_spectral_inversion`. + .. _DTV-DISEQC-MASTER: DTV_DISEQC_MASTER @@ -161,8 +164,9 @@ Currently not implemented. DTV_SYMBOL_RATE =============== -Digital TV symbol rate, in bauds (symbols/second). Used on cable -standards. +Used on cable and satellite delivery systems. + +Digital TV symbol rate, in bauds (symbols/second). .. _DTV-INNER-FEC: @@ -170,7 +174,7 @@ standards. DTV_INNER_FEC ============= -Used cable/satellite transmissions. +Used on cable and satellite delivery systems. The acceptable values are defined by :c:type:`fe_code_rate`. @@ -180,6 +184,8 @@ The acceptable values are defined by :c:type:`fe_code_rate`. DTV_VOLTAGE =========== +Used on satellite delivery systems. + The voltage is usually used with non-DiSEqC capable LNBs to switch the polarzation (horizontal/vertical). When using DiSEqC epuipment this voltage has to be switched consistently to the DiSEqC commands as @@ -201,6 +207,8 @@ Currently not used. DTV_PILOT ========= +Used on DVB-S2. + Sets DVB-S2 pilot. The acceptable values are defined by :c:type:`fe_pilot`. @@ -211,7 +219,9 @@ The acceptable values are defined by :c:type:`fe_pilot`. DTV_ROLLOFF =========== -Sets DVB-S2 rolloff +Used on DVB-S2. + +Sets DVB-S2 rolloff. The acceptable values are defined by :c:type:`fe_rolloff`. @@ -245,7 +255,7 @@ Currently not implemented. DTV_DELIVERY_SYSTEM =================== -Specifies the type of Delivery system. +Specifies the type of the delivery system. The acceptable values are defined by :c:type:`fe_delivery_system`. @@ -255,6 +265,8 @@ The acceptable values are defined by :c:type:`fe_delivery_system`. DTV_ISDBT_PARTIAL_RECEPTION =========================== +Used only on ISDB. + If ``DTV_ISDBT_SOUND_BROADCASTING`` is '0' this bit-field represents whether the channel is in partial reception mode or not. @@ -273,6 +285,8 @@ Possible values: 0, 1, -1 (AUTO) DTV_ISDBT_SOUND_BROADCASTING ============================ +Used only on ISDB. + This field represents whether the other DTV_ISDBT_*-parameters are referring to an ISDB-T and an ISDB-Tsb channel. (See also ``DTV_ISDBT_PARTIAL_RECEPTION``). @@ -285,6 +299,8 @@ Possible values: 0, 1, -1 (AUTO) DTV_ISDBT_SB_SUBCHANNEL_ID ========================== +Used only on ISDB. + This field only applies if ``DTV_ISDBT_SOUND_BROADCASTING`` is '1'. (Note of the author: This might not be the correct description of the @@ -320,6 +336,8 @@ Possible values: 0 .. 41, -1 (AUTO) DTV_ISDBT_SB_SEGMENT_IDX ======================== +Used only on ISDB. + This field only applies if ``DTV_ISDBT_SOUND_BROADCASTING`` is '1'. ``DTV_ISDBT_SB_SEGMENT_IDX`` gives the index of the segment to be @@ -336,6 +354,8 @@ Note: This value cannot be determined by an automatic channel search. DTV_ISDBT_SB_SEGMENT_COUNT ========================== +Used only on ISDB. + This field only applies if ``DTV_ISDBT_SOUND_BROADCASTING`` is '1'. ``DTV_ISDBT_SB_SEGMENT_COUNT`` gives the total count of connected @@ -351,6 +371,8 @@ Note: This value cannot be determined by an automatic channel search. DTV-ISDBT-LAYER[A-C] parameters =============================== +Used only on ISDB. + ISDB-T channels can be coded hierarchically. As opposed to DVB-T in ISDB-T hierarchical layers can be decoded simultaneously. For that reason a ISDB-T demodulator has 3 Viterbi and 3 Reed-Solomon decoders. @@ -367,6 +389,8 @@ There are 3 parameter sets, for Layers A, B and C. DTV_ISDBT_LAYER_ENABLED ----------------------- +Used only on ISDB. + Hierarchical reception in ISDB-T is achieved by enabling or disabling layers in the decoding process. Setting all bits of ``DTV_ISDBT_LAYER_ENABLED`` to '1' forces all layers (if applicable) to @@ -397,6 +421,8 @@ Only the values of the first 3 bits are used. Other bits will be silently ignore DTV_ISDBT_LAYER[A-C]_FEC ------------------------ +Used only on ISDB. + The Forward Error Correction mechanism used by a given ISDB Layer, as defined by :c:type:`fe_code_rate`. @@ -410,6 +436,8 @@ Possible values are: ``FEC_AUTO``, ``FEC_1_2``, ``FEC_2_3``, ``FEC_3_4``, DTV_ISDBT_LAYER[A-C]_MODULATION ------------------------------- +Used only on ISDB. + The modulation used by a given ISDB Layer, as defined by :c:type:`fe_modulation`. @@ -428,6 +456,8 @@ Possible values are: ``QAM_AUTO``, ``QPSK``, ``QAM_16``, ``QAM_64``, ``DQPSK`` DTV_ISDBT_LAYER[A-C]_SEGMENT_COUNT ---------------------------------- +Used only on ISDB. + Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO) Note: Truth table for ``DTV_ISDBT_SOUND_BROADCASTING`` and @@ -517,6 +547,8 @@ Note: Truth table for ``DTV_ISDBT_SOUND_BROADCASTING`` and DTV_ISDBT_LAYER[A-C]_TIME_INTERLEAVING -------------------------------------- +Used only on ISDB. + Valid values: 0, 1, 2, 4, -1 (AUTO) when DTV_ISDBT_SOUND_BROADCASTING is active, value 8 is also valid. @@ -590,6 +622,8 @@ TMCC-structure, as shown in the table below. DTV_ATSCMH_FIC_VER ------------------ +Used only on ATSC-MH. + Version number of the FIC (Fast Information Channel) signaling data. FIC is used for relaying information to allow rapid service acquisition @@ -603,6 +637,8 @@ Possible values: 0, 1, 2, 3, ..., 30, 31 DTV_ATSCMH_PARADE_ID -------------------- +Used only on ATSC-MH. + Parade identification number A parade is a collection of up to eight MH groups, conveying one or two @@ -616,6 +652,8 @@ Possible values: 0, 1, 2, 3, ..., 126, 127 DTV_ATSCMH_NOG -------------- +Used only on ATSC-MH. + Number of MH groups per MH subframe for a designated parade. Possible values: 1, 2, 3, 4, 5, 6, 7, 8 @@ -626,6 +664,8 @@ Possible values: 1, 2, 3, 4, 5, 6, 7, 8 DTV_ATSCMH_TNOG --------------- +Used only on ATSC-MH. + Total number of MH groups including all MH groups belonging to all MH parades in one MH subframe. @@ -637,6 +677,8 @@ Possible values: 0, 1, 2, 3, ..., 30, 31 DTV_ATSCMH_SGN -------------- +Used only on ATSC-MH. + Start group number. Possible values: 0, 1, 2, 3, ..., 14, 15 @@ -647,6 +689,8 @@ Possible values: 0, 1, 2, 3, ..., 14, 15 DTV_ATSCMH_PRC -------------- +Used only on ATSC-MH. + Parade repetition cycle. Possible values: 1, 2, 3, 4, 5, 6, 7, 8 @@ -657,6 +701,8 @@ Possible values: 1, 2, 3, 4, 5, 6, 7, 8 DTV_ATSCMH_RS_FRAME_MODE ------------------------ +Used only on ATSC-MH. + Reed Solomon (RS) frame mode. The acceptable values are defined by :c:type:`atscmh_rs_frame_mode`. @@ -667,6 +713,8 @@ The acceptable values are defined by :c:type:`atscmh_rs_frame_mode`. DTV_ATSCMH_RS_FRAME_ENSEMBLE ---------------------------- +Used only on ATSC-MH. + Reed Solomon(RS) frame ensemble. The acceptable values are defined by :c:type:`atscmh_rs_frame_ensemble`. @@ -677,6 +725,8 @@ The acceptable values are defined by :c:type:`atscmh_rs_frame_ensemble`. DTV_ATSCMH_RS_CODE_MODE_PRI --------------------------- +Used only on ATSC-MH. + Reed Solomon (RS) code mode (primary). The acceptable values are defined by :c:type:`atscmh_rs_code_mode`. @@ -687,6 +737,8 @@ The acceptable values are defined by :c:type:`atscmh_rs_code_mode`. DTV_ATSCMH_RS_CODE_MODE_SEC --------------------------- +Used only on ATSC-MH. + Reed Solomon (RS) code mode (secondary). The acceptable values are defined by :c:type:`atscmh_rs_code_mode`. @@ -697,6 +749,8 @@ The acceptable values are defined by :c:type:`atscmh_rs_code_mode`. DTV_ATSCMH_SCCC_BLOCK_MODE -------------------------- +Used only on ATSC-MH. + Series Concatenated Convolutional Code Block Mode. The acceptable values are defined by :c:type:`atscmh_sccc_block_mode`. @@ -707,6 +761,8 @@ The acceptable values are defined by :c:type:`atscmh_sccc_block_mode`. DTV_ATSCMH_SCCC_CODE_MODE_A --------------------------- +Used only on ATSC-MH. + Series Concatenated Convolutional Code Rate. The acceptable values are defined by :c:type:`atscmh_sccc_code_mode`. @@ -716,6 +772,8 @@ The acceptable values are defined by :c:type:`atscmh_sccc_code_mode`. DTV_ATSCMH_SCCC_CODE_MODE_B --------------------------- +Used only on ATSC-MH. + Series Concatenated Convolutional Code Rate. Possible values are the same as documented on enum @@ -727,6 +785,8 @@ Possible values are the same as documented on enum DTV_ATSCMH_SCCC_CODE_MODE_C --------------------------- +Used only on ATSC-MH. + Series Concatenated Convolutional Code Rate. Possible values are the same as documented on enum @@ -738,6 +798,8 @@ Possible values are the same as documented on enum DTV_ATSCMH_SCCC_CODE_MODE_D --------------------------- +Used only on ATSC-MH. + Series Concatenated Convolutional Code Rate. Possible values are the same as documented on enum @@ -797,9 +859,11 @@ The acceptable values are defined by :c:type:`fe_guard_interval`. DTV_TRANSMISSION_MODE ===================== + +Used only on OFTM-based standards, e. g. DVB-T/T2, ISDB-T, DTMB. + Specifies the FFT size (with corresponds to the approximate number of -carriers) used by the standard. This is used only on OFTM-based standards, -e. g. DVB-T/T2, ISDB-T, DTMB. +carriers) used by the standard. The acceptable values are defined by :c:type:`fe_transmit_mode`. @@ -832,6 +896,8 @@ The acceptable values are defined by :c:type:`fe_transmit_mode`. DTV_HIERARCHY ============= +Used only on DVB-T and DVB-T2. + Frontend hierarchy. The acceptable values are defined by :c:type:`fe_hierarchy`. @@ -842,6 +908,8 @@ The acceptable values are defined by :c:type:`fe_hierarchy`. DTV_STREAM_ID ============= +Used on DVB-S2, 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 DVB driver to handle substream filtering, when supported by the hardware. By default, -- 2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:40 +0200 |
| Subject | [PATCH v2 15/27] media: dmx.h: get rid of GET_DMX_EVENT |
| Message-ID | <ukUkW-5wR-39@gated-at.bofh.it> |
| In reply to | #1725065 |
This seems to be a pure fictional API :-)
It only exists at the DVB book, with no code implemeting it.
So, just get rid of it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
Documentation/media/uapi/dvb/dmx-get-event.rst | 60 --------------------------
Documentation/media/uapi/dvb/dmx_fcalls.rst | 1 -
Documentation/media/uapi/dvb/dmx_types.rst | 19 --------
3 files changed, 80 deletions(-)
delete mode 100644 Documentation/media/uapi/dvb/dmx-get-event.rst
diff --git a/Documentation/media/uapi/dvb/dmx-get-event.rst b/Documentation/media/uapi/dvb/dmx-get-event.rst
deleted file mode 100644
index 8be626c29158..000000000000
--- a/Documentation/media/uapi/dvb/dmx-get-event.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-.. -*- coding: utf-8; mode: rst -*-
-
-.. _DMX_GET_EVENT:
-
-=============
-DMX_GET_EVENT
-=============
-
-Name
-----
-
-DMX_GET_EVENT
-
-
-Synopsis
---------
-
-.. c:function:: int ioctl( int fd, DMX_GET_EVENT, struct dmx_event *ev)
- :name: DMX_GET_EVENT
-
-
-Arguments
----------
-
-``fd``
- File descriptor returned by :c:func:`open() <dvb-dmx-open>`.
-
-``ev``
- Pointer to the location where the event is to be stored.
-
-
-Description
------------
-
-This ioctl call returns an event if available. If an event is not
-available, the behavior depends on whether the device is in blocking or
-non-blocking mode. In the latter case, the call fails immediately with
-errno set to ``EWOULDBLOCK``. In the former case, the call blocks until an
-event becomes available.
-
-
-Return Value
-------------
-
-On success 0 is returned, on error -1 and the ``errno`` variable is set
-appropriately. The generic error codes are described at the
-:ref:`Generic Error Codes <gen-errors>` chapter.
-
-
-
-.. flat-table::
- :header-rows: 0
- :stub-columns: 0
-
-
- - .. row 1
-
- - ``EWOULDBLOCK``
-
- - There is no event pending, and the device is in non-blocking mode.
diff --git a/Documentation/media/uapi/dvb/dmx_fcalls.rst b/Documentation/media/uapi/dvb/dmx_fcalls.rst
index be98d60877f2..a17289143220 100644
--- a/Documentation/media/uapi/dvb/dmx_fcalls.rst
+++ b/Documentation/media/uapi/dvb/dmx_fcalls.rst
@@ -18,7 +18,6 @@ Demux Function Calls
dmx-set-filter
dmx-set-pes-filter
dmx-set-buffer-size
- dmx-get-event
dmx-get-stc
dmx-get-pes-pids
dmx-add-pid
diff --git a/Documentation/media/uapi/dvb/dmx_types.rst b/Documentation/media/uapi/dvb/dmx_types.rst
index a205c02ccdc1..171205ed86a4 100644
--- a/Documentation/media/uapi/dvb/dmx_types.rst
+++ b/Documentation/media/uapi/dvb/dmx_types.rst
@@ -166,25 +166,6 @@ struct dmx_pes_filter_params
__u32 flags;
};
-
-struct dmx_event
-================
-
-.. c:type:: dmx_event
-
-.. code-block:: c
-
- struct dmx_event
- {
- dmx_event_t event;
- time_t timeStamp;
- union
- {
- dmx_scrambling_status_t scrambling;
- } u;
- };
-
-
struct dmx_stc
==============
--
2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:40 +0200 |
| Subject | [PATCH v2 12/27] media: dmx.h: get rid of unused DMX_KERNEL_CLIENT |
| Message-ID | <ukUkX-5wR-61@gated-at.bofh.it> |
| In reply to | #1725065 |
There's a flag defined for Digital TV demux that is not used
anywhere, called DMX_KERNEL_CLIENT. Get rid of it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
Documentation/media/dmx.h.rst.exceptions | 1 -
Documentation/media/uapi/dvb/dmx_types.rst | 1 -
include/uapi/linux/dvb/dmx.h | 1 -
3 files changed, 3 deletions(-)
diff --git a/Documentation/media/dmx.h.rst.exceptions b/Documentation/media/dmx.h.rst.exceptions
index 2fdb458564ba..933ca5a61ce1 100644
--- a/Documentation/media/dmx.h.rst.exceptions
+++ b/Documentation/media/dmx.h.rst.exceptions
@@ -56,7 +56,6 @@ replace symbol DMX_SOURCE_DVR3 :c:type:`dmx_source`
replace define DMX_CHECK_CRC :c:type:`dmx_sct_filter_params`
replace define DMX_ONESHOT :c:type:`dmx_sct_filter_params`
replace define DMX_IMMEDIATE_START :c:type:`dmx_sct_filter_params`
-replace define DMX_KERNEL_CLIENT :c:type:`dmx_sct_filter_params`
# some typedefs should point to struct/enums
replace typedef dmx_caps_t :c:type:`dmx_caps`
diff --git a/Documentation/media/uapi/dvb/dmx_types.rst b/Documentation/media/uapi/dvb/dmx_types.rst
index 80dd659860d7..0f0113205c94 100644
--- a/Documentation/media/uapi/dvb/dmx_types.rst
+++ b/Documentation/media/uapi/dvb/dmx_types.rst
@@ -147,7 +147,6 @@ struct dmx_sct_filter_params
#define DMX_CHECK_CRC 1
#define DMX_ONESHOT 2
#define DMX_IMMEDIATE_START 4
- #define DMX_KERNEL_CLIENT 0x8000
};
diff --git a/include/uapi/linux/dvb/dmx.h b/include/uapi/linux/dvb/dmx.h
index 1bc4d6fb0f01..1702f923d425 100644
--- a/include/uapi/linux/dvb/dmx.h
+++ b/include/uapi/linux/dvb/dmx.h
@@ -103,7 +103,6 @@ struct dmx_sct_filter_params
#define DMX_CHECK_CRC 1
#define DMX_ONESHOT 2
#define DMX_IMMEDIATE_START 4
-#define DMX_KERNEL_CLIENT 0x8000
};
--
2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:40 +0200 |
| Subject | [PATCH v2 21/27] media: ca-reset.rst: add some description to this ioctl |
| Message-ID | <ukUkY-5wR-73@gated-at.bofh.it> |
| In reply to | #1725065 |
While we don't have any documentation for it, based on what's there at Kaffeine and VDR, it seems that this command should be issued before start using CA. So, document it as such. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> --- Documentation/media/uapi/dvb/ca-reset.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Documentation/media/uapi/dvb/ca-reset.rst b/Documentation/media/uapi/dvb/ca-reset.rst index 477313121a65..a5dd2797a92f 100644 --- a/Documentation/media/uapi/dvb/ca-reset.rst +++ b/Documentation/media/uapi/dvb/ca-reset.rst @@ -28,7 +28,8 @@ Arguments Description ----------- -.. note:: This ioctl is undocumented. Documentation is welcome. +Puts the Conditional Access hardware on its initial state. It should +be called before start using the CA hardware. Return Value -- 2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:40 +0200 |
| Subject | [PATCH v2 17/27] media: net.rst: Fix the level of a section of the net chapter |
| Message-ID | <ukUkY-5wR-71@gated-at.bofh.it> |
| In reply to | #1725065 |
Due to a mistake, the DVB net chapter was actually broken into two different chapters. Fix it. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> --- Documentation/media/uapi/dvb/net.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/Documentation/media/uapi/dvb/net.rst b/Documentation/media/uapi/dvb/net.rst index eca42dd53261..00ae5df0c321 100644 --- a/Documentation/media/uapi/dvb/net.rst +++ b/Documentation/media/uapi/dvb/net.rst @@ -28,7 +28,6 @@ header. .. _net_fcalls: -###################### DVB net Function Calls ###################### -- 2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:50 +0200 |
| Subject | [PATCH v2 03/27] media: dvb/intro: use the term Digital TV to refer to the system |
| Message-ID | <ukUuC-5EI-13@gated-at.bofh.it> |
| In reply to | #1725065 |
On several places at the introduction, a digital TV board and its
kernel support is called as DVB. The reason is simple: by the
time the document was written, there were no other digital TV
standards :-)
Modernize the specs by referring to them as Digital TV.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
Documentation/media/uapi/dvb/intro.rst | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/Documentation/media/uapi/dvb/intro.rst b/Documentation/media/uapi/dvb/intro.rst
index 20bd7aec2665..de432ffcba50 100644
--- a/Documentation/media/uapi/dvb/intro.rst
+++ b/Documentation/media/uapi/dvb/intro.rst
@@ -13,7 +13,7 @@ What you need to know
=====================
The reader of this document is required to have some knowledge in the
-area of digital video broadcasting (DVB) and should be familiar with
+area of digital video broadcasting (Digital TV) and should be familiar with
part I of the MPEG2 specification ISO/IEC 13818 (aka ITU-T H.222), i.e
you should know what a program/transport stream (PS/TS) is and what is
meant by a packetized elementary stream (PES) or an I-frame.
@@ -59,14 +59,14 @@ Overview
:alt: dvbstb.svg
:align: center
- Components of a DVB card/STB
+ Components of a Digital TV card/STB
-A DVB PCI card or DVB set-top-box (STB) usually consists of the
+A Digital TV card or set-top-box (STB) usually consists of the
following main hardware components:
-- Frontend consisting of tuner and DVB demodulator
+- Frontend consisting of tuner and digital TV demodulator
- Here the raw signal reaches the DVB hardware from a satellite dish or
+ Here the raw signal reaches the digital TV hardware from a satellite dish or
antenna or directly from cable. The frontend down-converts and
demodulates this signal into an MPEG transport stream (TS). In case
of a satellite frontend, this includes a facility for satellite
@@ -105,10 +105,10 @@ conditional access hardware.
.. _dvb_devices:
-Linux DVB Devices
-=================
+Linux Digital TV Devices
+========================
-The Linux DVB API lets you control these hardware components through
+The Linux Digital TV API lets you control these hardware components through
currently six Unix-style character devices for video, audio, frontend,
demux, CA and IP-over-DVB networking. The video and audio devices
control the MPEG2 decoder hardware, the frontend device the tuner and
@@ -137,8 +137,8 @@ individual devices are called:
- ``/dev/dvb/adapterN/caM``,
-where ``N`` enumerates the DVB PCI cards in a system starting from 0, and ``M``
-enumerates the devices of each type within each adapter, starting
+where ``N`` enumerates the Digital TV cards in a system starting from 0, and
+``M`` enumerates the devices of each type within each adapter, starting
from 0, too. We will omit the “``/dev/dvb/adapterN/``\ ” in the further
discussion of these devices.
@@ -151,8 +151,8 @@ devices are described in the following chapters.
API include files
=================
-For each of the DVB devices a corresponding include file exists. The DVB
-API include files should be included in application sources with a
+For each of the Digital TV devices a corresponding include file exists. The
+Digital TV API include files should be included in application sources with a
partial path like:
--
2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-01 15:50 +0200 |
| Subject | [PATCH v2 27/27] media: dst_ca: remove CA_SET_DESCR boilerplate |
| Message-ID | <ukUuD-5EI-27@gated-at.bofh.it> |
| In reply to | #1725065 |
This ioctl is not implemented at dst_ca driver. There's just
a boilerplate code there. Remove it, as it is unlikely that
anyone would implement it those days.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/media/pci/bt8xx/dst_ca.c | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/drivers/media/pci/bt8xx/dst_ca.c b/drivers/media/pci/bt8xx/dst_ca.c
index 5ebb86f22935..530b3e9764ce 100644
--- a/drivers/media/pci/bt8xx/dst_ca.c
+++ b/drivers/media/pci/bt8xx/dst_ca.c
@@ -57,13 +57,6 @@ static unsigned int verbose = 5;
module_param(verbose, int, 0644);
MODULE_PARM_DESC(verbose, "verbose startup messages, default is 1 (yes)");
-/* Need some more work */
-static int ca_set_slot_descr(void)
-{
- /* We could make this more graceful ? */
- return -EOPNOTSUPP;
-}
-
static void put_command_and_length(u8 *data, int command, int length)
{
data[0] = (command >> 16) & 0xff;
@@ -615,16 +608,6 @@ static long dst_ca_ioctl(struct file *file, unsigned int cmd, unsigned long ioct
}
dprintk(verbose, DST_CA_INFO, 1, " -->CA_GET_DESCR_INFO Success !");
break;
- case CA_SET_DESCR:
- dprintk(verbose, DST_CA_INFO, 1, " Setting descrambler");
- result = ca_set_slot_descr();
- if (result < 0) {
- dprintk(verbose, DST_CA_ERROR, 1, " -->CA_SET_DESCR Failed !");
- result = -1;
- goto free_mem_and_exit;
- }
- dprintk(verbose, DST_CA_INFO, 1, " -->CA_SET_DESCR Success !");
- break;
default:
result = -EOPNOTSUPP;
}
--
2.13.5
[toc] | [prev] | [next] | [standalone]
| From | Honza Petrouš <jpetrous@gmail.com> |
|---|---|
| Date | 2017-09-03 22:10 +0200 |
| Message-ID | <ulJnr-4nF-13@gated-at.bofh.it> |
| In reply to | #1725065 |
> There is still a gap at the CA API, as there are three ioctls that are used
> only by a few drivers and whose structs are not properly documented:
> CA_GET_MSG, CA_SEND_MSG and CA_SET_DESCR.
>
> The first two ones seem to be related to a way that a few drivers
> provide to send/receive messages.
I never seen usage of such R/W ioctls, all drivers I have access to
are using read()/write() variant of communication.
Yet, I was unable to get what
> "index" and "type" means on those ioctls. The CA_SET_DESCR is
> only supported by av7110 driver, and has an even weirder
> undocumented struct. I was unable to discover at the Kernel, VDR
> or Kaffeine how those structs are filled. I suspect that there's
> something wrong there, but I won't risk trying to fix without
> knowing more about them. So, let's just document that those
> are needing documentation :-)
>
1) #define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
============================================
CA_SET_DESCR is used for feeding descrambler device
with correct keys (called here "control words") what
allows to get services unscrambled.
The best docu is:
"Digital Video Broadcasting (DVB);
Support for use of the DVB Scrambling Algorithm version 3
within digital broadcasting systems"
Defined as DVB Document A125 and publicly
available here:
https://www.dvb.org/resources/public/standards/a125_dvb-csa3.pdf
typedef struct ca_descr {
unsigned int index;
unsigned int parity; /* 0 == even, 1 == odd */
unsigned char cw[8];
} ca_descr_t;
The 'index' is adress of the descrambler instance, as there exist
limited number of them (retieved by CA_GET_DESCR_INFO).
See below:
2) #define CA_SET_PID _IOW('o', 135, ca_pid_t)
=======================================
The second ioctl was used to link particular PID with particular
descrambler, what means that all such pids (you are allowed
to create n-to-1 link), can be descrambled by one descrambler.
This is needed in case of multiservice descrambling, when
usually exist one key (control word) per one service (so all PIDs
for one service have to be linked with one descrambler)
Without this ioctl there is no way to address particular
descrambler and so no way to use more then ONE descrambler
per demux
/Honza
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-04 03:00 +0200 |
| Message-ID | <ulNU7-6Ya-21@gated-at.bofh.it> |
| In reply to | #1725744 |
Em Sun, 3 Sep 2017 22:05:23 +0200
Honza Petrouš <jpetrous@gmail.com> escreveu:
> 1) #define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
> ============================================
>
> CA_SET_DESCR is used for feeding descrambler device
> with correct keys (called here "control words") what
> allows to get services unscrambled.
>
> The best docu is:
>
> "Digital Video Broadcasting (DVB);
> Support for use of the DVB Scrambling Algorithm version 3
> within digital broadcasting systems"
>
> Defined as DVB Document A125 and publicly
> available here:
>
> https://www.dvb.org/resources/public/standards/a125_dvb-csa3.pdf
>
>
> typedef struct ca_descr {
> unsigned int index;
> unsigned int parity; /* 0 == even, 1 == odd */
> unsigned char cw[8];
> } ca_descr_t;
>
> The 'index' is adress of the descrambler instance, as there exist
> limited number of them (retieved by CA_GET_DESCR_INFO).
Thanks for the info. If I understood well, the enclosed patch should
be documenting it.
Thanks,
Mauro
[PATCH] media: ca docs: document CA_SET_DESCR ioctl and structs
The av7110 driver uses CA_SET_DESCR to store the descrambler
control words at the CA descrambler slots.
Document it.
Thanks-to: Honza Petrouš <jpetrous@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
diff --git a/Documentation/media/uapi/dvb/ca-set-descr.rst b/Documentation/media/uapi/dvb/ca-set-descr.rst
index 9c484317d55c..a6c47205ffd8 100644
--- a/Documentation/media/uapi/dvb/ca-set-descr.rst
+++ b/Documentation/media/uapi/dvb/ca-set-descr.rst
@@ -28,22 +28,11 @@ Arguments
``msg``
Pointer to struct :c:type:`ca_descr`.
-.. c:type:: ca_descr
-
-.. code-block:: c
-
- struct ca_descr {
- unsigned int index;
- unsigned int parity;
- unsigned char cw[8];
- };
-
-
Description
-----------
-.. note:: This ioctl is undocumented. Documentation is welcome.
-
+CA_SET_DESCR is used for feeding descrambler CA slots with descrambling
+keys (refered as control words).
Return Value
------------
diff --git a/include/uapi/linux/dvb/ca.h b/include/uapi/linux/dvb/ca.h
index f66ed53f4dc7..a62ddf0cebcd 100644
--- a/include/uapi/linux/dvb/ca.h
+++ b/include/uapi/linux/dvb/ca.h
@@ -109,9 +109,16 @@ struct ca_msg {
unsigned char msg[256];
};
+/**
+ * struct ca_descr - CA descrambler control words info
+ *
+ * @index: CA Descrambler slot
+ * @parity: control words parity, where 0 means even and 1 means odd
+ * @cw: CA Descrambler control words
+ */
struct ca_descr {
unsigned int index;
- unsigned int parity; /* 0 == even, 1 == odd */
+ unsigned int parity;
unsigned char cw[8];
};
[toc] | [prev] | [next] | [standalone]
| From | Honza Petrouš <jpetrous@gmail.com> |
|---|---|
| Date | 2017-09-04 09:20 +0200 |
| Message-ID | <ulTPP-2vA-7@gated-at.bofh.it> |
| In reply to | #1725795 |
2017-09-04 2:54 GMT+02:00 Mauro Carvalho Chehab <mchehab@s-opensource.com>:
> Em Sun, 3 Sep 2017 22:05:23 +0200
> Honza Petrouš <jpetrous@gmail.com> escreveu:
>
>> 1) #define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
>> ============================================
>>
>> CA_SET_DESCR is used for feeding descrambler device
>> with correct keys (called here "control words") what
>> allows to get services unscrambled.
>>
>> The best docu is:
>>
>> "Digital Video Broadcasting (DVB);
>> Support for use of the DVB Scrambling Algorithm version 3
>> within digital broadcasting systems"
>>
>> Defined as DVB Document A125 and publicly
>> available here:
>>
>> https://www.dvb.org/resources/public/standards/a125_dvb-csa3.pdf
>>
>>
>> typedef struct ca_descr {
>> unsigned int index;
>> unsigned int parity; /* 0 == even, 1 == odd */
>> unsigned char cw[8];
>> } ca_descr_t;
>>
>> The 'index' is adress of the descrambler instance, as there exist
>> limited number of them (retieved by CA_GET_DESCR_INFO).
>
> Thanks for the info. If I understood well, the enclosed patch should
> be documenting it.
>
>
> Thanks,
> Mauro
>
> [PATCH] media: ca docs: document CA_SET_DESCR ioctl and structs
>
> The av7110 driver uses CA_SET_DESCR to store the descrambler
> control words at the CA descrambler slots.
>
> Document it.
>
> Thanks-to: Honza Petrouš <jpetrous@gmail.com>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
>
> diff --git a/Documentation/media/uapi/dvb/ca-set-descr.rst b/Documentation/media/uapi/dvb/ca-set-descr.rst
> index 9c484317d55c..a6c47205ffd8 100644
> --- a/Documentation/media/uapi/dvb/ca-set-descr.rst
> +++ b/Documentation/media/uapi/dvb/ca-set-descr.rst
> @@ -28,22 +28,11 @@ Arguments
> ``msg``
> Pointer to struct :c:type:`ca_descr`.
>
> -.. c:type:: ca_descr
> -
> -.. code-block:: c
> -
> - struct ca_descr {
> - unsigned int index;
> - unsigned int parity;
> - unsigned char cw[8];
> - };
> -
> -
> Description
> -----------
>
> -.. note:: This ioctl is undocumented. Documentation is welcome.
> -
> +CA_SET_DESCR is used for feeding descrambler CA slots with descrambling
> +keys (refered as control words).
>
> Return Value
> ------------
> diff --git a/include/uapi/linux/dvb/ca.h b/include/uapi/linux/dvb/ca.h
> index f66ed53f4dc7..a62ddf0cebcd 100644
> --- a/include/uapi/linux/dvb/ca.h
> +++ b/include/uapi/linux/dvb/ca.h
> @@ -109,9 +109,16 @@ struct ca_msg {
> unsigned char msg[256];
> };
>
> +/**
> + * struct ca_descr - CA descrambler control words info
> + *
> + * @index: CA Descrambler slot
> + * @parity: control words parity, where 0 means even and 1 means odd
> + * @cw: CA Descrambler control words
> + */
> struct ca_descr {
> unsigned int index;
> - unsigned int parity; /* 0 == even, 1 == odd */
> + unsigned int parity;
> unsigned char cw[8];
> };
>
>
Yeh, it should be that way.
BTW, the only issue I have in mind is how to link particular
descrambler with the PID
after your removal of the CA_SET_PID. And yes, I know that currently we have
no any user of such ioctl in our driver base :)
/Honza
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-04 11:10 +0200 |
| Message-ID | <ulVyi-3AK-7@gated-at.bofh.it> |
| In reply to | #1725882 |
Em Mon, 4 Sep 2017 09:12:49 +0200
Honza Petrouš <jpetrous@gmail.com> escreveu:
> 2017-09-04 2:54 GMT+02:00 Mauro Carvalho Chehab <mchehab@s-opensource.com>:
> > Em Sun, 3 Sep 2017 22:05:23 +0200
> > Honza Petrouš <jpetrous@gmail.com> escreveu:
> >
> >> 1) #define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
> >> ============================================
> >>
> >> CA_SET_DESCR is used for feeding descrambler device
> >> with correct keys (called here "control words") what
> >> allows to get services unscrambled.
> >>
> >> The best docu is:
> >>
> >> "Digital Video Broadcasting (DVB);
> >> Support for use of the DVB Scrambling Algorithm version 3
> >> within digital broadcasting systems"
> >>
> >> Defined as DVB Document A125 and publicly
> >> available here:
> >>
> >> https://www.dvb.org/resources/public/standards/a125_dvb-csa3.pdf
> >>
> >>
> >> typedef struct ca_descr {
> >> unsigned int index;
> >> unsigned int parity; /* 0 == even, 1 == odd */
> >> unsigned char cw[8];
> >> } ca_descr_t;
> >>
> >> The 'index' is adress of the descrambler instance, as there exist
> >> limited number of them (retieved by CA_GET_DESCR_INFO).
> >
> > Thanks for the info. If I understood well, the enclosed patch should
> > be documenting it.
> >
> >
> > Thanks,
> > Mauro
> >
> > [PATCH] media: ca docs: document CA_SET_DESCR ioctl and structs
> >
> > The av7110 driver uses CA_SET_DESCR to store the descrambler
> > control words at the CA descrambler slots.
> >
> > Document it.
> >
> > Thanks-to: Honza Petrouš <jpetrous@gmail.com>
> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> >
> > diff --git a/Documentation/media/uapi/dvb/ca-set-descr.rst b/Documentation/media/uapi/dvb/ca-set-descr.rst
> > index 9c484317d55c..a6c47205ffd8 100644
> > --- a/Documentation/media/uapi/dvb/ca-set-descr.rst
> > +++ b/Documentation/media/uapi/dvb/ca-set-descr.rst
> > @@ -28,22 +28,11 @@ Arguments
> > ``msg``
> > Pointer to struct :c:type:`ca_descr`.
> >
> > -.. c:type:: ca_descr
> > -
> > -.. code-block:: c
> > -
> > - struct ca_descr {
> > - unsigned int index;
> > - unsigned int parity;
> > - unsigned char cw[8];
> > - };
> > -
> > -
> > Description
> > -----------
> >
> > -.. note:: This ioctl is undocumented. Documentation is welcome.
> > -
> > +CA_SET_DESCR is used for feeding descrambler CA slots with descrambling
> > +keys (refered as control words).
> >
> > Return Value
> > ------------
> > diff --git a/include/uapi/linux/dvb/ca.h b/include/uapi/linux/dvb/ca.h
> > index f66ed53f4dc7..a62ddf0cebcd 100644
> > --- a/include/uapi/linux/dvb/ca.h
> > +++ b/include/uapi/linux/dvb/ca.h
> > @@ -109,9 +109,16 @@ struct ca_msg {
> > unsigned char msg[256];
> > };
> >
> > +/**
> > + * struct ca_descr - CA descrambler control words info
> > + *
> > + * @index: CA Descrambler slot
> > + * @parity: control words parity, where 0 means even and 1 means odd
> > + * @cw: CA Descrambler control words
> > + */
> > struct ca_descr {
> > unsigned int index;
> > - unsigned int parity; /* 0 == even, 1 == odd */
> > + unsigned int parity;
> > unsigned char cw[8];
> > };
> >
> >
>
> Yeh, it should be that way.
Good! I'll add this patch to the series.
> BTW, the only issue I have in mind is how to link particular
> descrambler with the PID
> after your removal of the CA_SET_PID. And yes, I know that currently we have
> no any user of such ioctl in our driver base :)
Well, I don't think that an ioctl like CA_SET_PID would solve it.
On a generic case with is quite common nowadays on embedded hardware,
We have K demods and M CIs (where K may be different than M).
Also, You may need to route N PIDs to O descramblers.
As user switch channels, the N PIDs should be unset, and another
set of N' pids will be routed.
CA_SET_PID allows to set just one PID, without identifying from
what demod it would be received, and doesn't have a "reset"
function to undo.
So, IMHO, the interface is broken by design. Perhaps that's
the reason why no upstream driver uses it.
What seems to be a much better design would be to use the demux
set filter ioctls and route the PIDs to the right CA.
Thanks,
Mauro
[toc] | [prev] | [next] | [standalone]
| From | Honza Petrouš <jpetrous@gmail.com> |
|---|---|
| Date | 2017-09-04 11:50 +0200 |
| Message-ID | <ulWb0-3OX-7@gated-at.bofh.it> |
| In reply to | #1725952 |
2017-09-04 11:06 GMT+02:00 Mauro Carvalho Chehab <mchehab@s-opensource.com>:
> Em Mon, 4 Sep 2017 09:12:49 +0200
> Honza Petrouš <jpetrous@gmail.com> escreveu:
>
>> 2017-09-04 2:54 GMT+02:00 Mauro Carvalho Chehab <mchehab@s-opensource.com>:
>> > Em Sun, 3 Sep 2017 22:05:23 +0200
>> > Honza Petrouš <jpetrous@gmail.com> escreveu:
>> >
>> >> 1) #define CA_SET_DESCR _IOW('o', 134, ca_descr_t)
>> >> ============================================
>> >>
>> >> CA_SET_DESCR is used for feeding descrambler device
>> >> with correct keys (called here "control words") what
>> >> allows to get services unscrambled.
>> >>
>> >> The best docu is:
>> >>
>> >> "Digital Video Broadcasting (DVB);
>> >> Support for use of the DVB Scrambling Algorithm version 3
>> >> within digital broadcasting systems"
>> >>
>> >> Defined as DVB Document A125 and publicly
>> >> available here:
>> >>
>> >> https://www.dvb.org/resources/public/standards/a125_dvb-csa3.pdf
>> >>
>> >>
>> >> typedef struct ca_descr {
>> >> unsigned int index;
>> >> unsigned int parity; /* 0 == even, 1 == odd */
>> >> unsigned char cw[8];
>> >> } ca_descr_t;
>> >>
>> >> The 'index' is adress of the descrambler instance, as there exist
>> >> limited number of them (retieved by CA_GET_DESCR_INFO).
>> >
>> > Thanks for the info. If I understood well, the enclosed patch should
>> > be documenting it.
>> >
>> >
>> > Thanks,
>> > Mauro
>> >
>> > [PATCH] media: ca docs: document CA_SET_DESCR ioctl and structs
>> >
>> > The av7110 driver uses CA_SET_DESCR to store the descrambler
>> > control words at the CA descrambler slots.
>> >
>> > Document it.
>> >
>> > Thanks-to: Honza Petrouš <jpetrous@gmail.com>
>> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
>> >
>> > diff --git a/Documentation/media/uapi/dvb/ca-set-descr.rst b/Documentation/media/uapi/dvb/ca-set-descr.rst
>> > index 9c484317d55c..a6c47205ffd8 100644
>> > --- a/Documentation/media/uapi/dvb/ca-set-descr.rst
>> > +++ b/Documentation/media/uapi/dvb/ca-set-descr.rst
>> > @@ -28,22 +28,11 @@ Arguments
>> > ``msg``
>> > Pointer to struct :c:type:`ca_descr`.
>> >
>> > -.. c:type:: ca_descr
>> > -
>> > -.. code-block:: c
>> > -
>> > - struct ca_descr {
>> > - unsigned int index;
>> > - unsigned int parity;
>> > - unsigned char cw[8];
>> > - };
>> > -
>> > -
>> > Description
>> > -----------
>> >
>> > -.. note:: This ioctl is undocumented. Documentation is welcome.
>> > -
>> > +CA_SET_DESCR is used for feeding descrambler CA slots with descrambling
>> > +keys (refered as control words).
>> >
>> > Return Value
>> > ------------
>> > diff --git a/include/uapi/linux/dvb/ca.h b/include/uapi/linux/dvb/ca.h
>> > index f66ed53f4dc7..a62ddf0cebcd 100644
>> > --- a/include/uapi/linux/dvb/ca.h
>> > +++ b/include/uapi/linux/dvb/ca.h
>> > @@ -109,9 +109,16 @@ struct ca_msg {
>> > unsigned char msg[256];
>> > };
>> >
>> > +/**
>> > + * struct ca_descr - CA descrambler control words info
>> > + *
>> > + * @index: CA Descrambler slot
>> > + * @parity: control words parity, where 0 means even and 1 means odd
>> > + * @cw: CA Descrambler control words
>> > + */
>> > struct ca_descr {
>> > unsigned int index;
>> > - unsigned int parity; /* 0 == even, 1 == odd */
>> > + unsigned int parity;
>> > unsigned char cw[8];
>> > };
>> >
>> >
>>
>> Yeh, it should be that way.
>
> Good! I'll add this patch to the series.
>
>> BTW, the only issue I have in mind is how to link particular
>> descrambler with the PID
>> after your removal of the CA_SET_PID. And yes, I know that currently we have
>> no any user of such ioctl in our driver base :)
>
> Well, I don't think that an ioctl like CA_SET_PID would solve it.
>
> On a generic case with is quite common nowadays on embedded hardware,
> We have K demods and M CIs (where K may be different than M).
>
> Also, You may need to route N PIDs to O descramblers.
TBH that is exactly most common use-case = most Digital TV
vendors are scrambling per-service, what requires one descrambler
for all scrambled PIDs (usually only A/V PIDs are scrambled)
for particular service. So we have to add more PIDs to one descrambler
What was possible by multiple call of CA_SET_PID (I agree that much
better would be name like CA_ADD_PID)
>
> As user switch channels, the N PIDs should be unset, and another
> set of N' pids will be routed.
>
> CA_SET_PID allows to set just one PID, without identifying from
> what demod it would be received, and doesn't have a "reset"
> function to undo.
Here I can agree - it looks like the value -1 in 'index' should
do the job, but it, unfortunately, looses info from which descrambler
it should be removed (see note in struct ca_pid for value -1)
>
> So, IMHO, the interface is broken by design. Perhaps that's
> the reason why no upstream driver uses it.
I have the same feeling regarding brokenness.
>
> What seems to be a much better design would be to use the demux
> set filter ioctls and route the PIDs to the right CA.
>
I don't have access to any programmer reference documentation
for any modern DVB-enabled SoC, but I see two possible scenario
of connecting descramblers to the demuxes (most of modern SoCs
have more then one demux) - static one, when every demux has
predefined descramblers already connected to it and dynamic ones,
when any descrambler can be connected to the any demux.
From that reason I vote to have some descrambler specific ioctl,
which allow more flexibility then if we add it to the filter set ioctl.
My 5 cents
/Honza
PS: I understand that until we get some multi-descrambler device included,
we don't need to address descrambler management.
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-04 13:50 +0200 |
| Message-ID | <ulY37-4ZN-9@gated-at.bofh.it> |
| In reply to | #1725970 |
Em Mon, 4 Sep 2017 11:40:59 +0200 Honza Petrouš <jpetrous@gmail.com> escreveu: > > So, IMHO, the interface is broken by design. Perhaps that's > > the reason why no upstream driver uses it. > > I have the same feeling regarding brokenness. > > > > > What seems to be a much better design would be to use the demux > > set filter ioctls and route the PIDs to the right CA. > > > > I don't have access to any programmer reference documentation > for any modern DVB-enabled SoC, but I see two possible scenario > of connecting descramblers to the demuxes (most of modern SoCs > have more then one demux) - static one, when every demux has > predefined descramblers already connected to it and dynamic ones, > when any descrambler can be connected to the any demux. I don't have access to the documentation either, but I know some designs that have multiple demods that are dynamically set. Some hardware even allow to dynamically change the maximum amount of filters per demod at runtime. > From that reason I vote to have some descrambler specific ioctl, > which allow more flexibility then if we add it to the filter set ioctl. I suspect that doing it at the demod does a lot more sense. Anyway, someone should come with a driver requiring it upstream for us to discuss and find the better alternatives to support. Thanks, Mauro
[toc] | [prev] | [next] | [standalone]
| From | Mauro Carvalho Chehab <mchehab@s-opensource.com> |
|---|---|
| Date | 2017-09-04 03:20 +0200 |
| Message-ID | <ulOdr-7lZ-9@gated-at.bofh.it> |
| In reply to | #1725744 |
Em Sun, 3 Sep 2017 22:05:23 +0200
Honza Petrouš <jpetrous@gmail.com> escreveu:
> > There is still a gap at the CA API, as there are three ioctls that are used
> > only by a few drivers and whose structs are not properly documented:
> > CA_GET_MSG, CA_SEND_MSG and CA_SET_DESCR.
> >
> > The first two ones seem to be related to a way that a few drivers
> > provide to send/receive messages.
>
> I never seen usage of such R/W ioctls, all drivers I have access to
> are using read()/write() variant of communication.
Yeah, the normal usage is to use R/W syscalls.
> BTW, I just remembered dvblast app, part of videolan.org:
>
> http://www.videolan.org/projects/dvblast.html
>
> which is using CA_GET_MSG/CA_SEND_MSG:
>
> https://code.videolan.org/videolan/dvblast/blob/master/en50221.c
From the ca_msg struct:
/* a message to/from a CI-CAM */
struct ca_msg {
unsigned int index;
unsigned int type;
unsigned int length;
unsigned char msg[256];
};
It only uses length and msg fields. Describing those seem
quite obvious. However, what "index" and "type" means?
Within the Kernel, only two drivers implement it:
$ git grep -l ca_msg drivers/
drivers/media/firewire/firedtv-ci.c
drivers/media/pci/bt8xx/dst_ca.c
At the dst_ca driver, checking for those fields don't give any
useful result:
$ grep index drivers/media/pci/bt8xx/dst_ca.c
(nothing)
$ grep type drivers/media/pci/bt8xx/dst_ca.c
// Copy application_type, application_manufacturer and manufacturer_code
p_ca_caps->slot_type = 1;
p_ca_caps->descr_type = 1;
p_ca_slot_info->type = CA_CI;
p_ca_slot_info->type = CA_CI;
(btw, using "1" for slot_type and descr_type there seems a very bad
thing)
The code at ca_get_message(), handle_dst_tag(), ca_set_pmt(), etc also
doesn't seem to be using neither one of those fields.
The same happens at firedtv-ci: it also doesn't seem to be using
none of those fields.
It should be noticed that, the dst_ca seems to allow more than one
descrambler:
p_ca_caps->descr_num = slot_cap[7];
Yet, the index is not used. So, it doesn't seem to be related to
the descrambler index (or there's an implementation bug there - and
at dvblast - as none uses it).
What *I* suspect is that this were meant to be used for either
CA index/type or DESCR index/type, but, when this got implemented,
people discovered that this would be useless and never actually
used those fields. Yet, I may be completely wrong and those were
added to mean something else.
If so, then we could just change the struct to:
struct ca_msg {
unsigned int reserved[2];
unsigned int length;
unsigned char msg[256];
};
And document just length and msg.
Thanks,
Mauro
[toc] | [prev] | [next] | [standalone]
| From | Honza Petrouš <jpetrous@gmail.com> |
|---|---|
| Date | 2017-09-03 22:40 +0200 |
| Message-ID | <ulJQu-4xO-29@gated-at.bofh.it> |
| In reply to | #1725065 |
> There is still a gap at the CA API, as there are three ioctls that are used > only by a few drivers and whose structs are not properly documented: > CA_GET_MSG, CA_SEND_MSG and CA_SET_DESCR. > > The first two ones seem to be related to a way that a few drivers > provide to send/receive messages. Yet, I was unable to get what > "index" and "type" means on those ioctls. The CA_SET_DESCR is > only supported by av7110 driver, and has an even weirder > undocumented struct. I was unable to discover at the Kernel, VDR > or Kaffeine how those structs are filled. I suspect that there's > something wrong there, but I won't risk trying to fix without > knowing more about them. So, let's just document that those > are needing documentation :-) > BTW, I just remembered dvblast app, part of videolan.org: http://www.videolan.org/projects/dvblast.html which is using CA_GET_MSG/CA_SEND_MSG: https://code.videolan.org/videolan/dvblast/blob/master/en50221.c /Honza
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web