Merge tag 'media/v4.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: - new Socionext MN88443x ISDB-S/T demodulator driver: mn88443x - new sensor drivers: ak7375, ov2680 and rj54n1cb0c - an old soc-camera sensor driver converted to the V4L2 framework: mt9v111 - a new Voice-Coil Motor (VCM) driver: dw9807-vcm - some cleanups at cx25821, removing legacy unused code - some improvements at ddbridge driver - new platform driver: vicodec - some DVB API cleanups, removing ioctls and compat code for old out-of-tree drivers that were never merged upstream - improvements at DVB core to support frontents that support both Satellite and non-satellite delivery systems - got rid of the unused VIDIOC_RESERVED V4L2 ioctl - some cleanups/improvements at gl861 ISDB driver - several improvements on ov772x, ov7670 and ov5640, imx274, ov5645, and smiapp sensor drivers - fixes at em28xx to support dual TS devices - some cleanups at V4L2/VB2 locking logic - some API improvements at media controller - some cec core and drivers improvements - some uvcvideo improvements - some improvements at platform drivers: stm32-dcmi, rcar-vin, coda, reneseas-ceu, imx, vsp1, venus, camss - lots of other cleanups and fixes * tag 'media/v4.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (406 commits) Revert "media: vivid: shut up warnings due to a non-trivial logic" siano: get rid of an unused return code for debugfs register media: isp: fix a warning about a wrong struct initializer media: radio-wl1273: fix return code for the polling routine media: s3c-camif: fix return code for the polling routine media: saa7164: fix return codes for the polling routine media: exynos-gsc: fix return code if mutex was interrupted media: mt9v111: Fix build error with no VIDEO_V4L2_SUBDEV_API media: xc4000: get rid of uneeded casts media: drxj: get rid of uneeded casts media: tuner-xc2028: don't use casts for printing sizes media: cleanup fall-through comments media: vivid: shut up warnings due to a non-trivial logic media: rtl28xxu: be sure that it won't go past the array size media: mt9v111: avoid going past the buffer media: vsp1_dl: add a description for cmdpool field media: sta2x11: add a missing parameter description media: v4l2-mem2mem: add descriptions to MC fields media: i2c: fix warning in Aptina MT9V111 media: imx: shut up a false positive warning ...
This commit is contained in:
@@ -4,8 +4,8 @@ The HDMI CEC GPIO module supports CEC implementations where the CEC line
|
|||||||
is hooked up to a pull-up GPIO line and - optionally - the HPD line is
|
is hooked up to a pull-up GPIO line and - optionally - the HPD line is
|
||||||
hooked up to another GPIO line.
|
hooked up to another GPIO line.
|
||||||
|
|
||||||
Please note: the maximum voltage for the CEC line is 3.63V, for the HPD
|
Please note: the maximum voltage for the CEC line is 3.63V, for the HPD and
|
||||||
line it is 5.3V. So you may need some sort of level conversion circuitry
|
5V lines it is 5.3V. So you may need some sort of level conversion circuitry
|
||||||
when connecting them to a GPIO line.
|
when connecting them to a GPIO line.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
@@ -19,18 +19,24 @@ following property is also required:
|
|||||||
- hdmi-phandle - phandle to the HDMI controller, see also cec.txt.
|
- hdmi-phandle - phandle to the HDMI controller, see also cec.txt.
|
||||||
|
|
||||||
If the CEC line is not associated with an HDMI receiver/transmitter, then
|
If the CEC line is not associated with an HDMI receiver/transmitter, then
|
||||||
the following property is optional:
|
the following property is optional and can be used for debugging HPD changes:
|
||||||
|
|
||||||
- hpd-gpios: gpio that the HPD line is connected to.
|
- hpd-gpios: gpio that the HPD line is connected to.
|
||||||
|
|
||||||
|
This property is optional and can be used for debugging changes on the 5V line:
|
||||||
|
|
||||||
|
- v5-gpios: gpio that the 5V line is connected to.
|
||||||
|
|
||||||
Example for the Raspberry Pi 3 where the CEC line is connected to
|
Example for the Raspberry Pi 3 where the CEC line is connected to
|
||||||
pin 26 aka BCM7 aka CE1 on the GPIO pin header and the HPD line is
|
pin 26 aka BCM7 aka CE1 on the GPIO pin header, the HPD line is
|
||||||
connected to pin 11 aka BCM17 (some level shifter is needed for this!):
|
connected to pin 11 aka BCM17 and the 5V line is connected to pin
|
||||||
|
15 aka BCM22 (some level shifter is needed for the HPD and 5V lines!):
|
||||||
|
|
||||||
#include <dt-bindings/gpio/gpio.h>
|
#include <dt-bindings/gpio/gpio.h>
|
||||||
|
|
||||||
cec-gpio {
|
cec-gpio {
|
||||||
compatible = "cec-gpio";
|
compatible = "cec-gpio";
|
||||||
cec-gpios = <&gpio 7 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
cec-gpios = <&gpio 7 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
|
||||||
hpd-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
|
hpd-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
|
||||||
|
v5-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
|
||||||
};
|
};
|
||||||
|
8
Documentation/devicetree/bindings/media/i2c/ak7375.txt
Normal file
8
Documentation/devicetree/bindings/media/i2c/ak7375.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
Asahi Kasei Microdevices AK7375 voice coil lens driver
|
||||||
|
|
||||||
|
AK7375 is a camera voice coil lens.
|
||||||
|
|
||||||
|
Mandatory properties:
|
||||||
|
|
||||||
|
- compatible: "asahi-kasei,ak7375"
|
||||||
|
- reg: I2C slave address
|
@@ -0,0 +1,46 @@
|
|||||||
|
* Aptina MT9V111 CMOS sensor
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
The Aptina MT9V111 is a 1/4-Inch VGA-format digital image sensor with a core
|
||||||
|
based on Aptina MT9V011 sensor and an integrated Image Flow Processor (IFP).
|
||||||
|
|
||||||
|
The sensor has an active pixel array of 640x480 pixels and can output a number
|
||||||
|
of image resolution and formats controllable through a simple two-wires
|
||||||
|
interface.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
- compatible: shall be "aptina,mt9v111".
|
||||||
|
- clocks: reference to the system clock input provider.
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
- enable-gpios: output enable signal, pin name "OE#". Active low.
|
||||||
|
- standby-gpios: low power state control signal, pin name "STANDBY".
|
||||||
|
Active high.
|
||||||
|
- reset-gpios: chip reset signal, pin name "RESET#". Active low.
|
||||||
|
|
||||||
|
The device node must contain one 'port' child node with one 'endpoint' child
|
||||||
|
sub-node for its digital output video port, in accordance with the video
|
||||||
|
interface bindings defined in:
|
||||||
|
Documentation/devicetree/bindings/media/video-interfaces.txt
|
||||||
|
|
||||||
|
Example:
|
||||||
|
--------
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
camera@48 {
|
||||||
|
compatible = "aptina,mt9v111";
|
||||||
|
reg = <0x48>;
|
||||||
|
|
||||||
|
clocks = <&camera_clk>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
mt9v111_out: endpoint {
|
||||||
|
remote-endpoint = <&ceu_in>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@@ -0,0 +1,9 @@
|
|||||||
|
Dongwoon Anatech DW9807 voice coil lens driver
|
||||||
|
|
||||||
|
DW9807 is a 10-bit DAC with current sink capability. It is intended for
|
||||||
|
controlling voice coil lenses.
|
||||||
|
|
||||||
|
Mandatory properties:
|
||||||
|
|
||||||
|
- compatible: "dongwoon,dw9807-vcm"
|
||||||
|
- reg: I2C slave address
|
@@ -29,6 +29,9 @@ Optional properties
|
|||||||
- reset-gpios: XSHUTDOWN GPIO
|
- reset-gpios: XSHUTDOWN GPIO
|
||||||
- flash-leds: See ../video-interfaces.txt
|
- flash-leds: See ../video-interfaces.txt
|
||||||
- lens-focus: See ../video-interfaces.txt
|
- lens-focus: See ../video-interfaces.txt
|
||||||
|
- rotation: Integer property; valid values are 0 (sensor mounted upright)
|
||||||
|
and 180 (sensor mounted upside down). See
|
||||||
|
../video-interfaces.txt .
|
||||||
|
|
||||||
|
|
||||||
Endpoint node mandatory properties
|
Endpoint node mandatory properties
|
||||||
|
46
Documentation/devicetree/bindings/media/i2c/ov2680.txt
Normal file
46
Documentation/devicetree/bindings/media/i2c/ov2680.txt
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
* Omnivision OV2680 MIPI CSI-2 sensor
|
||||||
|
|
||||||
|
Required Properties:
|
||||||
|
- compatible: should be "ovti,ov2680".
|
||||||
|
- clocks: reference to the xvclk input clock.
|
||||||
|
- clock-names: should be "xvclk".
|
||||||
|
- DOVDD-supply: Digital I/O voltage supply.
|
||||||
|
- DVDD-supply: Digital core voltage supply.
|
||||||
|
- AVDD-supply: Analog voltage supply.
|
||||||
|
|
||||||
|
Optional Properties:
|
||||||
|
- reset-gpios: reference to the GPIO connected to the powerdown/reset pin,
|
||||||
|
if any. This is an active low signal to the OV2680.
|
||||||
|
|
||||||
|
The device node must contain one 'port' child node for its digital output
|
||||||
|
video port, and this port must have a single endpoint in accordance with
|
||||||
|
the video interface bindings defined in
|
||||||
|
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
||||||
|
|
||||||
|
Endpoint node required properties for CSI-2 connection are:
|
||||||
|
- remote-endpoint: a phandle to the bus receiver's endpoint node.
|
||||||
|
- clock-lanes: should be set to <0> (clock lane on hardware lane 0).
|
||||||
|
- data-lanes: should be set to <1> (one CSI-2 lane supported).
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
&i2c2 {
|
||||||
|
ov2680: camera-sensor@36 {
|
||||||
|
compatible = "ovti,ov2680";
|
||||||
|
reg = <0x36>;
|
||||||
|
clocks = <&osc>;
|
||||||
|
clock-names = "xvclk";
|
||||||
|
reset-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
|
||||||
|
DOVDD-supply = <&sw2_reg>;
|
||||||
|
DVDD-supply = <&sw2_reg>;
|
||||||
|
AVDD-supply = <®_peri_3p15v>;
|
||||||
|
|
||||||
|
port {
|
||||||
|
ov2680_to_mipi: endpoint {
|
||||||
|
remote-endpoint = <&mipi_from_sensor>;
|
||||||
|
clock-lanes = <0>;
|
||||||
|
data-lanes = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
@@ -13,6 +13,10 @@ Optional Properties:
|
|||||||
This is an active low signal to the OV5640.
|
This is an active low signal to the OV5640.
|
||||||
- powerdown-gpios: reference to the GPIO connected to the powerdown pin,
|
- powerdown-gpios: reference to the GPIO connected to the powerdown pin,
|
||||||
if any. This is an active high signal to the OV5640.
|
if any. This is an active high signal to the OV5640.
|
||||||
|
- rotation: as defined in
|
||||||
|
Documentation/devicetree/bindings/media/video-interfaces.txt,
|
||||||
|
valid values are 0 (sensor mounted upright) and 180 (sensor
|
||||||
|
mounted upside down).
|
||||||
|
|
||||||
The device node must contain one 'port' child node for its digital output
|
The device node must contain one 'port' child node for its digital output
|
||||||
video port, in accordance with the video interface bindings defined in
|
video port, in accordance with the video interface bindings defined in
|
||||||
@@ -51,6 +55,7 @@ Examples:
|
|||||||
DVDD-supply = <&vgen2_reg>; /* 1.5v */
|
DVDD-supply = <&vgen2_reg>; /* 1.5v */
|
||||||
powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
|
powerdown-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
|
||||||
reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
|
reset-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
|
||||||
|
rotation = <180>;
|
||||||
|
|
||||||
port {
|
port {
|
||||||
/* MIPI CSI-2 bus endpoint */
|
/* MIPI CSI-2 bus endpoint */
|
||||||
|
@@ -27,9 +27,15 @@ Required properties:
|
|||||||
- sxe
|
- sxe
|
||||||
- clocks : Must include the following entries:
|
- clocks : Must include the following entries:
|
||||||
- vde
|
- vde
|
||||||
- resets : Must include the following entries:
|
- resets : Must contain an entry for each entry in reset-names.
|
||||||
|
- reset-names : Should include the following entries:
|
||||||
- vde
|
- vde
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- resets : Must contain an entry for each entry in reset-names.
|
||||||
|
- reset-names : Must include the following entries:
|
||||||
|
- mc
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
video-codec@6001a000 {
|
video-codec@6001a000 {
|
||||||
@@ -51,5 +57,6 @@ video-codec@6001a000 {
|
|||||||
<GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; /* SXE interrupt */
|
<GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; /* SXE interrupt */
|
||||||
interrupt-names = "sync-token", "bsev", "sxe";
|
interrupt-names = "sync-token", "bsev", "sxe";
|
||||||
clocks = <&tegra_car TEGRA20_CLK_VDE>;
|
clocks = <&tegra_car TEGRA20_CLK_VDE>;
|
||||||
resets = <&tegra_car 61>;
|
reset-names = "vde", "mc";
|
||||||
|
resets = <&tegra_car 61>, <&mc TEGRA20_MC_RESET_VDE>;
|
||||||
};
|
};
|
||||||
|
@@ -5,8 +5,9 @@ Qualcomm Camera Subsystem
|
|||||||
- compatible:
|
- compatible:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <stringlist>
|
Value type: <stringlist>
|
||||||
Definition: Should contain:
|
Definition: Should contain one of:
|
||||||
- "qcom,msm8916-camss"
|
- "qcom,msm8916-camss"
|
||||||
|
- "qcom,msm8996-camss"
|
||||||
- reg:
|
- reg:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <prop-encoded-array>
|
Value type: <prop-encoded-array>
|
||||||
@@ -19,11 +20,16 @@ Qualcomm Camera Subsystem
|
|||||||
- "csiphy0_clk_mux"
|
- "csiphy0_clk_mux"
|
||||||
- "csiphy1"
|
- "csiphy1"
|
||||||
- "csiphy1_clk_mux"
|
- "csiphy1_clk_mux"
|
||||||
|
- "csiphy2" (8996 only)
|
||||||
|
- "csiphy2_clk_mux" (8996 only)
|
||||||
- "csid0"
|
- "csid0"
|
||||||
- "csid1"
|
- "csid1"
|
||||||
|
- "csid2" (8996 only)
|
||||||
|
- "csid3" (8996 only)
|
||||||
- "ispif"
|
- "ispif"
|
||||||
- "csi_clk_mux"
|
- "csi_clk_mux"
|
||||||
- "vfe0"
|
- "vfe0"
|
||||||
|
- "vfe1" (8996 only)
|
||||||
- interrupts:
|
- interrupts:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <prop-encoded-array>
|
Value type: <prop-encoded-array>
|
||||||
@@ -34,10 +40,14 @@ Qualcomm Camera Subsystem
|
|||||||
Definition: Should contain the following entries:
|
Definition: Should contain the following entries:
|
||||||
- "csiphy0"
|
- "csiphy0"
|
||||||
- "csiphy1"
|
- "csiphy1"
|
||||||
|
- "csiphy2" (8996 only)
|
||||||
- "csid0"
|
- "csid0"
|
||||||
- "csid1"
|
- "csid1"
|
||||||
|
- "csid2" (8996 only)
|
||||||
|
- "csid3" (8996 only)
|
||||||
- "ispif"
|
- "ispif"
|
||||||
- "vfe0"
|
- "vfe0"
|
||||||
|
- "vfe1" (8996 only)
|
||||||
- power-domains:
|
- power-domains:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <prop-encoded-array>
|
Value type: <prop-encoded-array>
|
||||||
@@ -53,25 +63,42 @@ Qualcomm Camera Subsystem
|
|||||||
Usage: required
|
Usage: required
|
||||||
Value type: <stringlist>
|
Value type: <stringlist>
|
||||||
Definition: Should contain the following entries:
|
Definition: Should contain the following entries:
|
||||||
- "camss_top_ahb"
|
- "top_ahb"
|
||||||
- "ispif_ahb"
|
- "ispif_ahb"
|
||||||
- "csiphy0_timer"
|
- "csiphy0_timer"
|
||||||
- "csiphy1_timer"
|
- "csiphy1_timer"
|
||||||
- "csi0_ahb"
|
- "csiphy2_timer" (8996 only)
|
||||||
- "csi0"
|
- "csi0_ahb"
|
||||||
- "csi0_phy"
|
- "csi0"
|
||||||
- "csi0_pix"
|
- "csi0_phy"
|
||||||
- "csi0_rdi"
|
- "csi0_pix"
|
||||||
- "csi1_ahb"
|
- "csi0_rdi"
|
||||||
- "csi1"
|
- "csi1_ahb"
|
||||||
- "csi1_phy"
|
- "csi1"
|
||||||
- "csi1_pix"
|
- "csi1_phy"
|
||||||
- "csi1_rdi"
|
- "csi1_pix"
|
||||||
- "camss_ahb"
|
- "csi1_rdi"
|
||||||
- "camss_vfe_vfe"
|
- "csi2_ahb" (8996 only)
|
||||||
- "camss_csi_vfe"
|
- "csi2" (8996 only)
|
||||||
- "iface"
|
- "csi2_phy" (8996 only)
|
||||||
- "bus"
|
- "csi2_pix" (8996 only)
|
||||||
|
- "csi2_rdi" (8996 only)
|
||||||
|
- "csi3_ahb" (8996 only)
|
||||||
|
- "csi3" (8996 only)
|
||||||
|
- "csi3_phy" (8996 only)
|
||||||
|
- "csi3_pix" (8996 only)
|
||||||
|
- "csi3_rdi" (8996 only)
|
||||||
|
- "ahb"
|
||||||
|
- "vfe0"
|
||||||
|
- "csi_vfe0"
|
||||||
|
- "vfe0_ahb", (8996 only)
|
||||||
|
- "vfe0_stream", (8996 only)
|
||||||
|
- "vfe1", (8996 only)
|
||||||
|
- "csi_vfe1", (8996 only)
|
||||||
|
- "vfe1_ahb", (8996 only)
|
||||||
|
- "vfe1_stream", (8996 only)
|
||||||
|
- "vfe_ahb"
|
||||||
|
- "vfe_axi"
|
||||||
- vdda-supply:
|
- vdda-supply:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <phandle>
|
Value type: <phandle>
|
||||||
@@ -90,22 +117,27 @@ Qualcomm Camera Subsystem
|
|||||||
- reg:
|
- reg:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <u32>
|
Value type: <u32>
|
||||||
Definition: Selects CSI2 PHY interface - PHY0 or PHY1.
|
Definition: Selects CSI2 PHY interface - PHY0, PHY1
|
||||||
|
or PHY2 (8996 only)
|
||||||
Endpoint node properties:
|
Endpoint node properties:
|
||||||
- clock-lanes:
|
- clock-lanes:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <u32>
|
Value type: <u32>
|
||||||
Definition: The physical clock lane index. The value
|
Definition: The physical clock lane index. On 8916
|
||||||
must always be <1> as the physical clock
|
the value must always be <1> as the physical
|
||||||
lane is lane 1.
|
clock lane is lane 1. On 8996 the value must
|
||||||
|
always be <7> as the hardware supports D-PHY
|
||||||
|
and C-PHY, indexes are in a common set and
|
||||||
|
D-PHY physical clock lane is labeled as 7.
|
||||||
- data-lanes:
|
- data-lanes:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <prop-encoded-array>
|
Value type: <prop-encoded-array>
|
||||||
Definition: An array of physical data lanes indexes.
|
Definition: An array of physical data lanes indexes.
|
||||||
Position of an entry determines the logical
|
Position of an entry determines the logical
|
||||||
lane number, while the value of an entry
|
lane number, while the value of an entry
|
||||||
indicates physical lane index. Lane swapping
|
indicates physical lane index. Lane swapping
|
||||||
is supported.
|
is supported. Physical lane indexes for
|
||||||
|
8916: 0, 2, 3, 4; for 8996: 0, 1, 2, 3.
|
||||||
|
|
||||||
* An Example
|
* An Example
|
||||||
|
|
||||||
@@ -161,25 +193,25 @@ Qualcomm Camera Subsystem
|
|||||||
<&gcc GCC_CAMSS_CSI_VFE0_CLK>,
|
<&gcc GCC_CAMSS_CSI_VFE0_CLK>,
|
||||||
<&gcc GCC_CAMSS_VFE_AHB_CLK>,
|
<&gcc GCC_CAMSS_VFE_AHB_CLK>,
|
||||||
<&gcc GCC_CAMSS_VFE_AXI_CLK>;
|
<&gcc GCC_CAMSS_VFE_AXI_CLK>;
|
||||||
clock-names = "camss_top_ahb",
|
clock-names = "top_ahb",
|
||||||
"ispif_ahb",
|
"ispif_ahb",
|
||||||
"csiphy0_timer",
|
"csiphy0_timer",
|
||||||
"csiphy1_timer",
|
"csiphy1_timer",
|
||||||
"csi0_ahb",
|
"csi0_ahb",
|
||||||
"csi0",
|
"csi0",
|
||||||
"csi0_phy",
|
"csi0_phy",
|
||||||
"csi0_pix",
|
"csi0_pix",
|
||||||
"csi0_rdi",
|
"csi0_rdi",
|
||||||
"csi1_ahb",
|
"csi1_ahb",
|
||||||
"csi1",
|
"csi1",
|
||||||
"csi1_phy",
|
"csi1_phy",
|
||||||
"csi1_pix",
|
"csi1_pix",
|
||||||
"csi1_rdi",
|
"csi1_rdi",
|
||||||
"camss_ahb",
|
"ahb",
|
||||||
"camss_vfe_vfe",
|
"vfe0",
|
||||||
"camss_csi_vfe",
|
"csi_vfe0",
|
||||||
"iface",
|
"vfe_ahb",
|
||||||
"bus";
|
"vfe_axi";
|
||||||
vdda-supply = <&pm8916_l2>;
|
vdda-supply = <&pm8916_l2>;
|
||||||
iommus = <&apps_iommu 3>;
|
iommus = <&apps_iommu 3>;
|
||||||
ports {
|
ports {
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
Definition: Value should contain one of:
|
Definition: Value should contain one of:
|
||||||
- "qcom,msm8916-venus"
|
- "qcom,msm8916-venus"
|
||||||
- "qcom,msm8996-venus"
|
- "qcom,msm8996-venus"
|
||||||
|
- "qcom,sdm845-venus"
|
||||||
- reg:
|
- reg:
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <prop-encoded-array>
|
Value type: <prop-encoded-array>
|
||||||
|
@@ -21,7 +21,9 @@ on Gen3 platforms to a CSI-2 receiver.
|
|||||||
- "renesas,vin-r8a7794" for the R8A7794 device
|
- "renesas,vin-r8a7794" for the R8A7794 device
|
||||||
- "renesas,vin-r8a7795" for the R8A7795 device
|
- "renesas,vin-r8a7795" for the R8A7795 device
|
||||||
- "renesas,vin-r8a7796" for the R8A7796 device
|
- "renesas,vin-r8a7796" for the R8A7796 device
|
||||||
|
- "renesas,vin-r8a77965" for the R8A77965 device
|
||||||
- "renesas,vin-r8a77970" for the R8A77970 device
|
- "renesas,vin-r8a77970" for the R8A77970 device
|
||||||
|
- "renesas,vin-r8a77995" for the R8A77995 device
|
||||||
- "renesas,rcar-gen2-vin" for a generic R-Car Gen2 or RZ/G1 compatible
|
- "renesas,rcar-gen2-vin" for a generic R-Car Gen2 or RZ/G1 compatible
|
||||||
device.
|
device.
|
||||||
|
|
||||||
@@ -37,30 +39,51 @@ Additionally, an alias named vinX will need to be created to specify
|
|||||||
which video input device this is.
|
which video input device this is.
|
||||||
|
|
||||||
The per-board settings Gen2 platforms:
|
The per-board settings Gen2 platforms:
|
||||||
- port sub-node describing a single endpoint connected to the vin
|
|
||||||
as described in video-interfaces.txt[1]. Only the first one will
|
- port - sub-node describing a single endpoint connected to the VIN
|
||||||
be considered as each vin interface has one input port.
|
from external SoC pins as described in video-interfaces.txt[1].
|
||||||
|
Only the first one will be considered as each vin interface has one
|
||||||
|
input port.
|
||||||
|
|
||||||
|
- Optional properties for endpoint nodes:
|
||||||
|
- hsync-active: see [1] for description. Default is active high.
|
||||||
|
- vsync-active: see [1] for description. Default is active high.
|
||||||
|
If both HSYNC and VSYNC polarities are not specified, embedded
|
||||||
|
synchronization is selected.
|
||||||
|
- field-active-even: see [1] for description. Default is active high.
|
||||||
|
- bus-width: see [1] for description. The selected bus width depends on
|
||||||
|
the SoC type and selected input image format.
|
||||||
|
Valid values are: 8, 10, 12, 16, 24 and 32.
|
||||||
|
- data-shift: see [1] for description. Valid values are 0 and 8.
|
||||||
|
- data-enable-active: polarity of CLKENB signal, see [1] for
|
||||||
|
description. Default is active high.
|
||||||
|
|
||||||
The per-board settings Gen3 platforms:
|
The per-board settings Gen3 platforms:
|
||||||
|
|
||||||
Gen3 platforms can support both a single connected parallel input source
|
Gen3 platforms can support both a single connected parallel input source
|
||||||
from external SoC pins (port0) and/or multiple parallel input sources
|
from external SoC pins (port@0) and/or multiple parallel input sources
|
||||||
from local SoC CSI-2 receivers (port1) depending on SoC.
|
from local SoC CSI-2 receivers (port@1) depending on SoC.
|
||||||
|
|
||||||
- renesas,id - ID number of the VIN, VINx in the documentation.
|
- renesas,id - ID number of the VIN, VINx in the documentation.
|
||||||
- ports
|
- ports
|
||||||
- port 0 - sub-node describing a single endpoint connected to the VIN
|
- port@0 - sub-node describing a single endpoint connected to the VIN
|
||||||
from external SoC pins described in video-interfaces.txt[1].
|
from external SoC pins as described in video-interfaces.txt[1].
|
||||||
Describing more then one endpoint in port 0 is invalid. Only VIN
|
Describing more than one endpoint in port@0 is invalid. Only VIN
|
||||||
instances that are connected to external pins should have port 0.
|
instances that are connected to external pins should have port@0.
|
||||||
- port 1 - sub-nodes describing one or more endpoints connected to
|
|
||||||
|
Endpoint nodes of port@0 support the optional properties listed in
|
||||||
|
the Gen2 per-board settings description.
|
||||||
|
|
||||||
|
- port@1 - sub-nodes describing one or more endpoints connected to
|
||||||
the VIN from local SoC CSI-2 receivers. The endpoint numbers must
|
the VIN from local SoC CSI-2 receivers. The endpoint numbers must
|
||||||
use the following schema.
|
use the following schema.
|
||||||
|
|
||||||
- Endpoint 0 - sub-node describing the endpoint connected to CSI20
|
- endpoint@0 - sub-node describing the endpoint connected to CSI20
|
||||||
- Endpoint 1 - sub-node describing the endpoint connected to CSI21
|
- endpoint@1 - sub-node describing the endpoint connected to CSI21
|
||||||
- Endpoint 2 - sub-node describing the endpoint connected to CSI40
|
- endpoint@2 - sub-node describing the endpoint connected to CSI40
|
||||||
- Endpoint 3 - sub-node describing the endpoint connected to CSI41
|
- endpoint@3 - sub-node describing the endpoint connected to CSI41
|
||||||
|
|
||||||
|
Endpoint nodes of port@1 do not support any optional endpoint property.
|
||||||
|
|
||||||
Device node example for Gen2 platforms
|
Device node example for Gen2 platforms
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
@@ -107,9 +130,6 @@ Board setup example for Gen2 platforms (vin1 composite video input)
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
port {
|
port {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
vin1ep0: endpoint {
|
vin1ep0: endpoint {
|
||||||
remote-endpoint = <&adv7180>;
|
remote-endpoint = <&adv7180>;
|
||||||
bus-width = <8>;
|
bus-width = <8>;
|
||||||
|
@@ -85,6 +85,10 @@ Optional properties
|
|||||||
|
|
||||||
- lens-focus: A phandle to the node of the focus lens controller.
|
- lens-focus: A phandle to the node of the focus lens controller.
|
||||||
|
|
||||||
|
- rotation: The device, typically an image sensor, is not mounted upright,
|
||||||
|
but a number of degrees counter clockwise. Typical values are 0 and 180
|
||||||
|
(upside down).
|
||||||
|
|
||||||
|
|
||||||
Optional endpoint properties
|
Optional endpoint properties
|
||||||
----------------------------
|
----------------------------
|
||||||
@@ -109,6 +113,8 @@ Optional endpoint properties
|
|||||||
Note, that if HSYNC and VSYNC polarities are not specified, embedded
|
Note, that if HSYNC and VSYNC polarities are not specified, embedded
|
||||||
synchronization may be required, where supported.
|
synchronization may be required, where supported.
|
||||||
- data-active: similar to HSYNC and VSYNC, specifies data line polarity.
|
- data-active: similar to HSYNC and VSYNC, specifies data line polarity.
|
||||||
|
- data-enable-active: similar to HSYNC and VSYNC, specifies the data enable
|
||||||
|
signal polarity.
|
||||||
- field-even-active: field signal level during the even field data transmission.
|
- field-even-active: field signal level during the even field data transmission.
|
||||||
- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock
|
- pclk-sample: sample data on rising (1) or falling (0) edge of the pixel clock
|
||||||
signal.
|
signal.
|
||||||
|
@@ -1,9 +1,6 @@
|
|||||||
# Ignore header name
|
# Ignore header name
|
||||||
ignore define _DVBAUDIO_H_
|
ignore define _DVBAUDIO_H_
|
||||||
|
|
||||||
# Typedef pointing to structs
|
|
||||||
replace typedef audio_karaoke_t :c:type:`audio_karaoke`
|
|
||||||
|
|
||||||
# Undocumented audio caps, as this is a deprecated API anyway
|
# Undocumented audio caps, as this is a deprecated API anyway
|
||||||
ignore define AUDIO_CAP_DTS
|
ignore define AUDIO_CAP_DTS
|
||||||
ignore define AUDIO_CAP_LPCM
|
ignore define AUDIO_CAP_LPCM
|
||||||
|
@@ -6,10 +6,10 @@ ignore define MEDIA_API_VERSION
|
|||||||
ignore define MEDIA_ENT_F_BASE
|
ignore define MEDIA_ENT_F_BASE
|
||||||
ignore define MEDIA_ENT_F_OLD_BASE
|
ignore define MEDIA_ENT_F_OLD_BASE
|
||||||
ignore define MEDIA_ENT_F_OLD_SUBDEV_BASE
|
ignore define MEDIA_ENT_F_OLD_SUBDEV_BASE
|
||||||
|
ignore define MEDIA_ENT_F_DTV_DECODER
|
||||||
ignore define MEDIA_INTF_T_DVB_BASE
|
ignore define MEDIA_INTF_T_DVB_BASE
|
||||||
ignore define MEDIA_INTF_T_V4L_BASE
|
ignore define MEDIA_INTF_T_V4L_BASE
|
||||||
ignore define MEDIA_INTF_T_ALSA_BASE
|
ignore define MEDIA_INTF_T_ALSA_BASE
|
||||||
|
|
||||||
#ignore legacy entity type macros
|
#ignore legacy entity type macros
|
||||||
ignore define MEDIA_ENT_TYPE_SHIFT
|
ignore define MEDIA_ENT_TYPE_SHIFT
|
||||||
ignore define MEDIA_ENT_TYPE_MASK
|
ignore define MEDIA_ENT_TYPE_MASK
|
||||||
|
@@ -179,6 +179,24 @@ it is guaranteed that the state did change in between the two events.
|
|||||||
capability set. When open() is called, the HPD pin can be read and
|
capability set. When open() is called, the HPD pin can be read and
|
||||||
if the HPD is high, then an initial event will be generated for that
|
if the HPD is high, then an initial event will be generated for that
|
||||||
filehandle.
|
filehandle.
|
||||||
|
* .. _`CEC-EVENT-PIN-5V-LOW`:
|
||||||
|
|
||||||
|
- ``CEC_EVENT_PIN_5V_LOW``
|
||||||
|
- 6
|
||||||
|
- Generated if the 5V pin goes from a high voltage to a low voltage.
|
||||||
|
Only applies to adapters that have the ``CEC_CAP_MONITOR_PIN``
|
||||||
|
capability set. When open() is called, the 5V pin can be read and
|
||||||
|
if the 5V is low, then an initial event will be generated for that
|
||||||
|
filehandle.
|
||||||
|
* .. _`CEC-EVENT-PIN-5V-HIGH`:
|
||||||
|
|
||||||
|
- ``CEC_EVENT_PIN_5V_HIGH``
|
||||||
|
- 7
|
||||||
|
- Generated if the 5V pin goes from a low voltage to a high voltage.
|
||||||
|
Only applies to adapters that have the ``CEC_CAP_MONITOR_PIN``
|
||||||
|
capability set. When open() is called, the 5V pin can be read and
|
||||||
|
if the 5V is high, then an initial event will be generated for that
|
||||||
|
filehandle.
|
||||||
|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{6.0cm}|p{0.6cm}|p{10.9cm}|
|
.. tabularcolumns:: |p{6.0cm}|p{0.6cm}|p{10.9cm}|
|
||||||
|
@@ -1,65 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _AUDIO_GET_PTS:
|
|
||||||
|
|
||||||
=============
|
|
||||||
AUDIO_GET_PTS
|
|
||||||
=============
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
AUDIO_GET_PTS
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(int fd, AUDIO_GET_PTS, __u64 *pts)
|
|
||||||
:name: AUDIO_GET_PTS
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
- __u64 \*pts
|
|
||||||
|
|
||||||
- Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 /
|
|
||||||
ISO/IEC 13818-1.
|
|
||||||
|
|
||||||
The PTS should belong to the currently played frame if possible,
|
|
||||||
but may also be a value close to it like the PTS of the last
|
|
||||||
decoded frame or the last PTS extracted by the PES parser.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl is obsolete. Do not use in new drivers. If you need this
|
|
||||||
functionality, then please contact the linux-media mailing list
|
|
||||||
(`https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__).
|
|
||||||
|
|
||||||
This ioctl call asks the Audio Device to return the current PTS
|
|
||||||
timestamp.
|
|
||||||
|
|
||||||
|
|
||||||
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,67 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _AUDIO_SET_ATTRIBUTES:
|
|
||||||
|
|
||||||
====================
|
|
||||||
AUDIO_SET_ATTRIBUTES
|
|
||||||
====================
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
AUDIO_SET_ATTRIBUTES
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated
|
|
||||||
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(fd, AUDIO_SET_ATTRIBUTES, struct audio_attributes *attr )
|
|
||||||
:name: AUDIO_SET_ATTRIBUTES
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
- audio_attributes_t attr
|
|
||||||
|
|
||||||
- audio attributes according to section ??
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl is intended for DVD playback and allows you to set certain
|
|
||||||
information about the audio stream.
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
- ``EINVAL``
|
|
||||||
|
|
||||||
- attr is not a valid or supported attribute setting.
|
|
@@ -1,66 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _AUDIO_SET_EXT_ID:
|
|
||||||
|
|
||||||
================
|
|
||||||
AUDIO_SET_EXT_ID
|
|
||||||
================
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
AUDIO_SET_EXT_ID
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(fd, AUDIO_SET_EXT_ID, int id)
|
|
||||||
:name: AUDIO_SET_EXT_ID
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
- int id
|
|
||||||
|
|
||||||
- audio sub_stream_id
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl can be used to set the extension id for MPEG streams in DVD
|
|
||||||
playback. Only the first 3 bits are recognized.
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
- ``EINVAL``
|
|
||||||
|
|
||||||
- id is not a valid id.
|
|
@@ -1,66 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _AUDIO_SET_KARAOKE:
|
|
||||||
|
|
||||||
=================
|
|
||||||
AUDIO_SET_KARAOKE
|
|
||||||
=================
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
AUDIO_SET_KARAOKE
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(fd, AUDIO_SET_KARAOKE, struct audio_karaoke *karaoke)
|
|
||||||
:name: AUDIO_SET_KARAOKE
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
-
|
|
||||||
|
|
||||||
- audio_karaoke_t \*karaoke
|
|
||||||
|
|
||||||
- karaoke settings according to section ??.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl allows one to set the mixer settings for a karaoke DVD.
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
- ``EINVAL``
|
|
||||||
|
|
||||||
- karaoke is not a valid or supported karaoke setting.
|
|
@@ -114,40 +114,3 @@ following bits set according to the hardwares capabilities.
|
|||||||
#define AUDIO_CAP_OGG 64
|
#define AUDIO_CAP_OGG 64
|
||||||
#define AUDIO_CAP_SDDS 128
|
#define AUDIO_CAP_SDDS 128
|
||||||
#define AUDIO_CAP_AC3 256
|
#define AUDIO_CAP_AC3 256
|
||||||
|
|
||||||
.. c:type:: audio_karaoke
|
|
||||||
|
|
||||||
The ioctl AUDIO_SET_KARAOKE uses the following format:
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef
|
|
||||||
struct audio_karaoke {
|
|
||||||
int vocal1;
|
|
||||||
int vocal2;
|
|
||||||
int melody;
|
|
||||||
} audio_karaoke_t;
|
|
||||||
|
|
||||||
If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t
|
|
||||||
at 70% each. If both, Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed
|
|
||||||
into the left channel and Vocal2 into the right channel at 100% each. Ff
|
|
||||||
Melody is non-zero, the melody channel gets mixed into left and right.
|
|
||||||
|
|
||||||
|
|
||||||
.. c:type:: audio_attributes
|
|
||||||
|
|
||||||
The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES:
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef uint16_t audio_attributes_t;
|
|
||||||
/* bits: descr. */
|
|
||||||
/* 15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, */
|
|
||||||
/* 12 multichannel extension */
|
|
||||||
/* 11-10 audio type (0=not spec, 1=language included) */
|
|
||||||
/* 9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) */
|
|
||||||
/* 7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, */
|
|
||||||
/* 5- 4 Sample frequency fs (0=48kHz, 1=96kHz) */
|
|
||||||
/* 2- 0 number of audio channels (n+1 channels) */
|
|
||||||
|
@@ -22,13 +22,9 @@ Audio Function Calls
|
|||||||
audio-set-bypass-mode
|
audio-set-bypass-mode
|
||||||
audio-channel-select
|
audio-channel-select
|
||||||
audio-bilingual-channel-select
|
audio-bilingual-channel-select
|
||||||
audio-get-pts
|
|
||||||
audio-get-status
|
audio-get-status
|
||||||
audio-get-capabilities
|
audio-get-capabilities
|
||||||
audio-clear-buffer
|
audio-clear-buffer
|
||||||
audio-set-id
|
audio-set-id
|
||||||
audio-set-mixer
|
audio-set-mixer
|
||||||
audio-set-streamtype
|
audio-set-streamtype
|
||||||
audio-set-ext-id
|
|
||||||
audio-set-attributes
|
|
||||||
audio-set-karaoke
|
|
||||||
|
@@ -1,61 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _VIDEO_GET_FRAME_RATE:
|
|
||||||
|
|
||||||
====================
|
|
||||||
VIDEO_GET_FRAME_RATE
|
|
||||||
====================
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
VIDEO_GET_FRAME_RATE
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated.
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(int fd, VIDEO_GET_FRAME_RATE, unsigned int *rate)
|
|
||||||
:name: VIDEO_GET_FRAME_RATE
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- int request
|
|
||||||
|
|
||||||
- Equals VIDEO_GET_FRAME_RATE for this command.
|
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- unsigned int \*rate
|
|
||||||
|
|
||||||
- Returns the framerate in number of frames per 1000 seconds.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl call asks the Video Device to return the current framerate.
|
|
||||||
|
|
||||||
|
|
||||||
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,84 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _VIDEO_GET_NAVI:
|
|
||||||
|
|
||||||
==============
|
|
||||||
VIDEO_GET_NAVI
|
|
||||||
==============
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
VIDEO_GET_NAVI
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated.
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(fd, VIDEO_GET_NAVI , struct video_navi_pack *navipack)
|
|
||||||
:name: VIDEO_GET_NAVI
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- int request
|
|
||||||
|
|
||||||
- Equals VIDEO_GET_NAVI for this command.
|
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- video_navi_pack_t \*navipack
|
|
||||||
|
|
||||||
- PCI or DSI pack (private stream 2) according to section ??.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl returns navigational information from the DVD stream. This is
|
|
||||||
especially needed if an encoded stream has to be decoded by the
|
|
||||||
hardware.
|
|
||||||
|
|
||||||
.. c:type:: video_navi_pack
|
|
||||||
|
|
||||||
.. code-block::c
|
|
||||||
|
|
||||||
typedef struct video_navi_pack {
|
|
||||||
int length; /* 0 ... 1024 */
|
|
||||||
__u8 data[1024];
|
|
||||||
} video_navi_pack_t;
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
- ``EFAULT``
|
|
||||||
|
|
||||||
- driver is not able to return navigational information
|
|
@@ -1,93 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _VIDEO_SET_ATTRIBUTES:
|
|
||||||
|
|
||||||
====================
|
|
||||||
VIDEO_SET_ATTRIBUTES
|
|
||||||
====================
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
VIDEO_SET_ATTRIBUTES
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated.
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(fd, VIDEO_SET_ATTRIBUTE ,video_attributes_t vattr)
|
|
||||||
:name: VIDEO_SET_ATTRIBUTE
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- int request
|
|
||||||
|
|
||||||
- Equals VIDEO_SET_ATTRIBUTE for this command.
|
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- video_attributes_t vattr
|
|
||||||
|
|
||||||
- video attributes according to section ??.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl is intended for DVD playback and allows you to set certain
|
|
||||||
information about the stream. Some hardware may not need this
|
|
||||||
information, but the call also tells the hardware to prepare for DVD
|
|
||||||
playback.
|
|
||||||
|
|
||||||
.. c:type:: video_attributes_t
|
|
||||||
|
|
||||||
.. code-block::c
|
|
||||||
|
|
||||||
typedef __u16 video_attributes_t;
|
|
||||||
/* bits: descr. */
|
|
||||||
/* 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) */
|
|
||||||
/* 13-12 TV system (0=525/60, 1=625/50) */
|
|
||||||
/* 11-10 Aspect ratio (0=4:3, 3=16:9) */
|
|
||||||
/* 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca */
|
|
||||||
/* 7 line 21-1 data present in GOP (1=yes, 0=no) */
|
|
||||||
/* 6 line 21-2 data present in GOP (1=yes, 0=no) */
|
|
||||||
/* 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 */
|
|
||||||
/* 2 source letterboxed (1=yes, 0=no) */
|
|
||||||
/* 0 film/camera mode (0=camera, 1=film (625/50 only)) */
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
- ``EINVAL``
|
|
||||||
|
|
||||||
- input is not a valid attribute setting.
|
|
@@ -1,86 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _VIDEO_SET_HIGHLIGHT:
|
|
||||||
|
|
||||||
===================
|
|
||||||
VIDEO_SET_HIGHLIGHT
|
|
||||||
===================
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
VIDEO_SET_HIGHLIGHT
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated.
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(fd, VIDEO_SET_HIGHLIGHT, struct video_highlight *vhilite)
|
|
||||||
:name: VIDEO_SET_HIGHLIGHT
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- int request
|
|
||||||
|
|
||||||
- Equals VIDEO_SET_HIGHLIGHT for this command.
|
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- video_highlight_t \*vhilite
|
|
||||||
|
|
||||||
- SPU Highlight information according to section ??.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl sets the SPU highlight information for the menu access of a
|
|
||||||
DVD.
|
|
||||||
|
|
||||||
.. c:type:: video_highlight
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef
|
|
||||||
struct video_highlight {
|
|
||||||
int active; /* 1=show highlight, 0=hide highlight */
|
|
||||||
__u8 contrast1; /* 7- 4 Pattern pixel contrast */
|
|
||||||
/* 3- 0 Background pixel contrast */
|
|
||||||
__u8 contrast2; /* 7- 4 Emphasis pixel-2 contrast */
|
|
||||||
/* 3- 0 Emphasis pixel-1 contrast */
|
|
||||||
__u8 color1; /* 7- 4 Pattern pixel color */
|
|
||||||
/* 3- 0 Background pixel color */
|
|
||||||
__u8 color2; /* 7- 4 Emphasis pixel-2 color */
|
|
||||||
/* 3- 0 Emphasis pixel-1 color */
|
|
||||||
__u32 ypos; /* 23-22 auto action mode */
|
|
||||||
/* 21-12 start y */
|
|
||||||
/* 9- 0 end y */
|
|
||||||
__u32 xpos; /* 23-22 button color number */
|
|
||||||
/* 21-12 start x */
|
|
||||||
/* 9- 0 end x */
|
|
||||||
} video_highlight_t;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
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,75 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _VIDEO_SET_ID:
|
|
||||||
|
|
||||||
============
|
|
||||||
VIDEO_SET_ID
|
|
||||||
============
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
VIDEO_SET_ID
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated.
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(int fd, VIDEO_SET_ID, int id)
|
|
||||||
:name: VIDEO_SET_ID
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- int request
|
|
||||||
|
|
||||||
- Equals VIDEO_SET_ID for this command.
|
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- int id
|
|
||||||
|
|
||||||
- video sub-stream id
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl selects which sub-stream is to be decoded if a program or
|
|
||||||
system stream is sent to the video 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
|
|
||||||
:ref:`Generic Error Codes <gen-errors>` chapter.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- ``EINVAL``
|
|
||||||
|
|
||||||
- Invalid sub-stream id.
|
|
@@ -1,82 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _VIDEO_SET_SPU_PALETTE:
|
|
||||||
|
|
||||||
=====================
|
|
||||||
VIDEO_SET_SPU_PALETTE
|
|
||||||
=====================
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
VIDEO_SET_SPU_PALETTE
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated.
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(fd, VIDEO_SET_SPU_PALETTE, struct video_spu_palette *palette )
|
|
||||||
:name: VIDEO_SET_SPU_PALETTE
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- int request
|
|
||||||
|
|
||||||
- Equals VIDEO_SET_SPU_PALETTE for this command.
|
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- video_spu_palette_t \*palette
|
|
||||||
|
|
||||||
- SPU palette according to section ??.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl sets the SPU color palette.
|
|
||||||
|
|
||||||
.. c:type:: video_spu_palette
|
|
||||||
|
|
||||||
.. code-block::c
|
|
||||||
|
|
||||||
typedef struct video_spu_palette { /* SPU Palette information */
|
|
||||||
int length;
|
|
||||||
__u8 __user *palette;
|
|
||||||
} video_spu_palette_t;
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
- ``EINVAL``
|
|
||||||
|
|
||||||
- input is not a valid palette or driver doesn’t handle SPU.
|
|
@@ -1,85 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _VIDEO_SET_SPU:
|
|
||||||
|
|
||||||
=============
|
|
||||||
VIDEO_SET_SPU
|
|
||||||
=============
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
VIDEO_SET_SPU
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated.
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(fd, VIDEO_SET_SPU , struct video_spu *spu)
|
|
||||||
:name: VIDEO_SET_SPU
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- int request
|
|
||||||
|
|
||||||
- Equals VIDEO_SET_SPU for this command.
|
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- video_spu_t \*spu
|
|
||||||
|
|
||||||
- SPU decoding (de)activation and subid setting according to section
|
|
||||||
??.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl activates or deactivates SPU decoding in a DVD input stream.
|
|
||||||
It can only be used, if the driver is able to handle a DVD stream.
|
|
||||||
|
|
||||||
.. c:type:: struct video_spu
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef struct video_spu {
|
|
||||||
int active;
|
|
||||||
int stream_id;
|
|
||||||
} video_spu_t;
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
- ``EINVAL``
|
|
||||||
|
|
||||||
- input is not a valid spu setting or driver cannot handle SPU.
|
|
@@ -1,77 +0,0 @@
|
|||||||
.. -*- coding: utf-8; mode: rst -*-
|
|
||||||
|
|
||||||
.. _VIDEO_SET_SYSTEM:
|
|
||||||
|
|
||||||
================
|
|
||||||
VIDEO_SET_SYSTEM
|
|
||||||
================
|
|
||||||
|
|
||||||
Name
|
|
||||||
----
|
|
||||||
|
|
||||||
VIDEO_SET_SYSTEM
|
|
||||||
|
|
||||||
.. attention:: This ioctl is deprecated.
|
|
||||||
|
|
||||||
Synopsis
|
|
||||||
--------
|
|
||||||
|
|
||||||
.. c:function:: int ioctl(fd, VIDEO_SET_SYSTEM , video_system_t system)
|
|
||||||
:name: VIDEO_SET_SYSTEM
|
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
|
||||||
---------
|
|
||||||
|
|
||||||
.. flat-table::
|
|
||||||
:header-rows: 0
|
|
||||||
:stub-columns: 0
|
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- int fd
|
|
||||||
|
|
||||||
- File descriptor returned by a previous call to open().
|
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- int request
|
|
||||||
|
|
||||||
- Equals VIDEO_SET_FORMAT for this command.
|
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- video_system_t system
|
|
||||||
|
|
||||||
- video system of TV output.
|
|
||||||
|
|
||||||
|
|
||||||
Description
|
|
||||||
-----------
|
|
||||||
|
|
||||||
This ioctl sets the television output format. The format (see section
|
|
||||||
??) may vary from the color format of the displayed MPEG stream. If the
|
|
||||||
hardware is not able to display the requested format the call will
|
|
||||||
return an error.
|
|
||||||
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
- ``EINVAL``
|
|
||||||
|
|
||||||
- system is not a valid or supported video system.
|
|
@@ -21,7 +21,6 @@ Video Function Calls
|
|||||||
video-get-status
|
video-get-status
|
||||||
video-get-frame-count
|
video-get-frame-count
|
||||||
video-get-pts
|
video-get-pts
|
||||||
video-get-frame-rate
|
|
||||||
video-get-event
|
video-get-event
|
||||||
video-command
|
video-command
|
||||||
video-try-command
|
video-try-command
|
||||||
@@ -31,13 +30,7 @@ Video Function Calls
|
|||||||
video-fast-forward
|
video-fast-forward
|
||||||
video-slowmotion
|
video-slowmotion
|
||||||
video-get-capabilities
|
video-get-capabilities
|
||||||
video-set-id
|
|
||||||
video-clear-buffer
|
video-clear-buffer
|
||||||
video-set-streamtype
|
video-set-streamtype
|
||||||
video-set-format
|
video-set-format
|
||||||
video-set-system
|
|
||||||
video-set-highlight
|
|
||||||
video-set-spu
|
|
||||||
video-set-spu-palette
|
|
||||||
video-get-navi
|
|
||||||
video-set-attributes
|
video-set-attributes
|
||||||
|
@@ -246,134 +246,3 @@ following bits set according to the hardwares capabilities.
|
|||||||
#define VIDEO_CAP_SPU 16
|
#define VIDEO_CAP_SPU 16
|
||||||
#define VIDEO_CAP_NAVI 32
|
#define VIDEO_CAP_NAVI 32
|
||||||
#define VIDEO_CAP_CSS 64
|
#define VIDEO_CAP_CSS 64
|
||||||
|
|
||||||
|
|
||||||
.. _video-system:
|
|
||||||
|
|
||||||
video_system_t
|
|
||||||
==============
|
|
||||||
|
|
||||||
A call to VIDEO_SET_SYSTEM sets the desired video system for TV
|
|
||||||
output. The following system types can be set:
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
VIDEO_SYSTEM_PAL,
|
|
||||||
VIDEO_SYSTEM_NTSC,
|
|
||||||
VIDEO_SYSTEM_PALN,
|
|
||||||
VIDEO_SYSTEM_PALNc,
|
|
||||||
VIDEO_SYSTEM_PALM,
|
|
||||||
VIDEO_SYSTEM_NTSC60,
|
|
||||||
VIDEO_SYSTEM_PAL60,
|
|
||||||
VIDEO_SYSTEM_PALM60
|
|
||||||
} video_system_t;
|
|
||||||
|
|
||||||
|
|
||||||
.. c:type:: video_highlight
|
|
||||||
|
|
||||||
struct video_highlight
|
|
||||||
======================
|
|
||||||
|
|
||||||
Calling the ioctl VIDEO_SET_HIGHLIGHTS posts the SPU highlight
|
|
||||||
information. The call expects the following format for that information:
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef
|
|
||||||
struct video_highlight {
|
|
||||||
boolean active; /* 1=show highlight, 0=hide highlight */
|
|
||||||
uint8_t contrast1; /* 7- 4 Pattern pixel contrast */
|
|
||||||
/* 3- 0 Background pixel contrast */
|
|
||||||
uint8_t contrast2; /* 7- 4 Emphasis pixel-2 contrast */
|
|
||||||
/* 3- 0 Emphasis pixel-1 contrast */
|
|
||||||
uint8_t color1; /* 7- 4 Pattern pixel color */
|
|
||||||
/* 3- 0 Background pixel color */
|
|
||||||
uint8_t color2; /* 7- 4 Emphasis pixel-2 color */
|
|
||||||
/* 3- 0 Emphasis pixel-1 color */
|
|
||||||
uint32_t ypos; /* 23-22 auto action mode */
|
|
||||||
/* 21-12 start y */
|
|
||||||
/* 9- 0 end y */
|
|
||||||
uint32_t xpos; /* 23-22 button color number */
|
|
||||||
/* 21-12 start x */
|
|
||||||
/* 9- 0 end x */
|
|
||||||
} video_highlight_t;
|
|
||||||
|
|
||||||
|
|
||||||
.. c:type:: video_spu
|
|
||||||
|
|
||||||
struct video_spu
|
|
||||||
================
|
|
||||||
|
|
||||||
Calling VIDEO_SET_SPU deactivates or activates SPU decoding, according
|
|
||||||
to the following format:
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef
|
|
||||||
struct video_spu {
|
|
||||||
boolean active;
|
|
||||||
int stream_id;
|
|
||||||
} video_spu_t;
|
|
||||||
|
|
||||||
|
|
||||||
.. c:type:: video_spu_palette
|
|
||||||
|
|
||||||
struct video_spu_palette
|
|
||||||
========================
|
|
||||||
|
|
||||||
The following structure is used to set the SPU palette by calling
|
|
||||||
VIDEO_SPU_PALETTE:
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef
|
|
||||||
struct video_spu_palette {
|
|
||||||
int length;
|
|
||||||
uint8_t *palette;
|
|
||||||
} video_spu_palette_t;
|
|
||||||
|
|
||||||
|
|
||||||
.. c:type:: video_navi_pack
|
|
||||||
|
|
||||||
struct video_navi_pack
|
|
||||||
======================
|
|
||||||
|
|
||||||
In order to get the navigational data the following structure has to be
|
|
||||||
passed to the ioctl VIDEO_GET_NAVI:
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef
|
|
||||||
struct video_navi_pack {
|
|
||||||
int length; /* 0 ... 1024 */
|
|
||||||
uint8_t data[1024];
|
|
||||||
} video_navi_pack_t;
|
|
||||||
|
|
||||||
|
|
||||||
.. _video-attributes-t:
|
|
||||||
|
|
||||||
video_attributes_t
|
|
||||||
==================
|
|
||||||
|
|
||||||
The following attributes can be set by a call to VIDEO_SET_ATTRIBUTES:
|
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: c
|
|
||||||
|
|
||||||
typedef uint16_t video_attributes_t;
|
|
||||||
/* bits: descr. */
|
|
||||||
/* 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) */
|
|
||||||
/* 13-12 TV system (0=525/60, 1=625/50) */
|
|
||||||
/* 11-10 Aspect ratio (0=4:3, 3=16:9) */
|
|
||||||
/* 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca */
|
|
||||||
/* 7 line 21-1 data present in GOP (1=yes, 0=no) */
|
|
||||||
/* 6 line 21-2 data present in GOP (1=yes, 0=no) */
|
|
||||||
/* 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 */
|
|
||||||
/* 2 source letterboxed (1=yes, 0=no) */
|
|
||||||
/* 0 film/camera mode (0=camera, 1=film (625/50 only)) */
|
|
||||||
|
@@ -48,12 +48,8 @@ ioctl never fails.
|
|||||||
:widths: 1 1 2
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
|
||||||
- .. row 1
|
* - char
|
||||||
|
|
||||||
- char
|
|
||||||
|
|
||||||
- ``driver``\ [16]
|
- ``driver``\ [16]
|
||||||
|
|
||||||
- Name of the driver implementing the media API as a NUL-terminated
|
- Name of the driver implementing the media API as a NUL-terminated
|
||||||
ASCII string. The driver version is stored in the
|
ASCII string. The driver version is stored in the
|
||||||
``driver_version`` field.
|
``driver_version`` field.
|
||||||
@@ -62,66 +58,38 @@ ioctl never fails.
|
|||||||
the driver identity. It is also useful to work around known bugs,
|
the driver identity. It is also useful to work around known bugs,
|
||||||
or to identify drivers in error reports.
|
or to identify drivers in error reports.
|
||||||
|
|
||||||
- .. row 2
|
* - char
|
||||||
|
|
||||||
- char
|
|
||||||
|
|
||||||
- ``model``\ [32]
|
- ``model``\ [32]
|
||||||
|
|
||||||
- Device model name as a NUL-terminated UTF-8 string. The device
|
- Device model name as a NUL-terminated UTF-8 string. The device
|
||||||
version is stored in the ``device_version`` field and is not be
|
version is stored in the ``device_version`` field and is not be
|
||||||
appended to the model name.
|
appended to the model name.
|
||||||
|
|
||||||
- .. row 3
|
* - char
|
||||||
|
|
||||||
- char
|
|
||||||
|
|
||||||
- ``serial``\ [40]
|
- ``serial``\ [40]
|
||||||
|
|
||||||
- Serial number as a NUL-terminated ASCII string.
|
- Serial number as a NUL-terminated ASCII string.
|
||||||
|
|
||||||
- .. row 4
|
* - char
|
||||||
|
|
||||||
- char
|
|
||||||
|
|
||||||
- ``bus_info``\ [32]
|
- ``bus_info``\ [32]
|
||||||
|
|
||||||
- Location of the device in the system as a NUL-terminated ASCII
|
- Location of the device in the system as a NUL-terminated ASCII
|
||||||
string. This includes the bus type name (PCI, USB, ...) and a
|
string. This includes the bus type name (PCI, USB, ...) and a
|
||||||
bus-specific identifier.
|
bus-specific identifier.
|
||||||
|
|
||||||
- .. row 5
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``media_version``
|
- ``media_version``
|
||||||
|
|
||||||
- Media API version, formatted with the ``KERNEL_VERSION()`` macro.
|
- Media API version, formatted with the ``KERNEL_VERSION()`` macro.
|
||||||
|
|
||||||
- .. row 6
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``hw_revision``
|
- ``hw_revision``
|
||||||
|
|
||||||
- Hardware device revision in a driver-specific format.
|
- Hardware device revision in a driver-specific format.
|
||||||
|
|
||||||
- .. row 7
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``driver_version``
|
- ``driver_version``
|
||||||
|
|
||||||
- Media device driver version, formatted with the
|
- Media device driver version, formatted with the
|
||||||
``KERNEL_VERSION()`` macro. Together with the ``driver`` field
|
``KERNEL_VERSION()`` macro. Together with the ``driver`` field
|
||||||
this identifies a particular driver.
|
this identifies a particular driver.
|
||||||
|
|
||||||
- .. row 8
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved``\ [31]
|
- ``reserved``\ [31]
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
|
@@ -58,142 +58,90 @@ id's until they get an error.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 1 1 1 8
|
:widths: 1 1 1 1 8
|
||||||
|
|
||||||
|
* - __u32
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity id, set by the application. When the id is or'ed with
|
- Entity ID, set by the application. When the ID is or'ed with
|
||||||
``MEDIA_ENT_ID_FLAG_NEXT``, the driver clears the flag and returns
|
``MEDIA_ENT_ID_FLAG_NEXT``, the driver clears the flag and returns
|
||||||
the first entity with a larger id.
|
the first entity with a larger ID. Do not expect that the ID will
|
||||||
|
always be the same for each instance of the device. In other words,
|
||||||
- .. row 2
|
do not hardcode entity IDs in an application.
|
||||||
|
|
||||||
- char
|
|
||||||
|
|
||||||
|
* - char
|
||||||
- ``name``\ [32]
|
- ``name``\ [32]
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity name as an UTF-8 NULL-terminated string.
|
- Entity name as an UTF-8 NULL-terminated string. This name must be unique
|
||||||
|
within the media topology.
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
|
* - __u32
|
||||||
- ``type``
|
- ``type``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity type, see :ref:`media-entity-functions` for details.
|
- Entity type, see :ref:`media-entity-functions` for details.
|
||||||
|
|
||||||
- .. row 4
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``revision``
|
- ``revision``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity revision. Always zero (obsolete)
|
- Entity revision. Always zero (obsolete)
|
||||||
|
|
||||||
- .. row 5
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity flags, see :ref:`media-entity-flag` for details.
|
- Entity flags, see :ref:`media-entity-flag` for details.
|
||||||
|
|
||||||
- .. row 6
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``group_id``
|
- ``group_id``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Entity group ID. Always zero (obsolete)
|
- Entity group ID. Always zero (obsolete)
|
||||||
|
|
||||||
- .. row 7
|
* - __u16
|
||||||
|
|
||||||
- __u16
|
|
||||||
|
|
||||||
- ``pads``
|
- ``pads``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Number of pads
|
- Number of pads
|
||||||
|
|
||||||
- .. row 8
|
* - __u16
|
||||||
|
|
||||||
- __u16
|
|
||||||
|
|
||||||
- ``links``
|
- ``links``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Total number of outbound links. Inbound links are not counted in
|
- Total number of outbound links. Inbound links are not counted in
|
||||||
this field.
|
this field.
|
||||||
|
|
||||||
- .. row 9
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved[4]``
|
- ``reserved[4]``
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
the array to zero.
|
the array to zero.
|
||||||
|
|
||||||
- .. row 10
|
* - union
|
||||||
|
|
||||||
- union
|
* -
|
||||||
|
|
||||||
- .. row 11
|
|
||||||
|
|
||||||
-
|
|
||||||
- struct
|
- struct
|
||||||
|
|
||||||
- ``dev``
|
- ``dev``
|
||||||
|
|
||||||
-
|
-
|
||||||
- Valid for (sub-)devices that create a single device node.
|
- Valid for (sub-)devices that create a single device node.
|
||||||
|
|
||||||
- .. row 12
|
* -
|
||||||
|
|
||||||
-
|
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``major``
|
- ``major``
|
||||||
|
|
||||||
- Device node major number.
|
- Device node major number.
|
||||||
|
|
||||||
- .. row 13
|
* -
|
||||||
|
|
||||||
-
|
|
||||||
-
|
-
|
||||||
- __u32
|
- __u32
|
||||||
|
|
||||||
- ``minor``
|
- ``minor``
|
||||||
|
|
||||||
- Device node minor number.
|
- Device node minor number.
|
||||||
|
|
||||||
- .. row 14
|
* -
|
||||||
|
|
||||||
-
|
|
||||||
- __u8
|
- __u8
|
||||||
|
|
||||||
- ``raw``\ [184]
|
- ``raw``\ [184]
|
||||||
|
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
|
|
||||||
|
@@ -62,35 +62,21 @@ returned during the enumeration process.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 1 2
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u32
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``entity``
|
- ``entity``
|
||||||
|
|
||||||
- Entity id, set by the application.
|
- Entity id, set by the application.
|
||||||
|
|
||||||
- .. row 2
|
* - struct :c:type:`media_pad_desc`
|
||||||
|
|
||||||
- struct :c:type:`media_pad_desc`
|
|
||||||
|
|
||||||
- \*\ ``pads``
|
- \*\ ``pads``
|
||||||
|
|
||||||
- Pointer to a pads array allocated by the application. Ignored if
|
- Pointer to a pads array allocated by the application. Ignored if
|
||||||
NULL.
|
NULL.
|
||||||
|
|
||||||
- .. row 3
|
* - struct :c:type:`media_link_desc`
|
||||||
|
|
||||||
- struct :c:type:`media_link_desc`
|
|
||||||
|
|
||||||
- \*\ ``links``
|
- \*\ ``links``
|
||||||
|
|
||||||
- Pointer to a links array allocated by the application. Ignored if
|
- Pointer to a links array allocated by the application. Ignored if
|
||||||
NULL.
|
NULL.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. c:type:: media_pad_desc
|
.. c:type:: media_pad_desc
|
||||||
|
|
||||||
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
||||||
@@ -100,37 +86,20 @@ returned during the enumeration process.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 1 2
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - __u32
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``entity``
|
- ``entity``
|
||||||
|
|
||||||
- ID of the entity this pad belongs to.
|
- ID of the entity this pad belongs to.
|
||||||
|
|
||||||
- .. row 2
|
* - __u16
|
||||||
|
|
||||||
- __u16
|
|
||||||
|
|
||||||
- ``index``
|
- ``index``
|
||||||
|
- Pad index, starts at 0.
|
||||||
|
|
||||||
- 0-based pad index.
|
* - __u32
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- Pad flags, see :ref:`media-pad-flag` for more details.
|
- Pad flags, see :ref:`media-pad-flag` for more details.
|
||||||
|
|
||||||
- .. row 4
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved[2]``
|
- ``reserved[2]``
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
the array to zero.
|
the array to zero.
|
||||||
|
|
||||||
@@ -145,37 +114,20 @@ returned during the enumeration process.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 1 2
|
:widths: 1 1 2
|
||||||
|
|
||||||
|
* - struct :c:type:`media_pad_desc`
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- struct :c:type:`media_pad_desc`
|
|
||||||
|
|
||||||
- ``source``
|
- ``source``
|
||||||
|
|
||||||
- Pad at the origin of this link.
|
- Pad at the origin of this link.
|
||||||
|
|
||||||
- .. row 2
|
* - struct :c:type:`media_pad_desc`
|
||||||
|
|
||||||
- struct :c:type:`media_pad_desc`
|
|
||||||
|
|
||||||
- ``sink``
|
- ``sink``
|
||||||
|
|
||||||
- Pad at the target of this link.
|
- Pad at the target of this link.
|
||||||
|
|
||||||
- .. row 3
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- Link flags, see :ref:`media-link-flag` for more details.
|
- Link flags, see :ref:`media-link-flag` for more details.
|
||||||
|
|
||||||
- .. row 4
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved[4]``
|
- ``reserved[4]``
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
the array to zero.
|
the array to zero.
|
||||||
|
|
||||||
|
@@ -55,119 +55,66 @@ desired arrays with the media graph elements.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 2 8
|
:widths: 1 2 8
|
||||||
|
|
||||||
|
* - __u64
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- __u64
|
|
||||||
|
|
||||||
- ``topology_version``
|
- ``topology_version``
|
||||||
|
|
||||||
- Version of the media graph topology. When the graph is created,
|
- Version of the media graph topology. When the graph is created,
|
||||||
this field starts with zero. Every time a graph element is added
|
this field starts with zero. Every time a graph element is added
|
||||||
or removed, this field is incremented.
|
or removed, this field is incremented.
|
||||||
|
|
||||||
- .. row 2
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``num_entities``
|
- ``num_entities``
|
||||||
|
|
||||||
- Number of entities in the graph
|
- Number of entities in the graph
|
||||||
|
|
||||||
- .. row 3
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved1``
|
- ``reserved1``
|
||||||
|
|
||||||
- Applications and drivers shall set this to 0.
|
- Applications and drivers shall set this to 0.
|
||||||
|
|
||||||
- .. row 4
|
* - __u64
|
||||||
|
|
||||||
- __u64
|
|
||||||
|
|
||||||
- ``ptr_entities``
|
- ``ptr_entities``
|
||||||
|
|
||||||
- A pointer to a memory area where the entities array will be
|
- A pointer to a memory area where the entities array will be
|
||||||
stored, converted to a 64-bits integer. It can be zero. if zero,
|
stored, converted to a 64-bits integer. It can be zero. if zero,
|
||||||
the ioctl won't store the entities. It will just update
|
the ioctl won't store the entities. It will just update
|
||||||
``num_entities``
|
``num_entities``
|
||||||
|
|
||||||
- .. row 5
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``num_interfaces``
|
- ``num_interfaces``
|
||||||
|
|
||||||
- Number of interfaces in the graph
|
- Number of interfaces in the graph
|
||||||
|
|
||||||
- .. row 6
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved2``
|
- ``reserved2``
|
||||||
|
|
||||||
- Applications and drivers shall set this to 0.
|
- Applications and drivers shall set this to 0.
|
||||||
|
|
||||||
- .. row 7
|
* - __u64
|
||||||
|
|
||||||
- __u64
|
|
||||||
|
|
||||||
- ``ptr_interfaces``
|
- ``ptr_interfaces``
|
||||||
|
|
||||||
- A pointer to a memory area where the interfaces array will be
|
- A pointer to a memory area where the interfaces array will be
|
||||||
stored, converted to a 64-bits integer. It can be zero. if zero,
|
stored, converted to a 64-bits integer. It can be zero. if zero,
|
||||||
the ioctl won't store the interfaces. It will just update
|
the ioctl won't store the interfaces. It will just update
|
||||||
``num_interfaces``
|
``num_interfaces``
|
||||||
|
|
||||||
- .. row 8
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``num_pads``
|
- ``num_pads``
|
||||||
|
|
||||||
- Total number of pads in the graph
|
- Total number of pads in the graph
|
||||||
|
|
||||||
- .. row 9
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved3``
|
- ``reserved3``
|
||||||
|
|
||||||
- Applications and drivers shall set this to 0.
|
- Applications and drivers shall set this to 0.
|
||||||
|
|
||||||
- .. row 10
|
* - __u64
|
||||||
|
|
||||||
- __u64
|
|
||||||
|
|
||||||
- ``ptr_pads``
|
- ``ptr_pads``
|
||||||
|
|
||||||
- A pointer to a memory area where the pads array will be stored,
|
- A pointer to a memory area where the pads array will be stored,
|
||||||
converted to a 64-bits integer. It can be zero. if zero, the ioctl
|
converted to a 64-bits integer. It can be zero. if zero, the ioctl
|
||||||
won't store the pads. It will just update ``num_pads``
|
won't store the pads. It will just update ``num_pads``
|
||||||
|
|
||||||
- .. row 11
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``num_links``
|
- ``num_links``
|
||||||
|
|
||||||
- Total number of data and interface links in the graph
|
- Total number of data and interface links in the graph
|
||||||
|
|
||||||
- .. row 12
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved4``
|
- ``reserved4``
|
||||||
|
|
||||||
- Applications and drivers shall set this to 0.
|
- Applications and drivers shall set this to 0.
|
||||||
|
|
||||||
- .. row 13
|
* - __u64
|
||||||
|
|
||||||
- __u64
|
|
||||||
|
|
||||||
- ``ptr_links``
|
- ``ptr_links``
|
||||||
|
|
||||||
- A pointer to a memory area where the links array will be stored,
|
- A pointer to a memory area where the links array will be stored,
|
||||||
converted to a 64-bits integer. It can be zero. if zero, the ioctl
|
converted to a 64-bits integer. It can be zero. if zero, the ioctl
|
||||||
won't store the links. It will just update ``num_links``
|
won't store the links. It will just update ``num_links``
|
||||||
@@ -182,37 +129,31 @@ desired arrays with the media graph elements.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 2 8
|
:widths: 1 2 8
|
||||||
|
|
||||||
|
* - __u32
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
- Unique ID for the entity. Do not expect that the ID will
|
||||||
|
always be the same for each instance of the device. In other words,
|
||||||
|
do not hardcode entity IDs in an application.
|
||||||
|
|
||||||
- Unique ID for the entity.
|
* - char
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- char
|
|
||||||
|
|
||||||
- ``name``\ [64]
|
- ``name``\ [64]
|
||||||
|
- Entity name as an UTF-8 NULL-terminated string. This name must be unique
|
||||||
|
within the media topology.
|
||||||
|
|
||||||
- Entity name as an UTF-8 NULL-terminated string.
|
* - __u32
|
||||||
|
|
||||||
- .. row 3
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``function``
|
- ``function``
|
||||||
|
|
||||||
- Entity main function, see :ref:`media-entity-functions` for details.
|
- Entity main function, see :ref:`media-entity-functions` for details.
|
||||||
|
|
||||||
- .. row 4
|
* - __u32
|
||||||
|
- ``flags``
|
||||||
- __u32
|
- Entity flags, see :ref:`media-entity-flag` for details.
|
||||||
|
Only valid if ``MEDIA_V2_ENTITY_HAS_FLAGS(media_version)``
|
||||||
- ``reserved``\ [6]
|
returns true. The ``media_version`` is defined in struct
|
||||||
|
:c:type:`media_device_info` and can be retrieved using
|
||||||
|
:ref:`MEDIA_IOC_DEVICE_INFO`.
|
||||||
|
|
||||||
|
* - __u32
|
||||||
|
- ``reserved``\ [5]
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
@@ -226,47 +167,29 @@ desired arrays with the media graph elements.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 2 8
|
:widths: 1 2 8
|
||||||
|
|
||||||
- .. row 1
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
- Unique ID for the interface. Do not expect that the ID will
|
||||||
|
always be the same for each instance of the device. In other words,
|
||||||
|
do not hardcode interface IDs in an application.
|
||||||
|
|
||||||
- Unique ID for the interface.
|
* - __u32
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``intf_type``
|
- ``intf_type``
|
||||||
|
|
||||||
- Interface type, see :ref:`media-intf-type` for details.
|
- Interface type, see :ref:`media-intf-type` for details.
|
||||||
|
|
||||||
- .. row 3
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- Interface flags. Currently unused.
|
- Interface flags. Currently unused.
|
||||||
|
|
||||||
- .. row 4
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved``\ [9]
|
- ``reserved``\ [9]
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
- .. row 5
|
* - struct media_v2_intf_devnode
|
||||||
|
|
||||||
- struct media_v2_intf_devnode
|
|
||||||
|
|
||||||
- ``devnode``
|
- ``devnode``
|
||||||
|
|
||||||
- Used only for device node interfaces. See
|
- Used only for device node interfaces. See
|
||||||
:c:type:`media_v2_intf_devnode` for details..
|
:c:type:`media_v2_intf_devnode` for details.
|
||||||
|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
|
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
|
||||||
@@ -278,24 +201,14 @@ desired arrays with the media graph elements.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 2 8
|
:widths: 1 2 8
|
||||||
|
|
||||||
|
* - __u32
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``major``
|
- ``major``
|
||||||
|
|
||||||
- Device node major number.
|
- Device node major number.
|
||||||
|
|
||||||
- .. row 2
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``minor``
|
- ``minor``
|
||||||
|
|
||||||
- Device node minor number.
|
- Device node minor number.
|
||||||
|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
|
.. tabularcolumns:: |p{1.6cm}|p{3.2cm}|p{12.7cm}|
|
||||||
|
|
||||||
.. c:type:: media_v2_pad
|
.. c:type:: media_v2_pad
|
||||||
@@ -305,37 +218,29 @@ desired arrays with the media graph elements.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 2 8
|
:widths: 1 2 8
|
||||||
|
|
||||||
|
* - __u32
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
- Unique ID for the pad. Do not expect that the ID will
|
||||||
|
always be the same for each instance of the device. In other words,
|
||||||
|
do not hardcode pad IDs in an application.
|
||||||
|
|
||||||
- Unique ID for the pad.
|
* - __u32
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``entity_id``
|
- ``entity_id``
|
||||||
|
|
||||||
- Unique ID for the entity where this pad belongs.
|
- Unique ID for the entity where this pad belongs.
|
||||||
|
|
||||||
- .. row 3
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- Pad flags, see :ref:`media-pad-flag` for more details.
|
- Pad flags, see :ref:`media-pad-flag` for more details.
|
||||||
|
|
||||||
- .. row 4
|
* - __u32
|
||||||
|
- ``index``
|
||||||
- __u32
|
- Pad index, starts at 0. Only valid if ``MEDIA_V2_PAD_HAS_INDEX(media_version)``
|
||||||
|
returns true. The ``media_version`` is defined in struct
|
||||||
- ``reserved``\ [5]
|
:c:type:`media_device_info` and can be retrieved using
|
||||||
|
:ref:`MEDIA_IOC_DEVICE_INFO`.
|
||||||
|
|
||||||
|
* - __u32
|
||||||
|
- ``reserved``\ [4]
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
@@ -349,49 +254,30 @@ desired arrays with the media graph elements.
|
|||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
:widths: 1 2 8
|
:widths: 1 2 8
|
||||||
|
|
||||||
|
* - __u32
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``id``
|
- ``id``
|
||||||
|
- Unique ID for the link. Do not expect that the ID will
|
||||||
|
always be the same for each instance of the device. In other words,
|
||||||
|
do not hardcode link IDs in an application.
|
||||||
|
|
||||||
- Unique ID for the link.
|
* - __u32
|
||||||
|
|
||||||
- .. row 2
|
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``source_id``
|
- ``source_id``
|
||||||
|
|
||||||
- On pad to pad links: unique ID for the source pad.
|
- On pad to pad links: unique ID for the source pad.
|
||||||
|
|
||||||
On interface to entity links: unique ID for the interface.
|
On interface to entity links: unique ID for the interface.
|
||||||
|
|
||||||
- .. row 3
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``sink_id``
|
- ``sink_id``
|
||||||
|
|
||||||
- On pad to pad links: unique ID for the sink pad.
|
- On pad to pad links: unique ID for the sink pad.
|
||||||
|
|
||||||
On interface to entity links: unique ID for the entity.
|
On interface to entity links: unique ID for the entity.
|
||||||
|
|
||||||
- .. row 4
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``flags``
|
- ``flags``
|
||||||
|
|
||||||
- Link flags, see :ref:`media-link-flag` for more details.
|
- Link flags, see :ref:`media-link-flag` for more details.
|
||||||
|
|
||||||
- .. row 5
|
* - __u32
|
||||||
|
|
||||||
- __u32
|
|
||||||
|
|
||||||
- ``reserved``\ [6]
|
- ``reserved``\ [6]
|
||||||
|
|
||||||
- Reserved for future extensions. Drivers and applications must set
|
- Reserved for future extensions. Drivers and applications must set
|
||||||
this array to zero.
|
this array to zero.
|
||||||
|
|
||||||
|
@@ -8,6 +8,41 @@ Types and flags used to represent the media graph elements
|
|||||||
.. tabularcolumns:: |p{8.2cm}|p{10.3cm}|
|
.. tabularcolumns:: |p{8.2cm}|p{10.3cm}|
|
||||||
|
|
||||||
.. _media-entity-functions:
|
.. _media-entity-functions:
|
||||||
|
.. _MEDIA-ENT-F-UNKNOWN:
|
||||||
|
.. _MEDIA-ENT-F-V4L2-SUBDEV-UNKNOWN:
|
||||||
|
.. _MEDIA-ENT-F-IO-V4L:
|
||||||
|
.. _MEDIA-ENT-F-IO-VBI:
|
||||||
|
.. _MEDIA-ENT-F-IO-SWRADIO:
|
||||||
|
.. _MEDIA-ENT-F-IO-DTV:
|
||||||
|
.. _MEDIA-ENT-F-DTV-DEMOD:
|
||||||
|
.. _MEDIA-ENT-F-TS-DEMUX:
|
||||||
|
.. _MEDIA-ENT-F-DTV-CA:
|
||||||
|
.. _MEDIA-ENT-F-DTV-NET-DECAP:
|
||||||
|
.. _MEDIA-ENT-F-CONN-RF:
|
||||||
|
.. _MEDIA-ENT-F-CONN-SVIDEO:
|
||||||
|
.. _MEDIA-ENT-F-CONN-COMPOSITE:
|
||||||
|
.. _MEDIA-ENT-F-CAM-SENSOR:
|
||||||
|
.. _MEDIA-ENT-F-FLASH:
|
||||||
|
.. _MEDIA-ENT-F-LENS:
|
||||||
|
.. _MEDIA-ENT-F-ATV-DECODER:
|
||||||
|
.. _MEDIA-ENT-F-TUNER:
|
||||||
|
.. _MEDIA-ENT-F-IF-VID-DECODER:
|
||||||
|
.. _MEDIA-ENT-F-IF-AUD-DECODER:
|
||||||
|
.. _MEDIA-ENT-F-AUDIO-CAPTURE:
|
||||||
|
.. _MEDIA-ENT-F-AUDIO-PLAYBACK:
|
||||||
|
.. _MEDIA-ENT-F-AUDIO-MIXER:
|
||||||
|
.. _MEDIA-ENT-F-PROC-VIDEO-COMPOSER:
|
||||||
|
.. _MEDIA-ENT-F-PROC-VIDEO-PIXEL-FORMATTER:
|
||||||
|
.. _MEDIA-ENT-F-PROC-VIDEO-PIXEL-ENC-CONV:
|
||||||
|
.. _MEDIA-ENT-F-PROC-VIDEO-LUT:
|
||||||
|
.. _MEDIA-ENT-F-PROC-VIDEO-SCALER:
|
||||||
|
.. _MEDIA-ENT-F-PROC-VIDEO-STATISTICS:
|
||||||
|
.. _MEDIA-ENT-F-PROC-VIDEO-ENCODER:
|
||||||
|
.. _MEDIA-ENT-F-PROC-VIDEO-DECODER:
|
||||||
|
.. _MEDIA-ENT-F-VID-MUX:
|
||||||
|
.. _MEDIA-ENT-F-VID-IF-BRIDGE:
|
||||||
|
.. _MEDIA-ENT-F-DV-DECODER:
|
||||||
|
.. _MEDIA-ENT-F-DV-ENCODER:
|
||||||
|
|
||||||
.. cssclass:: longtable
|
.. cssclass:: longtable
|
||||||
|
|
||||||
@@ -15,139 +50,56 @@ Types and flags used to represent the media graph elements
|
|||||||
:header-rows: 0
|
:header-rows: 0
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - ``MEDIA_ENT_F_UNKNOWN`` and
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-UNKNOWN:
|
|
||||||
.. _MEDIA-ENT-F-V4L2-SUBDEV-UNKNOWN:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_UNKNOWN`` and
|
|
||||||
|
|
||||||
``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``
|
``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``
|
||||||
|
|
||||||
- Unknown entity. That generally indicates that a driver didn't
|
- Unknown entity. That generally indicates that a driver didn't
|
||||||
initialize properly the entity, which is a Kernel bug
|
initialize properly the entity, which is a Kernel bug
|
||||||
|
|
||||||
- .. row 2
|
* - ``MEDIA_ENT_F_IO_V4L``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-IO-V4L:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_IO_V4L``
|
|
||||||
|
|
||||||
- Data streaming input and/or output entity.
|
- Data streaming input and/or output entity.
|
||||||
|
|
||||||
- .. row 3
|
* - ``MEDIA_ENT_F_IO_VBI``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-IO-VBI:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_IO_VBI``
|
|
||||||
|
|
||||||
- V4L VBI streaming input or output entity
|
- V4L VBI streaming input or output entity
|
||||||
|
|
||||||
- .. row 4
|
* - ``MEDIA_ENT_F_IO_SWRADIO``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-IO-SWRADIO:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_IO_SWRADIO``
|
|
||||||
|
|
||||||
- V4L Software Digital Radio (SDR) streaming input or output entity
|
- V4L Software Digital Radio (SDR) streaming input or output entity
|
||||||
|
|
||||||
- .. row 5
|
* - ``MEDIA_ENT_F_IO_DTV``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-IO-DTV:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_IO_DTV``
|
|
||||||
|
|
||||||
- DVB Digital TV streaming input or output entity
|
- DVB Digital TV streaming input or output entity
|
||||||
|
|
||||||
- .. row 6
|
* - ``MEDIA_ENT_F_DTV_DEMOD``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-DTV-DEMOD:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_DTV_DEMOD``
|
|
||||||
|
|
||||||
- Digital TV demodulator entity.
|
- Digital TV demodulator entity.
|
||||||
|
|
||||||
- .. row 7
|
* - ``MEDIA_ENT_F_TS_DEMUX``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-TS-DEMUX:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_TS_DEMUX``
|
|
||||||
|
|
||||||
- MPEG Transport stream demux entity. Could be implemented on
|
- MPEG Transport stream demux entity. Could be implemented on
|
||||||
hardware or in Kernelspace by the Linux DVB subsystem.
|
hardware or in Kernelspace by the Linux DVB subsystem.
|
||||||
|
|
||||||
- .. row 8
|
* - ``MEDIA_ENT_F_DTV_CA``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-DTV-CA:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_DTV_CA``
|
|
||||||
|
|
||||||
- Digital TV Conditional Access module (CAM) entity
|
- Digital TV Conditional Access module (CAM) entity
|
||||||
|
|
||||||
- .. row 9
|
* - ``MEDIA_ENT_F_DTV_NET_DECAP``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-DTV-NET-DECAP:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_DTV_NET_DECAP``
|
|
||||||
|
|
||||||
- Digital TV network ULE/MLE desencapsulation entity. Could be
|
- Digital TV network ULE/MLE desencapsulation entity. Could be
|
||||||
implemented on hardware or in Kernelspace
|
implemented on hardware or in Kernelspace
|
||||||
|
|
||||||
- .. row 10
|
* - ``MEDIA_ENT_F_CONN_RF``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-CONN-RF:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_CONN_RF``
|
|
||||||
|
|
||||||
- Connector for a Radio Frequency (RF) signal.
|
- Connector for a Radio Frequency (RF) signal.
|
||||||
|
|
||||||
- .. row 11
|
* - ``MEDIA_ENT_F_CONN_SVIDEO``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-CONN-SVIDEO:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_CONN_SVIDEO``
|
|
||||||
|
|
||||||
- Connector for a S-Video signal.
|
- Connector for a S-Video signal.
|
||||||
|
|
||||||
- .. row 12
|
* - ``MEDIA_ENT_F_CONN_COMPOSITE``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-CONN-COMPOSITE:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_CONN_COMPOSITE``
|
|
||||||
|
|
||||||
- Connector for a RGB composite signal.
|
- Connector for a RGB composite signal.
|
||||||
|
|
||||||
- .. row 13
|
* - ``MEDIA_ENT_F_CAM_SENSOR``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-CAM-SENSOR:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_CAM_SENSOR``
|
|
||||||
|
|
||||||
- Camera video sensor entity.
|
- Camera video sensor entity.
|
||||||
|
|
||||||
- .. row 14
|
* - ``MEDIA_ENT_F_FLASH``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-FLASH:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_FLASH``
|
|
||||||
|
|
||||||
- Flash controller entity.
|
- Flash controller entity.
|
||||||
|
|
||||||
- .. row 15
|
* - ``MEDIA_ENT_F_LENS``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-LENS:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_LENS``
|
|
||||||
|
|
||||||
- Lens controller entity.
|
- Lens controller entity.
|
||||||
|
|
||||||
- .. row 16
|
* - ``MEDIA_ENT_F_ATV_DECODER``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-ATV-DECODER:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_ATV_DECODER``
|
|
||||||
|
|
||||||
- Analog video decoder, the basic function of the video decoder is
|
- Analog video decoder, the basic function of the video decoder is
|
||||||
to accept analogue video from a wide variety of sources such as
|
to accept analogue video from a wide variety of sources such as
|
||||||
broadcast, DVD players, cameras and video cassette recorders, in
|
broadcast, DVD players, cameras and video cassette recorders, in
|
||||||
@@ -155,36 +107,21 @@ Types and flags used to represent the media graph elements
|
|||||||
its component parts, luminance and chrominance, and output it in
|
its component parts, luminance and chrominance, and output it in
|
||||||
some digital video standard, with appropriate timing signals.
|
some digital video standard, with appropriate timing signals.
|
||||||
|
|
||||||
- .. row 17
|
* - ``MEDIA_ENT_F_TUNER``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-TUNER:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_TUNER``
|
|
||||||
|
|
||||||
- Digital TV, analog TV, radio and/or software radio tuner, with
|
- Digital TV, analog TV, radio and/or software radio tuner, with
|
||||||
consists on a PLL tuning stage that converts radio frequency (RF)
|
consists on a PLL tuning stage that converts radio frequency (RF)
|
||||||
signal into an Intermediate Frequency (IF). Modern tuners have
|
signal into an Intermediate Frequency (IF). Modern tuners have
|
||||||
internally IF-PLL decoders for audio and video, but older models
|
internally IF-PLL decoders for audio and video, but older models
|
||||||
have those stages implemented on separate entities.
|
have those stages implemented on separate entities.
|
||||||
|
|
||||||
- .. row 18
|
* - ``MEDIA_ENT_F_IF_VID_DECODER``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-IF-VID-DECODER:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_IF_VID_DECODER``
|
|
||||||
|
|
||||||
- IF-PLL video decoder. It receives the IF from a PLL and decodes
|
- IF-PLL video decoder. It receives the IF from a PLL and decodes
|
||||||
the analog TV video signal. This is commonly found on some very
|
the analog TV video signal. This is commonly found on some very
|
||||||
old analog tuners, like Philips MK3 designs. They all contain a
|
old analog tuners, like Philips MK3 designs. They all contain a
|
||||||
tda9887 (or some software compatible similar chip, like tda9885).
|
tda9887 (or some software compatible similar chip, like tda9885).
|
||||||
Those devices use a different I2C address than the tuner PLL.
|
Those devices use a different I2C address than the tuner PLL.
|
||||||
|
|
||||||
- .. row 19
|
* - ``MEDIA_ENT_F_IF_AUD_DECODER``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-IF-AUD-DECODER:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_IF_AUD_DECODER``
|
|
||||||
|
|
||||||
- IF-PLL sound decoder. It receives the IF from a PLL and decodes
|
- IF-PLL sound decoder. It receives the IF from a PLL and decodes
|
||||||
the analog TV audio signal. This is commonly found on some very
|
the analog TV audio signal. This is commonly found on some very
|
||||||
old analog hardware, like Micronas msp3400, Philips tda9840,
|
old analog hardware, like Micronas msp3400, Philips tda9840,
|
||||||
@@ -192,36 +129,16 @@ Types and flags used to represent the media graph elements
|
|||||||
tuner PLL and should be controlled together with the IF-PLL video
|
tuner PLL and should be controlled together with the IF-PLL video
|
||||||
decoder.
|
decoder.
|
||||||
|
|
||||||
- .. row 20
|
* - ``MEDIA_ENT_F_AUDIO_CAPTURE``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-AUDIO-CAPTURE:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_AUDIO_CAPTURE``
|
|
||||||
|
|
||||||
- Audio Capture Function Entity.
|
- Audio Capture Function Entity.
|
||||||
|
|
||||||
- .. row 21
|
* - ``MEDIA_ENT_F_AUDIO_PLAYBACK``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-AUDIO-PLAYBACK:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_AUDIO_PLAYBACK``
|
|
||||||
|
|
||||||
- Audio Playback Function Entity.
|
- Audio Playback Function Entity.
|
||||||
|
|
||||||
- .. row 22
|
* - ``MEDIA_ENT_F_AUDIO_MIXER``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-AUDIO-MIXER:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_AUDIO_MIXER``
|
|
||||||
|
|
||||||
- Audio Mixer Function Entity.
|
- Audio Mixer Function Entity.
|
||||||
|
|
||||||
- .. row 23
|
* - ``MEDIA_ENT_F_PROC_VIDEO_COMPOSER``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-PROC-VIDEO-COMPOSER:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_PROC_VIDEO_COMPOSER``
|
|
||||||
|
|
||||||
- Video composer (blender). An entity capable of video
|
- Video composer (blender). An entity capable of video
|
||||||
composing must have at least two sink pads and one source
|
composing must have at least two sink pads and one source
|
||||||
pad, and composes input video frames onto output video
|
pad, and composes input video frames onto output video
|
||||||
@@ -229,12 +146,7 @@ Types and flags used to represent the media graph elements
|
|||||||
color keying, raster operations (ROP), stitching or any other
|
color keying, raster operations (ROP), stitching or any other
|
||||||
means.
|
means.
|
||||||
|
|
||||||
- .. row 24
|
* - ``MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-PROC-VIDEO-PIXEL-FORMATTER:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER``
|
|
||||||
|
|
||||||
- Video pixel formatter. An entity capable of pixel formatting
|
- Video pixel formatter. An entity capable of pixel formatting
|
||||||
must have at least one sink pad and one source pad. Read
|
must have at least one sink pad and one source pad. Read
|
||||||
pixel formatters read pixels from memory and perform a subset
|
pixel formatters read pixels from memory and perform a subset
|
||||||
@@ -243,12 +155,7 @@ Types and flags used to represent the media graph elements
|
|||||||
a subset of dithering, pixel encoding conversion and packing
|
a subset of dithering, pixel encoding conversion and packing
|
||||||
and write pixels to memory.
|
and write pixels to memory.
|
||||||
|
|
||||||
- .. row 25
|
* - ``MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-PROC-VIDEO-PIXEL-ENC-CONV:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV``
|
|
||||||
|
|
||||||
- Video pixel encoding converter. An entity capable of pixel
|
- Video pixel encoding converter. An entity capable of pixel
|
||||||
enconding conversion must have at least one sink pad and one
|
enconding conversion must have at least one sink pad and one
|
||||||
source pad, and convert the encoding of pixels received on
|
source pad, and convert the encoding of pixels received on
|
||||||
@@ -257,12 +164,7 @@ Types and flags used to represent the media graph elements
|
|||||||
to RGB to/from HSV, RGB to/from YUV and CFA (Bayer) to RGB
|
to RGB to/from HSV, RGB to/from YUV and CFA (Bayer) to RGB
|
||||||
conversions.
|
conversions.
|
||||||
|
|
||||||
- .. row 26
|
* - ``MEDIA_ENT_F_PROC_VIDEO_LUT``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-PROC-VIDEO-LUT:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_PROC_VIDEO_LUT``
|
|
||||||
|
|
||||||
- Video look-up table. An entity capable of video lookup table
|
- Video look-up table. An entity capable of video lookup table
|
||||||
processing must have one sink pad and one source pad. It uses
|
processing must have one sink pad and one source pad. It uses
|
||||||
the values of the pixels received on its sink pad to look up
|
the values of the pixels received on its sink pad to look up
|
||||||
@@ -271,12 +173,7 @@ Types and flags used to represent the media graph elements
|
|||||||
separately or combine them for multi-dimensional table
|
separately or combine them for multi-dimensional table
|
||||||
lookups.
|
lookups.
|
||||||
|
|
||||||
- .. row 27
|
* - ``MEDIA_ENT_F_PROC_VIDEO_SCALER``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-PROC-VIDEO-SCALER:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_PROC_VIDEO_SCALER``
|
|
||||||
|
|
||||||
- Video scaler. An entity capable of video scaling must have
|
- Video scaler. An entity capable of video scaling must have
|
||||||
at least one sink pad and one source pad, and scale the
|
at least one sink pad and one source pad, and scale the
|
||||||
video frame(s) received on its sink pad(s) to a different
|
video frame(s) received on its sink pad(s) to a different
|
||||||
@@ -287,311 +184,190 @@ Types and flags used to represent the media graph elements
|
|||||||
sub-sampling (occasionally also referred to as skipping) are
|
sub-sampling (occasionally also referred to as skipping) are
|
||||||
considered as scaling.
|
considered as scaling.
|
||||||
|
|
||||||
- .. row 28
|
* - ``MEDIA_ENT_F_PROC_VIDEO_STATISTICS``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-PROC-VIDEO-STATISTICS:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_PROC_VIDEO_STATISTICS``
|
|
||||||
|
|
||||||
- Video statistics computation (histogram, 3A, etc.). An entity
|
- Video statistics computation (histogram, 3A, etc.). An entity
|
||||||
capable of statistics computation must have one sink pad and
|
capable of statistics computation must have one sink pad and
|
||||||
one source pad. It computes statistics over the frames
|
one source pad. It computes statistics over the frames
|
||||||
received on its sink pad and outputs the statistics data on
|
received on its sink pad and outputs the statistics data on
|
||||||
its source pad.
|
its source pad.
|
||||||
|
|
||||||
- .. row 29
|
* - ``MEDIA_ENT_F_PROC_VIDEO_ENCODER``
|
||||||
|
- Video (MPEG, HEVC, VPx, etc.) encoder. An entity capable of
|
||||||
|
compressing video frames. Must have one sink pad and at least
|
||||||
|
one source pad.
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-VID-MUX:
|
* - ``MEDIA_ENT_F_PROC_VIDEO_DECODER``
|
||||||
|
- Video (MPEG, HEVC, VPx, etc.) decoder. An entity capable of
|
||||||
- ``MEDIA_ENT_F_VID_MUX``
|
decompressing a compressed video stream into uncompressed video
|
||||||
|
frames. Must have one sink pad and at least one source pad.
|
||||||
|
|
||||||
|
* - ``MEDIA_ENT_F_VID_MUX``
|
||||||
- Video multiplexer. An entity capable of multiplexing must have at
|
- Video multiplexer. An entity capable of multiplexing must have at
|
||||||
least two sink pads and one source pad, and must pass the video
|
least two sink pads and one source pad, and must pass the video
|
||||||
frame(s) received from the active sink pad to the source pad.
|
frame(s) received from the active sink pad to the source pad.
|
||||||
|
|
||||||
- .. row 30
|
* - ``MEDIA_ENT_F_VID_IF_BRIDGE``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-VID-IF-BRIDGE:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_VID_IF_BRIDGE``
|
|
||||||
|
|
||||||
- Video interface bridge. A video interface bridge entity must have at
|
- Video interface bridge. A video interface bridge entity must have at
|
||||||
least one sink pad and at least one source pad. It receives video
|
least one sink pad and at least one source pad. It receives video
|
||||||
frames on its sink pad from an input video bus of one type (HDMI, eDP,
|
frames on its sink pad from an input video bus of one type (HDMI, eDP,
|
||||||
MIPI CSI-2, etc.), and outputs them on its source pad to an output
|
MIPI CSI-2, etc.), and outputs them on its source pad to an output
|
||||||
video bus of another type (eDP, MIPI CSI-2, parallel, etc.).
|
video bus of another type (eDP, MIPI CSI-2, parallel, etc.).
|
||||||
|
|
||||||
- .. row 31
|
* - ``MEDIA_ENT_F_DV_DECODER``
|
||||||
|
|
||||||
.. _MEDIA-ENT-F-DTV-DECODER:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_F_DTV_DECODER``
|
|
||||||
|
|
||||||
- Digital video decoder. The basic function of the video decoder is
|
- Digital video decoder. The basic function of the video decoder is
|
||||||
to accept digital video from a wide variety of sources
|
to accept digital video from a wide variety of sources
|
||||||
and output it in some digital video standard, with appropriate
|
and output it in some digital video standard, with appropriate
|
||||||
timing signals.
|
timing signals.
|
||||||
|
|
||||||
|
* - ``MEDIA_ENT_F_DV_ENCODER``
|
||||||
|
- Digital video encoder. The basic function of the video encoder is
|
||||||
|
to accept digital video from some digital video standard with
|
||||||
|
appropriate timing signals (usually a parallel video bus with sync
|
||||||
|
signals) and output this to a digital video output connector such
|
||||||
|
as HDMI or DisplayPort.
|
||||||
|
|
||||||
.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
|
.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
|
||||||
|
|
||||||
.. _media-entity-flag:
|
.. _media-entity-flag:
|
||||||
|
.. _MEDIA-ENT-FL-DEFAULT:
|
||||||
|
.. _MEDIA-ENT-FL-CONNECTOR:
|
||||||
|
|
||||||
.. flat-table:: Media entity flags
|
.. flat-table:: Media entity flags
|
||||||
:header-rows: 0
|
:header-rows: 0
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - ``MEDIA_ENT_FL_DEFAULT``
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
.. _MEDIA-ENT-FL-DEFAULT:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_FL_DEFAULT``
|
|
||||||
|
|
||||||
- Default entity for its type. Used to discover the default audio,
|
- Default entity for its type. Used to discover the default audio,
|
||||||
VBI and video devices, the default camera sensor, etc.
|
VBI and video devices, the default camera sensor, etc.
|
||||||
|
|
||||||
- .. row 2
|
* - ``MEDIA_ENT_FL_CONNECTOR``
|
||||||
|
|
||||||
.. _MEDIA-ENT-FL-CONNECTOR:
|
|
||||||
|
|
||||||
- ``MEDIA_ENT_FL_CONNECTOR``
|
|
||||||
|
|
||||||
- The entity represents a connector.
|
- The entity represents a connector.
|
||||||
|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{6.5cm}|p{6.0cm}|p{5.0cm}|
|
.. tabularcolumns:: |p{6.5cm}|p{6.0cm}|p{5.0cm}|
|
||||||
|
|
||||||
.. _media-intf-type:
|
.. _media-intf-type:
|
||||||
|
.. _MEDIA-INTF-T-DVB-FE:
|
||||||
|
.. _MEDIA-INTF-T-DVB-DEMUX:
|
||||||
|
.. _MEDIA-INTF-T-DVB-DVR:
|
||||||
|
.. _MEDIA-INTF-T-DVB-CA:
|
||||||
|
.. _MEDIA-INTF-T-DVB-NET:
|
||||||
|
.. _MEDIA-INTF-T-V4L-VIDEO:
|
||||||
|
.. _MEDIA-INTF-T-V4L-VBI:
|
||||||
|
.. _MEDIA-INTF-T-V4L-RADIO:
|
||||||
|
.. _MEDIA-INTF-T-V4L-SUBDEV:
|
||||||
|
.. _MEDIA-INTF-T-V4L-SWRADIO:
|
||||||
|
.. _MEDIA-INTF-T-V4L-TOUCH:
|
||||||
|
.. _MEDIA-INTF-T-ALSA-PCM-CAPTURE:
|
||||||
|
.. _MEDIA-INTF-T-ALSA-PCM-PLAYBACK:
|
||||||
|
.. _MEDIA-INTF-T-ALSA-CONTROL:
|
||||||
|
.. _MEDIA-INTF-T-ALSA-COMPRESS:
|
||||||
|
.. _MEDIA-INTF-T-ALSA-RAWMIDI:
|
||||||
|
.. _MEDIA-INTF-T-ALSA-HWDEP:
|
||||||
|
.. _MEDIA-INTF-T-ALSA-SEQUENCER:
|
||||||
|
.. _MEDIA-INTF-T-ALSA-TIMER:
|
||||||
|
|
||||||
.. flat-table:: Media interface types
|
.. flat-table:: Media interface types
|
||||||
:header-rows: 0
|
:header-rows: 0
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - ``MEDIA_INTF_T_DVB_FE``
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-DVB-FE:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_DVB_FE``
|
|
||||||
|
|
||||||
- Device node interface for the Digital TV frontend
|
- Device node interface for the Digital TV frontend
|
||||||
|
|
||||||
- typically, /dev/dvb/adapter?/frontend?
|
- typically, /dev/dvb/adapter?/frontend?
|
||||||
|
|
||||||
- .. row 2
|
* - ``MEDIA_INTF_T_DVB_DEMUX``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-DVB-DEMUX:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_DVB_DEMUX``
|
|
||||||
|
|
||||||
- Device node interface for the Digital TV demux
|
- Device node interface for the Digital TV demux
|
||||||
|
|
||||||
- typically, /dev/dvb/adapter?/demux?
|
- typically, /dev/dvb/adapter?/demux?
|
||||||
|
|
||||||
- .. row 3
|
* - ``MEDIA_INTF_T_DVB_DVR``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-DVB-DVR:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_DVB_DVR``
|
|
||||||
|
|
||||||
- Device node interface for the Digital TV DVR
|
- Device node interface for the Digital TV DVR
|
||||||
|
|
||||||
- typically, /dev/dvb/adapter?/dvr?
|
- typically, /dev/dvb/adapter?/dvr?
|
||||||
|
|
||||||
- .. row 4
|
* - ``MEDIA_INTF_T_DVB_CA``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-DVB-CA:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_DVB_CA``
|
|
||||||
|
|
||||||
- Device node interface for the Digital TV Conditional Access
|
- Device node interface for the Digital TV Conditional Access
|
||||||
|
|
||||||
- typically, /dev/dvb/adapter?/ca?
|
- typically, /dev/dvb/adapter?/ca?
|
||||||
|
|
||||||
- .. row 5
|
* - ``MEDIA_INTF_T_DVB_NET``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-DVB-NET:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_DVB_NET``
|
|
||||||
|
|
||||||
- Device node interface for the Digital TV network control
|
- Device node interface for the Digital TV network control
|
||||||
|
|
||||||
- typically, /dev/dvb/adapter?/net?
|
- typically, /dev/dvb/adapter?/net?
|
||||||
|
|
||||||
- .. row 6
|
* - ``MEDIA_INTF_T_V4L_VIDEO``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-V4L-VIDEO:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_V4L_VIDEO``
|
|
||||||
|
|
||||||
- Device node interface for video (V4L)
|
- Device node interface for video (V4L)
|
||||||
|
|
||||||
- typically, /dev/video?
|
- typically, /dev/video?
|
||||||
|
|
||||||
- .. row 7
|
* - ``MEDIA_INTF_T_V4L_VBI``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-V4L-VBI:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_V4L_VBI``
|
|
||||||
|
|
||||||
- Device node interface for VBI (V4L)
|
- Device node interface for VBI (V4L)
|
||||||
|
|
||||||
- typically, /dev/vbi?
|
- typically, /dev/vbi?
|
||||||
|
|
||||||
- .. row 8
|
* - ``MEDIA_INTF_T_V4L_RADIO``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-V4L-RADIO:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_V4L_RADIO``
|
|
||||||
|
|
||||||
- Device node interface for radio (V4L)
|
- Device node interface for radio (V4L)
|
||||||
|
|
||||||
- typically, /dev/radio?
|
- typically, /dev/radio?
|
||||||
|
|
||||||
- .. row 9
|
* - ``MEDIA_INTF_T_V4L_SUBDEV``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-V4L-SUBDEV:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_V4L_SUBDEV``
|
|
||||||
|
|
||||||
- Device node interface for a V4L subdevice
|
- Device node interface for a V4L subdevice
|
||||||
|
|
||||||
- typically, /dev/v4l-subdev?
|
- typically, /dev/v4l-subdev?
|
||||||
|
|
||||||
- .. row 10
|
* - ``MEDIA_INTF_T_V4L_SWRADIO``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-V4L-SWRADIO:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_V4L_SWRADIO``
|
|
||||||
|
|
||||||
- Device node interface for Software Defined Radio (V4L)
|
- Device node interface for Software Defined Radio (V4L)
|
||||||
|
|
||||||
- typically, /dev/swradio?
|
- typically, /dev/swradio?
|
||||||
|
|
||||||
- .. row 11
|
* - ``MEDIA_INTF_T_V4L_TOUCH``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-V4L-TOUCH:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_V4L_TOUCH``
|
|
||||||
|
|
||||||
- Device node interface for Touch device (V4L)
|
- Device node interface for Touch device (V4L)
|
||||||
|
|
||||||
- typically, /dev/v4l-touch?
|
- typically, /dev/v4l-touch?
|
||||||
|
|
||||||
- .. row 12
|
* - ``MEDIA_INTF_T_ALSA_PCM_CAPTURE``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-ALSA-PCM-CAPTURE:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_ALSA_PCM_CAPTURE``
|
|
||||||
|
|
||||||
- Device node interface for ALSA PCM Capture
|
- Device node interface for ALSA PCM Capture
|
||||||
|
|
||||||
- typically, /dev/snd/pcmC?D?c
|
- typically, /dev/snd/pcmC?D?c
|
||||||
|
|
||||||
- .. row 13
|
* - ``MEDIA_INTF_T_ALSA_PCM_PLAYBACK``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-ALSA-PCM-PLAYBACK:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_ALSA_PCM_PLAYBACK``
|
|
||||||
|
|
||||||
- Device node interface for ALSA PCM Playback
|
- Device node interface for ALSA PCM Playback
|
||||||
|
|
||||||
- typically, /dev/snd/pcmC?D?p
|
- typically, /dev/snd/pcmC?D?p
|
||||||
|
|
||||||
- .. row 14
|
* - ``MEDIA_INTF_T_ALSA_CONTROL``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-ALSA-CONTROL:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_ALSA_CONTROL``
|
|
||||||
|
|
||||||
- Device node interface for ALSA Control
|
- Device node interface for ALSA Control
|
||||||
|
|
||||||
- typically, /dev/snd/controlC?
|
- typically, /dev/snd/controlC?
|
||||||
|
|
||||||
- .. row 15
|
* - ``MEDIA_INTF_T_ALSA_COMPRESS``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-ALSA-COMPRESS:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_ALSA_COMPRESS``
|
|
||||||
|
|
||||||
- Device node interface for ALSA Compress
|
- Device node interface for ALSA Compress
|
||||||
|
|
||||||
- typically, /dev/snd/compr?
|
- typically, /dev/snd/compr?
|
||||||
|
|
||||||
- .. row 16
|
* - ``MEDIA_INTF_T_ALSA_RAWMIDI``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-ALSA-RAWMIDI:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_ALSA_RAWMIDI``
|
|
||||||
|
|
||||||
- Device node interface for ALSA Raw MIDI
|
- Device node interface for ALSA Raw MIDI
|
||||||
|
|
||||||
- typically, /dev/snd/midi?
|
- typically, /dev/snd/midi?
|
||||||
|
|
||||||
- .. row 17
|
* - ``MEDIA_INTF_T_ALSA_HWDEP``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-ALSA-HWDEP:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_ALSA_HWDEP``
|
|
||||||
|
|
||||||
- Device node interface for ALSA Hardware Dependent
|
- Device node interface for ALSA Hardware Dependent
|
||||||
|
|
||||||
- typically, /dev/snd/hwC?D?
|
- typically, /dev/snd/hwC?D?
|
||||||
|
|
||||||
- .. row 18
|
* - ``MEDIA_INTF_T_ALSA_SEQUENCER``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-ALSA-SEQUENCER:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_ALSA_SEQUENCER``
|
|
||||||
|
|
||||||
- Device node interface for ALSA Sequencer
|
- Device node interface for ALSA Sequencer
|
||||||
|
|
||||||
- typically, /dev/snd/seq
|
- typically, /dev/snd/seq
|
||||||
|
|
||||||
- .. row 19
|
* - ``MEDIA_INTF_T_ALSA_TIMER``
|
||||||
|
|
||||||
.. _MEDIA-INTF-T-ALSA-TIMER:
|
|
||||||
|
|
||||||
- ``MEDIA_INTF_T_ALSA_TIMER``
|
|
||||||
|
|
||||||
- Device node interface for ALSA Timer
|
- Device node interface for ALSA Timer
|
||||||
|
|
||||||
- typically, /dev/snd/timer
|
- typically, /dev/snd/timer
|
||||||
|
|
||||||
|
|
||||||
.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
|
.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
|
||||||
|
|
||||||
.. _media-pad-flag:
|
.. _media-pad-flag:
|
||||||
|
.. _MEDIA-PAD-FL-SINK:
|
||||||
|
.. _MEDIA-PAD-FL-SOURCE:
|
||||||
|
.. _MEDIA-PAD-FL-MUST-CONNECT:
|
||||||
|
|
||||||
.. flat-table:: Media pad flags
|
.. flat-table:: Media pad flags
|
||||||
:header-rows: 0
|
:header-rows: 0
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - ``MEDIA_PAD_FL_SINK``
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
.. _MEDIA-PAD-FL-SINK:
|
|
||||||
|
|
||||||
- ``MEDIA_PAD_FL_SINK``
|
|
||||||
|
|
||||||
- Input pad, relative to the entity. Input pads sink data and are
|
- Input pad, relative to the entity. Input pads sink data and are
|
||||||
targets of links.
|
targets of links.
|
||||||
|
|
||||||
- .. row 2
|
* - ``MEDIA_PAD_FL_SOURCE``
|
||||||
|
|
||||||
.. _MEDIA-PAD-FL-SOURCE:
|
|
||||||
|
|
||||||
- ``MEDIA_PAD_FL_SOURCE``
|
|
||||||
|
|
||||||
- Output pad, relative to the entity. Output pads source data and
|
- Output pad, relative to the entity. Output pads source data and
|
||||||
are origins of links.
|
are origins of links.
|
||||||
|
|
||||||
- .. row 3
|
* - ``MEDIA_PAD_FL_MUST_CONNECT``
|
||||||
|
|
||||||
.. _MEDIA-PAD-FL-MUST-CONNECT:
|
|
||||||
|
|
||||||
- ``MEDIA_PAD_FL_MUST_CONNECT``
|
|
||||||
|
|
||||||
- If this flag is set and the pad is linked to any other pad, then
|
- If this flag is set and the pad is linked to any other pad, then
|
||||||
at least one of those links must be enabled for the entity to be
|
at least one of those links must be enabled for the entity to be
|
||||||
able to stream. There could be temporary reasons (e.g. device
|
able to stream. There could be temporary reasons (e.g. device
|
||||||
@@ -606,46 +382,29 @@ must be set for every pad.
|
|||||||
.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
|
.. tabularcolumns:: |p{5.5cm}|p{12.0cm}|
|
||||||
|
|
||||||
.. _media-link-flag:
|
.. _media-link-flag:
|
||||||
|
.. _MEDIA-LNK-FL-ENABLED:
|
||||||
|
.. _MEDIA-LNK-FL-IMMUTABLE:
|
||||||
|
.. _MEDIA-LNK-FL-DYNAMIC:
|
||||||
|
.. _MEDIA-LNK-FL-LINK-TYPE:
|
||||||
|
|
||||||
.. flat-table:: Media link flags
|
.. flat-table:: Media link flags
|
||||||
:header-rows: 0
|
:header-rows: 0
|
||||||
:stub-columns: 0
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - ``MEDIA_LNK_FL_ENABLED``
|
||||||
- .. row 1
|
|
||||||
|
|
||||||
.. _MEDIA-LNK-FL-ENABLED:
|
|
||||||
|
|
||||||
- ``MEDIA_LNK_FL_ENABLED``
|
|
||||||
|
|
||||||
- The link is enabled and can be used to transfer media data. When
|
- The link is enabled and can be used to transfer media data. When
|
||||||
two or more links target a sink pad, only one of them can be
|
two or more links target a sink pad, only one of them can be
|
||||||
enabled at a time.
|
enabled at a time.
|
||||||
|
|
||||||
- .. row 2
|
* - ``MEDIA_LNK_FL_IMMUTABLE``
|
||||||
|
|
||||||
.. _MEDIA-LNK-FL-IMMUTABLE:
|
|
||||||
|
|
||||||
- ``MEDIA_LNK_FL_IMMUTABLE``
|
|
||||||
|
|
||||||
- The link enabled state can't be modified at runtime. An immutable
|
- The link enabled state can't be modified at runtime. An immutable
|
||||||
link is always enabled.
|
link is always enabled.
|
||||||
|
|
||||||
- .. row 3
|
* - ``MEDIA_LNK_FL_DYNAMIC``
|
||||||
|
|
||||||
.. _MEDIA-LNK-FL-DYNAMIC:
|
|
||||||
|
|
||||||
- ``MEDIA_LNK_FL_DYNAMIC``
|
|
||||||
|
|
||||||
- The link enabled state can be modified during streaming. This flag
|
- The link enabled state can be modified during streaming. This flag
|
||||||
is set by drivers and is read-only for applications.
|
is set by drivers and is read-only for applications.
|
||||||
|
|
||||||
- .. row 4
|
* - ``MEDIA_LNK_FL_LINK_TYPE``
|
||||||
|
|
||||||
.. _MEDIA-LNK-FL-LINK-TYPE:
|
|
||||||
|
|
||||||
- ``MEDIA_LNK_FL_LINK_TYPE``
|
|
||||||
|
|
||||||
- This is a bitmask that defines the type of the link. Currently,
|
- This is a bitmask that defines the type of the link. Currently,
|
||||||
two types of links are supported:
|
two types of links are supported:
|
||||||
|
|
||||||
|
@@ -1955,9 +1955,51 @@ enum v4l2_vp8_golden_frame_sel -
|
|||||||
``V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (integer)``
|
``V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (integer)``
|
||||||
Quantization parameter for a P frame for VP8.
|
Quantization parameter for a P frame for VP8.
|
||||||
|
|
||||||
``V4L2_CID_MPEG_VIDEO_VPX_PROFILE (integer)``
|
.. _v4l2-mpeg-video-vp8-profile:
|
||||||
Select the desired profile for VPx encoder. Acceptable values are 0,
|
|
||||||
1, 2 and 3 corresponding to encoder profiles 0, 1, 2 and 3.
|
``V4L2_CID_MPEG_VIDEO_VP8_PROFILE``
|
||||||
|
(enum)
|
||||||
|
|
||||||
|
enum v4l2_mpeg_video_vp8_profile -
|
||||||
|
This control allows selecting the profile for VP8 encoder.
|
||||||
|
This is also used to enumerate supported profiles by VP8 encoder or decoder.
|
||||||
|
Possible values are:
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - ``V4L2_MPEG_VIDEO_VP8_PROFILE_0``
|
||||||
|
- Profile 0
|
||||||
|
* - ``V4L2_MPEG_VIDEO_VP8_PROFILE_1``
|
||||||
|
- Profile 1
|
||||||
|
* - ``V4L2_MPEG_VIDEO_VP8_PROFILE_2``
|
||||||
|
- Profile 2
|
||||||
|
* - ``V4L2_MPEG_VIDEO_VP8_PROFILE_3``
|
||||||
|
- Profile 3
|
||||||
|
|
||||||
|
.. _v4l2-mpeg-video-vp9-profile:
|
||||||
|
|
||||||
|
``V4L2_CID_MPEG_VIDEO_VP9_PROFILE``
|
||||||
|
(enum)
|
||||||
|
|
||||||
|
enum v4l2_mpeg_video_vp9_profile -
|
||||||
|
This control allows selecting the profile for VP9 encoder.
|
||||||
|
This is also used to enumerate supported profiles by VP9 encoder or decoder.
|
||||||
|
Possible values are:
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
|
||||||
|
* - ``V4L2_MPEG_VIDEO_VP9_PROFILE_0``
|
||||||
|
- Profile 0
|
||||||
|
* - ``V4L2_MPEG_VIDEO_VP9_PROFILE_1``
|
||||||
|
- Profile 1
|
||||||
|
* - ``V4L2_MPEG_VIDEO_VP9_PROFILE_2``
|
||||||
|
- Profile 2
|
||||||
|
* - ``V4L2_MPEG_VIDEO_VP9_PROFILE_3``
|
||||||
|
- Profile 3
|
||||||
|
|
||||||
|
|
||||||
High Efficiency Video Coding (HEVC/H.265) Control Reference
|
High Efficiency Video Coding (HEVC/H.265) Control Reference
|
||||||
|
@@ -95,3 +95,10 @@ Compressed Formats
|
|||||||
- ``V4L2_PIX_FMT_HEVC``
|
- ``V4L2_PIX_FMT_HEVC``
|
||||||
- 'HEVC'
|
- 'HEVC'
|
||||||
- HEVC/H.265 video elementary stream.
|
- HEVC/H.265 video elementary stream.
|
||||||
|
* .. _V4L2-PIX-FMT-FWHT:
|
||||||
|
|
||||||
|
- ``V4L2_PIX_FMT_FWHT``
|
||||||
|
- 'FWHT'
|
||||||
|
- Video elementary stream using a codec based on the Fast Walsh Hadamard
|
||||||
|
Transform. This codec is implemented by the vicodec ('Virtual Codec')
|
||||||
|
driver. See the vicodec-codec.h header for more details.
|
||||||
|
@@ -19,4 +19,5 @@ RGB Formats
|
|||||||
pixfmt-srggb10-ipu3
|
pixfmt-srggb10-ipu3
|
||||||
pixfmt-srggb12
|
pixfmt-srggb12
|
||||||
pixfmt-srggb12p
|
pixfmt-srggb12p
|
||||||
|
pixfmt-srggb14p
|
||||||
pixfmt-srggb16
|
pixfmt-srggb16
|
||||||
|
127
Documentation/media/uapi/v4l/pixfmt-srggb14p.rst
Normal file
127
Documentation/media/uapi/v4l/pixfmt-srggb14p.rst
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
.. -*- coding: utf-8; mode: rst -*-
|
||||||
|
|
||||||
|
.. _V4L2-PIX-FMT-SRGGB14P:
|
||||||
|
.. _v4l2-pix-fmt-sbggr14p:
|
||||||
|
.. _v4l2-pix-fmt-sgbrg14p:
|
||||||
|
.. _v4l2-pix-fmt-sgrbg14p:
|
||||||
|
|
||||||
|
*******************************************************************************************************************************
|
||||||
|
V4L2_PIX_FMT_SRGGB14P ('pRCC'), V4L2_PIX_FMT_SGRBG14P ('pgCC'), V4L2_PIX_FMT_SGBRG14P ('pGCC'), V4L2_PIX_FMT_SBGGR14P ('pBCC'),
|
||||||
|
*******************************************************************************************************************************
|
||||||
|
|
||||||
|
*man V4L2_PIX_FMT_SRGGB14P(2)*
|
||||||
|
|
||||||
|
V4L2_PIX_FMT_SGRBG14P
|
||||||
|
V4L2_PIX_FMT_SGBRG14P
|
||||||
|
V4L2_PIX_FMT_SBGGR14P
|
||||||
|
14-bit packed Bayer formats
|
||||||
|
|
||||||
|
|
||||||
|
Description
|
||||||
|
===========
|
||||||
|
|
||||||
|
These four pixel formats are packed raw sRGB / Bayer formats with 14
|
||||||
|
bits per colour. Every four consecutive samples are packed into seven
|
||||||
|
bytes. Each of the first four bytes contain the eight high order bits
|
||||||
|
of the pixels, and the three following bytes contains the six least
|
||||||
|
significants bits of each pixel, in the same order.
|
||||||
|
|
||||||
|
Each n-pixel row contains n/2 green samples and n/2 blue or red samples,
|
||||||
|
with alternating green-red and green-blue rows. They are conventionally
|
||||||
|
described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example
|
||||||
|
of one of these formats:
|
||||||
|
|
||||||
|
**Byte Order.**
|
||||||
|
Each cell is one byte.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 2 1 1 1 1 1 1 1
|
||||||
|
|
||||||
|
|
||||||
|
- .. row 1
|
||||||
|
|
||||||
|
- start + 0:
|
||||||
|
|
||||||
|
- B\ :sub:`00high`
|
||||||
|
|
||||||
|
- G\ :sub:`01high`
|
||||||
|
|
||||||
|
- B\ :sub:`02high`
|
||||||
|
|
||||||
|
- G\ :sub:`03high`
|
||||||
|
|
||||||
|
- G\ :sub:`01low bits 1--0`\ (bits 7--6)
|
||||||
|
B\ :sub:`00low bits 5--0`\ (bits 5--0)
|
||||||
|
|
||||||
|
- R\ :sub:`02low bits 3--0`\ (bits 7--4)
|
||||||
|
G\ :sub:`01low bits 5--2`\ (bits 3--0)
|
||||||
|
|
||||||
|
- G\ :sub:`03low bits 5--0`\ (bits 7--2)
|
||||||
|
R\ :sub:`02low bits 5--4`\ (bits 1--0)
|
||||||
|
|
||||||
|
- .. row 2
|
||||||
|
|
||||||
|
- start + 7:
|
||||||
|
|
||||||
|
- G\ :sub:`00high`
|
||||||
|
|
||||||
|
- R\ :sub:`01high`
|
||||||
|
|
||||||
|
- G\ :sub:`02high`
|
||||||
|
|
||||||
|
- R\ :sub:`03high`
|
||||||
|
|
||||||
|
- R\ :sub:`01low bits 1--0`\ (bits 7--6)
|
||||||
|
G\ :sub:`00low bits 5--0`\ (bits 5--0)
|
||||||
|
|
||||||
|
- G\ :sub:`02low bits 3--0`\ (bits 7--4)
|
||||||
|
R\ :sub:`01low bits 5--2`\ (bits 3--0)
|
||||||
|
|
||||||
|
- R\ :sub:`03low bits 5--0`\ (bits 7--2)
|
||||||
|
G\ :sub:`02low bits 5--4`\ (bits 1--0)
|
||||||
|
|
||||||
|
- .. row 3
|
||||||
|
|
||||||
|
- start + 14
|
||||||
|
|
||||||
|
- B\ :sub:`20high`
|
||||||
|
|
||||||
|
- G\ :sub:`21high`
|
||||||
|
|
||||||
|
- B\ :sub:`22high`
|
||||||
|
|
||||||
|
- G\ :sub:`23high`
|
||||||
|
|
||||||
|
- G\ :sub:`21low bits 1--0`\ (bits 7--6)
|
||||||
|
B\ :sub:`20low bits 5--0`\ (bits 5--0)
|
||||||
|
|
||||||
|
- R\ :sub:`22low bits 3--0`\ (bits 7--4)
|
||||||
|
G\ :sub:`21low bits 5--2`\ (bits 3--0)
|
||||||
|
|
||||||
|
- G\ :sub:`23low bits 5--0`\ (bits 7--2)
|
||||||
|
R\ :sub:`22low bits 5--4`\ (bits 1--0)
|
||||||
|
|
||||||
|
- .. row 4
|
||||||
|
|
||||||
|
- start + 21
|
||||||
|
|
||||||
|
- G\ :sub:`30high`
|
||||||
|
|
||||||
|
- R\ :sub:`31high`
|
||||||
|
|
||||||
|
- G\ :sub:`32high`
|
||||||
|
|
||||||
|
- R\ :sub:`33high`
|
||||||
|
|
||||||
|
- R\ :sub:`31low bits 1--0`\ (bits 7--6)
|
||||||
|
G\ :sub:`30low bits 5--0`\ (bits 5--0)
|
||||||
|
|
||||||
|
- G\ :sub:`32low bits 3--0`\ (bits 7--4)
|
||||||
|
R\ :sub:`31low bits 5--2`\ (bits 3--0)
|
||||||
|
|
||||||
|
- R\ :sub:`33low bits 5--0`\ (bits 7--2)
|
||||||
|
G\ :sub:`32low bits 5--4`\ (bits 1--0)
|
33
Documentation/media/uapi/v4l/pixfmt-y10p.rst
Normal file
33
Documentation/media/uapi/v4l/pixfmt-y10p.rst
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
.. -*- coding: utf-8; mode: rst -*-
|
||||||
|
|
||||||
|
.. _V4L2-PIX-FMT-Y10P:
|
||||||
|
|
||||||
|
******************************
|
||||||
|
V4L2_PIX_FMT_Y10P ('Y10P')
|
||||||
|
******************************
|
||||||
|
|
||||||
|
Grey-scale image as a MIPI RAW10 packed array
|
||||||
|
|
||||||
|
|
||||||
|
Description
|
||||||
|
===========
|
||||||
|
|
||||||
|
This is a packed grey-scale image format with a depth of 10 bits per
|
||||||
|
pixel. Every four consecutive pixels are packed into 5 bytes. Each of
|
||||||
|
the first 4 bytes contain the 8 high order bits of the pixels, and
|
||||||
|
the 5th byte contains the 2 least significants bits of each pixel,
|
||||||
|
in the same order.
|
||||||
|
|
||||||
|
**Bit-packed representation.**
|
||||||
|
|
||||||
|
.. flat-table::
|
||||||
|
:header-rows: 0
|
||||||
|
:stub-columns: 0
|
||||||
|
:widths: 8 8 8 8 64
|
||||||
|
|
||||||
|
* - Y'\ :sub:`00[9:2]`
|
||||||
|
- Y'\ :sub:`01[9:2]`
|
||||||
|
- Y'\ :sub:`02[9:2]`
|
||||||
|
- Y'\ :sub:`03[9:2]`
|
||||||
|
- Y'\ :sub:`03[1:0]`\ (bits 7--6) Y'\ :sub:`02[1:0]`\ (bits 5--4)
|
||||||
|
Y'\ :sub:`01[1:0]`\ (bits 3--2) Y'\ :sub:`00[1:0]`\ (bits 1--0)
|
@@ -37,19 +37,22 @@ Media Bus Formats
|
|||||||
- Image colorspace, from enum
|
- Image colorspace, from enum
|
||||||
:c:type:`v4l2_colorspace`. See
|
:c:type:`v4l2_colorspace`. See
|
||||||
:ref:`colorspaces` for details.
|
:ref:`colorspaces` for details.
|
||||||
* - enum :c:type:`v4l2_ycbcr_encoding`
|
* - __u16
|
||||||
- ``ycbcr_enc``
|
- ``ycbcr_enc``
|
||||||
- This information supplements the ``colorspace`` and must be set by
|
- Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`.
|
||||||
|
This information supplements the ``colorspace`` and must be set by
|
||||||
the driver for capture streams and by the application for output
|
the driver for capture streams and by the application for output
|
||||||
streams, see :ref:`colorspaces`.
|
streams, see :ref:`colorspaces`.
|
||||||
* - enum :c:type:`v4l2_quantization`
|
* - __u16
|
||||||
- ``quantization``
|
- ``quantization``
|
||||||
- This information supplements the ``colorspace`` and must be set by
|
- Quantization range, from enum :c:type:`v4l2_quantization`.
|
||||||
|
This information supplements the ``colorspace`` and must be set by
|
||||||
the driver for capture streams and by the application for output
|
the driver for capture streams and by the application for output
|
||||||
streams, see :ref:`colorspaces`.
|
streams, see :ref:`colorspaces`.
|
||||||
* - enum :c:type:`v4l2_xfer_func`
|
* - __u16
|
||||||
- ``xfer_func``
|
- ``xfer_func``
|
||||||
- This information supplements the ``colorspace`` and must be set by
|
- Transfer function, from enum :c:type:`v4l2_xfer_func`.
|
||||||
|
This information supplements the ``colorspace`` and must be set by
|
||||||
the driver for capture streams and by the application for output
|
the driver for capture streams and by the application for output
|
||||||
streams, see :ref:`colorspaces`.
|
streams, see :ref:`colorspaces`.
|
||||||
* - __u16
|
* - __u16
|
||||||
@@ -4315,6 +4318,78 @@ the following codes.
|
|||||||
- y\ :sub:`2`
|
- y\ :sub:`2`
|
||||||
- y\ :sub:`1`
|
- y\ :sub:`1`
|
||||||
- y\ :sub:`0`
|
- y\ :sub:`0`
|
||||||
|
* .. _MEDIA-BUS-FMT-Y10-2X8-PADHI_LE:
|
||||||
|
|
||||||
|
- MEDIA_BUS_FMT_Y10_2X8_PADHI_LE
|
||||||
|
- 0x202c
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- y\ :sub:`7`
|
||||||
|
- y\ :sub:`6`
|
||||||
|
- y\ :sub:`5`
|
||||||
|
- y\ :sub:`4`
|
||||||
|
- y\ :sub:`3`
|
||||||
|
- y\ :sub:`2`
|
||||||
|
- y\ :sub:`1`
|
||||||
|
- y\ :sub:`0`
|
||||||
|
* -
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- 0
|
||||||
|
- y\ :sub:`9`
|
||||||
|
- y\ :sub:`8`
|
||||||
* .. _MEDIA-BUS-FMT-UYVY10-2X10:
|
* .. _MEDIA-BUS-FMT-UYVY10-2X10:
|
||||||
|
|
||||||
- MEDIA_BUS_FMT_UYVY10_2X10
|
- MEDIA_BUS_FMT_UYVY10_2X10
|
||||||
|
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
.. _VIDIOC_ENUMSTD:
|
.. _VIDIOC_ENUMSTD:
|
||||||
|
|
||||||
********************
|
*******************************************
|
||||||
ioctl VIDIOC_ENUMSTD
|
ioctl VIDIOC_ENUMSTD, VIDIOC_SUBDEV_ENUMSTD
|
||||||
********************
|
*******************************************
|
||||||
|
|
||||||
Name
|
Name
|
||||||
====
|
====
|
||||||
|
|
||||||
VIDIOC_ENUMSTD - Enumerate supported video standards
|
VIDIOC_ENUMSTD - VIDIOC_SUBDEV_ENUMSTD - Enumerate supported video standards
|
||||||
|
|
||||||
|
|
||||||
Synopsis
|
Synopsis
|
||||||
@@ -18,6 +18,9 @@ Synopsis
|
|||||||
.. c:function:: int ioctl( int fd, VIDIOC_ENUMSTD, struct v4l2_standard *argp )
|
.. c:function:: int ioctl( int fd, VIDIOC_ENUMSTD, struct v4l2_standard *argp )
|
||||||
:name: VIDIOC_ENUMSTD
|
:name: VIDIOC_ENUMSTD
|
||||||
|
|
||||||
|
.. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_ENUMSTD, struct v4l2_standard *argp )
|
||||||
|
:name: VIDIOC_SUBDEV_ENUMSTD
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
Arguments
|
||||||
=========
|
=========
|
||||||
|
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
.. _VIDIOC_G_STD:
|
.. _VIDIOC_G_STD:
|
||||||
|
|
||||||
********************************
|
**************************************************************************
|
||||||
ioctl VIDIOC_G_STD, VIDIOC_S_STD
|
ioctl VIDIOC_G_STD, VIDIOC_S_STD, VIDIOC_SUBDEV_G_STD, VIDIOC_SUBDEV_S_STD
|
||||||
********************************
|
**************************************************************************
|
||||||
|
|
||||||
Name
|
Name
|
||||||
====
|
====
|
||||||
|
|
||||||
VIDIOC_G_STD - VIDIOC_S_STD - Query or select the video standard of the current input
|
VIDIOC_G_STD - VIDIOC_S_STD - VIDIOC_SUBDEV_G_STD - VIDIOC_SUBDEV_S_STD - Query or select the video standard of the current input
|
||||||
|
|
||||||
|
|
||||||
Synopsis
|
Synopsis
|
||||||
@@ -21,6 +21,12 @@ Synopsis
|
|||||||
.. c:function:: int ioctl( int fd, VIDIOC_S_STD, const v4l2_std_id *argp )
|
.. c:function:: int ioctl( int fd, VIDIOC_S_STD, const v4l2_std_id *argp )
|
||||||
:name: VIDIOC_S_STD
|
:name: VIDIOC_S_STD
|
||||||
|
|
||||||
|
.. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_G_STD, v4l2_std_id *argp )
|
||||||
|
:name: VIDIOC_SUBDEV_G_STD
|
||||||
|
|
||||||
|
.. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_S_STD, const v4l2_std_id *argp )
|
||||||
|
:name: VIDIOC_SUBDEV_S_STD
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
Arguments
|
||||||
=========
|
=========
|
||||||
|
@@ -2,14 +2,14 @@
|
|||||||
|
|
||||||
.. _VIDIOC_QUERYSTD:
|
.. _VIDIOC_QUERYSTD:
|
||||||
|
|
||||||
*********************
|
*********************************************
|
||||||
ioctl VIDIOC_QUERYSTD
|
ioctl VIDIOC_QUERYSTD, VIDIOC_SUBDEV_QUERYSTD
|
||||||
*********************
|
*********************************************
|
||||||
|
|
||||||
Name
|
Name
|
||||||
====
|
====
|
||||||
|
|
||||||
VIDIOC_QUERYSTD - Sense the video standard received by the current input
|
VIDIOC_QUERYSTD - VIDIOC_SUBDEV_QUERYSTD - Sense the video standard received by the current input
|
||||||
|
|
||||||
|
|
||||||
Synopsis
|
Synopsis
|
||||||
@@ -18,6 +18,9 @@ Synopsis
|
|||||||
.. c:function:: int ioctl( int fd, VIDIOC_QUERYSTD, v4l2_std_id *argp )
|
.. c:function:: int ioctl( int fd, VIDIOC_QUERYSTD, v4l2_std_id *argp )
|
||||||
:name: VIDIOC_QUERYSTD
|
:name: VIDIOC_QUERYSTD
|
||||||
|
|
||||||
|
.. c:function:: int ioctl( int fd, VIDIOC_SUBDEV_QUERYSTD, v4l2_std_id *argp )
|
||||||
|
:name: VIDIOC_SUBDEV_QUERYSTD
|
||||||
|
|
||||||
|
|
||||||
Arguments
|
Arguments
|
||||||
=========
|
=========
|
||||||
|
@@ -29,6 +29,7 @@ to brightness information.
|
|||||||
pixfmt-y10
|
pixfmt-y10
|
||||||
pixfmt-y12
|
pixfmt-y12
|
||||||
pixfmt-y10b
|
pixfmt-y10b
|
||||||
|
pixfmt-y10p
|
||||||
pixfmt-y16
|
pixfmt-y16
|
||||||
pixfmt-y16-be
|
pixfmt-y16-be
|
||||||
pixfmt-y8i
|
pixfmt-y8i
|
||||||
|
@@ -7,34 +7,34 @@ Introduction
|
|||||||
------------
|
------------
|
||||||
|
|
||||||
This file documents the Qualcomm Camera Subsystem driver located under
|
This file documents the Qualcomm Camera Subsystem driver located under
|
||||||
drivers/media/platform/qcom/camss-8x16.
|
drivers/media/platform/qcom/camss.
|
||||||
|
|
||||||
The current version of the driver supports the Camera Subsystem found on
|
The current version of the driver supports the Camera Subsystem found on
|
||||||
Qualcomm MSM8916 and APQ8016 processors.
|
Qualcomm MSM8916/APQ8016 and MSM8996/APQ8096 processors.
|
||||||
|
|
||||||
The driver implements V4L2, Media controller and V4L2 subdev interfaces.
|
The driver implements V4L2, Media controller and V4L2 subdev interfaces.
|
||||||
Camera sensor using V4L2 subdev interface in the kernel is supported.
|
Camera sensor using V4L2 subdev interface in the kernel is supported.
|
||||||
|
|
||||||
The driver is implemented using as a reference the Qualcomm Camera Subsystem
|
The driver is implemented using as a reference the Qualcomm Camera Subsystem
|
||||||
driver for Android as found in Code Aurora [#f1]_.
|
driver for Android as found in Code Aurora [#f1]_ [#f2]_.
|
||||||
|
|
||||||
|
|
||||||
Qualcomm Camera Subsystem hardware
|
Qualcomm Camera Subsystem hardware
|
||||||
----------------------------------
|
----------------------------------
|
||||||
|
|
||||||
The Camera Subsystem hardware found on 8x16 processors and supported by the
|
The Camera Subsystem hardware found on 8x16 / 8x96 processors and supported by
|
||||||
driver consists of:
|
the driver consists of:
|
||||||
|
|
||||||
- 2 CSIPHY modules. They handle the Physical layer of the CSI2 receivers.
|
- 2 / 3 CSIPHY modules. They handle the Physical layer of the CSI2 receivers.
|
||||||
A separate camera sensor can be connected to each of the CSIPHY module;
|
A separate camera sensor can be connected to each of the CSIPHY module;
|
||||||
- 2 CSID (CSI Decoder) modules. They handle the Protocol and Application layer
|
- 2 / 4 CSID (CSI Decoder) modules. They handle the Protocol and Application
|
||||||
of the CSI2 receivers. A CSID can decode data stream from any of the CSIPHY.
|
layer of the CSI2 receivers. A CSID can decode data stream from any of the
|
||||||
Each CSID also contains a TG (Test Generator) block which can generate
|
CSIPHY. Each CSID also contains a TG (Test Generator) block which can generate
|
||||||
artificial input data for test purposes;
|
artificial input data for test purposes;
|
||||||
- ISPIF (ISP Interface) module. Handles the routing of the data streams from
|
- ISPIF (ISP Interface) module. Handles the routing of the data streams from
|
||||||
the CSIDs to the inputs of the VFE;
|
the CSIDs to the inputs of the VFE;
|
||||||
- VFE (Video Front End) module. Contains a pipeline of image processing hardware
|
- 1 / 2 VFE (Video Front End) module(s). Contain a pipeline of image processing
|
||||||
blocks. The VFE has different input interfaces. The PIX (Pixel) input
|
hardware blocks. The VFE has different input interfaces. The PIX (Pixel) input
|
||||||
interface feeds the input data to the image processing pipeline. The image
|
interface feeds the input data to the image processing pipeline. The image
|
||||||
processing pipeline contains also a scale and crop module at the end. Three
|
processing pipeline contains also a scale and crop module at the end. Three
|
||||||
RDI (Raw Dump Interface) input interfaces bypass the image processing
|
RDI (Raw Dump Interface) input interfaces bypass the image processing
|
||||||
@@ -49,18 +49,33 @@ The current version of the driver supports:
|
|||||||
|
|
||||||
- Input from camera sensor via CSIPHY;
|
- Input from camera sensor via CSIPHY;
|
||||||
- Generation of test input data by the TG in CSID;
|
- Generation of test input data by the TG in CSID;
|
||||||
- RDI interface of VFE - raw dump of the input data to memory.
|
- RDI interface of VFE
|
||||||
|
|
||||||
Supported formats:
|
- Raw dump of the input data to memory.
|
||||||
|
|
||||||
- YUYV/UYVY/YVYU/VYUY (packed YUV 4:2:2 - V4L2_PIX_FMT_YUYV /
|
Supported formats:
|
||||||
V4L2_PIX_FMT_UYVY / V4L2_PIX_FMT_YVYU / V4L2_PIX_FMT_VYUY);
|
|
||||||
- MIPI RAW8 (8bit Bayer RAW - V4L2_PIX_FMT_SRGGB8 /
|
- YUYV/UYVY/YVYU/VYUY (packed YUV 4:2:2 - V4L2_PIX_FMT_YUYV /
|
||||||
V4L2_PIX_FMT_SGRBG8 / V4L2_PIX_FMT_SGBRG8 / V4L2_PIX_FMT_SBGGR8);
|
V4L2_PIX_FMT_UYVY / V4L2_PIX_FMT_YVYU / V4L2_PIX_FMT_VYUY);
|
||||||
- MIPI RAW10 (10bit packed Bayer RAW - V4L2_PIX_FMT_SBGGR10P /
|
- MIPI RAW8 (8bit Bayer RAW - V4L2_PIX_FMT_SRGGB8 /
|
||||||
V4L2_PIX_FMT_SGBRG10P / V4L2_PIX_FMT_SGRBG10P / V4L2_PIX_FMT_SRGGB10P);
|
V4L2_PIX_FMT_SGRBG8 / V4L2_PIX_FMT_SGBRG8 / V4L2_PIX_FMT_SBGGR8);
|
||||||
- MIPI RAW12 (12bit packed Bayer RAW - V4L2_PIX_FMT_SRGGB12P /
|
- MIPI RAW10 (10bit packed Bayer RAW - V4L2_PIX_FMT_SBGGR10P /
|
||||||
V4L2_PIX_FMT_SGBRG12P / V4L2_PIX_FMT_SGRBG12P / V4L2_PIX_FMT_SRGGB12P).
|
V4L2_PIX_FMT_SGBRG10P / V4L2_PIX_FMT_SGRBG10P / V4L2_PIX_FMT_SRGGB10P /
|
||||||
|
V4L2_PIX_FMT_Y10P);
|
||||||
|
- MIPI RAW12 (12bit packed Bayer RAW - V4L2_PIX_FMT_SRGGB12P /
|
||||||
|
V4L2_PIX_FMT_SGBRG12P / V4L2_PIX_FMT_SGRBG12P / V4L2_PIX_FMT_SRGGB12P).
|
||||||
|
- (8x96 only) MIPI RAW14 (14bit packed Bayer RAW - V4L2_PIX_FMT_SRGGB14P /
|
||||||
|
V4L2_PIX_FMT_SGBRG14P / V4L2_PIX_FMT_SGRBG14P / V4L2_PIX_FMT_SRGGB14P).
|
||||||
|
|
||||||
|
- (8x96 only) Format conversion of the input data.
|
||||||
|
|
||||||
|
Supported input formats:
|
||||||
|
|
||||||
|
- MIPI RAW10 (10bit packed Bayer RAW - V4L2_PIX_FMT_SBGGR10P / V4L2_PIX_FMT_Y10P).
|
||||||
|
|
||||||
|
Supported output formats:
|
||||||
|
|
||||||
|
- Plain16 RAW10 (10bit unpacked Bayer RAW - V4L2_PIX_FMT_SBGGR10 / V4L2_PIX_FMT_Y10).
|
||||||
|
|
||||||
- PIX interface of VFE
|
- PIX interface of VFE
|
||||||
|
|
||||||
@@ -75,14 +90,16 @@ The current version of the driver supports:
|
|||||||
|
|
||||||
- NV12/NV21 (two plane YUV 4:2:0 - V4L2_PIX_FMT_NV12 / V4L2_PIX_FMT_NV21);
|
- NV12/NV21 (two plane YUV 4:2:0 - V4L2_PIX_FMT_NV12 / V4L2_PIX_FMT_NV21);
|
||||||
- NV16/NV61 (two plane YUV 4:2:2 - V4L2_PIX_FMT_NV16 / V4L2_PIX_FMT_NV61).
|
- NV16/NV61 (two plane YUV 4:2:2 - V4L2_PIX_FMT_NV16 / V4L2_PIX_FMT_NV61).
|
||||||
|
- (8x96 only) YUYV/UYVY/YVYU/VYUY (packed YUV 4:2:2 - V4L2_PIX_FMT_YUYV /
|
||||||
|
V4L2_PIX_FMT_UYVY / V4L2_PIX_FMT_YVYU / V4L2_PIX_FMT_VYUY).
|
||||||
|
|
||||||
- Scaling support. Configuration of the VFE Encoder Scale module
|
- Scaling support. Configuration of the VFE Encoder Scale module
|
||||||
for downscalling with ratio up to 16x.
|
for downscalling with ratio up to 16x.
|
||||||
|
|
||||||
- Cropping support. Configuration of the VFE Encoder Crop module.
|
- Cropping support. Configuration of the VFE Encoder Crop module.
|
||||||
|
|
||||||
- Concurrent and independent usage of two data inputs - could be camera sensors
|
- Concurrent and independent usage of two (8x96: three) data inputs -
|
||||||
and/or TG.
|
could be camera sensors and/or TG.
|
||||||
|
|
||||||
|
|
||||||
Driver Architecture and Design
|
Driver Architecture and Design
|
||||||
@@ -90,14 +107,14 @@ Driver Architecture and Design
|
|||||||
|
|
||||||
The driver implements the V4L2 subdev interface. With the goal to model the
|
The driver implements the V4L2 subdev interface. With the goal to model the
|
||||||
hardware links between the modules and to expose a clean, logical and usable
|
hardware links between the modules and to expose a clean, logical and usable
|
||||||
interface, the driver is split into V4L2 sub-devices as follows:
|
interface, the driver is split into V4L2 sub-devices as follows (8x16 / 8x96):
|
||||||
|
|
||||||
- 2 CSIPHY sub-devices - each CSIPHY is represented by a single sub-device;
|
- 2 / 3 CSIPHY sub-devices - each CSIPHY is represented by a single sub-device;
|
||||||
- 2 CSID sub-devices - each CSID is represented by a single sub-device;
|
- 2 / 4 CSID sub-devices - each CSID is represented by a single sub-device;
|
||||||
- 2 ISPIF sub-devices - ISPIF is represented by a number of sub-devices equal
|
- 2 / 4 ISPIF sub-devices - ISPIF is represented by a number of sub-devices
|
||||||
to the number of CSID sub-devices;
|
equal to the number of CSID sub-devices;
|
||||||
- 4 VFE sub-devices - VFE is represented by a number of sub-devices equal to
|
- 4 / 8 VFE sub-devices - VFE is represented by a number of sub-devices equal to
|
||||||
the number of the input interfaces (3 RDI and 1 PIX).
|
the number of the input interfaces (3 RDI and 1 PIX for each VFE).
|
||||||
|
|
||||||
The considerations to split the driver in this particular way are as follows:
|
The considerations to split the driver in this particular way are as follows:
|
||||||
|
|
||||||
@@ -115,8 +132,8 @@ The considerations to split the driver in this particular way are as follows:
|
|||||||
|
|
||||||
Each VFE sub-device is linked to a separate video device node.
|
Each VFE sub-device is linked to a separate video device node.
|
||||||
|
|
||||||
The media controller pipeline graph is as follows (with connected two OV5645
|
The media controller pipeline graph is as follows (with connected two / three
|
||||||
camera sensors):
|
OV5645 camera sensors):
|
||||||
|
|
||||||
.. _qcom_camss_graph:
|
.. _qcom_camss_graph:
|
||||||
|
|
||||||
@@ -124,7 +141,13 @@ camera sensors):
|
|||||||
:alt: qcom_camss_graph.dot
|
:alt: qcom_camss_graph.dot
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
Media pipeline graph
|
Media pipeline graph 8x16
|
||||||
|
|
||||||
|
.. kernel-figure:: qcom_camss_8x96_graph.dot
|
||||||
|
:alt: qcom_camss_8x96_graph.dot
|
||||||
|
:align: center
|
||||||
|
|
||||||
|
Media pipeline graph 8x96
|
||||||
|
|
||||||
|
|
||||||
Implementation
|
Implementation
|
||||||
@@ -149,8 +172,12 @@ APQ8016 Specification:
|
|||||||
https://developer.qualcomm.com/download/sd410/snapdragon-410-processor-device-specification.pdf
|
https://developer.qualcomm.com/download/sd410/snapdragon-410-processor-device-specification.pdf
|
||||||
Referenced 2016-11-24.
|
Referenced 2016-11-24.
|
||||||
|
|
||||||
|
APQ8096 Specification:
|
||||||
|
https://developer.qualcomm.com/download/sd820e/qualcomm-snapdragon-820e-processor-apq8096sge-device-specification.pdf
|
||||||
|
Referenced 2018-06-22.
|
||||||
|
|
||||||
References
|
References
|
||||||
----------
|
----------
|
||||||
|
|
||||||
.. [#f1] https://source.codeaurora.org/quic/la/kernel/msm-3.10/
|
.. [#f1] https://source.codeaurora.org/quic/la/kernel/msm-3.10/
|
||||||
|
.. [#f2] https://source.codeaurora.org/quic/la/kernel/msm-3.18/
|
||||||
|
104
Documentation/media/v4l-drivers/qcom_camss_8x96_graph.dot
Normal file
104
Documentation/media/v4l-drivers/qcom_camss_8x96_graph.dot
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
digraph board {
|
||||||
|
rankdir=TB
|
||||||
|
n00000001 [label="{{<port0> 0} | msm_csiphy0\n/dev/v4l-subdev0 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000001:port1 -> n0000000a:port0 [style=dashed]
|
||||||
|
n00000001:port1 -> n0000000d:port0 [style=dashed]
|
||||||
|
n00000001:port1 -> n00000010:port0 [style=dashed]
|
||||||
|
n00000001:port1 -> n00000013:port0 [style=dashed]
|
||||||
|
n00000004 [label="{{<port0> 0} | msm_csiphy1\n/dev/v4l-subdev1 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000004:port1 -> n0000000a:port0 [style=dashed]
|
||||||
|
n00000004:port1 -> n0000000d:port0 [style=dashed]
|
||||||
|
n00000004:port1 -> n00000010:port0 [style=dashed]
|
||||||
|
n00000004:port1 -> n00000013:port0 [style=dashed]
|
||||||
|
n00000007 [label="{{<port0> 0} | msm_csiphy2\n/dev/v4l-subdev2 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000007:port1 -> n0000000a:port0 [style=dashed]
|
||||||
|
n00000007:port1 -> n0000000d:port0 [style=dashed]
|
||||||
|
n00000007:port1 -> n00000010:port0 [style=dashed]
|
||||||
|
n00000007:port1 -> n00000013:port0 [style=dashed]
|
||||||
|
n0000000a [label="{{<port0> 0} | msm_csid0\n/dev/v4l-subdev3 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n0000000a:port1 -> n00000016:port0 [style=dashed]
|
||||||
|
n0000000a:port1 -> n00000019:port0 [style=dashed]
|
||||||
|
n0000000a:port1 -> n0000001c:port0 [style=dashed]
|
||||||
|
n0000000a:port1 -> n0000001f:port0 [style=dashed]
|
||||||
|
n0000000d [label="{{<port0> 0} | msm_csid1\n/dev/v4l-subdev4 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n0000000d:port1 -> n00000016:port0 [style=dashed]
|
||||||
|
n0000000d:port1 -> n00000019:port0 [style=dashed]
|
||||||
|
n0000000d:port1 -> n0000001c:port0 [style=dashed]
|
||||||
|
n0000000d:port1 -> n0000001f:port0 [style=dashed]
|
||||||
|
n00000010 [label="{{<port0> 0} | msm_csid2\n/dev/v4l-subdev5 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000010:port1 -> n00000016:port0 [style=dashed]
|
||||||
|
n00000010:port1 -> n00000019:port0 [style=dashed]
|
||||||
|
n00000010:port1 -> n0000001c:port0 [style=dashed]
|
||||||
|
n00000010:port1 -> n0000001f:port0 [style=dashed]
|
||||||
|
n00000013 [label="{{<port0> 0} | msm_csid3\n/dev/v4l-subdev6 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000013:port1 -> n00000016:port0 [style=dashed]
|
||||||
|
n00000013:port1 -> n00000019:port0 [style=dashed]
|
||||||
|
n00000013:port1 -> n0000001c:port0 [style=dashed]
|
||||||
|
n00000013:port1 -> n0000001f:port0 [style=dashed]
|
||||||
|
n00000016 [label="{{<port0> 0} | msm_ispif0\n/dev/v4l-subdev7 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000016:port1 -> n00000022:port0 [style=dashed]
|
||||||
|
n00000016:port1 -> n0000002b:port0 [style=dashed]
|
||||||
|
n00000016:port1 -> n00000034:port0 [style=dashed]
|
||||||
|
n00000016:port1 -> n0000003d:port0 [style=dashed]
|
||||||
|
n00000016:port1 -> n00000046:port0 [style=dashed]
|
||||||
|
n00000016:port1 -> n0000004f:port0 [style=dashed]
|
||||||
|
n00000016:port1 -> n00000058:port0 [style=dashed]
|
||||||
|
n00000016:port1 -> n00000061:port0 [style=dashed]
|
||||||
|
n00000019 [label="{{<port0> 0} | msm_ispif1\n/dev/v4l-subdev8 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000019:port1 -> n00000022:port0 [style=dashed]
|
||||||
|
n00000019:port1 -> n0000002b:port0 [style=dashed]
|
||||||
|
n00000019:port1 -> n00000034:port0 [style=dashed]
|
||||||
|
n00000019:port1 -> n0000003d:port0 [style=dashed]
|
||||||
|
n00000019:port1 -> n00000046:port0 [style=dashed]
|
||||||
|
n00000019:port1 -> n0000004f:port0 [style=dashed]
|
||||||
|
n00000019:port1 -> n00000058:port0 [style=dashed]
|
||||||
|
n00000019:port1 -> n00000061:port0 [style=dashed]
|
||||||
|
n0000001c [label="{{<port0> 0} | msm_ispif2\n/dev/v4l-subdev9 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n0000001c:port1 -> n00000022:port0 [style=dashed]
|
||||||
|
n0000001c:port1 -> n0000002b:port0 [style=dashed]
|
||||||
|
n0000001c:port1 -> n00000034:port0 [style=dashed]
|
||||||
|
n0000001c:port1 -> n0000003d:port0 [style=dashed]
|
||||||
|
n0000001c:port1 -> n00000046:port0 [style=dashed]
|
||||||
|
n0000001c:port1 -> n0000004f:port0 [style=dashed]
|
||||||
|
n0000001c:port1 -> n00000058:port0 [style=dashed]
|
||||||
|
n0000001c:port1 -> n00000061:port0 [style=dashed]
|
||||||
|
n0000001f [label="{{<port0> 0} | msm_ispif3\n/dev/v4l-subdev10 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n0000001f:port1 -> n00000022:port0 [style=dashed]
|
||||||
|
n0000001f:port1 -> n0000002b:port0 [style=dashed]
|
||||||
|
n0000001f:port1 -> n00000034:port0 [style=dashed]
|
||||||
|
n0000001f:port1 -> n0000003d:port0 [style=dashed]
|
||||||
|
n0000001f:port1 -> n00000046:port0 [style=dashed]
|
||||||
|
n0000001f:port1 -> n0000004f:port0 [style=dashed]
|
||||||
|
n0000001f:port1 -> n00000058:port0 [style=dashed]
|
||||||
|
n0000001f:port1 -> n00000061:port0 [style=dashed]
|
||||||
|
n00000022 [label="{{<port0> 0} | msm_vfe0_rdi0\n/dev/v4l-subdev11 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000022:port1 -> n00000025 [style=bold]
|
||||||
|
n00000025 [label="msm_vfe0_video0\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
|
||||||
|
n0000002b [label="{{<port0> 0} | msm_vfe0_rdi1\n/dev/v4l-subdev12 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n0000002b:port1 -> n0000002e [style=bold]
|
||||||
|
n0000002e [label="msm_vfe0_video1\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
|
||||||
|
n00000034 [label="{{<port0> 0} | msm_vfe0_rdi2\n/dev/v4l-subdev13 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000034:port1 -> n00000037 [style=bold]
|
||||||
|
n00000037 [label="msm_vfe0_video2\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
|
||||||
|
n0000003d [label="{{<port0> 0} | msm_vfe0_pix\n/dev/v4l-subdev14 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n0000003d:port1 -> n00000040 [style=bold]
|
||||||
|
n00000040 [label="msm_vfe0_video3\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
|
||||||
|
n00000046 [label="{{<port0> 0} | msm_vfe1_rdi0\n/dev/v4l-subdev15 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000046:port1 -> n00000049 [style=bold]
|
||||||
|
n00000049 [label="msm_vfe1_video0\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
|
||||||
|
n0000004f [label="{{<port0> 0} | msm_vfe1_rdi1\n/dev/v4l-subdev16 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n0000004f:port1 -> n00000052 [style=bold]
|
||||||
|
n00000052 [label="msm_vfe1_video1\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
|
||||||
|
n00000058 [label="{{<port0> 0} | msm_vfe1_rdi2\n/dev/v4l-subdev17 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000058:port1 -> n0000005b [style=bold]
|
||||||
|
n0000005b [label="msm_vfe1_video2\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
|
||||||
|
n00000061 [label="{{<port0> 0} | msm_vfe1_pix\n/dev/v4l-subdev18 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n00000061:port1 -> n00000064 [style=bold]
|
||||||
|
n00000064 [label="msm_vfe1_video3\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
|
||||||
|
n000000e2 [label="{{} | ov5645 3-0039\n/dev/v4l-subdev19 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n000000e2:port0 -> n00000004:port0 [style=bold]
|
||||||
|
n000000e4 [label="{{} | ov5645 3-003a\n/dev/v4l-subdev20 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n000000e4:port0 -> n00000007:port0 [style=bold]
|
||||||
|
n000000e6 [label="{{} | ov5645 3-003b\n/dev/v4l-subdev21 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
|
||||||
|
n000000e6:port0 -> n00000001:port0 [style=bold]
|
||||||
|
}
|
@@ -34,7 +34,4 @@ replace typedef video_displayformat_t :c:type:`video_displayformat`
|
|||||||
replace typedef video_size_t :c:type:`video_size`
|
replace typedef video_size_t :c:type:`video_size`
|
||||||
replace typedef video_stream_source_t :c:type:`video_stream_source`
|
replace typedef video_stream_source_t :c:type:`video_stream_source`
|
||||||
replace typedef video_play_state_t :c:type:`video_play_state`
|
replace typedef video_play_state_t :c:type:`video_play_state`
|
||||||
replace typedef video_highlight_t :c:type:`video_highlight`
|
|
||||||
replace typedef video_spu_t :c:type:`video_spu`
|
|
||||||
replace typedef video_spu_palette_t :c:type:`video_spu_palette`
|
|
||||||
replace typedef video_navi_pack_t :c:type:`video_navi_pack`
|
replace typedef video_navi_pack_t :c:type:`video_navi_pack`
|
||||||
|
@@ -517,7 +517,6 @@ ignore define V4L2_CTRL_WHICH_DEF_VAL
|
|||||||
ignore define V4L2_OUT_CAP_CUSTOM_TIMINGS
|
ignore define V4L2_OUT_CAP_CUSTOM_TIMINGS
|
||||||
ignore define V4L2_CID_MAX_CTRLS
|
ignore define V4L2_CID_MAX_CTRLS
|
||||||
|
|
||||||
ignore ioctl VIDIOC_RESERVED
|
|
||||||
ignore define BASE_VIDIOC_PRIVATE
|
ignore define BASE_VIDIOC_PRIVATE
|
||||||
|
|
||||||
# Associate ioctls with their counterparts
|
# Associate ioctls with their counterparts
|
||||||
|
96
MAINTAINERS
96
MAINTAINERS
@@ -2295,6 +2295,14 @@ L: linux-leds@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/leds/leds-as3645a.c
|
F: drivers/leds/leds-as3645a.c
|
||||||
|
|
||||||
|
ASAHI KASEI AK7375 LENS VOICE COIL DRIVER
|
||||||
|
M: Tianshu Qiu <tian.shu.qiu@intel.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/media/i2c/ak7375.c
|
||||||
|
F: Documentation/devicetree/bindings/media/i2c/ak7375.txt
|
||||||
|
|
||||||
ASAHI KASEI AK8974 DRIVER
|
ASAHI KASEI AK8974 DRIVER
|
||||||
M: Linus Walleij <linus.walleij@linaro.org>
|
M: Linus Walleij <linus.walleij@linaro.org>
|
||||||
L: linux-iio@vger.kernel.org
|
L: linux-iio@vger.kernel.org
|
||||||
@@ -4436,6 +4444,13 @@ T: git git://linuxtv.org/media_tree.git
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/i2c/dw9714.c
|
F: drivers/media/i2c/dw9714.c
|
||||||
|
|
||||||
|
DONGWOON DW9807 LENS VOICE COIL DRIVER
|
||||||
|
M: Sakari Ailus <sakari.ailus@linux.intel.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/media/i2c/dw9807.c
|
||||||
|
|
||||||
DOUBLETALK DRIVER
|
DOUBLETALK DRIVER
|
||||||
M: "James R. Van Zandt" <jrv@vanzandt.mv.com>
|
M: "James R. Van Zandt" <jrv@vanzandt.mv.com>
|
||||||
L: blinux-list@redhat.com
|
L: blinux-list@redhat.com
|
||||||
@@ -5086,6 +5101,18 @@ T: git git://linuxtv.org/anttip/media_tree.git
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/tuners/e4000*
|
F: drivers/media/tuners/e4000*
|
||||||
|
|
||||||
|
EARTH_PT1 MEDIA DRIVER
|
||||||
|
M: Akihiro Tsukada <tskd08@gmail.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
S: Odd Fixes
|
||||||
|
F: drivers/media/pci/pt1/
|
||||||
|
|
||||||
|
EARTH_PT3 MEDIA DRIVER
|
||||||
|
M: Akihiro Tsukada <tskd08@gmail.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
S: Odd Fixes
|
||||||
|
F: drivers/media/pci/pt3/
|
||||||
|
|
||||||
EC100 MEDIA DRIVER
|
EC100 MEDIA DRIVER
|
||||||
M: Antti Palosaari <crope@iki.fi>
|
M: Antti Palosaari <crope@iki.fi>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
@@ -7276,6 +7303,9 @@ F: drivers/dma/iop-adma.c
|
|||||||
INTEL IPU3 CSI-2 CIO2 DRIVER
|
INTEL IPU3 CSI-2 CIO2 DRIVER
|
||||||
M: Yong Zhi <yong.zhi@intel.com>
|
M: Yong Zhi <yong.zhi@intel.com>
|
||||||
M: Sakari Ailus <sakari.ailus@linux.intel.com>
|
M: Sakari Ailus <sakari.ailus@linux.intel.com>
|
||||||
|
M: Bingbu Cao <bingbu.cao@intel.com>
|
||||||
|
R: Tian Shu Qiu <tian.shu.qiu@intel.com>
|
||||||
|
R: Jian Xu Zheng <jian.xu.zheng@intel.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/pci/intel/ipu3/
|
F: drivers/media/pci/intel/ipu3/
|
||||||
@@ -8988,6 +9018,14 @@ T: git git://linuxtv.org/media_tree.git
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/dvb-frontends/stv6111*
|
F: drivers/media/dvb-frontends/stv6111*
|
||||||
|
|
||||||
|
MEDIA DRIVERS FOR STM32 - DCMI
|
||||||
|
M: Hugues Fruchet <hugues.fruchet@st.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
S: Supported
|
||||||
|
F: Documentation/devicetree/bindings/media/st,stm32-dcmi.txt
|
||||||
|
F: drivers/media/platform/stm32/stm32-dcmi.c
|
||||||
|
|
||||||
MEDIA DRIVERS FOR NVIDIA TEGRA - VDE
|
MEDIA DRIVERS FOR NVIDIA TEGRA - VDE
|
||||||
M: Dmitry Osipenko <digetx@gmail.com>
|
M: Dmitry Osipenko <digetx@gmail.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
@@ -9678,6 +9716,14 @@ F: Documentation/devicetree/bindings/media/i2c/mt9v032.txt
|
|||||||
F: drivers/media/i2c/mt9v032.c
|
F: drivers/media/i2c/mt9v032.c
|
||||||
F: include/media/i2c/mt9v032.h
|
F: include/media/i2c/mt9v032.h
|
||||||
|
|
||||||
|
MT9V111 APTINA CAMERA SENSOR
|
||||||
|
M: Jacopo Mondi <jacopo@jmondi.org>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.txt
|
||||||
|
F: drivers/media/i2c/mt9v111.c
|
||||||
|
|
||||||
MULTIFUNCTION DEVICES (MFD)
|
MULTIFUNCTION DEVICES (MFD)
|
||||||
M: Lee Jones <lee.jones@linaro.org>
|
M: Lee Jones <lee.jones@linaro.org>
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
|
||||||
@@ -9722,6 +9768,12 @@ L: linux-usb@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/usb/musb/
|
F: drivers/usb/musb/
|
||||||
|
|
||||||
|
MXL301RF MEDIA DRIVER
|
||||||
|
M: Akihiro Tsukada <tskd08@gmail.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
S: Odd Fixes
|
||||||
|
F: drivers/media/tuners/mxl301rf*
|
||||||
|
|
||||||
MXL5007T MEDIA DRIVER
|
MXL5007T MEDIA DRIVER
|
||||||
M: Michael Krufky <mkrufky@linuxtv.org>
|
M: Michael Krufky <mkrufky@linuxtv.org>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
@@ -10504,6 +10556,14 @@ T: git git://linuxtv.org/media_tree.git
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/i2c/ov13858.c
|
F: drivers/media/i2c/ov13858.c
|
||||||
|
|
||||||
|
OMNIVISION OV2680 SENSOR DRIVER
|
||||||
|
M: Rui Miguel Silva <rmfrfs@gmail.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/media/i2c/ov2680.c
|
||||||
|
F: Documentation/devicetree/bindings/media/i2c/ov2680.txt
|
||||||
|
|
||||||
OMNIVISION OV2685 SENSOR DRIVER
|
OMNIVISION OV2685 SENSOR DRIVER
|
||||||
M: Shunqian Zheng <zhengsq@rock-chips.com>
|
M: Shunqian Zheng <zhengsq@rock-chips.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
@@ -11807,6 +11867,18 @@ L: netdev@vger.kernel.org
|
|||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/qlogic/qlge/
|
F: drivers/net/ethernet/qlogic/qlge/
|
||||||
|
|
||||||
|
QM1D1B0004 MEDIA DRIVER
|
||||||
|
M: Akihiro Tsukada <tskd08@gmail.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
S: Odd Fixes
|
||||||
|
F: drivers/media/tuners/qm1d1b0004*
|
||||||
|
|
||||||
|
QM1D1C0042 MEDIA DRIVER
|
||||||
|
M: Akihiro Tsukada <tskd08@gmail.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
S: Odd Fixes
|
||||||
|
F: drivers/media/tuners/qm1d1c0042*
|
||||||
|
|
||||||
QNX4 FILESYSTEM
|
QNX4 FILESYSTEM
|
||||||
M: Anders Larsen <al@alarsen.net>
|
M: Anders Larsen <al@alarsen.net>
|
||||||
W: http://www.alarsen.net/linux/qnx4fs/
|
W: http://www.alarsen.net/linux/qnx4fs/
|
||||||
@@ -11855,7 +11927,7 @@ L: linux-media@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/devicetree/bindings/media/qcom,camss.txt
|
F: Documentation/devicetree/bindings/media/qcom,camss.txt
|
||||||
F: Documentation/media/v4l-drivers/qcom_camss.rst
|
F: Documentation/media/v4l-drivers/qcom_camss.rst
|
||||||
F: drivers/media/platform/qcom/camss-8x16/
|
F: drivers/media/platform/qcom/camss/
|
||||||
|
|
||||||
QUALCOMM CPUFREQ DRIVER MSM8996/APQ8096
|
QUALCOMM CPUFREQ DRIVER MSM8996/APQ8096
|
||||||
M: Ilia Lin <ilia.lin@gmail.com>
|
M: Ilia Lin <ilia.lin@gmail.com>
|
||||||
@@ -12913,6 +12985,14 @@ W: http://www.ibm.com/developerworks/linux/linux390/
|
|||||||
S: Supported
|
S: Supported
|
||||||
F: net/smc/
|
F: net/smc/
|
||||||
|
|
||||||
|
SHARP RJ54N1CB0C SENSOR DRIVER
|
||||||
|
M: Jacopo Mondi <jacopo@jmondi.org>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
S: Odd fixes
|
||||||
|
F: drivers/media/i2c/rj54n1cb0c.c
|
||||||
|
F: include/media/i2c/rj54n1cb0c.h
|
||||||
|
|
||||||
SH_VEU V4L2 MEM2MEM DRIVER
|
SH_VEU V4L2 MEM2MEM DRIVER
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
S: Orphan
|
S: Orphan
|
||||||
@@ -13929,6 +14009,12 @@ F: include/uapi/linux/tc_act/
|
|||||||
F: include/uapi/linux/tc_ematch/
|
F: include/uapi/linux/tc_ematch/
|
||||||
F: net/sched/
|
F: net/sched/
|
||||||
|
|
||||||
|
TC90522 MEDIA DRIVER
|
||||||
|
M: Akihiro Tsukada <tskd08@gmail.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
S: Odd Fixes
|
||||||
|
F: drivers/media/dvb-frontends/tc90522*
|
||||||
|
|
||||||
TCP LOW PRIORITY MODULE
|
TCP LOW PRIORITY MODULE
|
||||||
M: "Wong Hoi Sing, Edison" <hswong3i@gmail.com>
|
M: "Wong Hoi Sing, Edison" <hswong3i@gmail.com>
|
||||||
M: "Hung Hing Lun, Mike" <hlhung3i@gmail.com>
|
M: "Hung Hing Lun, Mike" <hlhung3i@gmail.com>
|
||||||
@@ -15218,6 +15304,14 @@ L: netdev@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/ethernet/via/via-velocity.*
|
F: drivers/net/ethernet/via/via-velocity.*
|
||||||
|
|
||||||
|
VICODEC VIRTUAL CODEC DRIVER
|
||||||
|
M: Hans Verkuil <hans.verkuil@cisco.com>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git git://linuxtv.org/media_tree.git
|
||||||
|
W: https://linuxtv.org
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/media/platform/vicodec/*
|
||||||
|
|
||||||
VIDEO MULTIPLEXER DRIVER
|
VIDEO MULTIPLEXER DRIVER
|
||||||
M: Philipp Zabel <p.zabel@pengutronix.de>
|
M: Philipp Zabel <p.zabel@pengutronix.de>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
|
@@ -1,40 +1,45 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* Renesas - AP-325RXA
|
* Renesas - AP-325RXA
|
||||||
* (Compatible with Algo System ., LTD. - AP-320A)
|
* (Compatible with Algo System ., LTD. - AP-320A)
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008 Renesas Solutions Corp.
|
* Copyright (C) 2008 Renesas Solutions Corp.
|
||||||
* Author : Yusuke Goda <goda.yuske@renesas.com>
|
* Author : Yusuke Goda <goda.yuske@renesas.com>
|
||||||
*
|
|
||||||
* This file is subject to the terms and conditions of the GNU General Public
|
|
||||||
* License. See the file "COPYING" in the main directory of this archive
|
|
||||||
* for more details.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/init.h>
|
#include <asm/clock.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/suspend.h>
|
||||||
|
|
||||||
|
#include <cpu/sh7723.h>
|
||||||
|
|
||||||
|
#include <linux/clkdev.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/gpio/machine.h>
|
||||||
|
#include <linux/i2c.h>
|
||||||
|
#include <linux/init.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/memblock.h>
|
||||||
|
#include <linux/mfd/tmio.h>
|
||||||
#include <linux/mmc/host.h>
|
#include <linux/mmc/host.h>
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
#include <linux/mtd/sh_flctl.h>
|
#include <linux/mtd/sh_flctl.h>
|
||||||
#include <linux/mfd/tmio.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/delay.h>
|
|
||||||
#include <linux/i2c.h>
|
|
||||||
#include <linux/regulator/fixed.h>
|
#include <linux/regulator/fixed.h>
|
||||||
#include <linux/regulator/machine.h>
|
#include <linux/regulator/machine.h>
|
||||||
#include <linux/smsc911x.h>
|
|
||||||
#include <linux/gpio.h>
|
|
||||||
#include <linux/videodev2.h>
|
|
||||||
#include <linux/sh_intc.h>
|
#include <linux/sh_intc.h>
|
||||||
|
#include <linux/smsc911x.h>
|
||||||
|
#include <linux/videodev2.h>
|
||||||
|
|
||||||
|
#include <media/drv-intf/renesas-ceu.h>
|
||||||
#include <media/i2c/ov772x.h>
|
#include <media/i2c/ov772x.h>
|
||||||
#include <media/soc_camera.h>
|
|
||||||
#include <linux/platform_data/media/soc_camera_platform.h>
|
|
||||||
#include <media/drv-intf/sh_mobile_ceu.h>
|
|
||||||
#include <video/sh_mobile_lcdc.h>
|
#include <video/sh_mobile_lcdc.h>
|
||||||
#include <asm/io.h>
|
|
||||||
#include <asm/clock.h>
|
#define CEU_BUFFER_MEMORY_SIZE (4 << 20)
|
||||||
#include <asm/suspend.h>
|
static phys_addr_t ceu_dma_membase;
|
||||||
#include <cpu/sh7723.h>
|
|
||||||
|
|
||||||
/* Dummy supplies, where voltage doesn't matter */
|
/* Dummy supplies, where voltage doesn't matter */
|
||||||
static struct regulator_consumer_supply dummy_supplies[] = {
|
static struct regulator_consumer_supply dummy_supplies[] = {
|
||||||
@@ -253,150 +258,25 @@ static struct platform_device lcdc_device = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static void camera_power(int val)
|
/* Powerdown/reset gpios for CEU image sensors */
|
||||||
{
|
static struct gpiod_lookup_table ov7725_gpios = {
|
||||||
gpio_set_value(GPIO_PTZ5, val); /* RST_CAM/RSTB */
|
.dev_id = "0-0021",
|
||||||
mdelay(10);
|
.table = {
|
||||||
}
|
GPIO_LOOKUP("sh7723_pfc", GPIO_PTZ5, "reset", GPIO_ACTIVE_LOW),
|
||||||
|
|
||||||
#ifdef CONFIG_I2C
|
|
||||||
/* support for the old ncm03j camera */
|
|
||||||
static unsigned char camera_ncm03j_magic[] =
|
|
||||||
{
|
|
||||||
0x87, 0x00, 0x88, 0x08, 0x89, 0x01, 0x8A, 0xE8,
|
|
||||||
0x1D, 0x00, 0x1E, 0x8A, 0x21, 0x00, 0x33, 0x36,
|
|
||||||
0x36, 0x60, 0x37, 0x08, 0x3B, 0x31, 0x44, 0x0F,
|
|
||||||
0x46, 0xF0, 0x4B, 0x28, 0x4C, 0x21, 0x4D, 0x55,
|
|
||||||
0x4E, 0x1B, 0x4F, 0xC7, 0x50, 0xFC, 0x51, 0x12,
|
|
||||||
0x58, 0x02, 0x66, 0xC0, 0x67, 0x46, 0x6B, 0xA0,
|
|
||||||
0x6C, 0x34, 0x7E, 0x25, 0x7F, 0x25, 0x8D, 0x0F,
|
|
||||||
0x92, 0x40, 0x93, 0x04, 0x94, 0x26, 0x95, 0x0A,
|
|
||||||
0x99, 0x03, 0x9A, 0xF0, 0x9B, 0x14, 0x9D, 0x7A,
|
|
||||||
0xC5, 0x02, 0xD6, 0x07, 0x59, 0x00, 0x5A, 0x1A,
|
|
||||||
0x5B, 0x2A, 0x5C, 0x37, 0x5D, 0x42, 0x5E, 0x56,
|
|
||||||
0xC8, 0x00, 0xC9, 0x1A, 0xCA, 0x2A, 0xCB, 0x37,
|
|
||||||
0xCC, 0x42, 0xCD, 0x56, 0xCE, 0x00, 0xCF, 0x1A,
|
|
||||||
0xD0, 0x2A, 0xD1, 0x37, 0xD2, 0x42, 0xD3, 0x56,
|
|
||||||
0x5F, 0x68, 0x60, 0x87, 0x61, 0xA3, 0x62, 0xBC,
|
|
||||||
0x63, 0xD4, 0x64, 0xEA, 0xD6, 0x0F,
|
|
||||||
};
|
|
||||||
|
|
||||||
static int camera_probe(void)
|
|
||||||
{
|
|
||||||
struct i2c_adapter *a = i2c_get_adapter(0);
|
|
||||||
struct i2c_msg msg;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (!a)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
camera_power(1);
|
|
||||||
msg.addr = 0x6e;
|
|
||||||
msg.buf = camera_ncm03j_magic;
|
|
||||||
msg.len = 2;
|
|
||||||
msg.flags = 0;
|
|
||||||
ret = i2c_transfer(a, &msg, 1);
|
|
||||||
camera_power(0);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int camera_set_capture(struct soc_camera_platform_info *info,
|
|
||||||
int enable)
|
|
||||||
{
|
|
||||||
struct i2c_adapter *a = i2c_get_adapter(0);
|
|
||||||
struct i2c_msg msg;
|
|
||||||
int ret = 0;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
camera_power(0);
|
|
||||||
if (!enable)
|
|
||||||
return 0; /* no disable for now */
|
|
||||||
|
|
||||||
camera_power(1);
|
|
||||||
for (i = 0; i < ARRAY_SIZE(camera_ncm03j_magic); i += 2) {
|
|
||||||
u_int8_t buf[8];
|
|
||||||
|
|
||||||
msg.addr = 0x6e;
|
|
||||||
msg.buf = buf;
|
|
||||||
msg.len = 2;
|
|
||||||
msg.flags = 0;
|
|
||||||
|
|
||||||
buf[0] = camera_ncm03j_magic[i];
|
|
||||||
buf[1] = camera_ncm03j_magic[i + 1];
|
|
||||||
|
|
||||||
ret = (ret < 0) ? ret : i2c_transfer(a, &msg, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ap325rxa_camera_add(struct soc_camera_device *icd);
|
|
||||||
static void ap325rxa_camera_del(struct soc_camera_device *icd);
|
|
||||||
|
|
||||||
static struct soc_camera_platform_info camera_info = {
|
|
||||||
.format_name = "UYVY",
|
|
||||||
.format_depth = 16,
|
|
||||||
.format = {
|
|
||||||
.code = MEDIA_BUS_FMT_UYVY8_2X8,
|
|
||||||
.colorspace = V4L2_COLORSPACE_SMPTE170M,
|
|
||||||
.field = V4L2_FIELD_NONE,
|
|
||||||
.width = 640,
|
|
||||||
.height = 480,
|
|
||||||
},
|
},
|
||||||
.mbus_param = V4L2_MBUS_PCLK_SAMPLE_RISING | V4L2_MBUS_MASTER |
|
|
||||||
V4L2_MBUS_VSYNC_ACTIVE_HIGH | V4L2_MBUS_HSYNC_ACTIVE_HIGH |
|
|
||||||
V4L2_MBUS_DATA_ACTIVE_HIGH,
|
|
||||||
.mbus_type = V4L2_MBUS_PARALLEL,
|
|
||||||
.set_capture = camera_set_capture,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct soc_camera_link camera_link = {
|
static struct ceu_platform_data ceu0_pdata = {
|
||||||
.bus_id = 0,
|
.num_subdevs = 1,
|
||||||
.add_device = ap325rxa_camera_add,
|
.subdevs = {
|
||||||
.del_device = ap325rxa_camera_del,
|
{ /* [0] = ov7725 */
|
||||||
.module_name = "soc_camera_platform",
|
.flags = 0,
|
||||||
.priv = &camera_info,
|
.bus_width = 8,
|
||||||
};
|
.bus_shift = 0,
|
||||||
|
.i2c_adapter_id = 0,
|
||||||
static struct platform_device *camera_device;
|
.i2c_address = 0x21,
|
||||||
|
},
|
||||||
static void ap325rxa_camera_release(struct device *dev)
|
},
|
||||||
{
|
|
||||||
soc_camera_platform_release(&camera_device);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ap325rxa_camera_add(struct soc_camera_device *icd)
|
|
||||||
{
|
|
||||||
int ret = soc_camera_platform_add(icd, &camera_device, &camera_link,
|
|
||||||
ap325rxa_camera_release, 0);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
ret = camera_probe();
|
|
||||||
if (ret < 0)
|
|
||||||
soc_camera_platform_del(icd, camera_device, &camera_link);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ap325rxa_camera_del(struct soc_camera_device *icd)
|
|
||||||
{
|
|
||||||
soc_camera_platform_del(icd, camera_device, &camera_link);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_I2C */
|
|
||||||
|
|
||||||
static int ov7725_power(struct device *dev, int mode)
|
|
||||||
{
|
|
||||||
camera_power(0);
|
|
||||||
if (mode)
|
|
||||||
camera_power(1);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct sh_mobile_ceu_info sh_mobile_ceu_info = {
|
|
||||||
.flags = SH_CEU_FLAG_USE_8BIT_BUS,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource ceu_resources[] = {
|
static struct resource ceu_resources[] = {
|
||||||
@@ -410,18 +290,15 @@ static struct resource ceu_resources[] = {
|
|||||||
.start = evt2irq(0x880),
|
.start = evt2irq(0x880),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
[2] = {
|
|
||||||
/* place holder for contiguous memory */
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device ceu_device = {
|
static struct platform_device ap325rxa_ceu_device = {
|
||||||
.name = "sh_mobile_ceu",
|
.name = "renesas-ceu",
|
||||||
.id = 0, /* "ceu0" clock */
|
.id = 0, /* "ceu.0" clock */
|
||||||
.num_resources = ARRAY_SIZE(ceu_resources),
|
.num_resources = ARRAY_SIZE(ceu_resources),
|
||||||
.resource = ceu_resources,
|
.resource = ceu_resources,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &sh_mobile_ceu_info,
|
.platform_data = &ceu0_pdata,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -488,44 +365,18 @@ static struct platform_device sdhi1_cn7_device = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct i2c_board_info __initdata ap325rxa_i2c_devices[] = {
|
|
||||||
{
|
|
||||||
I2C_BOARD_INFO("pcf8563", 0x51),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct i2c_board_info ap325rxa_i2c_camera[] = {
|
|
||||||
{
|
|
||||||
I2C_BOARD_INFO("ov772x", 0x21),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct ov772x_camera_info ov7725_info = {
|
static struct ov772x_camera_info ov7725_info = {
|
||||||
.flags = OV772X_FLAG_VFLIP | OV772X_FLAG_HFLIP,
|
.flags = OV772X_FLAG_VFLIP | OV772X_FLAG_HFLIP,
|
||||||
.edgectrl = OV772X_AUTO_EDGECTRL(0xf, 0),
|
.edgectrl = OV772X_AUTO_EDGECTRL(0xf, 0),
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct soc_camera_link ov7725_link = {
|
static struct i2c_board_info ap325rxa_i2c_devices[] __initdata = {
|
||||||
.bus_id = 0,
|
|
||||||
.power = ov7725_power,
|
|
||||||
.board_info = &ap325rxa_i2c_camera[0],
|
|
||||||
.i2c_adapter_id = 0,
|
|
||||||
.priv = &ov7725_info,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device ap325rxa_camera[] = {
|
|
||||||
{
|
{
|
||||||
.name = "soc-camera-pdrv",
|
I2C_BOARD_INFO("pcf8563", 0x51),
|
||||||
.id = 0,
|
},
|
||||||
.dev = {
|
{
|
||||||
.platform_data = &ov7725_link,
|
I2C_BOARD_INFO("ov772x", 0x21),
|
||||||
},
|
.platform_data = &ov7725_info,
|
||||||
}, {
|
|
||||||
.name = "soc-camera-pdrv",
|
|
||||||
.id = 1,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = &camera_link,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -533,12 +384,9 @@ static struct platform_device *ap325rxa_devices[] __initdata = {
|
|||||||
&smsc9118_device,
|
&smsc9118_device,
|
||||||
&ap325rxa_nor_flash_device,
|
&ap325rxa_nor_flash_device,
|
||||||
&lcdc_device,
|
&lcdc_device,
|
||||||
&ceu_device,
|
|
||||||
&nand_flash_device,
|
&nand_flash_device,
|
||||||
&sdhi0_cn3_device,
|
&sdhi0_cn3_device,
|
||||||
&sdhi1_cn7_device,
|
&sdhi1_cn7_device,
|
||||||
&ap325rxa_camera[0],
|
|
||||||
&ap325rxa_camera[1],
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern char ap325rxa_sdram_enter_start;
|
extern char ap325rxa_sdram_enter_start;
|
||||||
@@ -649,8 +497,6 @@ static int __init ap325rxa_devices_setup(void)
|
|||||||
__raw_writew(0xFFFF, PORT_DRVCRA);
|
__raw_writew(0xFFFF, PORT_DRVCRA);
|
||||||
__raw_writew(0xFFFF, PORT_DRVCRB);
|
__raw_writew(0xFFFF, PORT_DRVCRB);
|
||||||
|
|
||||||
platform_resource_setup_memory(&ceu_device, "ceu", 4 << 20);
|
|
||||||
|
|
||||||
/* SDHI0 - CN3 - SD CARD */
|
/* SDHI0 - CN3 - SD CARD */
|
||||||
gpio_request(GPIO_FN_SDHI0CD_PTD, NULL);
|
gpio_request(GPIO_FN_SDHI0CD_PTD, NULL);
|
||||||
gpio_request(GPIO_FN_SDHI0WP_PTD, NULL);
|
gpio_request(GPIO_FN_SDHI0WP_PTD, NULL);
|
||||||
@@ -670,9 +516,25 @@ static int __init ap325rxa_devices_setup(void)
|
|||||||
gpio_request(GPIO_FN_SDHI1CMD, NULL);
|
gpio_request(GPIO_FN_SDHI1CMD, NULL);
|
||||||
gpio_request(GPIO_FN_SDHI1CLK, NULL);
|
gpio_request(GPIO_FN_SDHI1CLK, NULL);
|
||||||
|
|
||||||
|
/* Add a clock alias for ov7725 xclk source. */
|
||||||
|
clk_add_alias(NULL, "0-0021", "video_clk", NULL);
|
||||||
|
|
||||||
|
/* Register RSTB gpio for ov7725 camera sensor. */
|
||||||
|
gpiod_add_lookup_table(&ov7725_gpios);
|
||||||
|
|
||||||
i2c_register_board_info(0, ap325rxa_i2c_devices,
|
i2c_register_board_info(0, ap325rxa_i2c_devices,
|
||||||
ARRAY_SIZE(ap325rxa_i2c_devices));
|
ARRAY_SIZE(ap325rxa_i2c_devices));
|
||||||
|
|
||||||
|
/* Initialize CEU platform device separately to map memory first */
|
||||||
|
device_initialize(&ap325rxa_ceu_device.dev);
|
||||||
|
arch_setup_pdev_archdata(&ap325rxa_ceu_device);
|
||||||
|
dma_declare_coherent_memory(&ap325rxa_ceu_device.dev,
|
||||||
|
ceu_dma_membase, ceu_dma_membase,
|
||||||
|
ceu_dma_membase + CEU_BUFFER_MEMORY_SIZE - 1,
|
||||||
|
DMA_MEMORY_EXCLUSIVE);
|
||||||
|
|
||||||
|
platform_device_add(&ap325rxa_ceu_device);
|
||||||
|
|
||||||
return platform_add_devices(ap325rxa_devices,
|
return platform_add_devices(ap325rxa_devices,
|
||||||
ARRAY_SIZE(ap325rxa_devices));
|
ARRAY_SIZE(ap325rxa_devices));
|
||||||
}
|
}
|
||||||
@@ -689,7 +551,21 @@ static int ap325rxa_mode_pins(void)
|
|||||||
return MODE_PIN5 | MODE_PIN8;
|
return MODE_PIN5 | MODE_PIN8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reserve a portion of memory for CEU buffers */
|
||||||
|
static void __init ap325rxa_mv_mem_reserve(void)
|
||||||
|
{
|
||||||
|
phys_addr_t phys;
|
||||||
|
phys_addr_t size = CEU_BUFFER_MEMORY_SIZE;
|
||||||
|
|
||||||
|
phys = memblock_alloc_base(size, PAGE_SIZE, MEMBLOCK_ALLOC_ANYWHERE);
|
||||||
|
memblock_free(phys, size);
|
||||||
|
memblock_remove(phys, size);
|
||||||
|
|
||||||
|
ceu_dma_membase = phys;
|
||||||
|
}
|
||||||
|
|
||||||
static struct sh_machine_vector mv_ap325rxa __initmv = {
|
static struct sh_machine_vector mv_ap325rxa __initmv = {
|
||||||
.mv_name = "AP-325RXA",
|
.mv_name = "AP-325RXA",
|
||||||
.mv_mode_pins = ap325rxa_mode_pins,
|
.mv_mode_pins = ap325rxa_mode_pins,
|
||||||
|
.mv_mem_reserve = ap325rxa_mv_mem_reserve,
|
||||||
};
|
};
|
||||||
|
@@ -1,42 +1,54 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* KFR2R09 board support code
|
* KFR2R09 board support code
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Magnus Damm
|
* Copyright (C) 2009 Magnus Damm
|
||||||
*
|
|
||||||
* This file is subject to the terms and conditions of the GNU General Public
|
|
||||||
* License. See the file "COPYING" in the main directory of this archive
|
|
||||||
* for more details.
|
|
||||||
*/
|
*/
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/platform_device.h>
|
#include <asm/clock.h>
|
||||||
#include <linux/interrupt.h>
|
#include <asm/io.h>
|
||||||
#include <linux/mmc/host.h>
|
#include <asm/machvec.h>
|
||||||
#include <linux/mfd/tmio.h>
|
#include <asm/suspend.h>
|
||||||
#include <linux/mtd/physmap.h>
|
|
||||||
#include <linux/mtd/onenand.h>
|
#include <cpu/sh7724.h>
|
||||||
|
|
||||||
|
#include <linux/clkdev.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/gpio/machine.h>
|
||||||
|
#include <linux/i2c.h>
|
||||||
|
#include <linux/init.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/input/sh_keysc.h>
|
#include <linux/input/sh_keysc.h>
|
||||||
#include <linux/i2c.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/memblock.h>
|
||||||
|
#include <linux/mfd/tmio.h>
|
||||||
|
#include <linux/mmc/host.h>
|
||||||
|
#include <linux/mtd/onenand.h>
|
||||||
|
#include <linux/mtd/physmap.h>
|
||||||
#include <linux/platform_data/lv5207lp.h>
|
#include <linux/platform_data/lv5207lp.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
#include <linux/regulator/fixed.h>
|
#include <linux/regulator/fixed.h>
|
||||||
#include <linux/regulator/machine.h>
|
#include <linux/regulator/machine.h>
|
||||||
|
#include <linux/sh_intc.h>
|
||||||
#include <linux/usb/r8a66597.h>
|
#include <linux/usb/r8a66597.h>
|
||||||
#include <linux/videodev2.h>
|
#include <linux/videodev2.h>
|
||||||
#include <linux/sh_intc.h>
|
|
||||||
#include <media/i2c/rj54n1cb0c.h>
|
|
||||||
#include <media/soc_camera.h>
|
|
||||||
#include <media/drv-intf/sh_mobile_ceu.h>
|
|
||||||
#include <video/sh_mobile_lcdc.h>
|
|
||||||
#include <asm/suspend.h>
|
|
||||||
#include <asm/clock.h>
|
|
||||||
#include <asm/machvec.h>
|
|
||||||
#include <asm/io.h>
|
|
||||||
#include <cpu/sh7724.h>
|
|
||||||
#include <mach/kfr2r09.h>
|
#include <mach/kfr2r09.h>
|
||||||
|
|
||||||
|
#include <media/drv-intf/renesas-ceu.h>
|
||||||
|
#include <media/i2c/rj54n1cb0c.h>
|
||||||
|
|
||||||
|
#include <video/sh_mobile_lcdc.h>
|
||||||
|
|
||||||
|
#define CEU_BUFFER_MEMORY_SIZE (4 << 20)
|
||||||
|
static phys_addr_t ceu_dma_membase;
|
||||||
|
|
||||||
|
/* set VIO_CKO clock to 25MHz */
|
||||||
|
#define CEU_MCLK_FREQ 25000000
|
||||||
|
#define DRVCRB 0xA405018C
|
||||||
|
|
||||||
static struct mtd_partition kfr2r09_nor_flash_partitions[] =
|
static struct mtd_partition kfr2r09_nor_flash_partitions[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@@ -230,8 +242,17 @@ static struct platform_device kfr2r09_usb0_gadget_device = {
|
|||||||
.resource = kfr2r09_usb0_gadget_resources,
|
.resource = kfr2r09_usb0_gadget_resources,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct sh_mobile_ceu_info sh_mobile_ceu_info = {
|
static struct ceu_platform_data ceu_pdata = {
|
||||||
.flags = SH_CEU_FLAG_USE_8BIT_BUS,
|
.num_subdevs = 1,
|
||||||
|
.subdevs = {
|
||||||
|
{ /* [0] = rj54n1cb0c */
|
||||||
|
.flags = 0,
|
||||||
|
.bus_width = 8,
|
||||||
|
.bus_shift = 0,
|
||||||
|
.i2c_adapter_id = 1,
|
||||||
|
.i2c_address = 0x50,
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource kfr2r09_ceu_resources[] = {
|
static struct resource kfr2r09_ceu_resources[] = {
|
||||||
@@ -246,109 +267,35 @@ static struct resource kfr2r09_ceu_resources[] = {
|
|||||||
.end = evt2irq(0x880),
|
.end = evt2irq(0x880),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
[2] = {
|
|
||||||
/* place holder for contiguous memory */
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device kfr2r09_ceu_device = {
|
static struct platform_device kfr2r09_ceu_device = {
|
||||||
.name = "sh_mobile_ceu",
|
.name = "renesas-ceu",
|
||||||
.id = 0, /* "ceu0" clock */
|
.id = 0, /* "ceu0" clock */
|
||||||
.num_resources = ARRAY_SIZE(kfr2r09_ceu_resources),
|
.num_resources = ARRAY_SIZE(kfr2r09_ceu_resources),
|
||||||
.resource = kfr2r09_ceu_resources,
|
.resource = kfr2r09_ceu_resources,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &sh_mobile_ceu_info,
|
.platform_data = &ceu_pdata,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct i2c_board_info kfr2r09_i2c_camera = {
|
|
||||||
I2C_BOARD_INFO("rj54n1cb0c", 0x50),
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct clk *camera_clk;
|
|
||||||
|
|
||||||
/* set VIO_CKO clock to 25MHz */
|
|
||||||
#define CEU_MCLK_FREQ 25000000
|
|
||||||
|
|
||||||
#define DRVCRB 0xA405018C
|
|
||||||
static int camera_power(struct device *dev, int mode)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (mode) {
|
|
||||||
long rate;
|
|
||||||
|
|
||||||
camera_clk = clk_get(NULL, "video_clk");
|
|
||||||
if (IS_ERR(camera_clk))
|
|
||||||
return PTR_ERR(camera_clk);
|
|
||||||
|
|
||||||
rate = clk_round_rate(camera_clk, CEU_MCLK_FREQ);
|
|
||||||
ret = clk_set_rate(camera_clk, rate);
|
|
||||||
if (ret < 0)
|
|
||||||
goto eclkrate;
|
|
||||||
|
|
||||||
/* set DRVCRB
|
|
||||||
*
|
|
||||||
* use 1.8 V for VccQ_VIO
|
|
||||||
* use 2.85V for VccQ_SR
|
|
||||||
*/
|
|
||||||
__raw_writew((__raw_readw(DRVCRB) & ~0x0003) | 0x0001, DRVCRB);
|
|
||||||
|
|
||||||
/* reset clear */
|
|
||||||
ret = gpio_request(GPIO_PTB4, NULL);
|
|
||||||
if (ret < 0)
|
|
||||||
goto eptb4;
|
|
||||||
ret = gpio_request(GPIO_PTB7, NULL);
|
|
||||||
if (ret < 0)
|
|
||||||
goto eptb7;
|
|
||||||
|
|
||||||
ret = gpio_direction_output(GPIO_PTB4, 1);
|
|
||||||
if (!ret)
|
|
||||||
ret = gpio_direction_output(GPIO_PTB7, 1);
|
|
||||||
if (ret < 0)
|
|
||||||
goto egpioout;
|
|
||||||
msleep(1);
|
|
||||||
|
|
||||||
ret = clk_enable(camera_clk); /* start VIO_CKO */
|
|
||||||
if (ret < 0)
|
|
||||||
goto eclkon;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
clk_disable(camera_clk);
|
|
||||||
eclkon:
|
|
||||||
gpio_set_value(GPIO_PTB7, 0);
|
|
||||||
egpioout:
|
|
||||||
gpio_set_value(GPIO_PTB4, 0);
|
|
||||||
gpio_free(GPIO_PTB7);
|
|
||||||
eptb7:
|
|
||||||
gpio_free(GPIO_PTB4);
|
|
||||||
eptb4:
|
|
||||||
eclkrate:
|
|
||||||
clk_put(camera_clk);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct rj54n1_pdata rj54n1_priv = {
|
static struct rj54n1_pdata rj54n1_priv = {
|
||||||
.mclk_freq = CEU_MCLK_FREQ,
|
.mclk_freq = CEU_MCLK_FREQ,
|
||||||
.ioctl_high = false,
|
.ioctl_high = false,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct soc_camera_link rj54n1_link = {
|
static struct i2c_board_info kfr2r09_i2c_camera = {
|
||||||
.power = camera_power,
|
I2C_BOARD_INFO("rj54n1cb0c", 0x50),
|
||||||
.board_info = &kfr2r09_i2c_camera,
|
.platform_data = &rj54n1_priv,
|
||||||
.i2c_adapter_id = 1,
|
|
||||||
.priv = &rj54n1_priv,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device kfr2r09_camera = {
|
static struct gpiod_lookup_table rj54n1_gpios = {
|
||||||
.name = "soc-camera-pdrv",
|
.dev_id = "1-0050",
|
||||||
.id = 0,
|
.table = {
|
||||||
.dev = {
|
GPIO_LOOKUP("sh7724_pfc", GPIO_PTB4, "poweron",
|
||||||
.platform_data = &rj54n1_link,
|
GPIO_ACTIVE_HIGH),
|
||||||
|
GPIO_LOOKUP("sh7724_pfc", GPIO_PTB7, "enable",
|
||||||
|
GPIO_ACTIVE_HIGH),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -393,8 +340,6 @@ static struct platform_device *kfr2r09_devices[] __initdata = {
|
|||||||
&kfr2r09_nand_flash_device,
|
&kfr2r09_nand_flash_device,
|
||||||
&kfr2r09_sh_keysc_device,
|
&kfr2r09_sh_keysc_device,
|
||||||
&kfr2r09_sh_lcdc_device,
|
&kfr2r09_sh_lcdc_device,
|
||||||
&kfr2r09_ceu_device,
|
|
||||||
&kfr2r09_camera,
|
|
||||||
&kfr2r09_sh_sdhi0_device,
|
&kfr2r09_sh_sdhi0_device,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -533,6 +478,8 @@ extern char kfr2r09_sdram_leave_end;
|
|||||||
|
|
||||||
static int __init kfr2r09_devices_setup(void)
|
static int __init kfr2r09_devices_setup(void)
|
||||||
{
|
{
|
||||||
|
static struct clk *camera_clk;
|
||||||
|
|
||||||
/* register board specific self-refresh code */
|
/* register board specific self-refresh code */
|
||||||
sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF |
|
sh_mobile_register_self_refresh(SUSP_SH_STANDBY | SUSP_SH_SF |
|
||||||
SUSP_SH_RSTANDBY,
|
SUSP_SH_RSTANDBY,
|
||||||
@@ -622,8 +569,6 @@ static int __init kfr2r09_devices_setup(void)
|
|||||||
gpio_request(GPIO_FN_VIO0_D1, NULL);
|
gpio_request(GPIO_FN_VIO0_D1, NULL);
|
||||||
gpio_request(GPIO_FN_VIO0_D0, NULL);
|
gpio_request(GPIO_FN_VIO0_D0, NULL);
|
||||||
|
|
||||||
platform_resource_setup_memory(&kfr2r09_ceu_device, "ceu", 4 << 20);
|
|
||||||
|
|
||||||
/* SDHI0 connected to yc304 */
|
/* SDHI0 connected to yc304 */
|
||||||
gpio_request(GPIO_FN_SDHI0CD, NULL);
|
gpio_request(GPIO_FN_SDHI0CD, NULL);
|
||||||
gpio_request(GPIO_FN_SDHI0D3, NULL);
|
gpio_request(GPIO_FN_SDHI0D3, NULL);
|
||||||
@@ -635,6 +580,36 @@ static int __init kfr2r09_devices_setup(void)
|
|||||||
|
|
||||||
i2c_register_board_info(0, &kfr2r09_backlight_board_info, 1);
|
i2c_register_board_info(0, &kfr2r09_backlight_board_info, 1);
|
||||||
|
|
||||||
|
/* Set camera clock frequency and register and alias for rj54n1. */
|
||||||
|
camera_clk = clk_get(NULL, "video_clk");
|
||||||
|
if (!IS_ERR(camera_clk)) {
|
||||||
|
clk_set_rate(camera_clk,
|
||||||
|
clk_round_rate(camera_clk, CEU_MCLK_FREQ));
|
||||||
|
clk_put(camera_clk);
|
||||||
|
}
|
||||||
|
clk_add_alias(NULL, "1-0050", "video_clk", NULL);
|
||||||
|
|
||||||
|
/* set DRVCRB
|
||||||
|
*
|
||||||
|
* use 1.8 V for VccQ_VIO
|
||||||
|
* use 2.85V for VccQ_SR
|
||||||
|
*/
|
||||||
|
__raw_writew((__raw_readw(DRVCRB) & ~0x0003) | 0x0001, DRVCRB);
|
||||||
|
|
||||||
|
gpiod_add_lookup_table(&rj54n1_gpios);
|
||||||
|
|
||||||
|
i2c_register_board_info(1, &kfr2r09_i2c_camera, 1);
|
||||||
|
|
||||||
|
/* Initialize CEU platform device separately to map memory first */
|
||||||
|
device_initialize(&kfr2r09_ceu_device.dev);
|
||||||
|
arch_setup_pdev_archdata(&kfr2r09_ceu_device);
|
||||||
|
dma_declare_coherent_memory(&kfr2r09_ceu_device.dev,
|
||||||
|
ceu_dma_membase, ceu_dma_membase,
|
||||||
|
ceu_dma_membase + CEU_BUFFER_MEMORY_SIZE - 1,
|
||||||
|
DMA_MEMORY_EXCLUSIVE);
|
||||||
|
|
||||||
|
platform_device_add(&kfr2r09_ceu_device);
|
||||||
|
|
||||||
return platform_add_devices(kfr2r09_devices,
|
return platform_add_devices(kfr2r09_devices,
|
||||||
ARRAY_SIZE(kfr2r09_devices));
|
ARRAY_SIZE(kfr2r09_devices));
|
||||||
}
|
}
|
||||||
@@ -651,10 +626,24 @@ static int kfr2r09_mode_pins(void)
|
|||||||
return MODE_PIN0 | MODE_PIN1 | MODE_PIN5 | MODE_PIN8;
|
return MODE_PIN0 | MODE_PIN1 | MODE_PIN5 | MODE_PIN8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Reserve a portion of memory for CEU buffers */
|
||||||
|
static void __init kfr2r09_mv_mem_reserve(void)
|
||||||
|
{
|
||||||
|
phys_addr_t phys;
|
||||||
|
phys_addr_t size = CEU_BUFFER_MEMORY_SIZE;
|
||||||
|
|
||||||
|
phys = memblock_alloc_base(size, PAGE_SIZE, MEMBLOCK_ALLOC_ANYWHERE);
|
||||||
|
memblock_free(phys, size);
|
||||||
|
memblock_remove(phys, size);
|
||||||
|
|
||||||
|
ceu_dma_membase = phys;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The Machine Vector
|
* The Machine Vector
|
||||||
*/
|
*/
|
||||||
static struct sh_machine_vector mv_kfr2r09 __initmv = {
|
static struct sh_machine_vector mv_kfr2r09 __initmv = {
|
||||||
.mv_name = "kfr2r09",
|
.mv_name = "kfr2r09",
|
||||||
.mv_mode_pins = kfr2r09_mode_pins,
|
.mv_mode_pins = kfr2r09_mode_pins,
|
||||||
|
.mv_mem_reserve = kfr2r09_mv_mem_reserve,
|
||||||
};
|
};
|
||||||
|
@@ -28,7 +28,6 @@
|
|||||||
#include <video/sh_mobile_lcdc.h>
|
#include <video/sh_mobile_lcdc.h>
|
||||||
#include <media/drv-intf/renesas-ceu.h>
|
#include <media/drv-intf/renesas-ceu.h>
|
||||||
#include <media/i2c/ov772x.h>
|
#include <media/i2c/ov772x.h>
|
||||||
#include <media/soc_camera.h>
|
|
||||||
#include <media/i2c/tw9910.h>
|
#include <media/i2c/tw9910.h>
|
||||||
#include <asm/clock.h>
|
#include <asm/clock.h>
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
@@ -351,8 +350,9 @@ static struct platform_device migor_ceu_device = {
|
|||||||
static struct gpiod_lookup_table ov7725_gpios = {
|
static struct gpiod_lookup_table ov7725_gpios = {
|
||||||
.dev_id = "0-0021",
|
.dev_id = "0-0021",
|
||||||
.table = {
|
.table = {
|
||||||
GPIO_LOOKUP("sh7722_pfc", GPIO_PTT0, "pwdn", GPIO_ACTIVE_HIGH),
|
GPIO_LOOKUP("sh7722_pfc", GPIO_PTT0, "powerdown",
|
||||||
GPIO_LOOKUP("sh7722_pfc", GPIO_PTT3, "rstb", GPIO_ACTIVE_LOW),
|
GPIO_ACTIVE_HIGH),
|
||||||
|
GPIO_LOOKUP("sh7722_pfc", GPIO_PTT3, "reset", GPIO_ACTIVE_LOW),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -592,7 +592,7 @@ static int __init migor_devices_setup(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Add a clock alias for ov7725 xclk source. */
|
/* Add a clock alias for ov7725 xclk source. */
|
||||||
clk_add_alias("xclk", "0-0021", "video_clk", NULL);
|
clk_add_alias(NULL, "0-0021", "video_clk", NULL);
|
||||||
|
|
||||||
/* Register GPIOs for video sources. */
|
/* Register GPIOs for video sources. */
|
||||||
gpiod_add_lookup_table(&ov7725_gpios);
|
gpiod_add_lookup_table(&ov7725_gpios);
|
||||||
|
@@ -1,43 +1,49 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0
|
||||||
/*
|
/*
|
||||||
* linux/arch/sh/boards/se/7724/setup.c
|
* linux/arch/sh/boards/se/7724/setup.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2009 Renesas Solutions Corp.
|
* Copyright (C) 2009 Renesas Solutions Corp.
|
||||||
*
|
*
|
||||||
* Kuninori Morimoto <morimoto.kuninori@renesas.com>
|
* Kuninori Morimoto <morimoto.kuninori@renesas.com>
|
||||||
*
|
|
||||||
* This file is subject to the terms and conditions of the GNU General Public
|
|
||||||
* License. See the file "COPYING" in the main directory of this archive
|
|
||||||
* for more details.
|
|
||||||
*/
|
*/
|
||||||
|
#include <asm/clock.h>
|
||||||
|
#include <asm/heartbeat.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/suspend.h>
|
||||||
|
|
||||||
|
#include <cpu/sh7724.h>
|
||||||
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/device.h>
|
|
||||||
#include <linux/interrupt.h>
|
|
||||||
#include <linux/platform_device.h>
|
|
||||||
#include <linux/mmc/host.h>
|
|
||||||
#include <linux/mfd/tmio.h>
|
|
||||||
#include <linux/mtd/physmap.h>
|
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/regulator/fixed.h>
|
#include <linux/device.h>
|
||||||
#include <linux/regulator/machine.h>
|
|
||||||
#include <linux/smc91x.h>
|
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
|
#include <linux/init.h>
|
||||||
#include <linux/input.h>
|
#include <linux/input.h>
|
||||||
#include <linux/input/sh_keysc.h>
|
#include <linux/input/sh_keysc.h>
|
||||||
#include <linux/usb/r8a66597.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/memblock.h>
|
||||||
|
#include <linux/mfd/tmio.h>
|
||||||
|
#include <linux/mmc/host.h>
|
||||||
|
#include <linux/mtd/physmap.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/regulator/fixed.h>
|
||||||
|
#include <linux/regulator/machine.h>
|
||||||
#include <linux/sh_eth.h>
|
#include <linux/sh_eth.h>
|
||||||
#include <linux/sh_intc.h>
|
#include <linux/sh_intc.h>
|
||||||
|
#include <linux/smc91x.h>
|
||||||
|
#include <linux/usb/r8a66597.h>
|
||||||
#include <linux/videodev2.h>
|
#include <linux/videodev2.h>
|
||||||
#include <video/sh_mobile_lcdc.h>
|
|
||||||
#include <media/drv-intf/sh_mobile_ceu.h>
|
#include <mach-se/mach/se7724.h>
|
||||||
|
#include <media/drv-intf/renesas-ceu.h>
|
||||||
|
|
||||||
#include <sound/sh_fsi.h>
|
#include <sound/sh_fsi.h>
|
||||||
#include <sound/simple_card.h>
|
#include <sound/simple_card.h>
|
||||||
#include <asm/io.h>
|
|
||||||
#include <asm/heartbeat.h>
|
#include <video/sh_mobile_lcdc.h>
|
||||||
#include <asm/clock.h>
|
|
||||||
#include <asm/suspend.h>
|
#define CEU_BUFFER_MEMORY_SIZE (4 << 20)
|
||||||
#include <cpu/sh7724.h>
|
static phys_addr_t ceu0_dma_membase;
|
||||||
#include <mach-se/mach/se7724.h>
|
static phys_addr_t ceu1_dma_membase;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SWx 1234 5678
|
* SWx 1234 5678
|
||||||
@@ -216,8 +222,8 @@ static struct platform_device lcdc_device = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* CEU0 */
|
/* CEU0 */
|
||||||
static struct sh_mobile_ceu_info sh_mobile_ceu0_info = {
|
static struct ceu_platform_data ceu0_pdata = {
|
||||||
.flags = SH_CEU_FLAG_USE_8BIT_BUS,
|
.num_subdevs = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource ceu0_resources[] = {
|
static struct resource ceu0_resources[] = {
|
||||||
@@ -231,24 +237,21 @@ static struct resource ceu0_resources[] = {
|
|||||||
.start = evt2irq(0x880),
|
.start = evt2irq(0x880),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
[2] = {
|
|
||||||
/* place holder for contiguous memory */
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device ceu0_device = {
|
static struct platform_device ceu0_device = {
|
||||||
.name = "sh_mobile_ceu",
|
.name = "renesas-ceu",
|
||||||
.id = 0, /* "ceu0" clock */
|
.id = 0, /* "ceu.0" clock */
|
||||||
.num_resources = ARRAY_SIZE(ceu0_resources),
|
.num_resources = ARRAY_SIZE(ceu0_resources),
|
||||||
.resource = ceu0_resources,
|
.resource = ceu0_resources,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &sh_mobile_ceu0_info,
|
.platform_data = &ceu0_pdata,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/* CEU1 */
|
/* CEU1 */
|
||||||
static struct sh_mobile_ceu_info sh_mobile_ceu1_info = {
|
static struct ceu_platform_data ceu1_pdata = {
|
||||||
.flags = SH_CEU_FLAG_USE_8BIT_BUS,
|
.num_subdevs = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource ceu1_resources[] = {
|
static struct resource ceu1_resources[] = {
|
||||||
@@ -262,18 +265,15 @@ static struct resource ceu1_resources[] = {
|
|||||||
.start = evt2irq(0x9e0),
|
.start = evt2irq(0x9e0),
|
||||||
.flags = IORESOURCE_IRQ,
|
.flags = IORESOURCE_IRQ,
|
||||||
},
|
},
|
||||||
[2] = {
|
|
||||||
/* place holder for contiguous memory */
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device ceu1_device = {
|
static struct platform_device ceu1_device = {
|
||||||
.name = "sh_mobile_ceu",
|
.name = "renesas-ceu",
|
||||||
.id = 1, /* "ceu1" clock */
|
.id = 1, /* "ceu.1" clock */
|
||||||
.num_resources = ARRAY_SIZE(ceu1_resources),
|
.num_resources = ARRAY_SIZE(ceu1_resources),
|
||||||
.resource = ceu1_resources,
|
.resource = ceu1_resources,
|
||||||
.dev = {
|
.dev = {
|
||||||
.platform_data = &sh_mobile_ceu1_info,
|
.platform_data = &ceu1_pdata,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -574,13 +574,16 @@ static struct platform_device vou_device = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct platform_device *ms7724se_ceu_devices[] __initdata = {
|
||||||
|
&ceu0_device,
|
||||||
|
&ceu1_device,
|
||||||
|
};
|
||||||
|
|
||||||
static struct platform_device *ms7724se_devices[] __initdata = {
|
static struct platform_device *ms7724se_devices[] __initdata = {
|
||||||
&heartbeat_device,
|
&heartbeat_device,
|
||||||
&smc91x_eth_device,
|
&smc91x_eth_device,
|
||||||
&lcdc_device,
|
&lcdc_device,
|
||||||
&nor_flash_device,
|
&nor_flash_device,
|
||||||
&ceu0_device,
|
|
||||||
&ceu1_device,
|
|
||||||
&keysc_device,
|
&keysc_device,
|
||||||
&sh_eth_device,
|
&sh_eth_device,
|
||||||
&sh7724_usb0_host_device,
|
&sh7724_usb0_host_device,
|
||||||
@@ -797,7 +800,6 @@ static int __init devices_setup(void)
|
|||||||
gpio_request(GPIO_FN_VIO0_CLK, NULL);
|
gpio_request(GPIO_FN_VIO0_CLK, NULL);
|
||||||
gpio_request(GPIO_FN_VIO0_FLD, NULL);
|
gpio_request(GPIO_FN_VIO0_FLD, NULL);
|
||||||
gpio_request(GPIO_FN_VIO0_HD, NULL);
|
gpio_request(GPIO_FN_VIO0_HD, NULL);
|
||||||
platform_resource_setup_memory(&ceu0_device, "ceu0", 4 << 20);
|
|
||||||
|
|
||||||
/* enable CEU1 */
|
/* enable CEU1 */
|
||||||
gpio_request(GPIO_FN_VIO1_D7, NULL);
|
gpio_request(GPIO_FN_VIO1_D7, NULL);
|
||||||
@@ -812,7 +814,6 @@ static int __init devices_setup(void)
|
|||||||
gpio_request(GPIO_FN_VIO1_HD, NULL);
|
gpio_request(GPIO_FN_VIO1_HD, NULL);
|
||||||
gpio_request(GPIO_FN_VIO1_VD, NULL);
|
gpio_request(GPIO_FN_VIO1_VD, NULL);
|
||||||
gpio_request(GPIO_FN_VIO1_CLK, NULL);
|
gpio_request(GPIO_FN_VIO1_CLK, NULL);
|
||||||
platform_resource_setup_memory(&ceu1_device, "ceu1", 4 << 20);
|
|
||||||
|
|
||||||
/* KEYSC */
|
/* KEYSC */
|
||||||
gpio_request(GPIO_FN_KEYOUT5_IN5, NULL);
|
gpio_request(GPIO_FN_KEYOUT5_IN5, NULL);
|
||||||
@@ -934,12 +935,49 @@ static int __init devices_setup(void)
|
|||||||
gpio_request(GPIO_FN_DV_VSYNC, NULL);
|
gpio_request(GPIO_FN_DV_VSYNC, NULL);
|
||||||
gpio_request(GPIO_FN_DV_HSYNC, NULL);
|
gpio_request(GPIO_FN_DV_HSYNC, NULL);
|
||||||
|
|
||||||
|
/* Initialize CEU platform devices separately to map memory first */
|
||||||
|
device_initialize(&ms7724se_ceu_devices[0]->dev);
|
||||||
|
arch_setup_pdev_archdata(ms7724se_ceu_devices[0]);
|
||||||
|
dma_declare_coherent_memory(&ms7724se_ceu_devices[0]->dev,
|
||||||
|
ceu0_dma_membase, ceu0_dma_membase,
|
||||||
|
ceu0_dma_membase +
|
||||||
|
CEU_BUFFER_MEMORY_SIZE - 1,
|
||||||
|
DMA_MEMORY_EXCLUSIVE);
|
||||||
|
platform_device_add(ms7724se_ceu_devices[0]);
|
||||||
|
|
||||||
|
device_initialize(&ms7724se_ceu_devices[1]->dev);
|
||||||
|
arch_setup_pdev_archdata(ms7724se_ceu_devices[1]);
|
||||||
|
dma_declare_coherent_memory(&ms7724se_ceu_devices[1]->dev,
|
||||||
|
ceu1_dma_membase, ceu1_dma_membase,
|
||||||
|
ceu1_dma_membase +
|
||||||
|
CEU_BUFFER_MEMORY_SIZE - 1,
|
||||||
|
DMA_MEMORY_EXCLUSIVE);
|
||||||
|
platform_device_add(ms7724se_ceu_devices[1]);
|
||||||
|
|
||||||
return platform_add_devices(ms7724se_devices,
|
return platform_add_devices(ms7724se_devices,
|
||||||
ARRAY_SIZE(ms7724se_devices));
|
ARRAY_SIZE(ms7724se_devices));
|
||||||
}
|
}
|
||||||
device_initcall(devices_setup);
|
device_initcall(devices_setup);
|
||||||
|
|
||||||
|
/* Reserve a portion of memory for CEU 0 and CEU 1 buffers */
|
||||||
|
static void __init ms7724se_mv_mem_reserve(void)
|
||||||
|
{
|
||||||
|
phys_addr_t phys;
|
||||||
|
phys_addr_t size = CEU_BUFFER_MEMORY_SIZE;
|
||||||
|
|
||||||
|
phys = memblock_alloc_base(size, PAGE_SIZE, MEMBLOCK_ALLOC_ANYWHERE);
|
||||||
|
memblock_free(phys, size);
|
||||||
|
memblock_remove(phys, size);
|
||||||
|
ceu0_dma_membase = phys;
|
||||||
|
|
||||||
|
phys = memblock_alloc_base(size, PAGE_SIZE, MEMBLOCK_ALLOC_ANYWHERE);
|
||||||
|
memblock_free(phys, size);
|
||||||
|
memblock_remove(phys, size);
|
||||||
|
ceu1_dma_membase = phys;
|
||||||
|
}
|
||||||
|
|
||||||
static struct sh_machine_vector mv_ms7724se __initmv = {
|
static struct sh_machine_vector mv_ms7724se __initmv = {
|
||||||
.mv_name = "ms7724se",
|
.mv_name = "ms7724se",
|
||||||
.mv_init_irq = init_se7724_IRQ,
|
.mv_init_irq = init_se7724_IRQ,
|
||||||
|
.mv_mem_reserve = ms7724se_mv_mem_reserve,
|
||||||
};
|
};
|
||||||
|
@@ -260,7 +260,7 @@ static struct clk_lookup lookups[] = {
|
|||||||
CLKDEV_CON_ID("veu1", &mstp_clks[HWBLK_VEU2H1]),
|
CLKDEV_CON_ID("veu1", &mstp_clks[HWBLK_VEU2H1]),
|
||||||
CLKDEV_DEV_ID("sh-vou.0", &mstp_clks[HWBLK_VOU]),
|
CLKDEV_DEV_ID("sh-vou.0", &mstp_clks[HWBLK_VOU]),
|
||||||
CLKDEV_CON_ID("beu0", &mstp_clks[HWBLK_BEU]),
|
CLKDEV_CON_ID("beu0", &mstp_clks[HWBLK_BEU]),
|
||||||
CLKDEV_DEV_ID("sh_mobile_ceu.0", &mstp_clks[HWBLK_CEU]),
|
CLKDEV_DEV_ID("ceu.0", &mstp_clks[HWBLK_CEU]),
|
||||||
CLKDEV_CON_ID("veu0", &mstp_clks[HWBLK_VEU2H0]),
|
CLKDEV_CON_ID("veu0", &mstp_clks[HWBLK_VEU2H0]),
|
||||||
CLKDEV_CON_ID("vpu0", &mstp_clks[HWBLK_VPU]),
|
CLKDEV_CON_ID("vpu0", &mstp_clks[HWBLK_VPU]),
|
||||||
|
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
#include <linux/mod_devicetable.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/acpi.h>
|
#include <linux/acpi.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
@@ -74,7 +74,7 @@ void cec_queue_event_fh(struct cec_fh *fh,
|
|||||||
const struct cec_event *new_ev, u64 ts)
|
const struct cec_event *new_ev, u64 ts)
|
||||||
{
|
{
|
||||||
static const u16 max_events[CEC_NUM_EVENTS] = {
|
static const u16 max_events[CEC_NUM_EVENTS] = {
|
||||||
1, 1, 800, 800, 8, 8,
|
1, 1, 800, 800, 8, 8, 8, 8
|
||||||
};
|
};
|
||||||
struct cec_event_entry *entry;
|
struct cec_event_entry *entry;
|
||||||
unsigned int ev_idx = new_ev->event - 1;
|
unsigned int ev_idx = new_ev->event - 1;
|
||||||
@@ -176,6 +176,22 @@ void cec_queue_pin_hpd_event(struct cec_adapter *adap, bool is_high, ktime_t ts)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(cec_queue_pin_hpd_event);
|
EXPORT_SYMBOL_GPL(cec_queue_pin_hpd_event);
|
||||||
|
|
||||||
|
/* Notify userspace that the 5V pin changed state at the given time. */
|
||||||
|
void cec_queue_pin_5v_event(struct cec_adapter *adap, bool is_high, ktime_t ts)
|
||||||
|
{
|
||||||
|
struct cec_event ev = {
|
||||||
|
.event = is_high ? CEC_EVENT_PIN_5V_HIGH :
|
||||||
|
CEC_EVENT_PIN_5V_LOW,
|
||||||
|
};
|
||||||
|
struct cec_fh *fh;
|
||||||
|
|
||||||
|
mutex_lock(&adap->devnode.lock);
|
||||||
|
list_for_each_entry(fh, &adap->devnode.fhs, list)
|
||||||
|
cec_queue_event_fh(fh, &ev, ktime_to_ns(ts));
|
||||||
|
mutex_unlock(&adap->devnode.lock);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(cec_queue_pin_5v_event);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Queue a new message for this filehandle.
|
* Queue a new message for this filehandle.
|
||||||
*
|
*
|
||||||
|
@@ -579,6 +579,14 @@ static int cec_open(struct inode *inode, struct file *filp)
|
|||||||
cec_queue_event_fh(fh, &ev, 0);
|
cec_queue_event_fh(fh, &ev, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (adap->pin && adap->pin->ops->read_5v) {
|
||||||
|
err = adap->pin->ops->read_5v(adap);
|
||||||
|
if (err >= 0) {
|
||||||
|
ev.event = err ? CEC_EVENT_PIN_5V_HIGH :
|
||||||
|
CEC_EVENT_PIN_5V_LOW;
|
||||||
|
cec_queue_event_fh(fh, &ev, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
list_add(&fh->list, &devnode->fhs);
|
list_add(&fh->list, &devnode->fhs);
|
||||||
|
@@ -500,7 +500,7 @@ void smsdvb_debugfs_release(struct smsdvb_client_t *client)
|
|||||||
client->debugfs = NULL;
|
client->debugfs = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int smsdvb_debugfs_register(void)
|
void smsdvb_debugfs_register(void)
|
||||||
{
|
{
|
||||||
struct dentry *d;
|
struct dentry *d;
|
||||||
|
|
||||||
@@ -517,15 +517,15 @@ int smsdvb_debugfs_register(void)
|
|||||||
d = debugfs_create_dir("smsdvb", usb_debug_root);
|
d = debugfs_create_dir("smsdvb", usb_debug_root);
|
||||||
if (IS_ERR_OR_NULL(d)) {
|
if (IS_ERR_OR_NULL(d)) {
|
||||||
pr_err("Couldn't create sysfs node for smsdvb\n");
|
pr_err("Couldn't create sysfs node for smsdvb\n");
|
||||||
return PTR_ERR(d);
|
return;
|
||||||
} else {
|
|
||||||
smsdvb_debugfs_usb_root = d;
|
|
||||||
}
|
}
|
||||||
return 0;
|
smsdvb_debugfs_usb_root = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
void smsdvb_debugfs_unregister(void)
|
void smsdvb_debugfs_unregister(void)
|
||||||
{
|
{
|
||||||
|
if (!smsdvb_debugfs_usb_root)
|
||||||
|
return;
|
||||||
debugfs_remove_recursive(smsdvb_debugfs_usb_root);
|
debugfs_remove_recursive(smsdvb_debugfs_usb_root);
|
||||||
smsdvb_debugfs_usb_root = NULL;
|
smsdvb_debugfs_usb_root = NULL;
|
||||||
}
|
}
|
||||||
|
@@ -1047,9 +1047,9 @@ static void smsdvb_release(struct dvb_frontend *fe)
|
|||||||
static const struct dvb_frontend_ops smsdvb_fe_ops = {
|
static const struct dvb_frontend_ops smsdvb_fe_ops = {
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Siano Mobile Digital MDTV Receiver",
|
.name = "Siano Mobile Digital MDTV Receiver",
|
||||||
.frequency_min = 44250000,
|
.frequency_min_hz = 44250 * kHz,
|
||||||
.frequency_max = 867250000,
|
.frequency_max_hz = 867250 * kHz,
|
||||||
.frequency_stepsize = 250000,
|
.frequency_stepsize_hz = 250 * kHz,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
|
@@ -107,7 +107,7 @@ struct RECEPTION_STATISTICS_PER_SLICES_S {
|
|||||||
|
|
||||||
int smsdvb_debugfs_create(struct smsdvb_client_t *client);
|
int smsdvb_debugfs_create(struct smsdvb_client_t *client);
|
||||||
void smsdvb_debugfs_release(struct smsdvb_client_t *client);
|
void smsdvb_debugfs_release(struct smsdvb_client_t *client);
|
||||||
int smsdvb_debugfs_register(void);
|
void smsdvb_debugfs_register(void);
|
||||||
void smsdvb_debugfs_unregister(void);
|
void smsdvb_debugfs_unregister(void);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@@ -119,10 +119,7 @@ static inline int smsdvb_debugfs_create(struct smsdvb_client_t *client)
|
|||||||
|
|
||||||
static inline void smsdvb_debugfs_release(struct smsdvb_client_t *client) {}
|
static inline void smsdvb_debugfs_release(struct smsdvb_client_t *client) {}
|
||||||
|
|
||||||
static inline int smsdvb_debugfs_register(void)
|
static inline void smsdvb_debugfs_register(void) {}
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline void smsdvb_debugfs_unregister(void) {};
|
static inline void smsdvb_debugfs_unregister(void) {};
|
||||||
|
|
||||||
|
@@ -1377,6 +1377,11 @@ int vb2_core_qbuf(struct vb2_queue *q, unsigned int index, void *pb)
|
|||||||
struct vb2_buffer *vb;
|
struct vb2_buffer *vb;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
if (q->error) {
|
||||||
|
dprintk(1, "fatal error occurred on queue\n");
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
|
||||||
vb = q->bufs[index];
|
vb = q->bufs[index];
|
||||||
|
|
||||||
switch (vb->state) {
|
switch (vb->state) {
|
||||||
|
@@ -1391,7 +1391,7 @@ static int dvb_ca_en50221_io_do_ioctl(struct file *file,
|
|||||||
struct dvb_ca_slot *sl;
|
struct dvb_ca_slot *sl;
|
||||||
|
|
||||||
slot = info->num;
|
slot = info->num;
|
||||||
if ((slot > ca->slot_count) || (slot < 0)) {
|
if ((slot >= ca->slot_count) || (slot < 0)) {
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
|
@@ -894,21 +894,67 @@ static int dvb_frontend_start(struct dvb_frontend *fe)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void dvb_frontend_get_frequency_limits(struct dvb_frontend *fe,
|
static void dvb_frontend_get_frequency_limits(struct dvb_frontend *fe,
|
||||||
u32 *freq_min, u32 *freq_max)
|
u32 *freq_min, u32 *freq_max,
|
||||||
|
u32 *tolerance)
|
||||||
{
|
{
|
||||||
*freq_min = max(fe->ops.info.frequency_min, fe->ops.tuner_ops.info.frequency_min);
|
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
||||||
|
u32 tuner_min = fe->ops.tuner_ops.info.frequency_min_hz;
|
||||||
|
u32 tuner_max = fe->ops.tuner_ops.info.frequency_max_hz;
|
||||||
|
u32 frontend_min = fe->ops.info.frequency_min_hz;
|
||||||
|
u32 frontend_max = fe->ops.info.frequency_max_hz;
|
||||||
|
|
||||||
if (fe->ops.info.frequency_max == 0)
|
*freq_min = max(frontend_min, tuner_min);
|
||||||
*freq_max = fe->ops.tuner_ops.info.frequency_max;
|
|
||||||
else if (fe->ops.tuner_ops.info.frequency_max == 0)
|
if (frontend_max == 0)
|
||||||
*freq_max = fe->ops.info.frequency_max;
|
*freq_max = tuner_max;
|
||||||
|
else if (tuner_max == 0)
|
||||||
|
*freq_max = frontend_max;
|
||||||
else
|
else
|
||||||
*freq_max = min(fe->ops.info.frequency_max, fe->ops.tuner_ops.info.frequency_max);
|
*freq_max = min(frontend_max, tuner_max);
|
||||||
|
|
||||||
if (*freq_min == 0 || *freq_max == 0)
|
if (*freq_min == 0 || *freq_max == 0)
|
||||||
dev_warn(fe->dvb->device,
|
dev_warn(fe->dvb->device,
|
||||||
"DVB: adapter %i frontend %u frequency limits undefined - fix the driver\n",
|
"DVB: adapter %i frontend %u frequency limits undefined - fix the driver\n",
|
||||||
fe->dvb->num, fe->id);
|
fe->dvb->num, fe->id);
|
||||||
|
|
||||||
|
/* If the standard is for satellite, convert frequencies to kHz */
|
||||||
|
switch (c->delivery_system) {
|
||||||
|
case SYS_DVBS:
|
||||||
|
case SYS_DVBS2:
|
||||||
|
case SYS_TURBO:
|
||||||
|
case SYS_ISDBS:
|
||||||
|
*freq_min /= kHz;
|
||||||
|
*freq_max /= kHz;
|
||||||
|
if (tolerance)
|
||||||
|
*tolerance = fe->ops.info.frequency_tolerance_hz / kHz;
|
||||||
|
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (tolerance)
|
||||||
|
*tolerance = fe->ops.info.frequency_tolerance_hz;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static u32 dvb_frontend_get_stepsize(struct dvb_frontend *fe)
|
||||||
|
{
|
||||||
|
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
||||||
|
u32 fe_step = fe->ops.info.frequency_stepsize_hz;
|
||||||
|
u32 tuner_step = fe->ops.tuner_ops.info.frequency_step_hz;
|
||||||
|
u32 step = max(fe_step, tuner_step);
|
||||||
|
|
||||||
|
switch (c->delivery_system) {
|
||||||
|
case SYS_DVBS:
|
||||||
|
case SYS_DVBS2:
|
||||||
|
case SYS_TURBO:
|
||||||
|
case SYS_ISDBS:
|
||||||
|
step /= kHz;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return step;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dvb_frontend_check_parameters(struct dvb_frontend *fe)
|
static int dvb_frontend_check_parameters(struct dvb_frontend *fe)
|
||||||
@@ -918,7 +964,7 @@ static int dvb_frontend_check_parameters(struct dvb_frontend *fe)
|
|||||||
u32 freq_max;
|
u32 freq_max;
|
||||||
|
|
||||||
/* range check: frequency */
|
/* range check: frequency */
|
||||||
dvb_frontend_get_frequency_limits(fe, &freq_min, &freq_max);
|
dvb_frontend_get_frequency_limits(fe, &freq_min, &freq_max, NULL);
|
||||||
if ((freq_min && c->frequency < freq_min) ||
|
if ((freq_min && c->frequency < freq_min) ||
|
||||||
(freq_max && c->frequency > freq_max)) {
|
(freq_max && c->frequency > freq_max)) {
|
||||||
dev_warn(fe->dvb->device, "DVB: adapter %i frontend %i frequency %u out of range (%u..%u)\n",
|
dev_warn(fe->dvb->device, "DVB: adapter %i frontend %i frequency %u out of range (%u..%u)\n",
|
||||||
@@ -2244,8 +2290,8 @@ static int dtv_set_frontend(struct dvb_frontend *fe)
|
|||||||
case SYS_ISDBT:
|
case SYS_ISDBT:
|
||||||
case SYS_DTMB:
|
case SYS_DTMB:
|
||||||
fepriv->min_delay = HZ / 20;
|
fepriv->min_delay = HZ / 20;
|
||||||
fepriv->step_size = fe->ops.info.frequency_stepsize * 2;
|
fepriv->step_size = dvb_frontend_get_stepsize(fe) * 2;
|
||||||
fepriv->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1;
|
fepriv->max_drift = (dvb_frontend_get_stepsize(fe) * 2) + 1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/*
|
/*
|
||||||
@@ -2374,9 +2420,17 @@ static int dvb_frontend_handle_ioctl(struct file *file,
|
|||||||
|
|
||||||
case FE_GET_INFO: {
|
case FE_GET_INFO: {
|
||||||
struct dvb_frontend_info *info = parg;
|
struct dvb_frontend_info *info = parg;
|
||||||
|
memset(info, 0, sizeof(*info));
|
||||||
|
|
||||||
memcpy(info, &fe->ops.info, sizeof(struct dvb_frontend_info));
|
strcpy(info->name, fe->ops.info.name);
|
||||||
dvb_frontend_get_frequency_limits(fe, &info->frequency_min, &info->frequency_max);
|
info->symbol_rate_min = fe->ops.info.symbol_rate_min;
|
||||||
|
info->symbol_rate_max = fe->ops.info.symbol_rate_max;
|
||||||
|
info->symbol_rate_tolerance = fe->ops.info.symbol_rate_tolerance;
|
||||||
|
info->caps = fe->ops.info.caps;
|
||||||
|
info->frequency_stepsize = dvb_frontend_get_stepsize(fe);
|
||||||
|
dvb_frontend_get_frequency_limits(fe, &info->frequency_min,
|
||||||
|
&info->frequency_max,
|
||||||
|
&info->frequency_tolerance);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Associate the 4 delivery systems supported by DVBv3
|
* Associate the 4 delivery systems supported by DVBv3
|
||||||
@@ -2406,10 +2460,10 @@ static int dvb_frontend_handle_ioctl(struct file *file,
|
|||||||
dev_err(fe->dvb->device,
|
dev_err(fe->dvb->device,
|
||||||
"%s: doesn't know how to handle a DVBv3 call to delivery system %i\n",
|
"%s: doesn't know how to handle a DVBv3 call to delivery system %i\n",
|
||||||
__func__, c->delivery_system);
|
__func__, c->delivery_system);
|
||||||
fe->ops.info.type = FE_OFDM;
|
info->type = FE_OFDM;
|
||||||
}
|
}
|
||||||
dev_dbg(fe->dvb->device, "%s: current delivery system on cache: %d, V3 type: %d\n",
|
dev_dbg(fe->dvb->device, "%s: current delivery system on cache: %d, V3 type: %d\n",
|
||||||
__func__, c->delivery_system, fe->ops.info.type);
|
__func__, c->delivery_system, info->type);
|
||||||
|
|
||||||
/* Set CAN_INVERSION_AUTO bit on in other than oneshot mode */
|
/* Set CAN_INVERSION_AUTO bit on in other than oneshot mode */
|
||||||
if (!(fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT))
|
if (!(fepriv->tune_mode_flags & FE_TUNE_MODE_ONESHOT))
|
||||||
|
@@ -440,8 +440,10 @@ static int dvb_register_media_device(struct dvb_device *dvbdev,
|
|||||||
if (!dvbdev->entity)
|
if (!dvbdev->entity)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
link = media_create_intf_link(dvbdev->entity, &dvbdev->intf_devnode->intf,
|
link = media_create_intf_link(dvbdev->entity,
|
||||||
MEDIA_LNK_FL_ENABLED);
|
&dvbdev->intf_devnode->intf,
|
||||||
|
MEDIA_LNK_FL_ENABLED |
|
||||||
|
MEDIA_LNK_FL_IMMUTABLE);
|
||||||
if (!link)
|
if (!link)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
#endif
|
#endif
|
||||||
@@ -599,7 +601,8 @@ static int dvb_create_io_intf_links(struct dvb_adapter *adap,
|
|||||||
if (strncmp(entity->name, name, strlen(name)))
|
if (strncmp(entity->name, name, strlen(name)))
|
||||||
continue;
|
continue;
|
||||||
link = media_create_intf_link(entity, intf,
|
link = media_create_intf_link(entity, intf,
|
||||||
MEDIA_LNK_FL_ENABLED);
|
MEDIA_LNK_FL_ENABLED |
|
||||||
|
MEDIA_LNK_FL_IMMUTABLE);
|
||||||
if (!link)
|
if (!link)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
@@ -754,14 +757,16 @@ int dvb_create_media_graph(struct dvb_adapter *adap,
|
|||||||
media_device_for_each_intf(intf, mdev) {
|
media_device_for_each_intf(intf, mdev) {
|
||||||
if (intf->type == MEDIA_INTF_T_DVB_CA && ca) {
|
if (intf->type == MEDIA_INTF_T_DVB_CA && ca) {
|
||||||
link = media_create_intf_link(ca, intf,
|
link = media_create_intf_link(ca, intf,
|
||||||
MEDIA_LNK_FL_ENABLED);
|
MEDIA_LNK_FL_ENABLED |
|
||||||
|
MEDIA_LNK_FL_IMMUTABLE);
|
||||||
if (!link)
|
if (!link)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intf->type == MEDIA_INTF_T_DVB_FE && tuner) {
|
if (intf->type == MEDIA_INTF_T_DVB_FE && tuner) {
|
||||||
link = media_create_intf_link(tuner, intf,
|
link = media_create_intf_link(tuner, intf,
|
||||||
MEDIA_LNK_FL_ENABLED);
|
MEDIA_LNK_FL_ENABLED |
|
||||||
|
MEDIA_LNK_FL_IMMUTABLE);
|
||||||
if (!link)
|
if (!link)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
@@ -773,7 +778,8 @@ int dvb_create_media_graph(struct dvb_adapter *adap,
|
|||||||
*/
|
*/
|
||||||
if (intf->type == MEDIA_INTF_T_DVB_DVR && demux) {
|
if (intf->type == MEDIA_INTF_T_DVB_DVR && demux) {
|
||||||
link = media_create_intf_link(demux, intf,
|
link = media_create_intf_link(demux, intf,
|
||||||
MEDIA_LNK_FL_ENABLED);
|
MEDIA_LNK_FL_ENABLED |
|
||||||
|
MEDIA_LNK_FL_IMMUTABLE);
|
||||||
if (!link)
|
if (!link)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
@@ -739,6 +739,16 @@ config DVB_TC90522
|
|||||||
Toshiba TC90522 2xISDB-S 8PSK + 2xISDB-T OFDM demodulator.
|
Toshiba TC90522 2xISDB-S 8PSK + 2xISDB-T OFDM demodulator.
|
||||||
Say Y when you want to support this frontend.
|
Say Y when you want to support this frontend.
|
||||||
|
|
||||||
|
config DVB_MN88443X
|
||||||
|
tristate "Socionext MN88443x"
|
||||||
|
depends on DVB_CORE && I2C
|
||||||
|
select REGMAP_I2C
|
||||||
|
default m if !MEDIA_SUBDRV_AUTOSELECT
|
||||||
|
help
|
||||||
|
A driver for Socionext/Panasonic MN884433 and MN884434
|
||||||
|
ISDB-S + ISDB-T demodulator.
|
||||||
|
Say Y when you want to support this frontend.
|
||||||
|
|
||||||
comment "Digital terrestrial only tuners/PLL"
|
comment "Digital terrestrial only tuners/PLL"
|
||||||
depends on DVB_CORE
|
depends on DVB_CORE
|
||||||
|
|
||||||
|
@@ -125,6 +125,7 @@ obj-$(CONFIG_DVB_AF9033) += af9033.o
|
|||||||
obj-$(CONFIG_DVB_AS102_FE) += as102_fe.o
|
obj-$(CONFIG_DVB_AS102_FE) += as102_fe.o
|
||||||
obj-$(CONFIG_DVB_GP8PSK_FE) += gp8psk-fe.o
|
obj-$(CONFIG_DVB_GP8PSK_FE) += gp8psk-fe.o
|
||||||
obj-$(CONFIG_DVB_TC90522) += tc90522.o
|
obj-$(CONFIG_DVB_TC90522) += tc90522.o
|
||||||
|
obj-$(CONFIG_DVB_MN88443X) += mn88443x.o
|
||||||
obj-$(CONFIG_DVB_HORUS3A) += horus3a.o
|
obj-$(CONFIG_DVB_HORUS3A) += horus3a.o
|
||||||
obj-$(CONFIG_DVB_ASCOT2E) += ascot2e.o
|
obj-$(CONFIG_DVB_ASCOT2E) += ascot2e.o
|
||||||
obj-$(CONFIG_DVB_HELENE) += helene.o
|
obj-$(CONFIG_DVB_HELENE) += helene.o
|
||||||
|
@@ -1136,10 +1136,9 @@ static const struct dvb_frontend_ops af9013_ops = {
|
|||||||
.delsys = { SYS_DVBT },
|
.delsys = { SYS_DVBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Afatech AF9013",
|
.name = "Afatech AF9013",
|
||||||
.frequency_min = 174000000,
|
.frequency_min_hz = 174 * MHz,
|
||||||
.frequency_max = 862000000,
|
.frequency_max_hz = 862 * MHz,
|
||||||
.frequency_stepsize = 250000,
|
.frequency_stepsize_hz = 250 * kHz,
|
||||||
.frequency_tolerance = 0,
|
|
||||||
.caps = FE_CAN_FEC_1_2 |
|
.caps = FE_CAN_FEC_1_2 |
|
||||||
FE_CAN_FEC_2_3 |
|
FE_CAN_FEC_2_3 |
|
||||||
FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_3_4 |
|
||||||
|
@@ -1020,10 +1020,9 @@ static const struct dvb_frontend_ops af9033_ops = {
|
|||||||
.delsys = {SYS_DVBT},
|
.delsys = {SYS_DVBT},
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Afatech AF9033 (DVB-T)",
|
.name = "Afatech AF9033 (DVB-T)",
|
||||||
.frequency_min = 174000000,
|
.frequency_min_hz = 174 * MHz,
|
||||||
.frequency_max = 862000000,
|
.frequency_max_hz = 862 * MHz,
|
||||||
.frequency_stepsize = 250000,
|
.frequency_stepsize_hz = 250 * kHz,
|
||||||
.frequency_tolerance = 0,
|
|
||||||
.caps = FE_CAN_FEC_1_2 |
|
.caps = FE_CAN_FEC_1_2 |
|
||||||
FE_CAN_FEC_2_3 |
|
FE_CAN_FEC_2_3 |
|
||||||
FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_3_4 |
|
||||||
|
@@ -419,9 +419,9 @@ static const struct dvb_frontend_ops as102_fe_ops = {
|
|||||||
.delsys = { SYS_DVBT },
|
.delsys = { SYS_DVBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Abilis AS102 DVB-T",
|
.name = "Abilis AS102 DVB-T",
|
||||||
.frequency_min = 174000000,
|
.frequency_min_hz = 174 * MHz,
|
||||||
.frequency_max = 862000000,
|
.frequency_max_hz = 862 * MHz,
|
||||||
.frequency_stepsize = 166667,
|
.frequency_stepsize_hz = 166667,
|
||||||
.caps = FE_CAN_INVERSION_AUTO
|
.caps = FE_CAN_INVERSION_AUTO
|
||||||
| FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4
|
| FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4
|
||||||
| FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO
|
| FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO
|
||||||
|
@@ -468,9 +468,9 @@ static int ascot2e_get_frequency(struct dvb_frontend *fe, u32 *frequency)
|
|||||||
static const struct dvb_tuner_ops ascot2e_tuner_ops = {
|
static const struct dvb_tuner_ops ascot2e_tuner_ops = {
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Sony ASCOT2E",
|
.name = "Sony ASCOT2E",
|
||||||
.frequency_min = 1000000,
|
.frequency_min_hz = 1 * MHz,
|
||||||
.frequency_max = 1200000000,
|
.frequency_max_hz = 1200 * MHz,
|
||||||
.frequency_step = 25000,
|
.frequency_step_hz = 25 * kHz,
|
||||||
},
|
},
|
||||||
.init = ascot2e_init,
|
.init = ascot2e_init,
|
||||||
.release = ascot2e_release,
|
.release = ascot2e_release,
|
||||||
|
@@ -428,9 +428,9 @@ static const struct dvb_frontend_ops atbm8830_ops = {
|
|||||||
.delsys = { SYS_DTMB },
|
.delsys = { SYS_DTMB },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "AltoBeam ATBM8830/8831 DMB-TH",
|
.name = "AltoBeam ATBM8830/8831 DMB-TH",
|
||||||
.frequency_min = 474000000,
|
.frequency_min_hz = 474 * MHz,
|
||||||
.frequency_max = 858000000,
|
.frequency_max_hz = 858 * MHz,
|
||||||
.frequency_stepsize = 10000,
|
.frequency_stepsize_hz = 10 * kHz,
|
||||||
.caps =
|
.caps =
|
||||||
FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_AUTO |
|
||||||
FE_CAN_QAM_AUTO |
|
FE_CAN_QAM_AUTO |
|
||||||
|
@@ -897,9 +897,9 @@ static const struct dvb_frontend_ops au8522_ops = {
|
|||||||
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Auvitek AU8522 QAM/8VSB Frontend",
|
.name = "Auvitek AU8522 QAM/8VSB Frontend",
|
||||||
.frequency_min = 54000000,
|
.frequency_min_hz = 54 * MHz,
|
||||||
.frequency_max = 858000000,
|
.frequency_max_hz = 858 * MHz,
|
||||||
.frequency_stepsize = 62500,
|
.frequency_stepsize_hz = 62500,
|
||||||
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
|
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -840,10 +840,8 @@ static const struct dvb_frontend_ops bcm3510_ops = {
|
|||||||
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Broadcom BCM3510 VSB/QAM frontend",
|
.name = "Broadcom BCM3510 VSB/QAM frontend",
|
||||||
.frequency_min = 54000000,
|
.frequency_min_hz = 54 * MHz,
|
||||||
.frequency_max = 803000000,
|
.frequency_max_hz = 803 * MHz,
|
||||||
/* stepsize is just a guess */
|
|
||||||
.frequency_stepsize = 0,
|
|
||||||
.caps =
|
.caps =
|
||||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
|
@@ -412,9 +412,9 @@ static const struct dvb_frontend_ops cx22700_ops = {
|
|||||||
.delsys = { SYS_DVBT },
|
.delsys = { SYS_DVBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Conexant CX22700 DVB-T",
|
.name = "Conexant CX22700 DVB-T",
|
||||||
.frequency_min = 470000000,
|
.frequency_min_hz = 470 * MHz,
|
||||||
.frequency_max = 860000000,
|
.frequency_max_hz = 860 * MHz,
|
||||||
.frequency_stepsize = 166667,
|
.frequency_stepsize_hz = 166667,
|
||||||
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |
|
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |
|
||||||
|
@@ -622,9 +622,9 @@ static const struct dvb_frontend_ops cx22702_ops = {
|
|||||||
.delsys = { SYS_DVBT },
|
.delsys = { SYS_DVBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Conexant CX22702 DVB-T",
|
.name = "Conexant CX22702 DVB-T",
|
||||||
.frequency_min = 177000000,
|
.frequency_min_hz = 177 * MHz,
|
||||||
.frequency_max = 858000000,
|
.frequency_max_hz = 858 * MHz,
|
||||||
.frequency_stepsize = 166666,
|
.frequency_stepsize_hz = 166666,
|
||||||
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
|
FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
|
||||||
|
@@ -629,10 +629,10 @@ static const struct dvb_frontend_ops cx24110_ops = {
|
|||||||
.delsys = { SYS_DVBS },
|
.delsys = { SYS_DVBS },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Conexant CX24110 DVB-S",
|
.name = "Conexant CX24110 DVB-S",
|
||||||
.frequency_min = 950000,
|
.frequency_min_hz = 950 * MHz,
|
||||||
.frequency_max = 2150000,
|
.frequency_max_hz = 2150 * MHz,
|
||||||
.frequency_stepsize = 1011, /* kHz for QPSK frontends */
|
.frequency_stepsize_hz = 1011 * kHz,
|
||||||
.frequency_tolerance = 29500,
|
.frequency_tolerance_hz = 29500 * kHz,
|
||||||
.symbol_rate_min = 1000000,
|
.symbol_rate_min = 1000000,
|
||||||
.symbol_rate_max = 45000000,
|
.symbol_rate_max = 45000000,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
|
@@ -533,10 +533,10 @@ static void cx24113_release(struct dvb_frontend *fe)
|
|||||||
|
|
||||||
static const struct dvb_tuner_ops cx24113_tuner_ops = {
|
static const struct dvb_tuner_ops cx24113_tuner_ops = {
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Conexant CX24113",
|
.name = "Conexant CX24113",
|
||||||
.frequency_min = 950000,
|
.frequency_min_hz = 950 * MHz,
|
||||||
.frequency_max = 2150000,
|
.frequency_max_hz = 2150 * MHz,
|
||||||
.frequency_step = 125,
|
.frequency_step_hz = 125 * kHz,
|
||||||
},
|
},
|
||||||
|
|
||||||
.release = cx24113_release,
|
.release = cx24113_release,
|
||||||
|
@@ -1465,10 +1465,10 @@ static const struct dvb_frontend_ops cx24116_ops = {
|
|||||||
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Conexant CX24116/CX24118",
|
.name = "Conexant CX24116/CX24118",
|
||||||
.frequency_min = 950000,
|
.frequency_min_hz = 950 * MHz,
|
||||||
.frequency_max = 2150000,
|
.frequency_max_hz = 2150 * MHz,
|
||||||
.frequency_stepsize = 1011, /* kHz for QPSK frontends */
|
.frequency_stepsize_hz = 1011 * kHz,
|
||||||
.frequency_tolerance = 5000,
|
.frequency_tolerance_hz = 5 * MHz,
|
||||||
.symbol_rate_min = 1000000,
|
.symbol_rate_min = 1000000,
|
||||||
.symbol_rate_max = 45000000,
|
.symbol_rate_max = 45000000,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
|
@@ -1622,10 +1622,10 @@ static const struct dvb_frontend_ops cx24117_ops = {
|
|||||||
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Conexant CX24117/CX24132",
|
.name = "Conexant CX24117/CX24132",
|
||||||
.frequency_min = 950000,
|
.frequency_min_hz = 950 * MHz,
|
||||||
.frequency_max = 2150000,
|
.frequency_max_hz = 2150 * MHz,
|
||||||
.frequency_stepsize = 1011, /* kHz for QPSK frontends */
|
.frequency_stepsize_hz = 1011 * kHz,
|
||||||
.frequency_tolerance = 5000,
|
.frequency_tolerance_hz = 5 * MHz,
|
||||||
.symbol_rate_min = 1000000,
|
.symbol_rate_min = 1000000,
|
||||||
.symbol_rate_max = 45000000,
|
.symbol_rate_max = 45000000,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
|
@@ -1555,10 +1555,10 @@ static const struct dvb_frontend_ops cx24120_ops = {
|
|||||||
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Conexant CX24120/CX24118",
|
.name = "Conexant CX24120/CX24118",
|
||||||
.frequency_min = 950000,
|
.frequency_min_hz = 950 * MHz,
|
||||||
.frequency_max = 2150000,
|
.frequency_max_hz = 2150 * MHz,
|
||||||
.frequency_stepsize = 1011, /* kHz for QPSK frontends */
|
.frequency_stepsize_hz = 1011 * kHz,
|
||||||
.frequency_tolerance = 5000,
|
.frequency_tolerance_hz = 5 * MHz,
|
||||||
.symbol_rate_min = 1000000,
|
.symbol_rate_min = 1000000,
|
||||||
.symbol_rate_max = 45000000,
|
.symbol_rate_max = 45000000,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
|
@@ -1111,10 +1111,10 @@ static const struct dvb_frontend_ops cx24123_ops = {
|
|||||||
.delsys = { SYS_DVBS },
|
.delsys = { SYS_DVBS },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Conexant CX24123/CX24109",
|
.name = "Conexant CX24123/CX24109",
|
||||||
.frequency_min = 950000,
|
.frequency_min_hz = 950 * MHz,
|
||||||
.frequency_max = 2150000,
|
.frequency_max_hz = 2150 * MHz,
|
||||||
.frequency_stepsize = 1011, /* kHz for QPSK frontends */
|
.frequency_stepsize_hz = 1011 * kHz,
|
||||||
.frequency_tolerance = 5000,
|
.frequency_tolerance_hz = 5 * MHz,
|
||||||
.symbol_rate_min = 1000000,
|
.symbol_rate_min = 1000000,
|
||||||
.symbol_rate_max = 45000000,
|
.symbol_rate_max = 45000000,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
|
@@ -431,8 +431,8 @@ int cxd2820r_get_tune_settings_t(struct dvb_frontend *fe,
|
|||||||
struct dvb_frontend_tune_settings *s)
|
struct dvb_frontend_tune_settings *s)
|
||||||
{
|
{
|
||||||
s->min_delay_ms = 500;
|
s->min_delay_ms = 500;
|
||||||
s->step_size = fe->ops.info.frequency_stepsize * 2;
|
s->step_size = fe->ops.info.frequency_stepsize_hz * 2;
|
||||||
s->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1;
|
s->max_drift = (fe->ops.info.frequency_stepsize_hz * 2) + 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -426,8 +426,8 @@ int cxd2820r_get_tune_settings_t2(struct dvb_frontend *fe,
|
|||||||
struct dvb_frontend_tune_settings *s)
|
struct dvb_frontend_tune_settings *s)
|
||||||
{
|
{
|
||||||
s->min_delay_ms = 1500;
|
s->min_delay_ms = 1500;
|
||||||
s->step_size = fe->ops.info.frequency_stepsize * 2;
|
s->step_size = fe->ops.info.frequency_stepsize_hz * 2;
|
||||||
s->max_drift = (fe->ops.info.frequency_stepsize * 2) + 1;
|
s->max_drift = (fe->ops.info.frequency_stepsize_hz * 2) + 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -3942,9 +3942,8 @@ static const struct dvb_frontend_ops cxd2841er_dvbs_s2_ops = {
|
|||||||
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Sony CXD2841ER DVB-S/S2 demodulator",
|
.name = "Sony CXD2841ER DVB-S/S2 demodulator",
|
||||||
.frequency_min = 500000,
|
.frequency_min_hz = 500 * MHz,
|
||||||
.frequency_max = 2500000,
|
.frequency_max_hz = 2500 * MHz,
|
||||||
.frequency_stepsize = 0,
|
|
||||||
.symbol_rate_min = 1000000,
|
.symbol_rate_min = 1000000,
|
||||||
.symbol_rate_max = 45000000,
|
.symbol_rate_max = 45000000,
|
||||||
.symbol_rate_tolerance = 500,
|
.symbol_rate_tolerance = 500,
|
||||||
@@ -3988,8 +3987,8 @@ static struct dvb_frontend_ops cxd2841er_t_c_ops = {
|
|||||||
FE_CAN_HIERARCHY_AUTO |
|
FE_CAN_HIERARCHY_AUTO |
|
||||||
FE_CAN_MUTE_TS |
|
FE_CAN_MUTE_TS |
|
||||||
FE_CAN_2G_MODULATION,
|
FE_CAN_2G_MODULATION,
|
||||||
.frequency_min = 42000000,
|
.frequency_min_hz = 42 * MHz,
|
||||||
.frequency_max = 1002000000,
|
.frequency_max_hz = 1002 * MHz,
|
||||||
.symbol_rate_min = 870000,
|
.symbol_rate_min = 870000,
|
||||||
.symbol_rate_max = 11700000
|
.symbol_rate_max = 11700000
|
||||||
},
|
},
|
||||||
|
@@ -1833,9 +1833,9 @@ static enum dvbfe_algo cxd2880_get_frontend_algo(struct dvb_frontend *fe)
|
|||||||
static struct dvb_frontend_ops cxd2880_dvbt_t2_ops = {
|
static struct dvb_frontend_ops cxd2880_dvbt_t2_ops = {
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Sony CXD2880",
|
.name = "Sony CXD2880",
|
||||||
.frequency_min = 174000000,
|
.frequency_min_hz = 174 * MHz,
|
||||||
.frequency_max = 862000000,
|
.frequency_max_hz = 862 * MHz,
|
||||||
.frequency_stepsize = 1000,
|
.frequency_stepsize_hz = 1 * kHz,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
FE_CAN_FEC_1_2 |
|
FE_CAN_FEC_1_2 |
|
||||||
FE_CAN_FEC_2_3 |
|
FE_CAN_FEC_2_3 |
|
||||||
|
@@ -726,10 +726,10 @@ static void dib0070_release(struct dvb_frontend *fe)
|
|||||||
|
|
||||||
static const struct dvb_tuner_ops dib0070_ops = {
|
static const struct dvb_tuner_ops dib0070_ops = {
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DiBcom DiB0070",
|
.name = "DiBcom DiB0070",
|
||||||
.frequency_min = 45000000,
|
.frequency_min_hz = 45 * MHz,
|
||||||
.frequency_max = 860000000,
|
.frequency_max_hz = 860 * MHz,
|
||||||
.frequency_step = 1000,
|
.frequency_step_hz = 1 * kHz,
|
||||||
},
|
},
|
||||||
.release = dib0070_release,
|
.release = dib0070_release,
|
||||||
|
|
||||||
|
@@ -2578,9 +2578,9 @@ static int dib0090_set_params(struct dvb_frontend *fe)
|
|||||||
static const struct dvb_tuner_ops dib0090_ops = {
|
static const struct dvb_tuner_ops dib0090_ops = {
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DiBcom DiB0090",
|
.name = "DiBcom DiB0090",
|
||||||
.frequency_min = 45000000,
|
.frequency_min_hz = 45 * MHz,
|
||||||
.frequency_max = 860000000,
|
.frequency_max_hz = 860 * MHz,
|
||||||
.frequency_step = 1000,
|
.frequency_step_hz = 1 * kHz,
|
||||||
},
|
},
|
||||||
.release = dib0090_release,
|
.release = dib0090_release,
|
||||||
|
|
||||||
@@ -2593,9 +2593,9 @@ static const struct dvb_tuner_ops dib0090_ops = {
|
|||||||
static const struct dvb_tuner_ops dib0090_fw_ops = {
|
static const struct dvb_tuner_ops dib0090_fw_ops = {
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DiBcom DiB0090",
|
.name = "DiBcom DiB0090",
|
||||||
.frequency_min = 45000000,
|
.frequency_min_hz = 45 * MHz,
|
||||||
.frequency_max = 860000000,
|
.frequency_max_hz = 860 * MHz,
|
||||||
.frequency_step = 1000,
|
.frequency_step_hz = 1 * kHz,
|
||||||
},
|
},
|
||||||
.release = dib0090_release,
|
.release = dib0090_release,
|
||||||
|
|
||||||
|
@@ -786,9 +786,9 @@ static const struct dvb_frontend_ops dib3000mb_ops = {
|
|||||||
.delsys = { SYS_DVBT },
|
.delsys = { SYS_DVBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DiBcom 3000M-B DVB-T",
|
.name = "DiBcom 3000M-B DVB-T",
|
||||||
.frequency_min = 44250000,
|
.frequency_min_hz = 44250 * kHz,
|
||||||
.frequency_max = 867250000,
|
.frequency_max_hz = 867250 * kHz,
|
||||||
.frequency_stepsize = 62500,
|
.frequency_stepsize_hz = 62500,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
|
@@ -944,9 +944,9 @@ static const struct dvb_frontend_ops dib3000mc_ops = {
|
|||||||
.delsys = { SYS_DVBT },
|
.delsys = { SYS_DVBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DiBcom 3000MC/P",
|
.name = "DiBcom 3000MC/P",
|
||||||
.frequency_min = 44250000,
|
.frequency_min_hz = 44250 * kHz,
|
||||||
.frequency_max = 867250000,
|
.frequency_max_hz = 867250 * kHz,
|
||||||
.frequency_stepsize = 62500,
|
.frequency_stepsize_hz = 62500,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
|
@@ -1443,9 +1443,9 @@ static const struct dvb_frontend_ops dib7000m_ops = {
|
|||||||
.delsys = { SYS_DVBT },
|
.delsys = { SYS_DVBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DiBcom 7000MA/MB/PA/PB/MC",
|
.name = "DiBcom 7000MA/MB/PA/PB/MC",
|
||||||
.frequency_min = 44250000,
|
.frequency_min_hz = 44250 * kHz,
|
||||||
.frequency_max = 867250000,
|
.frequency_max_hz = 867250 * kHz,
|
||||||
.frequency_stepsize = 62500,
|
.frequency_stepsize_hz = 62500,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
|
@@ -2824,9 +2824,9 @@ static const struct dvb_frontend_ops dib7000p_ops = {
|
|||||||
.delsys = { SYS_DVBT },
|
.delsys = { SYS_DVBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DiBcom 7000PC",
|
.name = "DiBcom 7000PC",
|
||||||
.frequency_min = 44250000,
|
.frequency_min_hz = 44250 * kHz,
|
||||||
.frequency_max = 867250000,
|
.frequency_max_hz = 867250 * kHz,
|
||||||
.frequency_stepsize = 62500,
|
.frequency_stepsize_hz = 62500,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
|
@@ -4390,9 +4390,9 @@ static const struct dvb_frontend_ops dib8000_ops = {
|
|||||||
.delsys = { SYS_ISDBT },
|
.delsys = { SYS_ISDBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DiBcom 8000 ISDB-T",
|
.name = "DiBcom 8000 ISDB-T",
|
||||||
.frequency_min = 44250000,
|
.frequency_min_hz = 44250 * kHz,
|
||||||
.frequency_max = 867250000,
|
.frequency_max_hz = 867250 * kHz,
|
||||||
.frequency_stepsize = 62500,
|
.frequency_stepsize_hz = 62500,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
|
@@ -2553,9 +2553,9 @@ static const struct dvb_frontend_ops dib9000_ops = {
|
|||||||
.delsys = { SYS_DVBT },
|
.delsys = { SYS_DVBT },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DiBcom 9000",
|
.name = "DiBcom 9000",
|
||||||
.frequency_min = 44250000,
|
.frequency_min_hz = 44250 * kHz,
|
||||||
.frequency_max = 867250000,
|
.frequency_max_hz = 867250 * kHz,
|
||||||
.frequency_stepsize = 62500,
|
.frequency_stepsize_hz = 62500,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
|
||||||
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
|
||||||
|
@@ -2841,8 +2841,7 @@ ctrl_set_cfg_mpeg_output(struct drx_demod_instance *demod, struct drx_cfg_mpeg_o
|
|||||||
/* coef = 188/204 */
|
/* coef = 188/204 */
|
||||||
max_bit_rate =
|
max_bit_rate =
|
||||||
(ext_attr->curr_symbol_rate / 8) * nr_bits * 188;
|
(ext_attr->curr_symbol_rate / 8) * nr_bits * 188;
|
||||||
/* pass through as b/c Annex A/c need following settings */
|
/* fall-through - as b/c Annex A/C need following settings */
|
||||||
/* fall-through */
|
|
||||||
case DRX_STANDARD_ITU_B:
|
case DRX_STANDARD_ITU_B:
|
||||||
rc = drxj_dap_write_reg16(dev_addr, FEC_OC_FCT_USAGE__A, FEC_OC_FCT_USAGE__PRE, 0);
|
rc = drxj_dap_write_reg16(dev_addr, FEC_OC_FCT_USAGE__A, FEC_OC_FCT_USAGE__PRE, 0);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
@@ -11811,8 +11810,8 @@ static int drx_ctrl_u_code(struct drx_demod_instance *demod,
|
|||||||
block_hdr.CRC = be16_to_cpu(*(__be16 *)(mc_data));
|
block_hdr.CRC = be16_to_cpu(*(__be16 *)(mc_data));
|
||||||
mc_data += sizeof(u16);
|
mc_data += sizeof(u16);
|
||||||
|
|
||||||
pr_debug("%u: addr %u, size %u, flags 0x%04x, CRC 0x%04x\n",
|
pr_debug("%zd: addr %u, size %u, flags 0x%04x, CRC 0x%04x\n",
|
||||||
(unsigned)(mc_data - mc_data_init), block_hdr.addr,
|
(mc_data - mc_data_init), block_hdr.addr,
|
||||||
block_hdr.size, block_hdr.flags, block_hdr.CRC);
|
block_hdr.size, block_hdr.flags, block_hdr.CRC);
|
||||||
|
|
||||||
/* Check block header on:
|
/* Check block header on:
|
||||||
@@ -11842,8 +11841,8 @@ static int drx_ctrl_u_code(struct drx_demod_instance *demod,
|
|||||||
mc_block_nr_bytes,
|
mc_block_nr_bytes,
|
||||||
mc_data, 0x0000)) {
|
mc_data, 0x0000)) {
|
||||||
rc = -EIO;
|
rc = -EIO;
|
||||||
pr_err("error writing firmware at pos %u\n",
|
pr_err("error writing firmware at pos %zd\n",
|
||||||
(unsigned)(mc_data - mc_data_init));
|
mc_data - mc_data_init);
|
||||||
goto release;
|
goto release;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -11866,8 +11865,8 @@ static int drx_ctrl_u_code(struct drx_demod_instance *demod,
|
|||||||
(u16)bytes_to_comp,
|
(u16)bytes_to_comp,
|
||||||
(u8 *)mc_data_buffer,
|
(u8 *)mc_data_buffer,
|
||||||
0x0000)) {
|
0x0000)) {
|
||||||
pr_err("error reading firmware at pos %u\n",
|
pr_err("error reading firmware at pos %zd\n",
|
||||||
(unsigned)(mc_data - mc_data_init));
|
mc_data - mc_data_init);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -11875,8 +11874,8 @@ static int drx_ctrl_u_code(struct drx_demod_instance *demod,
|
|||||||
bytes_to_comp);
|
bytes_to_comp);
|
||||||
|
|
||||||
if (result) {
|
if (result) {
|
||||||
pr_err("error verifying firmware at pos %u\n",
|
pr_err("error verifying firmware at pos %zd\n",
|
||||||
(unsigned)(mc_data - mc_data_init));
|
mc_data - mc_data_init);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12374,9 +12373,9 @@ static const struct dvb_frontend_ops drx39xxj_ops = {
|
|||||||
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Micronas DRX39xxj family Frontend",
|
.name = "Micronas DRX39xxj family Frontend",
|
||||||
.frequency_stepsize = 62500,
|
.frequency_min_hz = 51 * MHz,
|
||||||
.frequency_min = 51000000,
|
.frequency_max_hz = 858 * MHz,
|
||||||
.frequency_max = 858000000,
|
.frequency_stepsize_hz = 62500,
|
||||||
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
|
.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@@ -1970,8 +1970,7 @@ static int DRX_Start(struct drxd_state *state, s32 off)
|
|||||||
switch (p->transmission_mode) {
|
switch (p->transmission_mode) {
|
||||||
default: /* Not set, detect it automatically */
|
default: /* Not set, detect it automatically */
|
||||||
operationMode |= SC_RA_RAM_OP_AUTO_MODE__M;
|
operationMode |= SC_RA_RAM_OP_AUTO_MODE__M;
|
||||||
/* try first guess DRX_FFTMODE_8K */
|
/* fall through - try first guess DRX_FFTMODE_8K */
|
||||||
/* fall through */
|
|
||||||
case TRANSMISSION_MODE_8K:
|
case TRANSMISSION_MODE_8K:
|
||||||
transmissionParams |= SC_RA_RAM_OP_PARAM_MODE_8K;
|
transmissionParams |= SC_RA_RAM_OP_PARAM_MODE_8K;
|
||||||
if (state->type_A) {
|
if (state->type_A) {
|
||||||
@@ -2144,8 +2143,7 @@ static int DRX_Start(struct drxd_state *state, s32 off)
|
|||||||
switch (p->modulation) {
|
switch (p->modulation) {
|
||||||
default:
|
default:
|
||||||
operationMode |= SC_RA_RAM_OP_AUTO_CONST__M;
|
operationMode |= SC_RA_RAM_OP_AUTO_CONST__M;
|
||||||
/* try first guess DRX_CONSTELLATION_QAM64 */
|
/* fall through - try first guess DRX_CONSTELLATION_QAM64 */
|
||||||
/* fall through */
|
|
||||||
case QAM_64:
|
case QAM_64:
|
||||||
transmissionParams |= SC_RA_RAM_OP_PARAM_CONST_QAM64;
|
transmissionParams |= SC_RA_RAM_OP_PARAM_CONST_QAM64;
|
||||||
if (state->type_A) {
|
if (state->type_A) {
|
||||||
@@ -2912,10 +2910,9 @@ static const struct dvb_frontend_ops drxd_ops = {
|
|||||||
.delsys = { SYS_DVBT},
|
.delsys = { SYS_DVBT},
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Micronas DRXD DVB-T",
|
.name = "Micronas DRXD DVB-T",
|
||||||
.frequency_min = 47125000,
|
.frequency_min_hz = 47125 * kHz,
|
||||||
.frequency_max = 855250000,
|
.frequency_max_hz = 855250 * kHz,
|
||||||
.frequency_stepsize = 166667,
|
.frequency_stepsize_hz = 166667,
|
||||||
.frequency_tolerance = 0,
|
|
||||||
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
|
.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
|
||||||
FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
|
FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
|
||||||
FE_CAN_FEC_AUTO |
|
FE_CAN_FEC_AUTO |
|
||||||
|
@@ -3270,13 +3270,11 @@ static int dvbt_sc_command(struct drxk_state *state,
|
|||||||
case OFDM_SC_RA_RAM_CMD_SET_PREF_PARAM:
|
case OFDM_SC_RA_RAM_CMD_SET_PREF_PARAM:
|
||||||
case OFDM_SC_RA_RAM_CMD_PROGRAM_PARAM:
|
case OFDM_SC_RA_RAM_CMD_PROGRAM_PARAM:
|
||||||
status |= write16(state, OFDM_SC_RA_RAM_PARAM1__A, param1);
|
status |= write16(state, OFDM_SC_RA_RAM_PARAM1__A, param1);
|
||||||
/* All commands using 1 parameters */
|
/* fall through - All commands using 1 parameters */
|
||||||
/* fall through */
|
|
||||||
case OFDM_SC_RA_RAM_CMD_SET_ECHO_TIMING:
|
case OFDM_SC_RA_RAM_CMD_SET_ECHO_TIMING:
|
||||||
case OFDM_SC_RA_RAM_CMD_USER_IO:
|
case OFDM_SC_RA_RAM_CMD_USER_IO:
|
||||||
status |= write16(state, OFDM_SC_RA_RAM_PARAM0__A, param0);
|
status |= write16(state, OFDM_SC_RA_RAM_PARAM0__A, param0);
|
||||||
/* All commands using 0 parameters */
|
/* fall through - All commands using 0 parameters */
|
||||||
/* fall through */
|
|
||||||
case OFDM_SC_RA_RAM_CMD_GET_OP_PARAM:
|
case OFDM_SC_RA_RAM_CMD_GET_OP_PARAM:
|
||||||
case OFDM_SC_RA_RAM_CMD_NULL:
|
case OFDM_SC_RA_RAM_CMD_NULL:
|
||||||
/* Write command */
|
/* Write command */
|
||||||
@@ -3784,8 +3782,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz,
|
|||||||
case TRANSMISSION_MODE_AUTO:
|
case TRANSMISSION_MODE_AUTO:
|
||||||
default:
|
default:
|
||||||
operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_MODE__M;
|
operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_MODE__M;
|
||||||
/* try first guess DRX_FFTMODE_8K */
|
/* fall through - try first guess DRX_FFTMODE_8K */
|
||||||
/* fall through */
|
|
||||||
case TRANSMISSION_MODE_8K:
|
case TRANSMISSION_MODE_8K:
|
||||||
transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_MODE_8K;
|
transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_MODE_8K;
|
||||||
break;
|
break;
|
||||||
@@ -3799,8 +3796,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz,
|
|||||||
default:
|
default:
|
||||||
case GUARD_INTERVAL_AUTO:
|
case GUARD_INTERVAL_AUTO:
|
||||||
operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_GUARD__M;
|
operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_GUARD__M;
|
||||||
/* try first guess DRX_GUARD_1DIV4 */
|
/* fall through - try first guess DRX_GUARD_1DIV4 */
|
||||||
/* fall through */
|
|
||||||
case GUARD_INTERVAL_1_4:
|
case GUARD_INTERVAL_1_4:
|
||||||
transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_4;
|
transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_4;
|
||||||
break;
|
break;
|
||||||
@@ -3841,8 +3837,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz,
|
|||||||
case QAM_AUTO:
|
case QAM_AUTO:
|
||||||
default:
|
default:
|
||||||
operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_CONST__M;
|
operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_CONST__M;
|
||||||
/* try first guess DRX_CONSTELLATION_QAM64 */
|
/* fall through - try first guess DRX_CONSTELLATION_QAM64 */
|
||||||
/* fall through */
|
|
||||||
case QAM_64:
|
case QAM_64:
|
||||||
transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_CONST_QAM64;
|
transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_CONST_QAM64;
|
||||||
break;
|
break;
|
||||||
@@ -3885,8 +3880,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz,
|
|||||||
case FEC_AUTO:
|
case FEC_AUTO:
|
||||||
default:
|
default:
|
||||||
operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_RATE__M;
|
operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_RATE__M;
|
||||||
/* try first guess DRX_CODERATE_2DIV3 */
|
/* fall through - try first guess DRX_CODERATE_2DIV3 */
|
||||||
/* fall through */
|
|
||||||
case FEC_2_3:
|
case FEC_2_3:
|
||||||
transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_RATE_2_3;
|
transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_RATE_2_3;
|
||||||
break;
|
break;
|
||||||
@@ -6744,13 +6738,13 @@ static const struct dvb_frontend_ops drxk_ops = {
|
|||||||
/* .delsys will be filled dynamically */
|
/* .delsys will be filled dynamically */
|
||||||
.info = {
|
.info = {
|
||||||
.name = "DRXK",
|
.name = "DRXK",
|
||||||
.frequency_min = 47000000,
|
.frequency_min_hz = 47 * MHz,
|
||||||
.frequency_max = 865000000,
|
.frequency_max_hz = 865 * MHz,
|
||||||
/* For DVB-C */
|
/* For DVB-C */
|
||||||
.symbol_rate_min = 870000,
|
.symbol_rate_min = 870000,
|
||||||
.symbol_rate_max = 11700000,
|
.symbol_rate_max = 11700000,
|
||||||
/* For DVB-T */
|
/* For DVB-T */
|
||||||
.frequency_stepsize = 166667,
|
.frequency_stepsize_hz = 166667,
|
||||||
|
|
||||||
.caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
|
.caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
|
||||||
FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO |
|
FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO |
|
||||||
|
@@ -1100,10 +1100,10 @@ static const struct dvb_frontend_ops ds3000_ops = {
|
|||||||
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
.delsys = { SYS_DVBS, SYS_DVBS2 },
|
||||||
.info = {
|
.info = {
|
||||||
.name = "Montage Technology DS3000",
|
.name = "Montage Technology DS3000",
|
||||||
.frequency_min = 950000,
|
.frequency_min_hz = 950 * MHz,
|
||||||
.frequency_max = 2150000,
|
.frequency_max_hz = 2150 * MHz,
|
||||||
.frequency_stepsize = 1011, /* kHz for QPSK frontends */
|
.frequency_stepsize_hz = 1011 * kHz,
|
||||||
.frequency_tolerance = 5000,
|
.frequency_tolerance_hz = 5 * MHz,
|
||||||
.symbol_rate_min = 1000000,
|
.symbol_rate_min = 1000000,
|
||||||
.symbol_rate_max = 45000000,
|
.symbol_rate_max = 45000000,
|
||||||
.caps = FE_CAN_INVERSION_AUTO |
|
.caps = FE_CAN_INVERSION_AUTO |
|
||||||
|
@@ -799,6 +799,7 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
|
|||||||
struct dvb_pll_priv *priv = NULL;
|
struct dvb_pll_priv *priv = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
const struct dvb_pll_desc *desc;
|
const struct dvb_pll_desc *desc;
|
||||||
|
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
||||||
|
|
||||||
b1 = kmalloc(1, GFP_KERNEL);
|
b1 = kmalloc(1, GFP_KERNEL);
|
||||||
if (!b1)
|
if (!b1)
|
||||||
@@ -844,8 +845,19 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
|
|||||||
|
|
||||||
strncpy(fe->ops.tuner_ops.info.name, desc->name,
|
strncpy(fe->ops.tuner_ops.info.name, desc->name,
|
||||||
sizeof(fe->ops.tuner_ops.info.name));
|
sizeof(fe->ops.tuner_ops.info.name));
|
||||||
fe->ops.tuner_ops.info.frequency_min = desc->min;
|
switch (c->delivery_system) {
|
||||||
fe->ops.tuner_ops.info.frequency_max = desc->max;
|
case SYS_DVBS:
|
||||||
|
case SYS_DVBS2:
|
||||||
|
case SYS_TURBO:
|
||||||
|
case SYS_ISDBS:
|
||||||
|
fe->ops.tuner_ops.info.frequency_min_hz = desc->min * kHz;
|
||||||
|
fe->ops.tuner_ops.info.frequency_max_hz = desc->max * kHz;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fe->ops.tuner_ops.info.frequency_min_hz = desc->min;
|
||||||
|
fe->ops.tuner_ops.info.frequency_max_hz = desc->max;
|
||||||
|
}
|
||||||
|
|
||||||
if (!desc->initdata)
|
if (!desc->initdata)
|
||||||
fe->ops.tuner_ops.init = NULL;
|
fe->ops.tuner_ops.init = NULL;
|
||||||
if (!desc->sleepdata)
|
if (!desc->sleepdata)
|
||||||
@@ -884,6 +896,17 @@ dvb_pll_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|||||||
if (!dvb_pll_attach(fe, client->addr, client->adapter, desc_id))
|
if (!dvb_pll_attach(fe, client->addr, client->adapter, desc_id))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Unset tuner_ops.release (== dvb_pll_release)
|
||||||
|
* which has been just set in the above dvb_pll_attach(),
|
||||||
|
* because if tuner_ops.release was left defined,
|
||||||
|
* this module would be 'put' twice on exit:
|
||||||
|
* once by dvb_frontend_detach() and another by dvb_module_release().
|
||||||
|
*
|
||||||
|
* dvb_pll_release is instead executed in the i2c driver's .remove(),
|
||||||
|
* keeping dvb_pll_attach untouched for legacy (dvb_attach) drivers.
|
||||||
|
*/
|
||||||
|
fe->ops.tuner_ops.release = NULL;
|
||||||
dev_info(&client->dev, "DVB Simple Tuner attached.\n");
|
dev_info(&client->dev, "DVB Simple Tuner attached.\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user