media updates for v4.14-rc1
-----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJZsSBoAAoJEAhfPr2O5OEVDc4QAJZSuVYmyLgvtmPxhyqgCvkz I0DmWM4ZtK2VT/xJ/AA23z8IiLKi2+pDC0Xx6/aIiA665cyl3oPUdkKIaHW9Z6+A fV8gSFkmGkluQb9mP/KdHYI2oSeEv2ivCa1kfaApYcoBa904z8uU++z15Iu5p/+m fjpc2vnc9rax0Vuwmgv7p1CL4j4e/ja0siCSCGbu2ad50KqP4ytnBooNPQOQt89D L+Av5MeGml/CTUUnAFjWfSmQ72Ht8GhoBBKc6wGoq9x3GTckDDTqy8BAqGt4UQnu fR0mb71zuSVmTjxRe7tc/74m3ReaeSHzQeHJhjdQslvNmV3RVQgk/6CCsmqNEegr rbC3glQCM+gp5YywCjRL6DCPsoqvjexLtPQjMZIGYxgSYQUyXGOxilgmj9+73761 6aOl0nqdgN+vlWzaSeDF9EQxRsc+cCq/Po8/xuPE/Pzs6zTQwU+6b+ADLf9jCyDP LTC49wOj24SoWiTlG1FTct2ogZ3h5wNPWlurBtmyiFJn+43RpsH5IW9wLilCjeiE 6JeCWEIBglCCq/TVCzETKNSaixDL6/lMQ9uRdCpIO4VLyoS6S9pZASNPBmQ1h7h/ oTjYDeWirIthNOccstbBoJQYSX62CqAIW3wq5ME6PAgM+ioiLXLYk0fV3yBKoBNW Z0SBeTcuPxWmfzuxMtik =fNM2 -----END PGP SIGNATURE----- Merge tag 'media/v4.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media updates from Mauro Carvalho Chehab: "Brazil's Independence Day pull request :-) This is one of the biggest media pull requests, with 625 patches affecting almost all parts of media (RC, DVB, V4L2, CEC, docs). This contains: - A lot of new drivers: * DVB frontends: mxl5xx, stv0910, stv6111; * camera flash: as3645a led driver; * HDMI receiver: adv748X; * camera sensor: Omnivision 6650 5M driver (ov6650); * HDMI CEC: ao-cec meson driver; * V4L2: Qualcom camss driver; * Remote controller: gpio-ir-tx, pwm-ir-tx and zx-irdec drivers. - The DDbridge DVB driver got a massive update, with makes it in sync with modern hardware from that vendor; - There's an important milestone on this series: the DVB documentation was written in 2003, but only started to be updated in 2007. It also used to contain several gaps from the time it was kept out of tree, mentioning error codes and device nodes that never existed upstream. On this series, it received a massive update: all non-deprecated digital TV APIs are now in sync with the current implementation; - Some DVB APIs that aren't used by any upstream driver got removed; - Other parts of the media documentation algo got updated, fixing some bugs on its PDF output and making it compatible with Sphinx version 1.6. As the number of hacks required to build PDF output reduced, I hope we'll have less troubles as newer versions of our documentation toolchain are released (famous last words); - As usual, lots of driver cleanups and improvements" * tag 'media/v4.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (624 commits) media: leds: as3645a: add V4L2_FLASH_LED_CLASS dependency media: get rid of removed DMX_GET_CAPS and DMX_SET_SOURCE leftovers media: Revert "[media] v4l: async: make v4l2 coexist with devicetree nodes in a dt overlay" media: staging: atomisp: sh_css_calloc shall return a pointer to the allocated space media: Revert "[media] lirc_dev: remove superfluous get/put_device() calls" media: add qcom_camss.rst to v4l-drivers rst file media: dvb headers: make checkpatch happier media: dvb uapi: move frontend legacy API to another part of the book media: pixfmt-srggb12p.rst: better format the table for PDF output media: docs-rst: media: Don't use \small for V4L2_PIX_FMT_SRGGB10 documentation media: index.rst: don't write "Contents:" on PDF output media: pixfmt*.rst: replace a two dots by a comma media: vidioc-g-fmt.rst: adjust table format media: vivid.rst: add a blank line to correct ReST format media: v4l2 uapi book: get rid of driver programming's chapter media: format.rst: use the right markup for important notes media: docs-rst: cardlists: change their format to flat-tables media: em28xx-cardlist.rst: update to reflect last changes media: v4l2-event.rst: adjust table to fit on PDF output media: docs: don't show ToC for each part on PDF output ...
This commit is contained in:
commit
c0da4fa0d1
|
@ -0,0 +1,71 @@
|
|||
Analog devices AS3645A device tree bindings
|
||||
|
||||
The AS3645A flash LED controller can drive two LEDs, one high current
|
||||
flash LED and one indicator LED. The high current flash LED can be
|
||||
used in torch mode as well.
|
||||
|
||||
Ranges below noted as [a, b] are closed ranges between a and b, i.e. a
|
||||
and b are included in the range.
|
||||
|
||||
Please also see common.txt in the same directory.
|
||||
|
||||
|
||||
Required properties
|
||||
===================
|
||||
|
||||
compatible : Must be "ams,as3645a".
|
||||
reg : The I2C address of the device. Typically 0x30.
|
||||
|
||||
|
||||
Required properties of the "flash" child node
|
||||
=============================================
|
||||
|
||||
flash-timeout-us: Flash timeout in microseconds. The value must be in
|
||||
the range [100000, 850000] and divisible by 50000.
|
||||
flash-max-microamp: Maximum flash current in microamperes. Has to be
|
||||
in the range between [200000, 500000] and
|
||||
divisible by 20000.
|
||||
led-max-microamp: Maximum torch (assist) current in microamperes. The
|
||||
value must be in the range between [20000, 160000] and
|
||||
divisible by 20000.
|
||||
ams,input-max-microamp: Maximum flash controller input current. The
|
||||
value must be in the range [1250000, 2000000]
|
||||
and divisible by 50000.
|
||||
|
||||
|
||||
Optional properties of the "flash" child node
|
||||
=============================================
|
||||
|
||||
label : The label of the flash LED.
|
||||
|
||||
|
||||
Required properties of the "indicator" child node
|
||||
=================================================
|
||||
|
||||
led-max-microamp: Maximum indicator current. The allowed values are
|
||||
2500, 5000, 7500 and 10000.
|
||||
|
||||
Optional properties of the "indicator" child node
|
||||
=================================================
|
||||
|
||||
label : The label of the indicator LED.
|
||||
|
||||
|
||||
Example
|
||||
=======
|
||||
|
||||
as3645a@30 {
|
||||
reg = <0x30>;
|
||||
compatible = "ams,as3645a";
|
||||
flash {
|
||||
flash-timeout-us = <150000>;
|
||||
flash-max-microamp = <320000>;
|
||||
led-max-microamp = <60000>;
|
||||
ams,input-max-microamp = <1750000>;
|
||||
label = "as3645a:flash";
|
||||
};
|
||||
indicator {
|
||||
led-max-microamp = <10000>;
|
||||
label = "as3645a:indicator";
|
||||
};
|
||||
};
|
|
@ -0,0 +1,14 @@
|
|||
Device tree bindings for IR LED connected through gpio pin which is used as
|
||||
remote controller transmitter.
|
||||
|
||||
Required properties:
|
||||
- compatible: should be "gpio-ir-tx".
|
||||
- gpios : Should specify the IR LED GPIO, see "gpios property" in
|
||||
Documentation/devicetree/bindings/gpio/gpio.txt. Active low LEDs
|
||||
should be indicated using flags in the GPIO specifier.
|
||||
|
||||
Example:
|
||||
irled@0 {
|
||||
compatible = "gpio-ir-tx";
|
||||
gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
|
@ -0,0 +1,13 @@
|
|||
Device tree bindings for IR LED connected through pwm pin which is used as
|
||||
remote controller transmitter.
|
||||
|
||||
Required properties:
|
||||
- compatible: should be "pwm-ir-tx".
|
||||
- pwms : PWM property to point to the PWM device (phandle)/port (id)
|
||||
and to specify the period time to be used: <&phandle id period_ns>;
|
||||
|
||||
Example:
|
||||
irled {
|
||||
compatible = "pwm-ir-tx";
|
||||
pwms = <&pwm0 0 10000000>;
|
||||
};
|
|
@ -0,0 +1,95 @@
|
|||
* Analog Devices ADV748X video decoder with HDMI receiver
|
||||
|
||||
The ADV7481 and ADV7482 are multi format video decoders with an integrated
|
||||
HDMI receiver. They can output CSI-2 on two independent outputs TXA and TXB
|
||||
from three input sources HDMI, analog and TTL.
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: Must contain one of the following
|
||||
- "adi,adv7481" for the ADV7481
|
||||
- "adi,adv7482" for the ADV7482
|
||||
|
||||
- reg: I2C slave address
|
||||
|
||||
Optional Properties:
|
||||
|
||||
- interrupt-names: Should specify the interrupts as "intrq1", "intrq2" and/or
|
||||
"intrq3". All interrupts are optional. The "intrq3" interrupt
|
||||
is only available on the adv7481
|
||||
- interrupts: Specify the interrupt lines for the ADV748x
|
||||
|
||||
The device node must contain one 'port' child node per device input and output
|
||||
port, in accordance with the video interface bindings defined in
|
||||
Documentation/devicetree/bindings/media/video-interfaces.txt. The port nodes
|
||||
are numbered as follows.
|
||||
|
||||
Name Type Port
|
||||
---------------------------------------
|
||||
AIN0 sink 0
|
||||
AIN1 sink 1
|
||||
AIN2 sink 2
|
||||
AIN3 sink 3
|
||||
AIN4 sink 4
|
||||
AIN5 sink 5
|
||||
AIN6 sink 6
|
||||
AIN7 sink 7
|
||||
HDMI sink 8
|
||||
TTL sink 9
|
||||
TXA source 10
|
||||
TXB source 11
|
||||
|
||||
The digital output port nodes must contain at least one endpoint.
|
||||
|
||||
Ports are optional if they are not connected to anything at the hardware level.
|
||||
|
||||
Example:
|
||||
|
||||
video-receiver@70 {
|
||||
compatible = "adi,adv7482";
|
||||
reg = <0x70>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
interrupt-parent = <&gpio6>;
|
||||
interrupt-names = "intrq1", "intrq2";
|
||||
interrupts = <30 IRQ_TYPE_LEVEL_LOW>,
|
||||
<31 IRQ_TYPE_LEVEL_LOW>;
|
||||
|
||||
port@7 {
|
||||
reg = <7>;
|
||||
|
||||
adv7482_ain7: endpoint {
|
||||
remote-endpoint = <&cvbs_in>;
|
||||
};
|
||||
};
|
||||
|
||||
port@8 {
|
||||
reg = <8>;
|
||||
|
||||
adv7482_hdmi: endpoint {
|
||||
remote-endpoint = <&hdmi_in>;
|
||||
};
|
||||
};
|
||||
|
||||
port@10 {
|
||||
reg = <10>;
|
||||
|
||||
adv7482_txa: endpoint {
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1 2 3 4>;
|
||||
remote-endpoint = <&csi40_in>;
|
||||
};
|
||||
};
|
||||
|
||||
port@11 {
|
||||
reg = <11>;
|
||||
|
||||
adv7482_txb: endpoint {
|
||||
clock-lanes = <0>;
|
||||
data-lanes = <1>;
|
||||
remote-endpoint = <&csi20_in>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -0,0 +1,9 @@
|
|||
Dongwoon Anatech DW9714 camera voice coil lens driver
|
||||
|
||||
DW9174 is a 10-bit DAC with current sink capability. It is intended
|
||||
for driving voice coil lenses in camera modules.
|
||||
|
||||
Mandatory properties:
|
||||
|
||||
- compatible: "dongwoon,dw9714"
|
||||
- reg: I²C slave address
|
|
@ -0,0 +1,28 @@
|
|||
* Amlogic Meson AO-CEC driver
|
||||
|
||||
The Amlogic Meson AO-CEC module is present is Amlogic SoCs and its purpose is
|
||||
to handle communication between HDMI connected devices over the CEC bus.
|
||||
|
||||
Required properties:
|
||||
- compatible : value should be following
|
||||
"amlogic,meson-gx-ao-cec"
|
||||
|
||||
- reg : Physical base address of the IP registers and length of memory
|
||||
mapped region.
|
||||
|
||||
- interrupts : AO-CEC interrupt number to the CPU.
|
||||
- clocks : from common clock binding: handle to AO-CEC clock.
|
||||
- clock-names : from common clock binding: must contain "core",
|
||||
corresponding to entry in the clocks property.
|
||||
- hdmi-phandle: phandle to the HDMI controller
|
||||
|
||||
Example:
|
||||
|
||||
cec_AO: cec@100 {
|
||||
compatible = "amlogic,meson-gx-ao-cec";
|
||||
reg = <0x0 0x00100 0x0 0x14>;
|
||||
interrupts = <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>;
|
||||
clocks = <&clkc_AO CLKID_AO_CEC_32K>;
|
||||
clock-names = "core";
|
||||
hdmi-phandle = <&hdmi_tx>;
|
||||
};
|
|
@ -2,10 +2,14 @@ Device-Tree bindings for Mediatek consumer IR controller
|
|||
found in Mediatek SoC family
|
||||
|
||||
Required properties:
|
||||
- compatible : "mediatek,mt7623-cir"
|
||||
- compatible : Should be
|
||||
"mediatek,mt7623-cir": for MT7623 SoC
|
||||
"mediatek,mt7622-cir": for MT7622 SoC
|
||||
- clocks : list of clock specifiers, corresponding to
|
||||
entries in clock-names property;
|
||||
- clock-names : should contain "clk" entries;
|
||||
- clock-names : should contain
|
||||
- "clk" entries: for MT7623 SoC
|
||||
- "clk", "bus" entries: for MT7622 SoC
|
||||
- interrupts : should contain IR IRQ number;
|
||||
- reg : should contain IO map address for IR.
|
||||
|
||||
|
|
|
@ -0,0 +1,197 @@
|
|||
Qualcomm Camera Subsystem
|
||||
|
||||
* Properties
|
||||
|
||||
- compatible:
|
||||
Usage: required
|
||||
Value type: <stringlist>
|
||||
Definition: Should contain:
|
||||
- "qcom,msm8916-camss"
|
||||
- reg:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: Register ranges as listed in the reg-names property.
|
||||
- reg-names:
|
||||
Usage: required
|
||||
Value type: <stringlist>
|
||||
Definition: Should contain the following entries:
|
||||
- "csiphy0"
|
||||
- "csiphy0_clk_mux"
|
||||
- "csiphy1"
|
||||
- "csiphy1_clk_mux"
|
||||
- "csid0"
|
||||
- "csid1"
|
||||
- "ispif"
|
||||
- "csi_clk_mux"
|
||||
- "vfe0"
|
||||
- interrupts:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: Interrupts as listed in the interrupt-names property.
|
||||
- interrupt-names:
|
||||
Usage: required
|
||||
Value type: <stringlist>
|
||||
Definition: Should contain the following entries:
|
||||
- "csiphy0"
|
||||
- "csiphy1"
|
||||
- "csid0"
|
||||
- "csid1"
|
||||
- "ispif"
|
||||
- "vfe0"
|
||||
- power-domains:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: A phandle and power domain specifier pairs to the
|
||||
power domain which is responsible for collapsing
|
||||
and restoring power to the peripheral.
|
||||
- clocks:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: A list of phandle and clock specifier pairs as listed
|
||||
in clock-names property.
|
||||
- clock-names:
|
||||
Usage: required
|
||||
Value type: <stringlist>
|
||||
Definition: Should contain the following entries:
|
||||
- "camss_top_ahb"
|
||||
- "ispif_ahb"
|
||||
- "csiphy0_timer"
|
||||
- "csiphy1_timer"
|
||||
- "csi0_ahb"
|
||||
- "csi0"
|
||||
- "csi0_phy"
|
||||
- "csi0_pix"
|
||||
- "csi0_rdi"
|
||||
- "csi1_ahb"
|
||||
- "csi1"
|
||||
- "csi1_phy"
|
||||
- "csi1_pix"
|
||||
- "csi1_rdi"
|
||||
- "camss_ahb"
|
||||
- "camss_vfe_vfe"
|
||||
- "camss_csi_vfe"
|
||||
- "iface"
|
||||
- "bus"
|
||||
- vdda-supply:
|
||||
Usage: required
|
||||
Value type: <phandle>
|
||||
Definition: A phandle to voltage supply for CSI2.
|
||||
- iommus:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: A list of phandle and IOMMU specifier pairs.
|
||||
|
||||
* Nodes
|
||||
|
||||
- ports:
|
||||
Usage: required
|
||||
Definition: As described in video-interfaces.txt in same directory.
|
||||
Properties:
|
||||
- reg:
|
||||
Usage: required
|
||||
Value type: <u32>
|
||||
Definition: Selects CSI2 PHY interface - PHY0 or PHY1.
|
||||
Endpoint node properties:
|
||||
- clock-lanes:
|
||||
Usage: required
|
||||
Value type: <u32>
|
||||
Definition: The physical clock lane index. The value
|
||||
must always be <1> as the physical clock
|
||||
lane is lane 1.
|
||||
- data-lanes:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: An array of physical data lanes indexes.
|
||||
Position of an entry determines the logical
|
||||
lane number, while the value of an entry
|
||||
indicates physical lane index. Lane swapping
|
||||
is supported.
|
||||
|
||||
* An Example
|
||||
|
||||
camss: camss@1b00000 {
|
||||
compatible = "qcom,msm8916-camss";
|
||||
reg = <0x1b0ac00 0x200>,
|
||||
<0x1b00030 0x4>,
|
||||
<0x1b0b000 0x200>,
|
||||
<0x1b00038 0x4>,
|
||||
<0x1b08000 0x100>,
|
||||
<0x1b08400 0x100>,
|
||||
<0x1b0a000 0x500>,
|
||||
<0x1b00020 0x10>,
|
||||
<0x1b10000 0x1000>;
|
||||
reg-names = "csiphy0",
|
||||
"csiphy0_clk_mux",
|
||||
"csiphy1",
|
||||
"csiphy1_clk_mux",
|
||||
"csid0",
|
||||
"csid1",
|
||||
"ispif",
|
||||
"csi_clk_mux",
|
||||
"vfe0";
|
||||
interrupts = <GIC_SPI 78 0>,
|
||||
<GIC_SPI 79 0>,
|
||||
<GIC_SPI 51 0>,
|
||||
<GIC_SPI 52 0>,
|
||||
<GIC_SPI 55 0>,
|
||||
<GIC_SPI 57 0>;
|
||||
interrupt-names = "csiphy0",
|
||||
"csiphy1",
|
||||
"csid0",
|
||||
"csid1",
|
||||
"ispif",
|
||||
"vfe0";
|
||||
power-domains = <&gcc VFE_GDSC>;
|
||||
clocks = <&gcc GCC_CAMSS_TOP_AHB_CLK>,
|
||||
<&gcc GCC_CAMSS_ISPIF_AHB_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI0PHYTIMER_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI1PHYTIMER_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI0_AHB_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI0_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI0PHY_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI0PIX_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI0RDI_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI1_AHB_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI1_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI1PHY_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI1PIX_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI1RDI_CLK>,
|
||||
<&gcc GCC_CAMSS_AHB_CLK>,
|
||||
<&gcc GCC_CAMSS_VFE0_CLK>,
|
||||
<&gcc GCC_CAMSS_CSI_VFE0_CLK>,
|
||||
<&gcc GCC_CAMSS_VFE_AHB_CLK>,
|
||||
<&gcc GCC_CAMSS_VFE_AXI_CLK>;
|
||||
clock-names = "camss_top_ahb",
|
||||
"ispif_ahb",
|
||||
"csiphy0_timer",
|
||||
"csiphy1_timer",
|
||||
"csi0_ahb",
|
||||
"csi0",
|
||||
"csi0_phy",
|
||||
"csi0_pix",
|
||||
"csi0_rdi",
|
||||
"csi1_ahb",
|
||||
"csi1",
|
||||
"csi1_phy",
|
||||
"csi1_pix",
|
||||
"csi1_rdi",
|
||||
"camss_ahb",
|
||||
"camss_vfe_vfe",
|
||||
"camss_csi_vfe",
|
||||
"iface",
|
||||
"bus";
|
||||
vdda-supply = <&pm8916_l2>;
|
||||
iommus = <&apps_iommu 3>;
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
csiphy0_ep: endpoint {
|
||||
clock-lanes = <1>;
|
||||
data-lanes = <0 2>;
|
||||
remote-endpoint = <&ov5645_ep>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
|
@ -40,6 +40,7 @@ To summarize,
|
|||
Required properties of an internal channel:
|
||||
-------------------------------------------
|
||||
- compatible: "renesas,r8a7795-drif" if DRIF controller is a part of R8A7795 SoC.
|
||||
"renesas,r8a7796-drif" if DRIF controller is a part of R8A7796 SoC.
|
||||
"renesas,rcar-gen3-drif" for a generic R-Car Gen3 compatible device.
|
||||
|
||||
When compatible with the generic version, nodes must list the
|
||||
|
|
|
@ -76,6 +76,11 @@ Optional endpoint properties
|
|||
mode horizontal and vertical synchronization signals are provided to the
|
||||
slave device (data source) by the master device (data sink). In the master
|
||||
mode the data source device is also the source of the synchronization signals.
|
||||
- bus-type: data bus type. Possible values are:
|
||||
0 - autodetect based on other properties (MIPI CSI-2 D-PHY, parallel or Bt656)
|
||||
1 - MIPI CSI-2 C-PHY
|
||||
2 - MIPI CSI1
|
||||
3 - CCP2
|
||||
- bus-width: number of data lines actively used, valid for the parallel busses.
|
||||
- data-shift: on the parallel data busses, if bus-width is used to specify the
|
||||
number of data lines, data-shift can be used to specify which data lines are
|
||||
|
@ -112,7 +117,8 @@ Optional endpoint properties
|
|||
should be the combined length of data-lanes and clock-lanes properties.
|
||||
If the lane-polarities property is omitted, the value must be interpreted
|
||||
as 0 (normal). This property is valid for serial busses only.
|
||||
|
||||
- strobe: Whether the clock signal is used as clock (0) or strobe (1). Used
|
||||
with CCP2, for instance.
|
||||
|
||||
Example
|
||||
-------
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
IR Decoder (IRDEC) on ZTE ZX family SoCs
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "zte,zx296718-irdec".
|
||||
- reg: Physical base address and length of IRDEC registers.
|
||||
- interrupts: Interrupt number of IRDEC.
|
||||
|
||||
Exmaples:
|
||||
|
||||
irdec: ir-decoder@111000 {
|
||||
compatible = "zte,zx296718-irdec";
|
||||
reg = <0x111000 0x1000>;
|
||||
interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
|
@ -88,6 +88,7 @@ dlg Dialog Semiconductor
|
|||
dlink D-Link Corporation
|
||||
dmo Data Modul AG
|
||||
domintech Domintech Co., Ltd.
|
||||
dongwoon Dongwoon Anatech
|
||||
dptechnics DPTechnics
|
||||
dragino Dragino Technology Co., Limited
|
||||
ea Embedded Artists AB
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. include:: <isonum.txt>
|
||||
|
||||
.. _cec-drivers:
|
||||
|
||||
#################################
|
||||
CEC driver-specific documentation
|
||||
#################################
|
||||
|
||||
**Copyright** |copy| 2017 : LinuxTV Developers
|
||||
|
||||
This documentation is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
more details.
|
||||
|
||||
For more details see the file COPYING in the source distribution of Linux.
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. class:: toc-title
|
||||
|
||||
Table of Contents
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 5
|
||||
:numbered:
|
||||
|
||||
pulse8-cec
|
|
@ -0,0 +1,11 @@
|
|||
Pulse-Eight CEC Adapter driver
|
||||
==============================
|
||||
|
||||
The pulse8-cec driver implements the following module option:
|
||||
|
||||
``persistent_config``
|
||||
---------------------
|
||||
|
||||
By default this is off, but when set to 1 the driver will store the current
|
||||
settings to the device's internal eeprom and restore it the next time the
|
||||
device is connected to the USB port.
|
|
@ -40,27 +40,17 @@ replace enum dmx_input :c:type:`dmx_input`
|
|||
replace symbol DMX_IN_FRONTEND :c:type:`dmx_input`
|
||||
replace symbol DMX_IN_DVR :c:type:`dmx_input`
|
||||
|
||||
# dmx_source_t symbols
|
||||
replace enum dmx_source :c:type:`dmx_source`
|
||||
replace symbol DMX_SOURCE_FRONT0 :c:type:`dmx_source`
|
||||
replace symbol DMX_SOURCE_FRONT1 :c:type:`dmx_source`
|
||||
replace symbol DMX_SOURCE_FRONT2 :c:type:`dmx_source`
|
||||
replace symbol DMX_SOURCE_FRONT3 :c:type:`dmx_source`
|
||||
replace symbol DMX_SOURCE_DVR0 :c:type:`dmx_source`
|
||||
replace symbol DMX_SOURCE_DVR1 :c:type:`dmx_source`
|
||||
replace symbol DMX_SOURCE_DVR2 :c:type:`dmx_source`
|
||||
replace symbol DMX_SOURCE_DVR3 :c:type:`dmx_source`
|
||||
|
||||
|
||||
# Flags for struct dmx_sct_filter_params
|
||||
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`
|
||||
replace typedef dmx_filter_t :c:type:`dmx_filter`
|
||||
replace typedef dmx_pes_type_t :c:type:`dmx_pes_type`
|
||||
replace typedef dmx_input_t :c:type:`dmx_input`
|
||||
replace typedef dmx_source_t :c:type:`dmx_source`
|
||||
|
||||
ignore symbol DMX_OUT_DECODER
|
||||
ignore symbol DMX_OUT_TAP
|
||||
ignore symbol DMX_OUT_TS_TAP
|
||||
ignore symbol DMX_OUT_TSDEMUX_TAP
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -19,7 +19,9 @@ more details.
|
|||
|
||||
For more details see the file COPYING in the source distribution of Linux.
|
||||
|
||||
.. class:: toc-title
|
||||
.. only:: html
|
||||
|
||||
.. class:: toc-title
|
||||
|
||||
Table of Contents
|
||||
|
||||
|
|
|
@ -25,19 +25,9 @@ ignore define DTV_MAX_COMMAND
|
|||
ignore define MAX_DTV_STATS
|
||||
ignore define DTV_IOCTL_MAX_MSGS
|
||||
|
||||
# Stats enum is documented altogether
|
||||
replace enum fecap_scale_params :ref:`frontend-stat-properties`
|
||||
replace symbol FE_SCALE_COUNTER frontend-stat-properties
|
||||
replace symbol FE_SCALE_DECIBEL frontend-stat-properties
|
||||
replace symbol FE_SCALE_NOT_AVAILABLE frontend-stat-properties
|
||||
replace symbol FE_SCALE_RELATIVE frontend-stat-properties
|
||||
|
||||
# the same reference is used for both get and set ioctls
|
||||
replace ioctl FE_SET_PROPERTY :c:type:`FE_GET_PROPERTY`
|
||||
|
||||
# Ignore struct used only internally at Kernel
|
||||
ignore struct dtv_cmds_h
|
||||
|
||||
# Typedefs that use the enum reference
|
||||
replace typedef fe_sec_voltage_t :c:type:`fe_sec_voltage`
|
||||
|
||||
|
@ -45,3 +35,178 @@ replace typedef fe_sec_voltage_t :c:type:`fe_sec_voltage`
|
|||
replace define FE_TUNE_MODE_ONESHOT :c:func:`FE_SET_FRONTEND_TUNE_MODE`
|
||||
replace define LNA_AUTO dtv-lna
|
||||
replace define NO_STREAM_ID_FILTER dtv-stream-id
|
||||
|
||||
# Those enums are defined at the frontend.h header, and not externally
|
||||
|
||||
ignore symbol FE_IS_STUPID
|
||||
ignore symbol FE_CAN_INVERSION_AUTO
|
||||
ignore symbol FE_CAN_FEC_1_2
|
||||
ignore symbol FE_CAN_FEC_2_3
|
||||
ignore symbol FE_CAN_FEC_3_4
|
||||
ignore symbol FE_CAN_FEC_4_5
|
||||
ignore symbol FE_CAN_FEC_5_6
|
||||
ignore symbol FE_CAN_FEC_6_7
|
||||
ignore symbol FE_CAN_FEC_7_8
|
||||
ignore symbol FE_CAN_FEC_8_9
|
||||
ignore symbol FE_CAN_FEC_AUTO
|
||||
ignore symbol FE_CAN_QPSK
|
||||
ignore symbol FE_CAN_QAM_16
|
||||
ignore symbol FE_CAN_QAM_32
|
||||
ignore symbol FE_CAN_QAM_64
|
||||
ignore symbol FE_CAN_QAM_128
|
||||
ignore symbol FE_CAN_QAM_256
|
||||
ignore symbol FE_CAN_QAM_AUTO
|
||||
ignore symbol FE_CAN_TRANSMISSION_MODE_AUTO
|
||||
ignore symbol FE_CAN_BANDWIDTH_AUTO
|
||||
ignore symbol FE_CAN_GUARD_INTERVAL_AUTO
|
||||
ignore symbol FE_CAN_HIERARCHY_AUTO
|
||||
ignore symbol FE_CAN_8VSB
|
||||
ignore symbol FE_CAN_16VSB
|
||||
ignore symbol FE_HAS_EXTENDED_CAPS
|
||||
ignore symbol FE_CAN_MULTISTREAM
|
||||
ignore symbol FE_CAN_TURBO_FEC
|
||||
ignore symbol FE_CAN_2G_MODULATION
|
||||
ignore symbol FE_NEEDS_BENDING
|
||||
ignore symbol FE_CAN_RECOVER
|
||||
ignore symbol FE_CAN_MUTE_TS
|
||||
|
||||
ignore symbol QPSK
|
||||
ignore symbol QAM_16
|
||||
ignore symbol QAM_32
|
||||
ignore symbol QAM_64
|
||||
ignore symbol QAM_128
|
||||
ignore symbol QAM_256
|
||||
ignore symbol QAM_AUTO
|
||||
ignore symbol VSB_8
|
||||
ignore symbol VSB_16
|
||||
ignore symbol PSK_8
|
||||
ignore symbol APSK_16
|
||||
ignore symbol APSK_32
|
||||
ignore symbol DQPSK
|
||||
ignore symbol QAM_4_NR
|
||||
|
||||
ignore symbol SEC_VOLTAGE_13
|
||||
ignore symbol SEC_VOLTAGE_18
|
||||
ignore symbol SEC_VOLTAGE_OFF
|
||||
|
||||
ignore symbol SEC_TONE_ON
|
||||
ignore symbol SEC_TONE_OFF
|
||||
|
||||
ignore symbol SEC_MINI_A
|
||||
ignore symbol SEC_MINI_B
|
||||
|
||||
ignore symbol FE_NONE
|
||||
ignore symbol FE_HAS_SIGNAL
|
||||
ignore symbol FE_HAS_CARRIER
|
||||
ignore symbol FE_HAS_VITERBI
|
||||
ignore symbol FE_HAS_SYNC
|
||||
ignore symbol FE_HAS_LOCK
|
||||
ignore symbol FE_REINIT
|
||||
ignore symbol FE_TIMEDOUT
|
||||
|
||||
ignore symbol FEC_NONE
|
||||
ignore symbol FEC_1_2
|
||||
ignore symbol FEC_2_3
|
||||
ignore symbol FEC_3_4
|
||||
ignore symbol FEC_4_5
|
||||
ignore symbol FEC_5_6
|
||||
ignore symbol FEC_6_7
|
||||
ignore symbol FEC_7_8
|
||||
ignore symbol FEC_8_9
|
||||
ignore symbol FEC_AUTO
|
||||
ignore symbol FEC_3_5
|
||||
ignore symbol FEC_9_10
|
||||
ignore symbol FEC_2_5
|
||||
|
||||
ignore symbol TRANSMISSION_MODE_AUTO
|
||||
ignore symbol TRANSMISSION_MODE_1K
|
||||
ignore symbol TRANSMISSION_MODE_2K
|
||||
ignore symbol TRANSMISSION_MODE_8K
|
||||
ignore symbol TRANSMISSION_MODE_4K
|
||||
ignore symbol TRANSMISSION_MODE_16K
|
||||
ignore symbol TRANSMISSION_MODE_32K
|
||||
ignore symbol TRANSMISSION_MODE_C1
|
||||
ignore symbol TRANSMISSION_MODE_C3780
|
||||
ignore symbol TRANSMISSION_MODE_2K
|
||||
ignore symbol TRANSMISSION_MODE_8K
|
||||
|
||||
ignore symbol GUARD_INTERVAL_AUTO
|
||||
ignore symbol GUARD_INTERVAL_1_128
|
||||
ignore symbol GUARD_INTERVAL_1_32
|
||||
ignore symbol GUARD_INTERVAL_1_16
|
||||
ignore symbol GUARD_INTERVAL_1_8
|
||||
ignore symbol GUARD_INTERVAL_1_4
|
||||
ignore symbol GUARD_INTERVAL_19_128
|
||||
ignore symbol GUARD_INTERVAL_19_256
|
||||
ignore symbol GUARD_INTERVAL_PN420
|
||||
ignore symbol GUARD_INTERVAL_PN595
|
||||
ignore symbol GUARD_INTERVAL_PN945
|
||||
|
||||
ignore symbol HIERARCHY_NONE
|
||||
ignore symbol HIERARCHY_AUTO
|
||||
ignore symbol HIERARCHY_1
|
||||
ignore symbol HIERARCHY_2
|
||||
ignore symbol HIERARCHY_4
|
||||
|
||||
ignore symbol INTERLEAVING_NONE
|
||||
ignore symbol INTERLEAVING_AUTO
|
||||
ignore symbol INTERLEAVING_240
|
||||
ignore symbol INTERLEAVING_720
|
||||
|
||||
ignore symbol PILOT_ON
|
||||
ignore symbol PILOT_OFF
|
||||
ignore symbol PILOT_AUTO
|
||||
|
||||
ignore symbol ROLLOFF_35
|
||||
ignore symbol ROLLOFF_20
|
||||
ignore symbol ROLLOFF_25
|
||||
ignore symbol ROLLOFF_AUTO
|
||||
|
||||
ignore symbol INVERSION_ON
|
||||
ignore symbol INVERSION_OFF
|
||||
ignore symbol INVERSION_AUTO
|
||||
|
||||
ignore symbol SYS_UNDEFINED
|
||||
ignore symbol SYS_DVBC_ANNEX_A
|
||||
ignore symbol SYS_DVBC_ANNEX_B
|
||||
ignore symbol SYS_DVBC_ANNEX_C
|
||||
ignore symbol SYS_ISDBC
|
||||
ignore symbol SYS_DVBT
|
||||
ignore symbol SYS_DVBT2
|
||||
ignore symbol SYS_ISDBT
|
||||
ignore symbol SYS_ATSC
|
||||
ignore symbol SYS_ATSCMH
|
||||
ignore symbol SYS_DTMB
|
||||
ignore symbol SYS_DVBS
|
||||
ignore symbol SYS_DVBS2
|
||||
ignore symbol SYS_TURBO
|
||||
ignore symbol SYS_ISDBS
|
||||
ignore symbol SYS_DAB
|
||||
ignore symbol SYS_DSS
|
||||
ignore symbol SYS_CMMB
|
||||
ignore symbol SYS_DVBH
|
||||
|
||||
ignore symbol ATSCMH_SCCC_BLK_SEP
|
||||
ignore symbol ATSCMH_SCCC_BLK_COMB
|
||||
ignore symbol ATSCMH_SCCC_BLK_RES
|
||||
|
||||
ignore symbol ATSCMH_SCCC_CODE_HLF
|
||||
ignore symbol ATSCMH_SCCC_CODE_QTR
|
||||
ignore symbol ATSCMH_SCCC_CODE_RES
|
||||
|
||||
ignore symbol ATSCMH_RSFRAME_ENS_PRI
|
||||
ignore symbol ATSCMH_RSFRAME_ENS_SEC
|
||||
|
||||
ignore symbol ATSCMH_RSFRAME_PRI_ONLY
|
||||
ignore symbol ATSCMH_RSFRAME_PRI_SEC
|
||||
ignore symbol ATSCMH_RSFRAME_RES
|
||||
|
||||
ignore symbol ATSCMH_RSCODE_211_187
|
||||
ignore symbol ATSCMH_RSCODE_223_187
|
||||
ignore symbol ATSCMH_RSCODE_235_187
|
||||
ignore symbol ATSCMH_RSCODE_RES
|
||||
|
||||
ignore symbol FE_SCALE_NOT_AVAILABLE
|
||||
ignore symbol FE_SCALE_DECIBEL
|
||||
ignore symbol FE_SCALE_RELATIVE
|
||||
ignore symbol FE_SCALE_COUNTER
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
Linux Media Subsystem Documentation
|
||||
===================================
|
||||
|
||||
Contents:
|
||||
.. only:: html
|
||||
|
||||
.. class:: toc-title
|
||||
|
||||
Table of Contents
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
@ -10,6 +14,7 @@ Contents:
|
|||
media_kapi
|
||||
dvb-drivers/index
|
||||
v4l-drivers/index
|
||||
cec-drivers/index
|
||||
|
||||
.. only:: subproject
|
||||
|
||||
|
|
|
@ -107,6 +107,7 @@ your driver:
|
|||
int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
|
||||
u32 signal_free_time, struct cec_msg *msg);
|
||||
void (*adap_status)(struct cec_adapter *adap, struct seq_file *file);
|
||||
void (*adap_free)(struct cec_adapter *adap);
|
||||
|
||||
/* High-level callbacks */
|
||||
...
|
||||
|
@ -184,6 +185,14 @@ To log the current CEC hardware status:
|
|||
This optional callback can be used to show the status of the CEC hardware.
|
||||
The status is available through debugfs: cat /sys/kernel/debug/cec/cecX/status
|
||||
|
||||
To free any resources when the adapter is deleted:
|
||||
|
||||
.. c:function::
|
||||
void (*adap_free)(struct cec_adapter *adap);
|
||||
|
||||
This optional callback can be used to free any resources that might have been
|
||||
allocated by the driver. It's called from cec_delete_adapter.
|
||||
|
||||
|
||||
Your adapter driver will also have to react to events (typically interrupt
|
||||
driven) by calling into the framework in the following situations:
|
||||
|
@ -336,3 +345,34 @@ log_addrs->num_log_addrs set to 0. The block argument is ignored when
|
|||
unconfiguring. This function will just return if the physical address is
|
||||
invalid. Once the physical address becomes valid, then the framework will
|
||||
attempt to claim these logical addresses.
|
||||
|
||||
CEC Pin framework
|
||||
-----------------
|
||||
|
||||
Most CEC hardware operates on full CEC messages where the software provides
|
||||
the message and the hardware handles the low-level CEC protocol. But some
|
||||
hardware only drives the CEC pin and software has to handle the low-level
|
||||
CEC protocol. The CEC pin framework was created to handle such devices.
|
||||
|
||||
Note that due to the close-to-realtime requirements it can never be guaranteed
|
||||
to work 100%. This framework uses highres timers internally, but if a
|
||||
timer goes off too late by more than 300 microseconds wrong results can
|
||||
occur. In reality it appears to be fairly reliable.
|
||||
|
||||
One advantage of this low-level implementation is that it can be used as
|
||||
a cheap CEC analyser, especially if interrupts can be used to detect
|
||||
CEC pin transitions from low to high or vice versa.
|
||||
|
||||
.. kernel-doc:: include/media/cec-pin.h
|
||||
|
||||
CEC Notifier framework
|
||||
----------------------
|
||||
|
||||
Most drm HDMI implementations have an integrated CEC implementation and no
|
||||
notifier support is needed. But some have independent CEC implementations
|
||||
that have their own driver. This could be an IP block for an SoC or a
|
||||
completely separate chip that deals with the CEC pin. For those cases a
|
||||
drm driver can install a notifier and use the notifier to inform the
|
||||
CEC driver about changes in the physical address.
|
||||
|
||||
.. kernel-doc:: include/media/cec-notifier.h
|
||||
|
|
|
@ -51,6 +51,16 @@ not active. Some transmitters do this automatically but some have to
|
|||
be explicitly programmed to do so, and some are unable to do so
|
||||
altogether due to hardware constraints.
|
||||
|
||||
Stopping the transmitter
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
A transmitter stops sending the stream of images as a result of
|
||||
calling the ``.s_stream()`` callback. Some transmitters may stop the
|
||||
stream at a frame boundary whereas others stop immediately,
|
||||
effectively leaving the current frame unfinished. The receiver driver
|
||||
should not make assumptions either way, but function properly in both
|
||||
cases.
|
||||
|
||||
Receiver drivers
|
||||
----------------
|
||||
|
||||
|
|
|
@ -67,6 +67,8 @@ type).
|
|||
|
||||
The ops argument allows the driver to specify a number of callbacks:
|
||||
|
||||
.. tabularcolumns:: |p{1.5cm}|p{16.0cm}|
|
||||
|
||||
======== ==============================================================
|
||||
Callback Description
|
||||
======== ==============================================================
|
||||
|
|
|
@ -20,7 +20,9 @@ more details.
|
|||
|
||||
For more details see the file COPYING in the source distribution of Linux.
|
||||
|
||||
.. class:: toc-title
|
||||
.. only:: html
|
||||
|
||||
.. class:: toc-title
|
||||
|
||||
Table of Contents
|
||||
|
||||
|
|
|
@ -14,7 +14,9 @@ any later version published by the Free Software Foundation. A copy of
|
|||
the license is included in the chapter entitled "GNU Free Documentation
|
||||
License".
|
||||
|
||||
.. class:: toc-title
|
||||
.. only:: html
|
||||
|
||||
.. class:: toc-title
|
||||
|
||||
Table of Contents
|
||||
|
||||
|
|
|
@ -10,7 +10,10 @@ Part V - Consumer Electronics Control API
|
|||
|
||||
This part describes the CEC: Consumer Electronics Control
|
||||
|
||||
.. class:: toc-title
|
||||
|
||||
.. only:: html
|
||||
|
||||
.. class:: toc-title
|
||||
|
||||
Table of Contents
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ freed. The device configuration remain unchanged.
|
|||
Return Value
|
||||
============
|
||||
|
||||
:c:func:`close()` returns 0 on success. On error, -1 is returned, and
|
||||
:c:func:`close() <cec-close>` returns 0 on success. On error, -1 is returned, and
|
||||
``errno`` is set appropriately. Possible error codes are:
|
||||
|
||||
``EBADF``
|
||||
|
|
|
@ -39,7 +39,7 @@ Arguments
|
|||
Description
|
||||
===========
|
||||
|
||||
The :c:func:`ioctl()` function manipulates cec device parameters. The
|
||||
The :c:func:`ioctl() <cec-ioctl>` function manipulates cec device parameters. The
|
||||
argument ``fd`` must be an open file descriptor.
|
||||
|
||||
The ioctl ``request`` code specifies the cec function to be called. It
|
||||
|
|
|
@ -46,7 +46,7 @@ Arguments
|
|||
Description
|
||||
===========
|
||||
|
||||
To open a cec device applications call :c:func:`open()` with the
|
||||
To open a cec device applications call :c:func:`open() <cec-open>` with the
|
||||
desired device name. The function has no side effects; the device
|
||||
configuration remain unchanged.
|
||||
|
||||
|
@ -58,7 +58,7 @@ EBADF.
|
|||
Return Value
|
||||
============
|
||||
|
||||
:c:func:`open()` returns the new file descriptor on success. On error,
|
||||
:c:func:`open() <cec-open>` returns the new file descriptor on success. On error,
|
||||
-1 is returned, and ``errno`` is set appropriately. Possible error codes
|
||||
include:
|
||||
|
||||
|
|
|
@ -39,10 +39,10 @@ Arguments
|
|||
Description
|
||||
===========
|
||||
|
||||
With the :c:func:`poll()` function applications can wait for CEC
|
||||
With the :c:func:`poll() <cec-poll>` function applications can wait for CEC
|
||||
events.
|
||||
|
||||
On success :c:func:`poll()` returns the number of file descriptors
|
||||
On success :c:func:`poll() <cec-poll>` returns the number of file descriptors
|
||||
that have been selected (that is, file descriptors for which the
|
||||
``revents`` field of the respective struct :c:type:`pollfd`
|
||||
is non-zero). CEC devices set the ``POLLIN`` and ``POLLRDNORM`` flags in
|
||||
|
@ -53,13 +53,13 @@ then the ``POLLPRI`` flag is set. When the function times out it returns
|
|||
a value of zero, on failure it returns -1 and the ``errno`` variable is
|
||||
set appropriately.
|
||||
|
||||
For more details see the :c:func:`poll()` manual page.
|
||||
For more details see the :c:func:`poll() <cec-poll>` manual page.
|
||||
|
||||
|
||||
Return Value
|
||||
============
|
||||
|
||||
On success, :c:func:`poll()` returns the number structures which have
|
||||
On success, :c:func:`poll() <cec-poll>` returns the number structures which have
|
||||
non-zero ``revents`` fields, or zero if the call timed out. On error -1
|
||||
is returned, and the ``errno`` variable is set appropriately:
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ Arguments
|
|||
=========
|
||||
|
||||
``fd``
|
||||
File descriptor returned by :ref:`open() <cec-func-open>`.
|
||||
File descriptor returned by :c:func:`open() <cec-open>`.
|
||||
|
||||
``argp``
|
||||
|
||||
|
@ -121,6 +121,13 @@ returns the information to the application. The ioctl never fails.
|
|||
high. This makes it impossible to use CEC to wake up displays that
|
||||
set the HPD pin low when in standby mode, but keep the CEC bus
|
||||
alive.
|
||||
* .. _`CEC-CAP-MONITOR-PIN`:
|
||||
|
||||
- ``CEC_CAP_MONITOR_PIN``
|
||||
- 0x00000080
|
||||
- The CEC hardware can monitor CEC pin changes from low to high voltage
|
||||
and vice versa. When in pin monitoring mode the application will
|
||||
receive ``CEC_EVENT_PIN_CEC_LOW`` and ``CEC_EVENT_PIN_CEC_HIGH`` events.
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -48,7 +48,9 @@ can only be called by a file descriptor in initiator mode (see :ref:`CEC_S_MODE`
|
|||
the ``EBUSY`` error code will be returned.
|
||||
|
||||
To clear existing logical addresses set ``num_log_addrs`` to 0. All other fields
|
||||
will be ignored in that case. The adapter will go to the unconfigured state.
|
||||
will be ignored in that case. The adapter will go to the unconfigured state and the
|
||||
``cec_version``, ``vendor_id`` and ``osd_name`` fields are all reset to their default
|
||||
values (CEC version 2.0, no vendor ID and an empty OSD name).
|
||||
|
||||
If the physical address is valid (see :ref:`ioctl CEC_ADAP_S_PHYS_ADDR <CEC_ADAP_S_PHYS_ADDR>`),
|
||||
then this ioctl will block until all requested logical
|
||||
|
@ -63,7 +65,7 @@ logical address types are already defined will return with error ``EBUSY``.
|
|||
|
||||
.. c:type:: cec_log_addrs
|
||||
|
||||
.. tabularcolumns:: |p{1.0cm}|p{7.5cm}|p{8.0cm}|
|
||||
.. tabularcolumns:: |p{1.0cm}|p{8.0cm}|p{7.5cm}|
|
||||
|
||||
.. cssclass:: longtable
|
||||
|
||||
|
@ -146,6 +148,9 @@ logical address types are already defined will return with error ``EBUSY``.
|
|||
give the CEC framework more information about the device type, even
|
||||
though the framework won't use it directly in the CEC message.
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{7.8cm}|p{1.0cm}|p{8.7cm}|
|
||||
|
||||
.. _cec-log-addrs-flags:
|
||||
|
||||
.. flat-table:: Flags for struct cec_log_addrs
|
||||
|
@ -173,7 +178,7 @@ logical address types are already defined will return with error ``EBUSY``.
|
|||
to avoid trivial snooping of the keystrokes.
|
||||
* .. _`CEC-LOG-ADDRS-FL-CDC-ONLY`:
|
||||
|
||||
- `CEC_LOG_ADDRS_FL_CDC_ONLY`
|
||||
- ``CEC_LOG_ADDRS_FL_CDC_ONLY``
|
||||
- 4
|
||||
- If this flag is set, then the device is CDC-Only. CDC-Only CEC devices
|
||||
are CEC devices that can only handle CDC messages.
|
||||
|
@ -181,7 +186,7 @@ logical address types are already defined will return with error ``EBUSY``.
|
|||
All other messages are ignored.
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
|
||||
.. tabularcolumns:: |p{7.8cm}|p{1.0cm}|p{8.7cm}|
|
||||
|
||||
.. _cec-versions:
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ Arguments
|
|||
=========
|
||||
|
||||
``fd``
|
||||
File descriptor returned by :ref:`open() <cec-func-open>`.
|
||||
File descriptor returned by :c:func:`open() <cec-open>`.
|
||||
|
||||
``argp``
|
||||
|
||||
|
@ -87,7 +87,7 @@ it is guaranteed that the state did change in between the two events.
|
|||
this is more than enough.
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{1.0cm}|p{4.2cm}|p{2.5cm}|p{8.8cm}|
|
||||
.. tabularcolumns:: |p{1.0cm}|p{4.4cm}|p{2.5cm}|p{9.6cm}|
|
||||
|
||||
.. c:type:: cec_event
|
||||
|
||||
|
@ -98,10 +98,11 @@ it is guaranteed that the state did change in between the two events.
|
|||
|
||||
* - __u64
|
||||
- ``ts``
|
||||
- :cspan:`1` Timestamp of the event in ns.
|
||||
- :cspan:`1`\ Timestamp of the event in ns.
|
||||
|
||||
The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock. To access
|
||||
the same clock from userspace use :c:func:`clock_gettime`.
|
||||
The timestamp has been taken from the ``CLOCK_MONOTONIC`` clock.
|
||||
|
||||
To access the same clock from userspace use :c:func:`clock_gettime`.
|
||||
* - __u32
|
||||
- ``event``
|
||||
- :cspan:`1` The CEC event type, see :ref:`cec-events`.
|
||||
|
@ -146,6 +147,20 @@ it is guaranteed that the state did change in between the two events.
|
|||
- 2
|
||||
- Generated if one or more CEC messages were lost because the
|
||||
application didn't dequeue CEC messages fast enough.
|
||||
* .. _`CEC-EVENT-PIN-CEC-LOW`:
|
||||
|
||||
- ``CEC_EVENT_PIN_CEC_LOW``
|
||||
- 3
|
||||
- Generated if the CEC pin goes from a high voltage to a low voltage.
|
||||
Only applies to adapters that have the ``CEC_CAP_MONITOR_PIN``
|
||||
capability set.
|
||||
* .. _`CEC-EVENT-PIN-CEC-HIGH`:
|
||||
|
||||
- ``CEC_EVENT_PIN_CEC_HIGH``
|
||||
- 4
|
||||
- Generated if the CEC pin goes from a low voltage to a high voltage.
|
||||
Only applies to adapters that have the ``CEC_CAP_MONITOR_PIN``
|
||||
capability set.
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{6.0cm}|p{0.6cm}|p{10.9cm}|
|
||||
|
@ -165,6 +180,12 @@ it is guaranteed that the state did change in between the two events.
|
|||
opened. See the table above for which events do this. This allows
|
||||
applications to learn the initial state of the CEC adapter at
|
||||
open() time.
|
||||
* .. _`CEC-EVENT-FL-DROPPED-EVENTS`:
|
||||
|
||||
- ``CEC_EVENT_FL_DROPPED_EVENTS``
|
||||
- 2
|
||||
- Set if one or more events of the given event type have been dropped.
|
||||
This is an indication that the application cannot keep up.
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -108,6 +108,8 @@ Available follower modes are:
|
|||
|
||||
.. _cec-mode-follower_e:
|
||||
|
||||
.. cssclass:: longtable
|
||||
|
||||
.. flat-table:: Follower Modes
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
@ -149,13 +151,28 @@ Available follower modes are:
|
|||
code. You cannot become a follower if :ref:`CEC_CAP_TRANSMIT <CEC-CAP-TRANSMIT>`
|
||||
is not set or if :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>` was specified,
|
||||
the ``EINVAL`` error code is returned in that case.
|
||||
* .. _`CEC-MODE-MONITOR-PIN`:
|
||||
|
||||
- ``CEC_MODE_MONITOR_PIN``
|
||||
- 0xd0
|
||||
- Put the file descriptor into pin monitoring mode. Can only be used in
|
||||
combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`,
|
||||
otherwise the ``EINVAL`` error code will be returned.
|
||||
This mode requires that the :ref:`CEC_CAP_MONITOR_PIN <CEC-CAP-MONITOR-PIN>`
|
||||
capability is set, otherwise the ``EINVAL`` error code is returned.
|
||||
While in pin monitoring mode this file descriptor can receive the
|
||||
``CEC_EVENT_PIN_CEC_LOW`` and ``CEC_EVENT_PIN_CEC_HIGH`` events to see the
|
||||
low-level CEC pin transitions. This is very useful for debugging.
|
||||
This mode is only allowed if the process has the ``CAP_NET_ADMIN``
|
||||
capability. If that is not set, then the ``EPERM`` error code is returned.
|
||||
* .. _`CEC-MODE-MONITOR`:
|
||||
|
||||
- ``CEC_MODE_MONITOR``
|
||||
- 0xe0
|
||||
- Put the file descriptor into monitor mode. Can only be used in
|
||||
combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`, otherwise EINVAL error
|
||||
code will be returned. In monitor mode all messages this CEC
|
||||
combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`,i
|
||||
otherwise the ``EINVAL`` error code will be returned.
|
||||
In monitor mode all messages this CEC
|
||||
device transmits and all messages it receives (both broadcast
|
||||
messages and directed messages for one its logical addresses) will
|
||||
be reported. This is very useful for debugging. This is only
|
||||
|
@ -191,55 +208,68 @@ Core message processing details:
|
|||
* .. _`CEC-MSG-GET-CEC-VERSION`:
|
||||
|
||||
- ``CEC_MSG_GET_CEC_VERSION``
|
||||
- When in passthrough mode this message has to be handled by
|
||||
userspace, otherwise the core will return the CEC version that was
|
||||
set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`.
|
||||
- The core will return the CEC version that was set with
|
||||
:ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`,
|
||||
except when in passthrough mode. In passthrough mode the core
|
||||
does nothing and this message has to be handled by a follower
|
||||
instead.
|
||||
* .. _`CEC-MSG-GIVE-DEVICE-VENDOR-ID`:
|
||||
|
||||
- ``CEC_MSG_GIVE_DEVICE_VENDOR_ID``
|
||||
- When in passthrough mode this message has to be handled by
|
||||
userspace, otherwise the core will return the vendor ID that was
|
||||
set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`.
|
||||
- The core will return the vendor ID that was set with
|
||||
:ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`,
|
||||
except when in passthrough mode. In passthrough mode the core
|
||||
does nothing and this message has to be handled by a follower
|
||||
instead.
|
||||
* .. _`CEC-MSG-ABORT`:
|
||||
|
||||
- ``CEC_MSG_ABORT``
|
||||
- When in passthrough mode this message has to be handled by
|
||||
userspace, otherwise the core will return a feature refused
|
||||
message as per the specification.
|
||||
- The core will return a Feature Abort message with reason
|
||||
'Feature Refused' as per the specification, except when in
|
||||
passthrough mode. In passthrough mode the core does nothing
|
||||
and this message has to be handled by a follower instead.
|
||||
* .. _`CEC-MSG-GIVE-PHYSICAL-ADDR`:
|
||||
|
||||
- ``CEC_MSG_GIVE_PHYSICAL_ADDR``
|
||||
- When in passthrough mode this message has to be handled by
|
||||
userspace, otherwise the core will report the current physical
|
||||
address.
|
||||
- The core will report the current physical address, except when
|
||||
in passthrough mode. In passthrough mode the core does nothing
|
||||
and this message has to be handled by a follower instead.
|
||||
* .. _`CEC-MSG-GIVE-OSD-NAME`:
|
||||
|
||||
- ``CEC_MSG_GIVE_OSD_NAME``
|
||||
- When in passthrough mode this message has to be handled by
|
||||
userspace, otherwise the core will report the current OSD name as
|
||||
was set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`.
|
||||
- The core will report the current OSD name that was set with
|
||||
:ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`,
|
||||
except when in passthrough mode. In passthrough mode the core
|
||||
does nothing and this message has to be handled by a follower
|
||||
instead.
|
||||
* .. _`CEC-MSG-GIVE-FEATURES`:
|
||||
|
||||
- ``CEC_MSG_GIVE_FEATURES``
|
||||
- When in passthrough mode this message has to be handled by
|
||||
userspace, otherwise the core will report the current features as
|
||||
was set with :ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`
|
||||
or the message is ignored if the CEC version was older than 2.0.
|
||||
- The core will do nothing if the CEC version is older than 2.0,
|
||||
otherwise it will report the current features that were set with
|
||||
:ref:`ioctl CEC_ADAP_S_LOG_ADDRS <CEC_ADAP_S_LOG_ADDRS>`,
|
||||
except when in passthrough mode. In passthrough mode the core
|
||||
does nothing (for any CEC version) and this message has to be handled
|
||||
by a follower instead.
|
||||
* .. _`CEC-MSG-USER-CONTROL-PRESSED`:
|
||||
|
||||
- ``CEC_MSG_USER_CONTROL_PRESSED``
|
||||
- If :ref:`CEC_CAP_RC <CEC-CAP-RC>` is set, then generate a remote control key
|
||||
press. This message is always passed on to userspace.
|
||||
- If :ref:`CEC_CAP_RC <CEC-CAP-RC>` is set and if
|
||||
:ref:`CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU <CEC-LOG-ADDRS-FL-ALLOW-RC-PASSTHRU>`
|
||||
is set, then generate a remote control key
|
||||
press. This message is always passed on to the follower(s).
|
||||
* .. _`CEC-MSG-USER-CONTROL-RELEASED`:
|
||||
|
||||
- ``CEC_MSG_USER_CONTROL_RELEASED``
|
||||
- If :ref:`CEC_CAP_RC <CEC-CAP-RC>` is set, then generate a remote control key
|
||||
release. This message is always passed on to userspace.
|
||||
- If :ref:`CEC_CAP_RC <CEC-CAP-RC>` is set and if
|
||||
:ref:`CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU <CEC-LOG-ADDRS-FL-ALLOW-RC-PASSTHRU>`
|
||||
is set, then generate a remote control key
|
||||
release. This message is always passed on to the follower(s).
|
||||
* .. _`CEC-MSG-REPORT-PHYSICAL-ADDR`:
|
||||
|
||||
- ``CEC_MSG_REPORT_PHYSICAL_ADDR``
|
||||
- The CEC framework will make note of the reported physical address
|
||||
and then just pass the message on to userspace.
|
||||
and then just pass the message on to the follower(s).
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -195,6 +195,8 @@ View On' messages from initiator 0xf ('Unregistered') to destination 0 ('TV').
|
|||
valid if the :ref:`CEC_TX_STATUS_ERROR <CEC-TX-STATUS-ERROR>` status bit is set.
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{6.2cm}|p{1.0cm}|p{10.3cm}|
|
||||
|
||||
.. _cec-msg-flags:
|
||||
|
||||
.. flat-table:: Flags for struct cec_msg
|
||||
|
|
|
@ -44,7 +44,7 @@ Arguments
|
|||
Description
|
||||
-----------
|
||||
|
||||
This ioctl is for DVB devices only. To control a V4L2 decoder use the
|
||||
This ioctl is for Digital TV devices only. To control a V4L2 decoder use the
|
||||
V4L2 ``V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK`` control instead.
|
||||
|
||||
This ioctl call asks the Audio Device to select the requested channel if
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
.. _audio_fclose:
|
||||
|
||||
=================
|
||||
DVB audio close()
|
||||
=================
|
||||
========================
|
||||
Digital TV audio close()
|
||||
========================
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DVB audio close()
|
||||
Digital TV audio close()
|
||||
|
||||
.. attention:: This ioctl is deprecated
|
||||
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
.. _audio_fopen:
|
||||
|
||||
================
|
||||
DVB audio open()
|
||||
================
|
||||
=======================
|
||||
Digital TV audio open()
|
||||
=======================
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DVB audio open()
|
||||
Digital TV audio open()
|
||||
|
||||
.. attention:: This ioctl is deprecated
|
||||
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
.. _audio_fwrite:
|
||||
|
||||
=================
|
||||
DVB audio write()
|
||||
=================
|
||||
=========================
|
||||
Digital TV audio write()
|
||||
=========================
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DVB audio write()
|
||||
Digital TV audio write()
|
||||
|
||||
.. attention:: This ioctl is deprecated
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ Arguments
|
|||
|
||||
- boolean state
|
||||
|
||||
- Tells the DVB subsystem if A/V synchronization shall be ON or OFF.
|
||||
- Tells the Digital TV subsystem if A/V synchronization shall be ON or OFF.
|
||||
|
||||
TRUE: AV-sync ON
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ Arguments
|
|||
- boolean mode
|
||||
|
||||
- Enables or disables the decoding of the current Audio stream in
|
||||
the DVB subsystem.
|
||||
the Digital TV subsystem.
|
||||
|
||||
TRUE: Bypass is disabled
|
||||
|
||||
|
@ -50,8 +50,8 @@ Description
|
|||
|
||||
This ioctl call asks the Audio Device to bypass the Audio decoder and
|
||||
forward the stream without decoding. This mode shall be used if streams
|
||||
that can’t be handled by the DVB system shall be decoded. Dolby
|
||||
DigitalTM streams are automatically forwarded by the DVB subsystem if
|
||||
that can’t be handled by the Digial TV system shall be decoded. Dolby
|
||||
DigitalTM streams are automatically forwarded by the Digital TV subsystem if
|
||||
the hardware can handle it.
|
||||
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ Arguments
|
|||
Description
|
||||
-----------
|
||||
|
||||
This ioctl is for DVB devices only. To control a V4L2 decoder use the
|
||||
This ioctl is for Digital TV devices only. To control a V4L2 decoder use the
|
||||
V4L2 :ref:`VIDIOC_DECODER_CMD` with the
|
||||
``V4L2_DEC_CMD_START_MUTE_AUDIO`` flag instead.
|
||||
|
||||
|
|
|
@ -2,15 +2,16 @@
|
|||
|
||||
.. _dvb_audio:
|
||||
|
||||
################
|
||||
DVB Audio Device
|
||||
################
|
||||
The DVB audio device controls the MPEG2 audio decoder of the DVB
|
||||
hardware. It can be accessed through ``/dev/dvb/adapter?/audio?``. Data
|
||||
#######################
|
||||
Digital TV Audio Device
|
||||
#######################
|
||||
|
||||
The Digital TV audio device controls the MPEG2 audio decoder of the Digital
|
||||
TV hardware. It can be accessed through ``/dev/dvb/adapter?/audio?``. Data
|
||||
types and and ioctl definitions can be accessed by including
|
||||
``linux/dvb/audio.h`` in your application.
|
||||
|
||||
Please note that some DVB cards don’t have their own MPEG decoder, which
|
||||
Please note that some Digital TV cards don’t have their own MPEG decoder, which
|
||||
results in the omission of the audio and video device.
|
||||
|
||||
These ioctls were also used by V4L2 to control MPEG decoders implemented
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. _audio_h:
|
||||
|
||||
*********************
|
||||
DVB Audio Header File
|
||||
*********************
|
||||
|
||||
.. kernel-include:: $BUILDDIR/audio.h.rst
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
.. _ca_fclose:
|
||||
|
||||
==============
|
||||
DVB CA close()
|
||||
==============
|
||||
=====================
|
||||
Digital TV CA close()
|
||||
=====================
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DVB CA close()
|
||||
Digital TV CA close()
|
||||
|
||||
|
||||
Synopsis
|
||||
|
@ -34,13 +34,10 @@ This system call closes a previously opened CA device.
|
|||
Return Value
|
||||
------------
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ``EBADF``
|
||||
|
||||
- fd is not a valid open file descriptor.
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
.. _ca_fopen:
|
||||
|
||||
=============
|
||||
DVB CA open()
|
||||
=============
|
||||
====================
|
||||
Digital TV CA open()
|
||||
====================
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DVB CA open()
|
||||
Digital TV CA open()
|
||||
|
||||
|
||||
Synopsis
|
||||
|
@ -23,25 +23,25 @@ Arguments
|
|||
---------
|
||||
|
||||
``name``
|
||||
Name of specific DVB CA device.
|
||||
Name of specific Digital TV CA device.
|
||||
|
||||
``flags``
|
||||
A bit-wise OR of the following flags:
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 16
|
||||
|
||||
-
|
||||
- O_RDONLY
|
||||
- - ``O_RDONLY``
|
||||
- read-only access
|
||||
|
||||
-
|
||||
- O_RDWR
|
||||
- - ``O_RDWR``
|
||||
- read/write access
|
||||
|
||||
-
|
||||
- O_NONBLOCK
|
||||
- - ``O_NONBLOCK``
|
||||
- open in non-blocking mode
|
||||
(blocking mode is the default)
|
||||
|
||||
|
@ -49,50 +49,29 @@ Arguments
|
|||
Description
|
||||
-----------
|
||||
|
||||
This system call opens a named ca device (e.g. /dev/ost/ca) for
|
||||
subsequent use.
|
||||
This system call opens a named ca device (e.g. ``/dev/dvb/adapter?/ca?``)
|
||||
for subsequent use.
|
||||
|
||||
When an open() call has succeeded, the device will be ready for use. The
|
||||
When an ``open()`` call has succeeded, the device will be ready for use. The
|
||||
significance of blocking or non-blocking mode is described in the
|
||||
documentation for functions where there is a difference. It does not
|
||||
affect the semantics of the open() call itself. A device opened in
|
||||
affect the semantics of the ``open()`` call itself. A device opened in
|
||||
blocking mode can later be put into non-blocking mode (and vice versa)
|
||||
using the F_SETFL command of the fcntl system call. This is a standard
|
||||
system call, documented in the Linux manual page for fcntl. Only one
|
||||
user can open the CA Device in O_RDWR mode. All other attempts to open
|
||||
the device in this mode will fail, and an error code will be returned.
|
||||
using the ``F_SETFL`` command of the ``fcntl`` system call. This is a
|
||||
standard system call, documented in the Linux manual page for fcntl.
|
||||
Only one user can open the CA Device in ``O_RDWR`` mode. All other
|
||||
attempts to open the device in this mode will fail, and an error code
|
||||
will be returned.
|
||||
|
||||
|
||||
Return Value
|
||||
------------
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ``ENODEV``
|
||||
|
||||
- Device driver not loaded/available.
|
||||
|
||||
- .. row 2
|
||||
|
||||
- ``EINTERNAL``
|
||||
|
||||
- Internal error.
|
||||
|
||||
- .. row 3
|
||||
|
||||
- ``EBUSY``
|
||||
|
||||
- Device or resource busy.
|
||||
|
||||
- .. row 4
|
||||
|
||||
- ``EINVAL``
|
||||
|
||||
- Invalid argument.
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -28,43 +28,19 @@ Arguments
|
|||
``caps``
|
||||
Pointer to struct :c:type:`ca_caps`.
|
||||
|
||||
.. c:type:: struct ca_caps
|
||||
|
||||
.. flat-table:: struct ca_caps
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
-
|
||||
- type
|
||||
- name
|
||||
- description
|
||||
-
|
||||
- unsigned int
|
||||
- slot_num
|
||||
- total number of CA card and module slots
|
||||
-
|
||||
- unsigned int
|
||||
- slot_type
|
||||
- bitmask with all supported slot types
|
||||
-
|
||||
- unsigned int
|
||||
- descr_num
|
||||
- total number of descrambler slots (keys)
|
||||
-
|
||||
- unsigned int
|
||||
- descr_type
|
||||
- bit mask with all supported descr types
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. note:: This ioctl is undocumented. Documentation is welcome.
|
||||
|
||||
Queries the Kernel for information about the available CA and descrambler
|
||||
slots, and their types.
|
||||
|
||||
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_caps` is filled.
|
||||
|
||||
On error, -1 is returned and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -27,37 +27,16 @@ Arguments
|
|||
``desc``
|
||||
Pointer to struct :c:type:`ca_descr_info`.
|
||||
|
||||
.. c:type:: struct ca_descr_info
|
||||
|
||||
.. flat-table:: struct ca_descr_info
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
-
|
||||
- type
|
||||
- name
|
||||
- description
|
||||
|
||||
-
|
||||
- unsigned int
|
||||
- num
|
||||
- number of available descramblers (keys)
|
||||
-
|
||||
- unsigned int
|
||||
- type
|
||||
- type of supported scrambling system. Valid values are:
|
||||
``CA_ECD``, ``CA_NDS`` and ``CA_DSS``.
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. note:: This ioctl is undocumented. Documentation is welcome.
|
||||
|
||||
Returns information about all descrambler slots.
|
||||
|
||||
Return Value
|
||||
------------
|
||||
|
||||
On success 0 is returned, on error -1 and the ``errno`` variable is set
|
||||
On success 0 is returned, and :c:type:`ca_descr_info` is filled.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately. The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -28,47 +28,25 @@ Arguments
|
|||
``msg``
|
||||
Pointer to struct :c:type:`ca_msg`.
|
||||
|
||||
|
||||
.. c:type:: struct ca_msg
|
||||
|
||||
.. flat-table:: struct ca_msg
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
-
|
||||
- type
|
||||
- name
|
||||
- description
|
||||
-
|
||||
- unsigned int
|
||||
- index
|
||||
-
|
||||
|
||||
-
|
||||
- unsigned int
|
||||
- type
|
||||
-
|
||||
|
||||
-
|
||||
- unsigned int
|
||||
- length
|
||||
-
|
||||
|
||||
-
|
||||
- unsigned char
|
||||
- msg[256]
|
||||
-
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. note:: This ioctl is undocumented. Documentation is welcome.
|
||||
Receives a message via a CI CA module.
|
||||
|
||||
.. note::
|
||||
|
||||
Please notice that, on most drivers, this is done by reading from
|
||||
the /dev/adapter?/ca? device node.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -26,100 +26,32 @@ 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.
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 16
|
||||
|
||||
- - ``ENODEV``
|
||||
- the slot is not available.
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -28,12 +28,17 @@ 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
|
||||
------------
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -32,12 +32,20 @@ Arguments
|
|||
Description
|
||||
-----------
|
||||
|
||||
.. note:: This ioctl is undocumented. Documentation is welcome.
|
||||
Sends a message via a CI CA module.
|
||||
|
||||
.. note::
|
||||
|
||||
Please notice that, on most drivers, this is done by writing
|
||||
to the /dev/adapter?/ca? device node.
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -28,16 +28,19 @@ Arguments
|
|||
``msg``
|
||||
Pointer to struct :c:type:`ca_descr`.
|
||||
|
||||
|
||||
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
|
||||
------------
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -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.
|
|
@ -2,14 +2,20 @@
|
|||
|
||||
.. _dvb_ca:
|
||||
|
||||
#############
|
||||
DVB CA Device
|
||||
#############
|
||||
The DVB CA device controls the conditional access hardware. It can be
|
||||
accessed through ``/dev/dvb/adapter?/ca?``. Data types and and ioctl
|
||||
####################
|
||||
Digital TV CA Device
|
||||
####################
|
||||
|
||||
The Digital TV CA device controls the conditional access hardware. It
|
||||
can be accessed through ``/dev/dvb/adapter?/ca?``. Data types and and ioctl
|
||||
definitions can be accessed by including ``linux/dvb/ca.h`` in your
|
||||
application.
|
||||
|
||||
.. note::
|
||||
|
||||
There are three ioctls at this API that aren't documented:
|
||||
:ref:`CA_GET_MSG`, :ref:`CA_SEND_MSG` and :ref:`CA_SET_DESCR`.
|
||||
Documentation for them are welcome.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
|
|
@ -6,105 +6,4 @@
|
|||
CA Data Types
|
||||
*************
|
||||
|
||||
|
||||
.. c:type:: ca_slot_info
|
||||
|
||||
ca_slot_info_t
|
||||
==============
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef struct ca_slot_info {
|
||||
int num; /* slot number */
|
||||
|
||||
int type; /* CA interface this slot supports */
|
||||
#define CA_CI 1 /* CI high level interface */
|
||||
#define CA_CI_LINK 2 /* CI link layer level interface */
|
||||
#define CA_CI_PHYS 4 /* CI physical layer level interface */
|
||||
#define CA_DESCR 8 /* built-in descrambler */
|
||||
#define CA_SC 128 /* simple smart card interface */
|
||||
|
||||
unsigned int flags;
|
||||
#define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */
|
||||
#define CA_CI_MODULE_READY 2
|
||||
} ca_slot_info_t;
|
||||
|
||||
|
||||
.. c:type:: ca_descr_info
|
||||
|
||||
ca_descr_info_t
|
||||
===============
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef struct ca_descr_info {
|
||||
unsigned int num; /* number of available descramblers (keys) */
|
||||
unsigned int type; /* type of supported scrambling system */
|
||||
#define CA_ECD 1
|
||||
#define CA_NDS 2
|
||||
#define CA_DSS 4
|
||||
} ca_descr_info_t;
|
||||
|
||||
|
||||
.. c:type:: ca_caps
|
||||
|
||||
ca_caps_t
|
||||
=========
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef struct ca_caps {
|
||||
unsigned int slot_num; /* total number of CA card and module slots */
|
||||
unsigned int slot_type; /* OR of all supported types */
|
||||
unsigned int descr_num; /* total number of descrambler slots (keys) */
|
||||
unsigned int descr_type;/* OR of all supported types */
|
||||
} ca_cap_t;
|
||||
|
||||
|
||||
.. c:type:: ca_msg
|
||||
|
||||
ca_msg_t
|
||||
========
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
/* a message to/from a CI-CAM */
|
||||
typedef struct ca_msg {
|
||||
unsigned int index;
|
||||
unsigned int type;
|
||||
unsigned int length;
|
||||
unsigned char msg[256];
|
||||
} ca_msg_t;
|
||||
|
||||
|
||||
.. c:type:: ca_descr
|
||||
|
||||
ca_descr_t
|
||||
==========
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef struct ca_descr {
|
||||
unsigned int index;
|
||||
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;
|
||||
.. kernel-doc:: include/uapi/linux/dvb/ca.h
|
||||
|
|
|
@ -18,4 +18,3 @@ CA Function Calls
|
|||
ca-get-msg
|
||||
ca-send-msg
|
||||
ca-set-descr
|
||||
ca-set-pid
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. _ca_h:
|
||||
|
||||
**********************************
|
||||
DVB Conditional Access Header File
|
||||
**********************************
|
||||
|
||||
.. kernel-include:: $BUILDDIR/ca.h.rst
|
|
@ -2,10 +2,15 @@
|
|||
|
||||
.. _dvb_demux:
|
||||
|
||||
################
|
||||
DVB Demux Device
|
||||
################
|
||||
The DVB demux device controls the filters of the DVB hardware/software.
|
||||
#######################
|
||||
Digital TV Demux Device
|
||||
#######################
|
||||
|
||||
The Digital TV demux device controls the MPEG-TS filters for the
|
||||
digital TV. If the driver and hardware supports, those filters are
|
||||
implemented at the hardware. Otherwise, the Kernel provides a software
|
||||
emulation.
|
||||
|
||||
It can be accessed through ``/dev/adapter?/demux?``. Data types and and
|
||||
ioctl definitions can be accessed by including ``linux/dvb/dmx.h`` in
|
||||
your application.
|
||||
|
|
|
@ -33,13 +33,17 @@ Description
|
|||
-----------
|
||||
|
||||
This ioctl call allows to add multiple PIDs to a transport stream filter
|
||||
previously set up with DMX_SET_PES_FILTER and output equal to
|
||||
DMX_OUT_TSDEMUX_TAP.
|
||||
previously set up with :ref:`DMX_SET_PES_FILTER` and output equal to
|
||||
:c:type:`DMX_OUT_TSDEMUX_TAP <dmx_output>`.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
.. _dmx_fclose:
|
||||
|
||||
=================
|
||||
DVB demux close()
|
||||
=================
|
||||
========================
|
||||
Digital TV demux close()
|
||||
========================
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DVB demux close()
|
||||
Digital TV demux close()
|
||||
|
||||
|
||||
Synopsis
|
||||
|
@ -23,25 +23,23 @@ Arguments
|
|||
---------
|
||||
|
||||
``fd``
|
||||
File descriptor returned by a previous call to :c:func:`open() <dvb-ca-open>`.
|
||||
File descriptor returned by a previous call to
|
||||
:c:func:`open() <dvb-dmx-open>`.
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
This system call deactivates and deallocates a filter that was
|
||||
previously allocated via the open() call.
|
||||
previously allocated via the :c:func:`open() <dvb-dmx-open>` call.
|
||||
|
||||
|
||||
Return Value
|
||||
------------
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
On success 0 is returned.
|
||||
|
||||
On error, -1 is returned and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ``EBADF``
|
||||
|
||||
- fd is not a valid open file descriptor.
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
.. _dmx_fopen:
|
||||
|
||||
================
|
||||
DVB demux open()
|
||||
================
|
||||
=======================
|
||||
Digital TV demux open()
|
||||
=======================
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DVB demux open()
|
||||
Digital TV demux open()
|
||||
|
||||
|
||||
Synopsis
|
||||
|
@ -22,25 +22,28 @@ Arguments
|
|||
---------
|
||||
|
||||
``name``
|
||||
Name of specific DVB demux device.
|
||||
Name of specific Digital TV demux device.
|
||||
|
||||
``flags``
|
||||
A bit-wise OR of the following flags:
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 16
|
||||
|
||||
-
|
||||
- O_RDONLY
|
||||
- ``O_RDONLY``
|
||||
- read-only access
|
||||
|
||||
-
|
||||
- O_RDWR
|
||||
- ``O_RDWR``
|
||||
- read/write access
|
||||
|
||||
-
|
||||
- O_NONBLOCK
|
||||
- ``O_NONBLOCK``
|
||||
- open in non-blocking mode
|
||||
(blocking mode is the default)
|
||||
|
||||
|
@ -48,52 +51,41 @@ Arguments
|
|||
Description
|
||||
-----------
|
||||
|
||||
This system call, used with a device name of /dev/dvb/adapter0/demux0,
|
||||
This system call, used with a device name of ``/dev/dvb/adapter?/demux?``,
|
||||
allocates a new filter and returns a handle which can be used for
|
||||
subsequent control of that filter. This call has to be made for each
|
||||
filter to be used, i.e. every returned file descriptor is a reference to
|
||||
a single filter. /dev/dvb/adapter0/dvr0 is a logical device to be used
|
||||
a single filter. ``/dev/dvb/adapter?/dvr?`` is a logical device to be used
|
||||
for retrieving Transport Streams for digital video recording. When
|
||||
reading from this device a transport stream containing the packets from
|
||||
all PES filters set in the corresponding demux device
|
||||
(/dev/dvb/adapter0/demux0) having the output set to DMX_OUT_TS_TAP. A
|
||||
recorded Transport Stream is replayed by writing to this device.
|
||||
(``/dev/dvb/adapter?/demux?``) having the output set to ``DMX_OUT_TS_TAP``.
|
||||
A recorded Transport Stream is replayed by writing to this device.
|
||||
|
||||
The significance of blocking or non-blocking mode is described in the
|
||||
documentation for functions where there is a difference. It does not
|
||||
affect the semantics of the open() call itself. A device opened in
|
||||
blocking mode can later be put into non-blocking mode (and vice versa)
|
||||
using the F_SETFL command of the fcntl system call.
|
||||
affect the semantics of the ``open()`` call itself. A device opened
|
||||
in blocking mode can later be put into non-blocking mode (and vice versa)
|
||||
using the ``F_SETFL`` command of the fcntl system call.
|
||||
|
||||
|
||||
Return Value
|
||||
------------
|
||||
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 16
|
||||
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ``ENODEV``
|
||||
|
||||
- Device driver not loaded/available.
|
||||
|
||||
- .. row 2
|
||||
|
||||
- ``EINVAL``
|
||||
|
||||
- Invalid argument.
|
||||
|
||||
- .. row 3
|
||||
|
||||
- ``EMFILE``
|
||||
|
||||
- - ``EMFILE``
|
||||
- “Too many open files”, i.e. no more filters available.
|
||||
|
||||
- .. row 4
|
||||
|
||||
- ``ENOMEM``
|
||||
|
||||
- The driver failed to allocate enough memory.
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
.. _dmx_fread:
|
||||
|
||||
================
|
||||
DVB demux read()
|
||||
================
|
||||
=======================
|
||||
Digital TV demux read()
|
||||
=======================
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DVB demux read()
|
||||
Digital TV demux read()
|
||||
|
||||
|
||||
Synopsis
|
||||
|
@ -33,62 +33,48 @@ Arguments
|
|||
Description
|
||||
-----------
|
||||
|
||||
This system call returns filtered data, which might be section or PES
|
||||
data. The filtered data is transferred from the driver’s internal
|
||||
circular buffer to buf. The maximum amount of data to be transferred is
|
||||
implied by count.
|
||||
This system call returns filtered data, which might be section or Packetized
|
||||
Elementary Stream (PES) data. The filtered data is transferred from
|
||||
the driver’s internal circular buffer to ``buf``. The maximum amount of data
|
||||
to be transferred is implied by count.
|
||||
|
||||
.. note::
|
||||
|
||||
if a section filter created with
|
||||
:c:type:`DMX_CHECK_CRC <dmx_sct_filter_params>` flag set,
|
||||
data that fails on CRC check will be silently ignored.
|
||||
|
||||
|
||||
Return Value
|
||||
------------
|
||||
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 16
|
||||
|
||||
- - ``EWOULDBLOCK``
|
||||
- No data to return and ``O_NONBLOCK`` was specified.
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ``EWOULDBLOCK``
|
||||
|
||||
- No data to return and O_NONBLOCK was specified.
|
||||
|
||||
- .. row 2
|
||||
|
||||
- ``EBADF``
|
||||
|
||||
- fd is not a valid open file descriptor.
|
||||
|
||||
- .. row 3
|
||||
|
||||
- ``ECRC``
|
||||
|
||||
- Last section had a CRC error - no data returned. The buffer is
|
||||
flushed.
|
||||
|
||||
- .. row 4
|
||||
|
||||
- ``EOVERFLOW``
|
||||
|
||||
-
|
||||
|
||||
- .. row 5
|
||||
|
||||
-
|
||||
- - ``EOVERFLOW``
|
||||
- The filtered data was not read from the buffer in due time,
|
||||
resulting in non-read data being lost. The buffer is flushed.
|
||||
|
||||
- .. row 6
|
||||
- - ``ETIMEDOUT``
|
||||
- The section was not loaded within the stated timeout period.
|
||||
See ioctl :ref:`DMX_SET_FILTER` for how to set a timeout.
|
||||
|
||||
- ``ETIMEDOUT``
|
||||
- - ``EFAULT``
|
||||
- The driver failed to write to the callers buffer due to an
|
||||
invalid \*buf pointer.
|
||||
|
||||
- The section was not loaded within the stated timeout period. See
|
||||
ioctl DMX_SET_FILTER for how to set a timeout.
|
||||
|
||||
- .. row 7
|
||||
|
||||
- ``EFAULT``
|
||||
|
||||
- The driver failed to write to the callers buffer due to an invalid
|
||||
\*buf pointer.
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
.. _dmx_fwrite:
|
||||
|
||||
=================
|
||||
DVB demux write()
|
||||
=================
|
||||
========================
|
||||
Digital TV demux write()
|
||||
========================
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DVB demux write()
|
||||
Digital TV demux write()
|
||||
|
||||
|
||||
Synopsis
|
||||
|
@ -34,42 +34,39 @@ Description
|
|||
-----------
|
||||
|
||||
This system call is only provided by the logical device
|
||||
/dev/dvb/adapter0/dvr0, associated with the physical demux device that
|
||||
``/dev/dvb/adapter?/dvr?``, associated with the physical demux device that
|
||||
provides the actual DVR functionality. It is used for replay of a
|
||||
digitally recorded Transport Stream. Matching filters have to be defined
|
||||
in the corresponding physical demux device, /dev/dvb/adapter0/demux0.
|
||||
in the corresponding physical demux device, ``/dev/dvb/adapter?/demux?``.
|
||||
The amount of data to be transferred is implied by count.
|
||||
|
||||
|
||||
Return Value
|
||||
------------
|
||||
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 16
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ``EWOULDBLOCK``
|
||||
|
||||
- No data was written. This might happen if O_NONBLOCK was
|
||||
- - ``EWOULDBLOCK``
|
||||
- No data was written. This might happen if ``O_NONBLOCK`` was
|
||||
specified and there is no more buffer space available (if
|
||||
O_NONBLOCK is not specified the function will block until buffer
|
||||
``O_NONBLOCK`` is not specified the function will block until buffer
|
||||
space is available).
|
||||
|
||||
- .. row 2
|
||||
|
||||
- ``EBUSY``
|
||||
|
||||
- - ``EBUSY``
|
||||
- This error code indicates that there are conflicting requests. The
|
||||
corresponding demux device is setup to receive data from the
|
||||
front- end. Make sure that these filters are stopped and that the
|
||||
filters with input set to DMX_IN_DVR are started.
|
||||
filters with input set to ``DMX_IN_DVR`` are started.
|
||||
|
||||
- .. row 3
|
||||
|
||||
- ``EBADF``
|
||||
|
||||
- fd is not a valid open file descriptor.
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. _DMX_GET_CAPS:
|
||||
|
||||
============
|
||||
DMX_GET_CAPS
|
||||
============
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DMX_GET_CAPS
|
||||
|
||||
|
||||
Synopsis
|
||||
--------
|
||||
|
||||
.. c:function:: int ioctl(fd, DMX_GET_CAPS, struct dmx_caps *caps)
|
||||
:name: DMX_GET_CAPS
|
||||
|
||||
Arguments
|
||||
---------
|
||||
|
||||
``fd``
|
||||
File descriptor returned by :c:func:`open() <dvb-dmx-open>`.
|
||||
|
||||
``caps``
|
||||
Pointer to struct :c:type:`dmx_caps`
|
||||
|
||||
|
||||
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.
|
|
@ -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.
|
|
@ -25,18 +25,40 @@ Arguments
|
|||
File descriptor returned by :c:func:`open() <dvb-dmx-open>`.
|
||||
|
||||
``pids``
|
||||
Undocumented.
|
||||
Array used to store 5 Program IDs.
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
.. note:: This ioctl is undocumented. Documentation is welcome.
|
||||
This ioctl allows to query a DVB device to return the first PID used
|
||||
by audio, video, textext, subtitle and PCR programs on a given service.
|
||||
They're stored as:
|
||||
|
||||
======================= ======== =======================================
|
||||
PID element position content
|
||||
======================= ======== =======================================
|
||||
pids[DMX_PES_AUDIO] 0 first audio PID
|
||||
pids[DMX_PES_VIDEO] 1 first video PID
|
||||
pids[DMX_PES_TELETEXT] 2 first teletext PID
|
||||
pids[DMX_PES_SUBTITLE] 3 first subtitle PID
|
||||
pids[DMX_PES_PCR] 4 first Program Clock Reference PID
|
||||
======================= ======== =======================================
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
A value equal to 0xffff means that the PID was not filled by the
|
||||
Kernel.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -25,34 +25,42 @@ Arguments
|
|||
File descriptor returned by :c:func:`open() <dvb-dmx-open>`.
|
||||
|
||||
``stc``
|
||||
Pointer to the location where the stc is to be stored.
|
||||
Pointer to :c:type:`dmx_stc` where the stc data is to be stored.
|
||||
|
||||
|
||||
Description
|
||||
-----------
|
||||
|
||||
This ioctl call returns the current value of the system time counter
|
||||
(which is driven by a PES filter of type DMX_PES_PCR). Some hardware
|
||||
supports more than one STC, so you must specify which one by setting the
|
||||
num field of stc before the ioctl (range 0...n). The result is returned
|
||||
in form of a ratio with a 64 bit numerator and a 32 bit denominator, so
|
||||
the real 90kHz STC value is stc->stc / stc->base .
|
||||
(which is driven by a PES filter of type :c:type:`DMX_PES_PCR <dmx_ts_pes>`).
|
||||
Some hardware supports more than one STC, so you must specify which one by
|
||||
setting the :c:type:`num <dmx_stc>` field of stc before the ioctl (range 0...n).
|
||||
The result is returned in form of a ratio with a 64 bit numerator
|
||||
and a 32 bit denominator, so the real 90kHz STC value is
|
||||
``stc->stc / stc->base``.
|
||||
|
||||
|
||||
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.
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
||||
:widths: 1 16
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ``EINVAL``
|
||||
|
||||
- Invalid stc number.
|
||||
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -34,13 +34,17 @@ Description
|
|||
|
||||
This ioctl call allows to remove a PID when multiple PIDs are set on a
|
||||
transport stream filter, e. g. a filter previously set up with output
|
||||
equal to DMX_OUT_TSDEMUX_TAP, created via either
|
||||
DMX_SET_PES_FILTER or DMX_ADD_PID.
|
||||
equal to :c:type:`DMX_OUT_TSDEMUX_TAP <dmx_output>`, created via either
|
||||
:ref:`DMX_SET_PES_FILTER` or :ref:`DMX_ADD_PID`.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -33,13 +33,18 @@ Description
|
|||
|
||||
This ioctl call is used to set the size of the circular buffer used for
|
||||
filtered data. The default size is two maximum sized sections, i.e. if
|
||||
this function is not called a buffer size of 2 \* 4096 bytes will be
|
||||
this function is not called a buffer size of ``2 * 4096`` bytes will be
|
||||
used.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -40,13 +40,18 @@ state whether a section should be CRC-checked, whether the filter should
|
|||
be a ”one-shot” filter, i.e. if the filtering operation should be
|
||||
stopped after the first section is received, and whether the filtering
|
||||
operation should be started immediately (without waiting for a
|
||||
DMX_START ioctl call). If a filter was previously set-up, this filter
|
||||
will be canceled, and the receive buffer will be flushed.
|
||||
:ref:`DMX_START` ioctl call). If a filter was previously set-up, this
|
||||
filter will be canceled, and the receive buffer will be flushed.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -42,15 +42,17 @@ capability is supported.
|
|||
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.
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 16
|
||||
|
||||
|
||||
- .. row 1
|
||||
|
@ -61,3 +63,7 @@ appropriately. The generic error codes are described at the
|
|||
There are active filters filtering data from another input source.
|
||||
Make sure that these filters are stopped before starting this
|
||||
filter.
|
||||
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. _DMX_SET_SOURCE:
|
||||
|
||||
==============
|
||||
DMX_SET_SOURCE
|
||||
==============
|
||||
|
||||
Name
|
||||
----
|
||||
|
||||
DMX_SET_SOURCE
|
||||
|
||||
|
||||
Synopsis
|
||||
--------
|
||||
|
||||
.. c:function:: int ioctl(fd, DMX_SET_SOURCE, struct dmx_source *src)
|
||||
:name: DMX_SET_SOURCE
|
||||
|
||||
|
||||
Arguments
|
||||
---------
|
||||
|
||||
|
||||
``fd``
|
||||
File descriptor returned by :c:func:`open() <dvb-dmx-open>`.
|
||||
|
||||
``src``
|
||||
Undocumented.
|
||||
|
||||
|
||||
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.
|
|
@ -29,15 +29,16 @@ Description
|
|||
-----------
|
||||
|
||||
This ioctl call is used to start the actual filtering operation defined
|
||||
via the ioctl calls DMX_SET_FILTER or DMX_SET_PES_FILTER.
|
||||
via the ioctl calls :ref:`DMX_SET_FILTER` or :ref:`DMX_SET_PES_FILTER`.
|
||||
|
||||
|
||||
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.
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
|
||||
|
||||
|
@ -51,7 +52,7 @@ appropriately. The generic error codes are described at the
|
|||
- ``EINVAL``
|
||||
|
||||
- Invalid argument, i.e. no filtering parameters provided via the
|
||||
DMX_SET_FILTER or DMX_SET_PES_FILTER functions.
|
||||
:ref:`DMX_SET_FILTER` or :ref:`DMX_SET_PES_FILTER` ioctls.
|
||||
|
||||
- .. row 2
|
||||
|
||||
|
@ -61,3 +62,7 @@ appropriately. The generic error codes are described at the
|
|||
There are active filters filtering data from another input source.
|
||||
Make sure that these filters are stopped before starting this
|
||||
filter.
|
||||
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -29,13 +29,17 @@ Description
|
|||
-----------
|
||||
|
||||
This ioctl call is used to stop the actual filtering operation defined
|
||||
via the ioctl calls DMX_SET_FILTER or DMX_SET_PES_FILTER and
|
||||
started via the DMX_START command.
|
||||
via the ioctl calls :ref:`DMX_SET_FILTER` or :ref:`DMX_SET_PES_FILTER` and
|
||||
started via the :ref:`DMX_START` command.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
The generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -18,10 +18,7 @@ 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-get-caps
|
||||
dmx-set-source
|
||||
dmx-add-pid
|
||||
dmx-remove-pid
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. _dmx_h:
|
||||
|
||||
*********************
|
||||
DVB Demux Header File
|
||||
*********************
|
||||
|
||||
.. kernel-include:: $BUILDDIR/dmx.h.rst
|
|
@ -6,227 +6,4 @@
|
|||
Demux Data Types
|
||||
****************
|
||||
|
||||
Output for the demux
|
||||
====================
|
||||
|
||||
.. c:type:: dmx_output
|
||||
|
||||
.. tabularcolumns:: |p{5.0cm}|p{12.5cm}|
|
||||
|
||||
.. flat-table:: enum dmx_output
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ID
|
||||
|
||||
- Description
|
||||
|
||||
- .. row 2
|
||||
|
||||
- .. _DMX-OUT-DECODER:
|
||||
|
||||
DMX_OUT_DECODER
|
||||
|
||||
- Streaming directly to decoder.
|
||||
|
||||
- .. row 3
|
||||
|
||||
- .. _DMX-OUT-TAP:
|
||||
|
||||
DMX_OUT_TAP
|
||||
|
||||
- Output going to a memory buffer (to be retrieved via the read
|
||||
command). Delivers the stream output to the demux device on which
|
||||
the ioctl is called.
|
||||
|
||||
- .. row 4
|
||||
|
||||
- .. _DMX-OUT-TS-TAP:
|
||||
|
||||
DMX_OUT_TS_TAP
|
||||
|
||||
- Output multiplexed into a new TS (to be retrieved by reading from
|
||||
the logical DVR device). Routes output to the logical DVR device
|
||||
``/dev/dvb/adapter?/dvr?``, which delivers a TS multiplexed from
|
||||
all filters for which ``DMX_OUT_TS_TAP`` was specified.
|
||||
|
||||
- .. row 5
|
||||
|
||||
- .. _DMX-OUT-TSDEMUX-TAP:
|
||||
|
||||
DMX_OUT_TSDEMUX_TAP
|
||||
|
||||
- Like :ref:`DMX_OUT_TS_TAP <DMX-OUT-TS-TAP>` but retrieved
|
||||
from the DMX device.
|
||||
|
||||
|
||||
dmx_input_t
|
||||
===========
|
||||
|
||||
.. c:type:: dmx_input
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DMX_IN_FRONTEND, /* Input from a front-end device. */
|
||||
DMX_IN_DVR /* Input from the logical DVR device. */
|
||||
} dmx_input_t;
|
||||
|
||||
|
||||
dmx_pes_type_t
|
||||
==============
|
||||
|
||||
.. c:type:: dmx_pes_type
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DMX_PES_AUDIO0,
|
||||
DMX_PES_VIDEO0,
|
||||
DMX_PES_TELETEXT0,
|
||||
DMX_PES_SUBTITLE0,
|
||||
DMX_PES_PCR0,
|
||||
|
||||
DMX_PES_AUDIO1,
|
||||
DMX_PES_VIDEO1,
|
||||
DMX_PES_TELETEXT1,
|
||||
DMX_PES_SUBTITLE1,
|
||||
DMX_PES_PCR1,
|
||||
|
||||
DMX_PES_AUDIO2,
|
||||
DMX_PES_VIDEO2,
|
||||
DMX_PES_TELETEXT2,
|
||||
DMX_PES_SUBTITLE2,
|
||||
DMX_PES_PCR2,
|
||||
|
||||
DMX_PES_AUDIO3,
|
||||
DMX_PES_VIDEO3,
|
||||
DMX_PES_TELETEXT3,
|
||||
DMX_PES_SUBTITLE3,
|
||||
DMX_PES_PCR3,
|
||||
|
||||
DMX_PES_OTHER
|
||||
} dmx_pes_type_t;
|
||||
|
||||
|
||||
struct dmx_filter
|
||||
=================
|
||||
|
||||
.. c:type:: dmx_filter
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef struct dmx_filter
|
||||
{
|
||||
__u8 filter[DMX_FILTER_SIZE];
|
||||
__u8 mask[DMX_FILTER_SIZE];
|
||||
__u8 mode[DMX_FILTER_SIZE];
|
||||
} dmx_filter_t;
|
||||
|
||||
|
||||
.. c:type:: dmx_sct_filter_params
|
||||
|
||||
struct dmx_sct_filter_params
|
||||
============================
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
struct dmx_sct_filter_params
|
||||
{
|
||||
__u16 pid;
|
||||
dmx_filter_t filter;
|
||||
__u32 timeout;
|
||||
__u32 flags;
|
||||
#define DMX_CHECK_CRC 1
|
||||
#define DMX_ONESHOT 2
|
||||
#define DMX_IMMEDIATE_START 4
|
||||
#define DMX_KERNEL_CLIENT 0x8000
|
||||
};
|
||||
|
||||
|
||||
struct dmx_pes_filter_params
|
||||
============================
|
||||
|
||||
.. c:type:: dmx_pes_filter_params
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
struct dmx_pes_filter_params
|
||||
{
|
||||
__u16 pid;
|
||||
dmx_input_t input;
|
||||
dmx_output_t output;
|
||||
dmx_pes_type_t pes_type;
|
||||
__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
|
||||
==============
|
||||
|
||||
.. c:type:: dmx_stc
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
struct dmx_stc {
|
||||
unsigned int num; /* input : which STC? 0..N */
|
||||
unsigned int base; /* output: divisor for stc to get 90 kHz clock */
|
||||
__u64 stc; /* output: stc in 'base'*90 kHz units */
|
||||
};
|
||||
|
||||
|
||||
struct dmx_caps
|
||||
===============
|
||||
|
||||
.. c:type:: dmx_caps
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef struct dmx_caps {
|
||||
__u32 caps;
|
||||
int num_decoders;
|
||||
} dmx_caps_t;
|
||||
|
||||
|
||||
enum dmx_source
|
||||
===============
|
||||
|
||||
.. c:type:: dmx_source
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
typedef enum dmx_source {
|
||||
DMX_SOURCE_FRONT0 = 0,
|
||||
DMX_SOURCE_FRONT1,
|
||||
DMX_SOURCE_FRONT2,
|
||||
DMX_SOURCE_FRONT3,
|
||||
DMX_SOURCE_DVR0 = 16,
|
||||
DMX_SOURCE_DVR1,
|
||||
DMX_SOURCE_DVR2,
|
||||
DMX_SOURCE_DVR3
|
||||
} dmx_source_t;
|
||||
.. kernel-doc:: include/uapi/linux/dvb/dmx.h
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. c:type:: dtv_fe_stats
|
||||
|
||||
*******************
|
||||
struct dtv_fe_stats
|
||||
*******************
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
#define MAX_DTV_STATS 4
|
||||
|
||||
struct dtv_fe_stats {
|
||||
__u8 len;
|
||||
struct dtv_stats stat[MAX_DTV_STATS];
|
||||
} __packed;
|
|
@ -1,15 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. c:type:: dtv_properties
|
||||
|
||||
*********************
|
||||
struct dtv_properties
|
||||
*********************
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
struct dtv_properties {
|
||||
__u32 num;
|
||||
struct dtv_property *props;
|
||||
};
|
|
@ -1,31 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. c:type:: dtv_property
|
||||
|
||||
*******************
|
||||
struct dtv_property
|
||||
*******************
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
/* Reserved fields should be set to 0 */
|
||||
|
||||
struct dtv_property {
|
||||
__u32 cmd;
|
||||
__u32 reserved[3];
|
||||
union {
|
||||
__u32 data;
|
||||
struct dtv_fe_stats st;
|
||||
struct {
|
||||
__u8 data[32];
|
||||
__u32 len;
|
||||
__u32 reserved1[3];
|
||||
void *reserved2;
|
||||
} buffer;
|
||||
} u;
|
||||
int result;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
|
||||
#define DTV_IOCTL_MAX_MSGS 64
|
|
@ -1,18 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
.. c:type:: dtv_stats
|
||||
|
||||
****************
|
||||
struct dtv_stats
|
||||
****************
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
struct dtv_stats {
|
||||
__u8 scale; /* enum fecap_scale_params type */
|
||||
union {
|
||||
__u64 uvalue; /* for counters and relative scales */
|
||||
__s64 svalue; /* for 1/1000 dB measures */
|
||||
};
|
||||
} __packed;
|
|
@ -20,6 +20,6 @@ Signal statistics are provided via
|
|||
.. note::
|
||||
|
||||
Most statistics require the demodulator to be fully locked
|
||||
(e. g. with FE_HAS_LOCK bit set). See
|
||||
(e. g. with :c:type:`FE_HAS_LOCK <fe_status>` bit set). See
|
||||
:ref:`Frontend statistics indicators <frontend-stat-properties>` for
|
||||
more details.
|
||||
|
|
|
@ -24,7 +24,7 @@ instead, in order to be able to support the newer System Delivery like
|
|||
DVB-S2, DVB-T2, DVB-C2, ISDB, etc.
|
||||
|
||||
All kinds of parameters are combined as a union in the
|
||||
FrontendParameters structure:
|
||||
``dvb_frontend_parameters`` structure:
|
||||
|
||||
|
||||
.. code-block:: c
|
||||
|
|
|
@ -10,12 +10,27 @@ Part II - Digital TV API
|
|||
|
||||
.. note::
|
||||
|
||||
This API is also known as **DVB API**, although it is generic
|
||||
enough to support all digital TV standards.
|
||||
This API is also known as Linux **DVB API**.
|
||||
|
||||
It it was originally written to support the European digital TV
|
||||
standard (DVB), and later extended to support all digital TV standards.
|
||||
|
||||
In order to avoid confusion, within this document, it was opted to refer to
|
||||
it, and to associated hardware as **Digital TV**.
|
||||
|
||||
The word **DVB** is reserved to be used for:
|
||||
|
||||
- the Digital TV API version
|
||||
(e. g. DVB API version 3 or DVB API version 5);
|
||||
- digital TV data types (enums, structs, defines, etc);
|
||||
- digital TV device nodes (``/dev/dvb/...``);
|
||||
- the European DVB standard.
|
||||
|
||||
**Version 5.10**
|
||||
|
||||
.. class:: toc-title
|
||||
.. only:: html
|
||||
|
||||
.. class:: toc-title
|
||||
|
||||
Table of Contents
|
||||
|
||||
|
@ -30,12 +45,7 @@ Part II - Digital TV API
|
|||
net
|
||||
legacy_dvb_apis
|
||||
examples
|
||||
audio_h
|
||||
ca_h
|
||||
dmx_h
|
||||
frontend_h
|
||||
net_h
|
||||
video_h
|
||||
headers
|
||||
|
||||
|
||||
**********************
|
||||
|
@ -46,11 +56,11 @@ Authors:
|
|||
|
||||
- J. K. Metzler, Ralph <rjkm@metzlerbros.de>
|
||||
|
||||
- Original author of the DVB API documentation.
|
||||
- Original author of the Digital TV API documentation.
|
||||
|
||||
- O. C. Metzler, Marcus <rjkm@metzlerbros.de>
|
||||
|
||||
- Original author of the DVB API documentation.
|
||||
- Original author of the Digital TV API documentation.
|
||||
|
||||
- Carvalho Chehab, Mauro <m.chehab@kernel.org>
|
||||
|
||||
|
@ -58,21 +68,26 @@ Authors:
|
|||
|
||||
**Copyright** |copy| 2002-2003 : Convergence GmbH
|
||||
|
||||
**Copyright** |copy| 2009-2016 : Mauro Carvalho Chehab
|
||||
**Copyright** |copy| 2009-2017 : Mauro Carvalho Chehab
|
||||
|
||||
****************
|
||||
Revision History
|
||||
****************
|
||||
|
||||
:revision: 2.2.0 / 2017-09-01 (*mcc*)
|
||||
|
||||
Most gaps between the uAPI document and the Kernel implementation
|
||||
got fixed for the non-legacy API.
|
||||
|
||||
:revision: 2.1.0 / 2015-05-29 (*mcc*)
|
||||
|
||||
DocBook improvements and cleanups, in order to document the system calls
|
||||
on a more standard way and provide more description about the current
|
||||
DVB API.
|
||||
Digital TV API.
|
||||
|
||||
:revision: 2.0.4 / 2011-05-06 (*mcc*)
|
||||
|
||||
Add more information about DVB APIv5, better describing the frontend
|
||||
Add more information about DVBv5 API, better describing the frontend
|
||||
GET/SET props ioctl's.
|
||||
|
||||
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
.. -*- coding: utf-8; mode: rst -*-
|
||||
|
||||
**************
|
||||
Property types
|
||||
**************
|
||||
|
||||
On :ref:`FE_GET_PROPERTY and FE_SET_PROPERTY <FE_GET_PROPERTY>`,
|
||||
the actual action is determined by the dtv_property cmd/data pairs.
|
||||
With one single ioctl, is possible to get/set up to 64 properties. The
|
||||
actual meaning of each property is described on the next sections.
|
||||
|
||||
The available frontend property types are shown on the next section.
|
|
@ -2,63 +2,76 @@
|
|||
|
||||
.. _frontend-properties:
|
||||
|
||||
DVB Frontend properties
|
||||
=======================
|
||||
**************
|
||||
Property types
|
||||
**************
|
||||
|
||||
Tuning into a Digital TV physical channel and starting decoding it
|
||||
requires changing a set of parameters, in order to control the tuner,
|
||||
the demodulator, the Linear Low-noise Amplifier (LNA) and to set the
|
||||
antenna subsystem via Satellite Equipment Control (SEC), on satellite
|
||||
systems. The actual parameters are specific to each particular digital
|
||||
antenna subsystem via Satellite Equipment Control - SEC (on satellite
|
||||
systems). The actual parameters are specific to each particular digital
|
||||
TV standards, and may change as the digital TV specs evolves.
|
||||
|
||||
In the past, the strategy used was to have a union with the parameters
|
||||
needed to tune for DVB-S, DVB-C, DVB-T and ATSC delivery systems grouped
|
||||
there. The problem is that, as the second generation standards appeared,
|
||||
those structs were not big enough to contain the additional parameters.
|
||||
Also, the union didn't have any space left to be expanded without
|
||||
breaking userspace. So, the decision was to deprecate the legacy
|
||||
union/struct based approach, in favor of a properties set approach.
|
||||
In the past (up to DVB API version 3 - DVBv3), the strategy used was to have a
|
||||
union with the parameters needed to tune for DVB-S, DVB-C, DVB-T and
|
||||
ATSC delivery systems grouped there. The problem is that, as the second
|
||||
generation standards appeared, the size of such union was not big
|
||||
enough to group the structs that would be required for those new
|
||||
standards. Also, extending it would break userspace.
|
||||
|
||||
So, the legacy union/struct based approach was deprecated, in favor
|
||||
of a properties set approach. On such approach,
|
||||
:ref:`FE_GET_PROPERTY and FE_SET_PROPERTY <FE_GET_PROPERTY>` are used
|
||||
to setup the frontend and read its status.
|
||||
|
||||
The actual action is determined by a set of dtv_property cmd/data pairs.
|
||||
With one single ioctl, is possible to get/set up to 64 properties.
|
||||
|
||||
This section describes the new and recommended way to set the frontend,
|
||||
with supports all digital TV delivery systems.
|
||||
|
||||
.. note::
|
||||
|
||||
On Linux DVB API version 3, setting a frontend were done via
|
||||
struct :c:type:`dvb_frontend_parameters`.
|
||||
This got replaced on version 5 (also called "S2API", as this API were
|
||||
added originally_enabled to provide support for DVB-S2), because the
|
||||
old API has a very limited support to new standards and new hardware.
|
||||
This section describes the new and recommended way to set the frontend,
|
||||
with suppports all digital TV delivery systems.
|
||||
1. On Linux DVB API version 3, setting a frontend was done via
|
||||
struct :c:type:`dvb_frontend_parameters`.
|
||||
|
||||
Example: with the properties based approach, in order to set the tuner
|
||||
to a DVB-C channel at 651 kHz, modulated with 256-QAM, FEC 3/4 and
|
||||
symbol rate of 5.217 Mbauds, those properties should be sent to
|
||||
2. Don't use DVB API version 3 calls on hardware with supports
|
||||
newer standards. Such API provides no suport or a very limited
|
||||
support to new standards and/or new hardware.
|
||||
|
||||
3. Nowadays, most frontends support multiple delivery systems.
|
||||
Only with DVB API version 5 calls it is possible to switch between
|
||||
the multiple delivery systems supported by a frontend.
|
||||
|
||||
4. DVB API version 5 is also called *S2API*, as the first
|
||||
new standard added to it was DVB-S2.
|
||||
|
||||
**Example**: in order to set the hardware to tune into a DVB-C channel
|
||||
at 651 kHz, modulated with 256-QAM, FEC 3/4 and symbol rate of 5.217
|
||||
Mbauds, those properties should be sent to
|
||||
:ref:`FE_SET_PROPERTY <FE_GET_PROPERTY>` ioctl:
|
||||
|
||||
- :ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` =
|
||||
SYS_DVBC_ANNEX_A
|
||||
:ref:`DTV_DELIVERY_SYSTEM <DTV-DELIVERY-SYSTEM>` = SYS_DVBC_ANNEX_A
|
||||
|
||||
- :ref:`DTV_FREQUENCY <DTV-FREQUENCY>` = 651000000
|
||||
:ref:`DTV_FREQUENCY <DTV-FREQUENCY>` = 651000000
|
||||
|
||||
- :ref:`DTV_MODULATION <DTV-MODULATION>` = QAM_256
|
||||
:ref:`DTV_MODULATION <DTV-MODULATION>` = QAM_256
|
||||
|
||||
- :ref:`DTV_INVERSION <DTV-INVERSION>` = INVERSION_AUTO
|
||||
:ref:`DTV_INVERSION <DTV-INVERSION>` = INVERSION_AUTO
|
||||
|
||||
- :ref:`DTV_SYMBOL_RATE <DTV-SYMBOL-RATE>` = 5217000
|
||||
:ref:`DTV_SYMBOL_RATE <DTV-SYMBOL-RATE>` = 5217000
|
||||
|
||||
- :ref:`DTV_INNER_FEC <DTV-INNER-FEC>` = FEC_3_4
|
||||
:ref:`DTV_INNER_FEC <DTV-INNER-FEC>` = FEC_3_4
|
||||
|
||||
- :ref:`DTV_TUNE <DTV-TUNE>`
|
||||
:ref:`DTV_TUNE <DTV-TUNE>`
|
||||
|
||||
The code that would that would do the above is show in
|
||||
:ref:`dtv-prop-example`.
|
||||
|
||||
.. _dtv-prop-example:
|
||||
|
||||
Example: Setting digital TV frontend properties
|
||||
===============================================
|
||||
|
||||
.. code-block:: c
|
||||
:caption: Example: Setting digital TV frontend properties
|
||||
:name: dtv-prop-example
|
||||
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
|
@ -102,17 +115,12 @@ Example: Setting digital TV frontend properties
|
|||
provides methods for usual operations like program scanning and to
|
||||
read/write channel descriptor files.
|
||||
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
dtv-stats
|
||||
dtv-fe-stats
|
||||
dtv-property
|
||||
dtv-properties
|
||||
dvbproperty-006
|
||||
fe_property_parameters
|
||||
frontend-stat-properties
|
||||
frontend-property-terrestrial-systems
|
||||
frontend-property-cable-systems
|
||||
frontend-property-satellite-systems
|
||||
frontend-header
|
||||
|
|
|
@ -1,17 +1,16 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg id="svg2" width="237.7mm" height="126.28mm" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" preserveAspectRatio="xMidYMid" version="1.2" viewBox="0 0 23770.221 12628.221" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata519"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><rect id="rect197" class="BoundingBox" x="5355.1" y="13.111" width="18403" height="9603" fill="none"/><path id="path199" d="m14556 9614.1h-9200v-9600h18400v9600h-9200z" fill="#fff"/><path id="path201" d="m14556 9614.1h-9200v-9600h18400v9600h-9200z" fill="none" stroke="#000"/><rect id="rect206"
|
||||
class="BoundingBox" x="13.111" y="4013.1" width="4544" height="2403" fill="none"/><path id="path208" d="m2285.1 6414.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path210" d="m2285.1 6414.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text212" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan214" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan216" class="TextPosition" x="1281.111" y="5435.1108"><tspan id="tspan218" fill="#000000">Antena</tspan></tspan></tspan></text>
|
||||
<rect id="rect223" class="BoundingBox" x="6213.1" y="1813.1" width="4544" height="2403" fill="none"/><path id="path225" d="m8485.1 4214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path227" d="m8485.1 4214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text229" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan231" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan233" class="TextPosition" x="7217.1108" y="3235.1111"><tspan id="tspan235" fill="#000000">Frontend</tspan></tspan></tspan></text>
|
||||
<rect id="rect240" class="BoundingBox" x="12113" y="1813.1" width="4544" height="2403" fill="none"/><path id="path242" d="m14385 4214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path244" d="m14385 4214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text246" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan248" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan250" class="TextPosition" x="13944.111" y="3235.1111"><tspan id="tspan252" fill="#000000">CA</tspan></tspan></tspan></text>
|
||||
<rect id="rect257" class="BoundingBox" x="18113" y="1813.1" width="4544" height="2403" fill="none"/><path id="path259" d="m20385 4214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path261" d="m20385 4214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text263" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan265" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan267" class="TextPosition" x="19384.111" y="3235.1111"><tspan id="tspan269" fill="#000000">Demux</tspan></tspan></tspan></text>
|
||||
<rect id="rect274" class="BoundingBox" x="6113.1" y="5813.1" width="4544" height="2403" fill="none"/><path id="path276" d="m8385.1 8214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path278" d="m8385.1 8214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text280" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan282" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan284" class="TextPosition" x="7733.1108" y="7235.1108"><tspan id="tspan286" fill="#000000">SEC</tspan></tspan></tspan></text>
|
||||
<rect id="rect291" class="BoundingBox" x="12213" y="5813.1" width="4544" height="2403" fill="none"/><path id="path293" d="m14485 8214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path295" d="m14485 8214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text297" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan299" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan301" class="TextPosition" x="13676.111" y="7235.1108"><tspan id="tspan303" fill="#000000">Audio</tspan></tspan></tspan></text>
|
||||
<rect id="rect308" class="BoundingBox" x="18113" y="5813.1" width="4544" height="2403" fill="none"/><path id="path310" d="m20385 8214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path312" d="m20385 8214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text314" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan316" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan318" class="TextPosition" x="19583.111" y="7235.1108"><tspan id="tspan320" fill="#000000">Video</tspan></tspan></tspan></text>
|
||||
<rect id="rect325" class="BoundingBox" x="15213" y="10213" width="4544" height="2403" fill="none"/><path id="path327" d="m17485 12614h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path329" d="m17485 12614h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text331" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan333" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan335" class="TextPosition" x="17076.111" y="11635.111"><tspan id="tspan337" fill="#000000">TV</tspan></tspan></tspan></text>
|
||||
<rect id="rect342" class="BoundingBox" x="4555.1" y="3014.1" width="1661" height="2202" fill="none"/><path id="path344" d="m4556.1 5214.1 1400-1857" fill="none" stroke="#000"/><path id="path346" d="m6215.1 3014.1-391 269 240 181 151-450z"/><rect id="rect351" class="BoundingBox" x="4555.1" y="5213.1" width="1561" height="1802" fill="none"/><path id="path353" d="m4556.1 5214.1 1277 1475" fill="none" stroke="#000"/><path id="path355" d="m6115.1 7014.1-181-438-227 196 408 242z"/><rect id="rect360" class="BoundingBox" x="10755" y="2864.1" width="1361" height="301" fill="none"/><path id="path362" d="m10756 3014.1h929" fill="none" stroke="#000"/><path id="path364" d="m12115 3014.1-450-150v300l450-150z"/><rect id="rect369" class="BoundingBox" x="16655" y="2864.1" width="1461" height="301" fill="none"/><path id="path371" d="m16656 3014.1h1029" fill="none" stroke="#000"/><path id="path373"
|
||||
d="m18115 3014.1-450-150v300l450-150z"/><rect id="rect378" class="BoundingBox" x="20235" y="4213.1" width="301" height="1602" fill="none"/><path id="path380" d="m20385 4214.1v1170" fill="none" stroke="#000"/><path id="path382" d="m20385 5814.1 150-450h-300l150 450z"/><rect id="rect387" class="BoundingBox" x="17485" y="8213.1" width="2902" height="2002" fill="none"/><path id="path389" d="m20385 8214.1-2546 1756" fill="none" stroke="#000"/><path id="path391" d="m17485 10214 456-132-171-247-285 379z"/><rect id="rect396" class="BoundingBox" x="14484" y="8213.1" width="3002" height="2002" fill="none"/><path id="path398" d="m14485 8214.1 2642 1761" fill="none" stroke="#000"/><path id="path400" d="m17485 10214-291-374-167 249 458 125z"/><rect id="rect405" class="BoundingBox" x="14485" y="4213.1" width="5902" height="1629" fill="none"/><path id="path407" d="m20385 4214.1-51 14" fill="none"
|
||||
stroke="#000"/><path id="path409" d="m20283 4242.1-52 14" fill="none" stroke="#000"/><path id="path411" d="m20180 4270.1-51 13" fill="none" stroke="#000"/><path id="path413" d="m20078 4297.1-52 14" fill="none" stroke="#000"/><path id="path415" d="m19975 4325.1-51 14" fill="none" stroke="#000"/><path id="path417" d="m19873 4353.1-52 14" fill="none" stroke="#000"/><path id="path419" d="m19770 4381.1-51 14" fill="none" stroke="#000"/><path id="path421" d="m19668 4409.1-52 13" fill="none" stroke="#000"/><path id="path423" d="m19565 4436.1-51 14" fill="none" stroke="#000"/><path id="path425" d="m19463 4464.1-52 14" fill="none" stroke="#000"/><path id="path427" d="m19360 4492.1-51 14" fill="none" stroke="#000"/><path id="path429" d="m19258 4520.1-52 14" fill="none" stroke="#000"/><path id="path431" d="m19155 4547.1-51 14" fill="none" stroke="#000"/><path id="path433" d="m19053 4575.1-52 14"
|
||||
fill="none" stroke="#000"/><path id="path435" d="m18950 4603.1-51 14" fill="none" stroke="#000"/><path id="path437" d="m18848 4631.1-51 14" fill="none" stroke="#000"/><path id="path439" d="m18745 4659.1-51 14" fill="none" stroke="#000"/><path id="path441" d="m18643 4686.1-51 14" fill="none" stroke="#000"/><path id="path443" d="m18540 4714.1-51 14" fill="none" stroke="#000"/><path id="path445" d="m18438 4742.1-51 14" fill="none" stroke="#000"/><path id="path447" d="m18335 4770.1-51 14" fill="none" stroke="#000"/><path id="path449" d="m18233 4798.1-51 14" fill="none" stroke="#000"/><path id="path451" d="m18130 4825.1-51 14" fill="none" stroke="#000"/><path id="path453" d="m18028 4853.1-51 14" fill="none" stroke="#000"/><path id="path455" d="m17925 4881.1-51 14" fill="none" stroke="#000"/><path id="path457" d="m17823 4909.1-51 14" fill="none" stroke="#000"/><path id="path459" d="m17720
|
||||
4937.1-51 13" fill="none" stroke="#000"/><path id="path461" d="m17618 4964.1-51 14" fill="none" stroke="#000"/><path id="path463" d="m17516 4992.1-52 14" fill="none" stroke="#000"/><path id="path465" d="m17413 5020.1-51 14" fill="none" stroke="#000"/><path id="path467" d="m17311 5048.1-52 14" fill="none" stroke="#000"/><path id="path469" d="m17208 5076.1-51 13" fill="none" stroke="#000"/><path id="path471" d="m17106 5103.1-52 14" fill="none" stroke="#000"/><path id="path473" d="m17003 5131.1-51 14" fill="none" stroke="#000"/><path id="path475" d="m16901 5159.1-52 14" fill="none" stroke="#000"/><path id="path477" d="m16798 5187.1-51 14" fill="none" stroke="#000"/><path id="path479" d="m16696 5214.1-52 14" fill="none" stroke="#000"/><path id="path481" d="m16593 5242.1-51 14" fill="none" stroke="#000"/><path id="path483" d="m16491 5270.1-52 14" fill="none" stroke="#000"/><path id="path485"
|
||||
d="m16388 5298.1-51 14" fill="none" stroke="#000"/><path id="path487" d="m16286 5326.1-52 14" fill="none" stroke="#000"/><path id="path489" d="m16183 5353.1-51 14" fill="none" stroke="#000"/><path id="path491" d="m16081 5381.1-51 14" fill="none" stroke="#000"/><path id="path493" d="m15978 5409.1-51 14" fill="none" stroke="#000"/><path id="path495" d="m15876 5437.1-51 14" fill="none" stroke="#000"/><path id="path497" d="m15773 5465.1-51 14" fill="none" stroke="#000"/><path id="path499" d="m15671 5492.1-51 14" fill="none" stroke="#000"/><path id="path501" d="m15568 5520.1-51 14" fill="none" stroke="#000"/><path id="path503" d="m15466 5548.1-51 14" fill="none" stroke="#000"/><path id="path505" d="m15363 5576.1-51 14" fill="none" stroke="#000"/><path id="path507" d="m15261 5604.1-51 13" fill="none" stroke="#000"/><path id="path509" d="m15158 5631.1-51 14" fill="none" stroke="#000"/><path
|
||||
id="path511" d="m15056 5659.1-51 14" fill="none" stroke="#000"/><path id="path513" d="m14953 5687.1-51 14" fill="none" stroke="#000"/><path id="path515" d="m14485 5814.1 474 27-79-290-395 263z"/></svg>
|
||||
<svg id="svg2" width="15.847cm" height="8.4187cm" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" preserveAspectRatio="xMidYMid" version="1.2" viewBox="0 0 23770.123 12628.122" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><defs id="defs142"><marker id="Arrow1Lend" overflow="visible" orient="auto"><path id="path954" transform="matrix(-.8 0 0 -.8 -10 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/></marker><marker id="marker1243" overflow="visible" orient="auto"><path id="path1241" transform="matrix(-.8 0 0 -.8 -10 0)" d="m0 0 5-5-17.5 5 17.5 5z" fill-rule="evenodd" stroke="#000" stroke-width="1pt"/></marker></defs><metadata id="metadata519"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><rect id="rect197" class="BoundingBox" x="5355.1" y="13.122" width="18403" height="9603" fill="none"/><path id="path199" d="m14556 9614.1h-9200v-9600h18400v9600z" fill="#fff"/><path id="path201" d="m14556 9614.1h-9200v-9600h18400v9600z" fill="none" stroke="#000"/><rect id="rect206" class="BoundingBox" x="13.122" y="4013.1" width="4544" height="2403" fill="none"/><path id="path208" d="m2285.1 6414.1h-2271v-2400h4541v2400z" fill="#fff"/><path id="path210" d="m2285.1 6414.1h-2271v-2400h4541v2400z" fill="none" stroke="#000"/><text id="text212" class="TextShape" x="-2443.8779" y="-4585.8779"><tspan id="tspan214" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan216" class="TextPosition"
|
||||
x="1281.1219" y="5435.1221"><tspan id="tspan218" fill="#000000">Antena</tspan></tspan></tspan></text>
|
||||
<rect id="rect223" class="BoundingBox" x="6213.1" y="1813.1" width="4544" height="2403" fill="none"/><path id="path225" d="m8485.1 4214.1h-2271v-2400h4541v2400z" fill="#fff"/><path id="path227" d="m8485.1 4214.1h-2271v-2400h4541v2400z" fill="none" stroke="#000"/><text id="text229" class="TextShape" x="-2443.8779" y="-4585.8779"><tspan id="tspan231" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan233" class="TextPosition" x="7217.1221" y="3235.1221"><tspan id="tspan235" fill="#000000">Frontend</tspan></tspan></tspan></text>
|
||||
<rect id="rect240" class="BoundingBox" x="12113" y="1813.1" width="4544" height="2403" fill="none"/><path id="path242" d="m14385 4214.1h-2271v-2400h4541v2400z" fill="#fff"/><path id="path244" d="m14385 4214.1h-2271v-2400h4541v2400z" fill="none" stroke="#000"/><text id="text246" class="TextShape" x="-2443.8779" y="-4585.8779"><tspan id="tspan248" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan250" class="TextPosition" x="13944.122" y="3235.1221"><tspan id="tspan252" fill="#000000">CA</tspan></tspan></tspan></text>
|
||||
<rect id="rect257" class="BoundingBox" x="18113" y="1813.1" width="4544" height="2403" fill="none"/><path id="path259" d="m20385 4214.1h-2271v-2400h4541v2400z" fill="#fff"/><path id="path261" d="m20385 4214.1h-2271v-2400h4541v2400z" fill="none" stroke="#000"/><text id="text263" class="TextShape" x="-2443.8779" y="-4585.8779"><tspan id="tspan265" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan267" class="TextPosition" x="19384.123" y="3235.1221"><tspan id="tspan269" fill="#000000">Demux</tspan></tspan></tspan></text>
|
||||
<rect id="rect274" class="BoundingBox" x="6113.1" y="5813.1" width="4544" height="2403" fill="none"/><path id="path276" d="m8385.1 8214.1h-2271v-2400h4541v2400z" fill="#fff"/><path id="path278" d="m8385.1 8214.1h-2271v-2400h4541v2400z" fill="none" stroke="#000"/><text id="text280" class="TextShape" x="-2443.8779" y="-4585.8779"><tspan id="tspan282" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan284" class="TextPosition" x="7733.1221" y="7235.1221"><tspan id="tspan286" fill="#000000">SEC</tspan></tspan></tspan></text>
|
||||
<rect id="rect291" class="BoundingBox" x="12213" y="5813.1" width="4544" height="2403" fill="none"/><path id="path293" d="m14485 8214.1h-2271v-2400h4541v2400z" fill="#fff"/><path id="path295" d="m14485 8214.1h-2271v-2400h4541v2400z" fill="none" stroke="#000" stroke-dasharray="28.22200113,56.44400226" stroke-width="28.222"/><text id="text297" class="TextShape" x="-2443.8779" y="-4903.3779"><tspan id="tspan299" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan301" class="TextPosition" x="13676.122" y="6917.6221"><tspan id="tspan303" fill="#000000">Audio</tspan></tspan></tspan></text>
|
||||
<rect id="rect308" class="BoundingBox" x="18113" y="5813.1" width="4544" height="2403" fill="none"/><path id="path310" d="m20385 8214.1h-2271v-2400h4541v2400z" fill="#fff"/><path id="path312" d="m20385 8214.1h-2271v-2400h4541v2400z" fill="none" stroke="#000" stroke-dasharray="28.22200113,56.44400226" stroke-width="28.222"/><text id="text314" class="TextShape" x="-2443.8779" y="-4903.3779"><tspan id="tspan316" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan318" class="TextPosition" x="19583.123" y="6917.6221"><tspan id="tspan320" fill="#000000">Video</tspan></tspan></tspan></text>
|
||||
<rect id="rect325" class="BoundingBox" x="15213" y="10213" width="4544" height="2403" fill="none"/><path id="path327" d="m17485 12614h-2271v-2400h4541v2400z" fill="#fff"/><path id="path329" d="m17485 12614h-2271v-2400h4541v2400z" fill="none" stroke="#000" stroke-dasharray="28.22200113,56.44400226" stroke-width="28.222"/><text id="text331" class="TextShape" x="-2443.8779" y="-4585.8779"><tspan id="tspan333" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan335" class="TextPosition" x="17076.123" y="11635.122"><tspan id="tspan337" fill="#000000">TV</tspan></tspan></tspan></text>
|
||||
<rect id="rect342" class="BoundingBox" x="4555.1" y="3014.1" width="1661" height="2202" fill="none"/><path id="path344" d="m4556.1 5214.1 1400-1857" fill="none" stroke="#000"/><path id="path346" d="m6215.1 3014.1-391 269 240 181z"/><rect id="rect351" class="BoundingBox" x="4555.1" y="5213.1" width="1561" height="1802" fill="none"/><path id="path353" d="m4556.1 5214.1 1277 1475" fill="none" stroke="#000"/><path id="path355" d="m6115.1 7014.1-181-438-227 196z"/><rect id="rect360" class="BoundingBox" x="10755" y="2864.1" width="1361" height="301" fill="none"/><path id="path362" d="m10756 3014.1h929" fill="none" stroke="#000"/><path id="path364" d="m12115 3014.1-450-150v300z"/><rect id="rect369" class="BoundingBox" x="16655" y="2864.1" width="1461" height="301" fill="none"/><path id="path371" d="m16656 3014.1h1029" fill="none" stroke="#000"/><path id="path373" d="m18115
|
||||
3014.1-450-150v300z"/><rect id="rect378" class="BoundingBox" x="20235" y="4213.1" width="301" height="1602" fill="none"/><rect id="rect387" class="BoundingBox" x="17485" y="8213.1" width="2902" height="2002" fill="none"/><path id="path389" d="m20385 8214.1-2546 1756" fill="none" stroke="#000" stroke-dasharray="28.22200113,56.44400226" stroke-width="28.222"/><path id="path391" d="m17485 10214 456-132-171-247z"/><rect id="rect396" class="BoundingBox" x="14484" y="8213.1" width="3002" height="2002" fill="none"/><path id="path398" d="m14485 8214.1 2642 1761" fill="none" stroke="#000" stroke-dasharray="28.22200113,56.44400226" stroke-width="28.222"/><path id="path400" d="m17485 10214-291-374-167 249z"/><rect id="rect405" class="BoundingBox" x="14485" y="4213.1" width="5902" height="1629" fill="none"/><path id="path949" d="m20387 4213.1v1629" fill="none" marker-end="url(#Arrow1Lend)"
|
||||
stroke="#000" stroke-dasharray="26.45879596, 52.91759192999999328" stroke-linejoin="miter" stroke-width="26.459"/><path id="path1233" d="m20385 4214.1-3628 1599" fill="none" marker-end="url(#marker1243)" stroke="#000" stroke-dasharray="26.45879596, 52.91759193" stroke-linejoin="miter" stroke-width="26.459"/><text id="text297-3" class="TextShape" x="-2911.9202" y="-4257.2061" font-size="12px" stroke-width="1"><tspan id="tspan299-6" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400" stroke-width="1"><tspan id="tspan301-7" class="TextPosition" x="13208.079" y="7563.793" stroke-width="1"><tspan id="tspan303-5" fill="#000000" stroke-width="1">Decoder</tspan></tspan></tspan></text>
|
||||
<text id="text297-3-3" class="TextShape" x="2950.9287" y="-4259.5928" font-size="12px" stroke-width="1"><tspan id="tspan299-6-5" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400" stroke-width="1"><tspan id="tspan301-7-6" class="TextPosition" x="19070.928" y="7561.4053" stroke-width="1"><tspan id="tspan303-5-2" fill="#000000" stroke-width="1">Decoder</tspan></tspan></tspan></text>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 8.8 KiB |
|
@ -6,8 +6,8 @@
|
|||
Examples
|
||||
********
|
||||
|
||||
In this section we would like to present some examples for using the DVB
|
||||
API.
|
||||
In this section we would like to present some examples for using the Digital
|
||||
TV API.
|
||||
|
||||
.. note::
|
||||
|
||||
|
|
|
@ -26,8 +26,7 @@ Arguments
|
|||
File descriptor returned by :ref:`open() <frontend_f_open>`.
|
||||
|
||||
``argp``
|
||||
pointer to struct
|
||||
:c:type:`dvb_diseqc_slave_reply`
|
||||
pointer to struct :c:type:`dvb_diseqc_slave_reply`.
|
||||
|
||||
|
||||
Description
|
||||
|
@ -35,46 +34,15 @@ Description
|
|||
|
||||
Receives reply from a DiSEqC 2.0 command.
|
||||
|
||||
.. c:type:: dvb_diseqc_slave_reply
|
||||
|
||||
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
||||
|
||||
.. flat-table:: struct dvb_diseqc_slave_reply
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 1 2
|
||||
|
||||
|
||||
- .. row 1
|
||||
|
||||
- uint8_t
|
||||
|
||||
- msg[4]
|
||||
|
||||
- DiSEqC message (framing, data[3])
|
||||
|
||||
- .. row 2
|
||||
|
||||
- uint8_t
|
||||
|
||||
- msg_len
|
||||
|
||||
- Length of the DiSEqC message. Valid values are 0 to 4, where 0
|
||||
means no msg
|
||||
|
||||
- .. row 3
|
||||
|
||||
- int
|
||||
|
||||
- timeout
|
||||
|
||||
- Return from ioctl after timeout ms with errorcode when no message
|
||||
was received
|
||||
|
||||
The received message is stored at the buffer pointed by ``argp``.
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -31,12 +31,16 @@ Description
|
|||
If the bus has been automatically powered off due to power overload,
|
||||
this ioctl call restores the power to the bus. The call requires
|
||||
read/write access to the device. This call has no effect if the device
|
||||
is manually powered off. Not all DVB adapters support this ioctl.
|
||||
is manually powered off. Not all Digital TV adapters support this ioctl.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -26,7 +26,7 @@ Arguments
|
|||
File descriptor returned by :ref:`open() <frontend_f_open>`.
|
||||
|
||||
``tone``
|
||||
an integer enumered value described at :c:type:`fe_sec_mini_cmd`
|
||||
An integer enumered value described at :c:type:`fe_sec_mini_cmd`.
|
||||
|
||||
|
||||
Description
|
||||
|
@ -39,39 +39,14 @@ read/write permissions.
|
|||
It provides support for what's specified at
|
||||
`Digital Satellite Equipment Control (DiSEqC) - Simple "ToneBurst" Detection Circuit specification. <http://www.eutelsat.com/files/contributed/satellites/pdf/Diseqc/associated%20docs/simple_tone_burst_detec.pdf>`__
|
||||
|
||||
.. c:type:: fe_sec_mini_cmd
|
||||
|
||||
.. flat-table:: enum fe_sec_mini_cmd
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ID
|
||||
|
||||
- Description
|
||||
|
||||
- .. row 2
|
||||
|
||||
- .. _SEC-MINI-A:
|
||||
|
||||
``SEC_MINI_A``
|
||||
|
||||
- Sends a mini-DiSEqC 22kHz '0' Tone Burst to select satellite-A
|
||||
|
||||
- .. row 3
|
||||
|
||||
- .. _SEC-MINI-B:
|
||||
|
||||
``SEC_MINI_B``
|
||||
|
||||
- Sends a mini-DiSEqC 22kHz '1' Data Burst to select satellite-B
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -33,39 +33,17 @@ Arguments
|
|||
Description
|
||||
===========
|
||||
|
||||
Sends a DiSEqC command to the antenna subsystem.
|
||||
|
||||
|
||||
.. c:type:: dvb_diseqc_master_cmd
|
||||
|
||||
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
||||
|
||||
.. flat-table:: struct dvb_diseqc_master_cmd
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 1 2
|
||||
|
||||
|
||||
- .. row 1
|
||||
|
||||
- uint8_t
|
||||
|
||||
- msg[6]
|
||||
|
||||
- DiSEqC message (framing, address, command, data[3])
|
||||
|
||||
- .. row 2
|
||||
|
||||
- uint8_t
|
||||
|
||||
- msg_len
|
||||
|
||||
- Length of the DiSEqC message. Valid values are 3 to 6
|
||||
Sends the DiSEqC command pointed by :c:type:`dvb_diseqc_master_cmd`
|
||||
to the antenna subsystem.
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
||||
|
|
|
@ -46,6 +46,10 @@ dishes were already legacy in 2004.
|
|||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -45,6 +45,10 @@ voltages.
|
|||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -44,10 +44,10 @@ 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.
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
|
||||
.. flat-table::
|
||||
|
@ -66,3 +66,6 @@ appropriately. The generic error codes are described at the
|
|||
- ``EOVERFLOW``
|
||||
|
||||
- Overflow in event queue - one or more events were lost.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -42,11 +42,10 @@ this command, read-only access to the device is sufficient.
|
|||
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.
|
||||
|
||||
On success 0 is returned.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -58,3 +57,6 @@ appropriately. The generic error codes are described at the
|
|||
- ``EINVAL``
|
||||
|
||||
- Maximum supported symbol rate reached.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -9,7 +9,8 @@ ioctl FE_GET_INFO
|
|||
Name
|
||||
====
|
||||
|
||||
FE_GET_INFO - Query DVB frontend capabilities and returns information about the - front-end. This call only requires read-only access to the device
|
||||
FE_GET_INFO - Query Digital TV frontend capabilities and returns information
|
||||
about the - front-end. This call only requires read-only access to the device.
|
||||
|
||||
|
||||
Synopsis
|
||||
|
@ -33,119 +34,13 @@ Arguments
|
|||
Description
|
||||
===========
|
||||
|
||||
All DVB frontend devices support the ``FE_GET_INFO`` ioctl. It is used
|
||||
to identify kernel devices compatible with this specification and to
|
||||
All Digital TV frontend devices support the :ref:`FE_GET_INFO` ioctl. It is
|
||||
used to identify kernel devices compatible with this specification and to
|
||||
obtain information about driver and hardware capabilities. The ioctl
|
||||
takes a pointer to dvb_frontend_info which is filled by the driver.
|
||||
When the driver is not compatible with this specification the ioctl
|
||||
returns an error.
|
||||
|
||||
.. c:type:: dvb_frontend_info
|
||||
|
||||
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
||||
|
||||
.. flat-table:: struct dvb_frontend_info
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 1 2
|
||||
|
||||
|
||||
- .. row 1
|
||||
|
||||
- char
|
||||
|
||||
- name[128]
|
||||
|
||||
- Name of the frontend
|
||||
|
||||
- .. row 2
|
||||
|
||||
- fe_type_t
|
||||
|
||||
- type
|
||||
|
||||
- **DEPRECATED**. DVBv3 type. Should not be used on modern programs,
|
||||
as a frontend may have more than one type. So, the DVBv5 API
|
||||
should be used instead to enumerate and select the frontend type.
|
||||
|
||||
- .. row 3
|
||||
|
||||
- uint32_t
|
||||
|
||||
- frequency_min
|
||||
|
||||
- Minimal frequency supported by the frontend
|
||||
|
||||
- .. row 4
|
||||
|
||||
- uint32_t
|
||||
|
||||
- frequency_max
|
||||
|
||||
- Maximal frequency supported by the frontend
|
||||
|
||||
- .. row 5
|
||||
|
||||
- uint32_t
|
||||
|
||||
- frequency_stepsize
|
||||
|
||||
- Frequency step - all frequencies are multiple of this value
|
||||
|
||||
- .. row 6
|
||||
|
||||
- uint32_t
|
||||
|
||||
- frequency_tolerance
|
||||
|
||||
- Tolerance of the frequency
|
||||
|
||||
- .. row 7
|
||||
|
||||
- uint32_t
|
||||
|
||||
- symbol_rate_min
|
||||
|
||||
- Minimal symbol rate (for Cable/Satellite systems), in bauds
|
||||
|
||||
- .. row 8
|
||||
|
||||
- uint32_t
|
||||
|
||||
- symbol_rate_max
|
||||
|
||||
- Maximal symbol rate (for Cable/Satellite systems), in bauds
|
||||
|
||||
- .. row 9
|
||||
|
||||
- uint32_t
|
||||
|
||||
- symbol_rate_tolerance
|
||||
|
||||
- Maximal symbol rate tolerance, in ppm
|
||||
|
||||
- .. row 10
|
||||
|
||||
- uint32_t
|
||||
|
||||
- notifier_delay
|
||||
|
||||
- **DEPRECATED**. Not used by any driver.
|
||||
|
||||
- .. row 11
|
||||
|
||||
- enum :c:type:`fe_caps`
|
||||
|
||||
- caps
|
||||
|
||||
- Capabilities supported by the frontend
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
The frequencies are specified in Hz for Terrestrial and Cable
|
||||
systems. They're specified in kHz for Satellite systems
|
||||
|
||||
|
||||
frontend capabilities
|
||||
=====================
|
||||
|
@ -153,274 +48,16 @@ frontend capabilities
|
|||
Capabilities describe what a frontend can do. Some capabilities are
|
||||
supported only on some specific frontend types.
|
||||
|
||||
.. c:type:: fe_caps
|
||||
|
||||
.. tabularcolumns:: |p{6.5cm}|p{11.0cm}|
|
||||
|
||||
.. flat-table:: enum fe_caps
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
|
||||
- .. row 1
|
||||
|
||||
- ID
|
||||
|
||||
- Description
|
||||
|
||||
- .. row 2
|
||||
|
||||
- .. _FE-IS-STUPID:
|
||||
|
||||
``FE_IS_STUPID``
|
||||
|
||||
- There's something wrong at the frontend, and it can't report its
|
||||
capabilities
|
||||
|
||||
- .. row 3
|
||||
|
||||
- .. _FE-CAN-INVERSION-AUTO:
|
||||
|
||||
``FE_CAN_INVERSION_AUTO``
|
||||
|
||||
- The frontend is capable of auto-detecting inversion
|
||||
|
||||
- .. row 4
|
||||
|
||||
- .. _FE-CAN-FEC-1-2:
|
||||
|
||||
``FE_CAN_FEC_1_2``
|
||||
|
||||
- The frontend supports FEC 1/2
|
||||
|
||||
- .. row 5
|
||||
|
||||
- .. _FE-CAN-FEC-2-3:
|
||||
|
||||
``FE_CAN_FEC_2_3``
|
||||
|
||||
- The frontend supports FEC 2/3
|
||||
|
||||
- .. row 6
|
||||
|
||||
- .. _FE-CAN-FEC-3-4:
|
||||
|
||||
``FE_CAN_FEC_3_4``
|
||||
|
||||
- The frontend supports FEC 3/4
|
||||
|
||||
- .. row 7
|
||||
|
||||
- .. _FE-CAN-FEC-4-5:
|
||||
|
||||
``FE_CAN_FEC_4_5``
|
||||
|
||||
- The frontend supports FEC 4/5
|
||||
|
||||
- .. row 8
|
||||
|
||||
- .. _FE-CAN-FEC-5-6:
|
||||
|
||||
``FE_CAN_FEC_5_6``
|
||||
|
||||
- The frontend supports FEC 5/6
|
||||
|
||||
- .. row 9
|
||||
|
||||
- .. _FE-CAN-FEC-6-7:
|
||||
|
||||
``FE_CAN_FEC_6_7``
|
||||
|
||||
- The frontend supports FEC 6/7
|
||||
|
||||
- .. row 10
|
||||
|
||||
- .. _FE-CAN-FEC-7-8:
|
||||
|
||||
``FE_CAN_FEC_7_8``
|
||||
|
||||
- The frontend supports FEC 7/8
|
||||
|
||||
- .. row 11
|
||||
|
||||
- .. _FE-CAN-FEC-8-9:
|
||||
|
||||
``FE_CAN_FEC_8_9``
|
||||
|
||||
- The frontend supports FEC 8/9
|
||||
|
||||
- .. row 12
|
||||
|
||||
- .. _FE-CAN-FEC-AUTO:
|
||||
|
||||
``FE_CAN_FEC_AUTO``
|
||||
|
||||
- The frontend can autodetect FEC.
|
||||
|
||||
- .. row 13
|
||||
|
||||
- .. _FE-CAN-QPSK:
|
||||
|
||||
``FE_CAN_QPSK``
|
||||
|
||||
- The frontend supports QPSK modulation
|
||||
|
||||
- .. row 14
|
||||
|
||||
- .. _FE-CAN-QAM-16:
|
||||
|
||||
``FE_CAN_QAM_16``
|
||||
|
||||
- The frontend supports 16-QAM modulation
|
||||
|
||||
- .. row 15
|
||||
|
||||
- .. _FE-CAN-QAM-32:
|
||||
|
||||
``FE_CAN_QAM_32``
|
||||
|
||||
- The frontend supports 32-QAM modulation
|
||||
|
||||
- .. row 16
|
||||
|
||||
- .. _FE-CAN-QAM-64:
|
||||
|
||||
``FE_CAN_QAM_64``
|
||||
|
||||
- The frontend supports 64-QAM modulation
|
||||
|
||||
- .. row 17
|
||||
|
||||
- .. _FE-CAN-QAM-128:
|
||||
|
||||
``FE_CAN_QAM_128``
|
||||
|
||||
- The frontend supports 128-QAM modulation
|
||||
|
||||
- .. row 18
|
||||
|
||||
- .. _FE-CAN-QAM-256:
|
||||
|
||||
``FE_CAN_QAM_256``
|
||||
|
||||
- The frontend supports 256-QAM modulation
|
||||
|
||||
- .. row 19
|
||||
|
||||
- .. _FE-CAN-QAM-AUTO:
|
||||
|
||||
``FE_CAN_QAM_AUTO``
|
||||
|
||||
- The frontend can autodetect modulation
|
||||
|
||||
- .. row 20
|
||||
|
||||
- .. _FE-CAN-TRANSMISSION-MODE-AUTO:
|
||||
|
||||
``FE_CAN_TRANSMISSION_MODE_AUTO``
|
||||
|
||||
- The frontend can autodetect the transmission mode
|
||||
|
||||
- .. row 21
|
||||
|
||||
- .. _FE-CAN-BANDWIDTH-AUTO:
|
||||
|
||||
``FE_CAN_BANDWIDTH_AUTO``
|
||||
|
||||
- The frontend can autodetect the bandwidth
|
||||
|
||||
- .. row 22
|
||||
|
||||
- .. _FE-CAN-GUARD-INTERVAL-AUTO:
|
||||
|
||||
``FE_CAN_GUARD_INTERVAL_AUTO``
|
||||
|
||||
- The frontend can autodetect the guard interval
|
||||
|
||||
- .. row 23
|
||||
|
||||
- .. _FE-CAN-HIERARCHY-AUTO:
|
||||
|
||||
``FE_CAN_HIERARCHY_AUTO``
|
||||
|
||||
- The frontend can autodetect hierarch
|
||||
|
||||
- .. row 24
|
||||
|
||||
- .. _FE-CAN-8VSB:
|
||||
|
||||
``FE_CAN_8VSB``
|
||||
|
||||
- The frontend supports 8-VSB modulation
|
||||
|
||||
- .. row 25
|
||||
|
||||
- .. _FE-CAN-16VSB:
|
||||
|
||||
``FE_CAN_16VSB``
|
||||
|
||||
- The frontend supports 16-VSB modulation
|
||||
|
||||
- .. row 26
|
||||
|
||||
- .. _FE-HAS-EXTENDED-CAPS:
|
||||
|
||||
``FE_HAS_EXTENDED_CAPS``
|
||||
|
||||
- Currently, unused
|
||||
|
||||
- .. row 27
|
||||
|
||||
- .. _FE-CAN-MULTISTREAM:
|
||||
|
||||
``FE_CAN_MULTISTREAM``
|
||||
|
||||
- The frontend supports multistream filtering
|
||||
|
||||
- .. row 28
|
||||
|
||||
- .. _FE-CAN-TURBO-FEC:
|
||||
|
||||
``FE_CAN_TURBO_FEC``
|
||||
|
||||
- The frontend supports turbo FEC modulation
|
||||
|
||||
- .. row 29
|
||||
|
||||
- .. _FE-CAN-2G-MODULATION:
|
||||
|
||||
``FE_CAN_2G_MODULATION``
|
||||
|
||||
- The frontend supports "2nd generation modulation" (DVB-S2/T2)>
|
||||
|
||||
- .. row 30
|
||||
|
||||
- .. _FE-NEEDS-BENDING:
|
||||
|
||||
``FE_NEEDS_BENDING``
|
||||
|
||||
- Not supported anymore, don't use it
|
||||
|
||||
- .. row 31
|
||||
|
||||
- .. _FE-CAN-RECOVER:
|
||||
|
||||
``FE_CAN_RECOVER``
|
||||
|
||||
- The frontend can recover from a cable unplug automatically
|
||||
|
||||
- .. row 32
|
||||
|
||||
- .. _FE-CAN-MUTE-TS:
|
||||
|
||||
``FE_CAN_MUTE_TS``
|
||||
|
||||
- The frontend can stop spurious TS data output
|
||||
The frontend capabilities are described at :c:type:`fe_caps`.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -29,13 +29,13 @@ Arguments
|
|||
File descriptor returned by :ref:`open() <frontend_f_open>`.
|
||||
|
||||
``argp``
|
||||
pointer to struct :c:type:`dtv_properties`
|
||||
Pointer to struct :c:type:`dtv_properties`.
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
All DVB frontend devices support the ``FE_SET_PROPERTY`` and
|
||||
All Digital TV frontend devices support the ``FE_SET_PROPERTY`` and
|
||||
``FE_GET_PROPERTY`` ioctls. The supported properties and statistics
|
||||
depends on the delivery system and on the device:
|
||||
|
||||
|
@ -64,6 +64,10 @@ depends on the delivery system and on the device:
|
|||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
|
@ -41,6 +41,10 @@ access to the device is sufficient.
|
|||
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.
|
||||
|
||||
On error -1 is returned, and the ``errno`` variable is set
|
||||
appropriately.
|
||||
|
||||
Generic error codes are described at the
|
||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue