media updates for v5.1-rc1
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+QmuaPwR3wnBdVwACF8+vY7k4RUFAlzTElIACgkQCF8+vY7k 4RV9DA//cnvJqEHWFRrRdM1YpyVeo8CWk4nNFu174f2VFFS3O32WuSMLGVtXI8Sq Kx9/hZtb20TN9D90V6TtGqH9x5k7qpdlYkGD4ZQFbokRYhzk1eJ7ZRkPfxNDPo7P hcRqN1njXWjQN61ekEbOsMXavbcB52D+ubtDaE+8stcn00HGQ8cIjNzzmi5VYlrs DSJNB6udrePhWgQGhmzdhN1x12+xeu6OSNx6xsUZ2paHHzbTNnrnFs2gc6vqXFAk HEkows3DKHk8y7vK85Fgwjm3L3PQbvWmrDvbbOLjNVegzCop65oK42UlaHJHLlgs BVE9SI9/5wHJMVKDf0IIVSA7GsWTqcA+nBC3rohWse2UZp+8691gGynQOvr7Z4wx T3ZKUIG3swX1yN8gUl8EVHv4jogD4xlog5SFanx1DJfkvwTnT5VfJZqryXBPP2lG knMxc6z7qmP8F2BLTXd2UxEujMA75RoSg2UKoJZHv3cu+zPSFjGVfCwahPdnNoeb FMaVDDayzk6eD8/joO0EM89bg1wj4vPEr/74SyNbHHOzIYfIs3fvHD2+p/KYsAeu /wQXGlK2ARTKSDgyCKq8OGY+mtuJTI5kkV/EVLnEa9kNEeFDdsRM1h8Y4y8UX0Ds 7PlAyQXPTixOW+1C2pxfzbJi4Bv6hjX2ijgjmE2CSn4zPJZ9qK4= =zjhI -----END PGP SIGNATURE----- Merge tag 'media/v5.1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media updates from Mauro Carvalho Chehab: - remove the deprecated Zoran driver from staging - new I2C driver: ST MIPID02 CSI-2 camera bridge - new platform driver: Amlogic Meson AO CEC G12A Controller - add support for USB audio via the media controller - au0828 driver is now supported via the media controller on both on media and on usbaudio - new kernel test for the media device allocator - add support for stateless decoder at vicodec driver - lots of other driver improvements fixes and cleanups * tag 'media/v5.1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (218 commits) media: dt-bindings: aspeed-video: Add missing memory-region property media: platform: Aspeed: Make reserved memory optional media: platform: Aspeed: Remove use of reset line media: stm32-dcmi: return appropriate error codes during probe media: vsp1: Add support for missing 16-bit RGB555 formats media: vsp1: Add support for missing 16-bit RGB444 formats media: vsp1: Add support for missing 32-bit RGB formats media: v4l: Add definitions for missing 16-bit RGB555 formats media: v4l: Add definitions for missing 16-bit RGB4444 formats media: v4l: Add definitions for missing 32-bit RGB formats media: zoran: remove deprecated driver media: MAINTAINERS: Update AO CEC with ao-cec-g12a driver media: platform: meson: Add Amlogic Meson G12A AO CEC Controller driver media: dt-bindings: media: meson-ao-cec: Add G12A AO-CEC-B Compatible media: cros-ec-cec: decrement HDMI device refcount media: seco-cec: decrement HDMI device refcount media: tegra_cec: use new cec_notifier_parse_hdmi_phandle helper media: stih_cec: use new cec_notifier_parse_hdmi_phandle helper media: s5p_cec: use new cec_notifier_parse_hdmi_phandle helper media: meson: ao-cec: use new cec_notifier_parse_hdmi_phandle helper ...
This commit is contained in:
commit
e7a1414f9d
|
@ -14,6 +14,11 @@ Required properties:
|
|||
the VE
|
||||
- interrupts: the interrupt associated with the VE on this platform
|
||||
|
||||
Optional properties:
|
||||
- memory-region:
|
||||
phandle to a memory region to allocate from, as defined in
|
||||
Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
|
||||
|
||||
Example:
|
||||
|
||||
video-engine@1e700000 {
|
||||
|
@ -23,4 +28,5 @@ video-engine@1e700000 {
|
|||
clock-names = "vclk", "eclk";
|
||||
resets = <&syscon ASPEED_RESET_VIDEO>;
|
||||
interrupts = <7>;
|
||||
memory-region = <&video_engine_memory>;
|
||||
};
|
||||
|
|
|
@ -13,6 +13,7 @@ Required properties:
|
|||
- "allwinner,sun8i-h3-video-engine"
|
||||
- "allwinner,sun50i-a64-video-engine"
|
||||
- "allwinner,sun50i-h5-video-engine"
|
||||
- "allwinner,sun50i-h6-video-engine"
|
||||
- reg : register base and length of VE;
|
||||
- clocks : list of clock specifiers, corresponding to entries in
|
||||
the clock-names property;
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge
|
||||
|
||||
MIPID02 has two CSI-2 input ports, only one of those ports can be active at a
|
||||
time. Active port input stream will be de-serialized and its content outputted
|
||||
through PARALLEL output port.
|
||||
CSI-2 first input port is a dual lane 800Mbps per lane whereas CSI-2 second
|
||||
input port is a single lane 800Mbps. Both ports support clock and data lane
|
||||
polarity swap. First port also supports data lane swap.
|
||||
PARALLEL output port has a maximum width of 12 bits.
|
||||
Supported formats are RAW6, RAW7, RAW8, RAW10, RAW12, RGB565, RGB888, RGB444,
|
||||
YUV420 8-bit, YUV422 8-bit and YUV420 10-bit.
|
||||
|
||||
Required Properties:
|
||||
- compatible: shall be "st,st-mipid02"
|
||||
- clocks: reference to the xclk input clock.
|
||||
- clock-names: shall be "xclk".
|
||||
- VDDE-supply: sensor digital IO supply. Must be 1.8 volts.
|
||||
- VDDIN-supply: sensor internal regulator supply. Must be 1.8 volts.
|
||||
|
||||
Optional Properties:
|
||||
- reset-gpios: reference to the GPIO connected to the xsdn pin, if any.
|
||||
This is an active low signal to the mipid02.
|
||||
|
||||
Required subnodes:
|
||||
- ports: A ports node with one port child node per device input and output
|
||||
port, in accordance with the video interface bindings defined in
|
||||
Documentation/devicetree/bindings/media/video-interfaces.txt. The
|
||||
port nodes are numbered as follows:
|
||||
|
||||
Port Description
|
||||
-----------------------------
|
||||
0 CSI-2 first input port
|
||||
1 CSI-2 second input port
|
||||
2 PARALLEL output
|
||||
|
||||
Endpoint node required property for CSI-2 connection is:
|
||||
- data-lanes: shall be <1> for Port 1. for Port 0 dual-lane operation shall be
|
||||
<1 2> or <2 1>. For Port 0 single-lane operation shall be <1> or <2>.
|
||||
Endpoint node optional property for CSI-2 connection is:
|
||||
- lane-polarities: any lane can be inverted or not.
|
||||
|
||||
Endpoint node required property for PARALLEL connection is:
|
||||
- bus-width: shall be set to <6>, <7>, <8>, <10> or <12>.
|
||||
Endpoint node optional properties for PARALLEL connection are:
|
||||
- hsync-active: active state of the HSYNC signal, 0/1 for LOW/HIGH respectively.
|
||||
LOW being the default.
|
||||
- vsync-active: active state of the VSYNC signal, 0/1 for LOW/HIGH respectively.
|
||||
LOW being the default.
|
||||
|
||||
Example:
|
||||
|
||||
mipid02: csi2rx@14 {
|
||||
compatible = "st,st-mipid02";
|
||||
reg = <0x14>;
|
||||
status = "okay";
|
||||
clocks = <&clk_ext_camera_12>;
|
||||
clock-names = "xclk";
|
||||
VDDE-supply = <&vdd>;
|
||||
VDDIN-supply = <&vdd>;
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
|
||||
ep0: endpoint {
|
||||
data-lanes = <1 2>;
|
||||
remote-endpoint = <&mipi_csi2_in>;
|
||||
};
|
||||
};
|
||||
port@2 {
|
||||
reg = <2>;
|
||||
|
||||
ep2: endpoint {
|
||||
bus-width = <8>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
remote-endpoint = <¶llel_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
|
@ -4,16 +4,23 @@ The Amlogic Meson AO-CEC module is present is Amlogic SoCs and its purpose is
|
|||
to handle communication between HDMI connected devices over the CEC bus.
|
||||
|
||||
Required properties:
|
||||
- compatible : value should be following
|
||||
- compatible : value should be following depending on the SoC :
|
||||
For GXBB, GXL, GXM and G12A (AO_CEC_A module) :
|
||||
"amlogic,meson-gx-ao-cec"
|
||||
For G12A (AO_CEC_B module) :
|
||||
"amlogic,meson-g12a-ao-cec"
|
||||
|
||||
- reg : Physical base address of the IP registers and length of memory
|
||||
mapped region.
|
||||
|
||||
- interrupts : AO-CEC interrupt number to the CPU.
|
||||
- clocks : from common clock binding: handle to AO-CEC clock.
|
||||
- clock-names : from common clock binding: must contain "core",
|
||||
corresponding to entry in the clocks property.
|
||||
- clock-names : from common clock binding, must contain :
|
||||
For GXBB, GXL, GXM and G12A (AO_CEC_A module) :
|
||||
- "core"
|
||||
For G12A (AO_CEC_B module) :
|
||||
- "oscin"
|
||||
corresponding to entry in the clocks property.
|
||||
- hdmi-phandle: phandle to the HDMI controller
|
||||
|
||||
Example:
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
Renesas R-Car Image Renderer (Distortion Correction Engine)
|
||||
-----------------------------------------------------------
|
||||
|
||||
The image renderer, or the distortion correction engine, is a drawing processor
|
||||
with a simple instruction system capable of referencing video capture data or
|
||||
data in an external memory as 2D texture data and performing texture mapping
|
||||
and drawing with respect to any shape that is split into triangular objects.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible: "renesas,<soctype>-imr-lx4", "renesas,imr-lx4" as a fallback for
|
||||
the image renderer light extended 4 (IMR-LX4) found in the R-Car gen3 SoCs,
|
||||
where the examples with <soctype> are:
|
||||
- "renesas,r8a7795-imr-lx4" for R-Car H3,
|
||||
- "renesas,r8a7796-imr-lx4" for R-Car M3-W.
|
||||
- reg: offset and length of the register block;
|
||||
- interrupts: single interrupt specifier;
|
||||
- clocks: single clock phandle/specifier pair;
|
||||
- power-domains: power domain phandle/specifier pair;
|
||||
- resets: reset phandle/specifier pair.
|
||||
|
||||
Example:
|
||||
|
||||
imr-lx4@fe860000 {
|
||||
compatible = "renesas,r8a7795-imr-lx4", "renesas,imr-lx4";
|
||||
reg = <0 0xfe860000 0 0x2000>;
|
||||
interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&cpg CPG_MOD 823>;
|
||||
power-domains = <&sysc R8A7795_PD_A3VC>;
|
||||
resets = <&cpg 823>;
|
||||
};
|
|
@ -13,6 +13,7 @@ on Gen3 and RZ/G2 platforms to a CSI-2 receiver.
|
|||
- "renesas,vin-r8a7743" for the R8A7743 device
|
||||
- "renesas,vin-r8a7744" for the R8A7744 device
|
||||
- "renesas,vin-r8a7745" for the R8A7745 device
|
||||
- "renesas,vin-r8a774a1" for the R8A774A1 device
|
||||
- "renesas,vin-r8a774c0" for the R8A774C0 device
|
||||
- "renesas,vin-r8a7778" for the R8A7778 device
|
||||
- "renesas,vin-r8a7779" for the R8A7779 device
|
||||
|
|
|
@ -8,6 +8,7 @@ R-Car VIN module, which provides the video capture capabilities.
|
|||
Mandatory properties
|
||||
--------------------
|
||||
- compatible: Must be one or more of the following
|
||||
- "renesas,r8a774a1-csi2" for the R8A774A1 device.
|
||||
- "renesas,r8a774c0-csi2" for the R8A774C0 device.
|
||||
- "renesas,r8a7795-csi2" for the R8A7795 device.
|
||||
- "renesas,r8a7796-csi2" for the R8A7796 device.
|
||||
|
@ -18,7 +19,8 @@ Mandatory properties
|
|||
|
||||
- reg: the register base and size for the device registers
|
||||
- interrupts: the interrupt for the device
|
||||
- clocks: reference to the parent clock
|
||||
- clocks: A phandle + clock specifier for the module clock
|
||||
- resets: A phandle + reset specifier for the module reset
|
||||
|
||||
The device node shall contain two 'port' child nodes according to the
|
||||
bindings defined in Documentation/devicetree/bindings/media/
|
||||
|
|
|
@ -18,7 +18,7 @@ Linux Media Subsystem Documentation
|
|||
v4l-drivers/index
|
||||
cec-drivers/index
|
||||
|
||||
.. only:: subproject
|
||||
.. only:: html and subproject
|
||||
|
||||
Indices
|
||||
=======
|
||||
|
|
|
@ -259,6 +259,45 @@ Subsystems should facilitate link validation by providing subsystem specific
|
|||
helper functions to provide easy access for commonly needed information, and
|
||||
in the end provide a way to use driver-specific callbacks.
|
||||
|
||||
Media Controller Device Allocator API
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
When the media device belongs to more than one driver, the shared media
|
||||
device is allocated with the shared struct device as the key for look ups.
|
||||
|
||||
The shared media device should stay in registered state until the last
|
||||
driver unregisters it. In addition, the media device should be released when
|
||||
all the references are released. Each driver gets a reference to the media
|
||||
device during probe, when it allocates the media device. If media device is
|
||||
already allocated, the allocate API bumps up the refcount and returns the
|
||||
existing media device. The driver puts the reference back in its disconnect
|
||||
routine when it calls :c:func:`media_device_delete()`.
|
||||
|
||||
The media device is unregistered and cleaned up from the kref put handler to
|
||||
ensure that the media device stays in registered state until the last driver
|
||||
unregisters the media device.
|
||||
|
||||
**Driver Usage**
|
||||
|
||||
Drivers should use the appropriate media-core routines to manage the shared
|
||||
media device life-time handling the two states:
|
||||
1. allocate -> register -> delete
|
||||
2. get reference to already registered device -> delete
|
||||
|
||||
call :c:func:`media_device_delete()` routine to make sure the shared media
|
||||
device delete is handled correctly.
|
||||
|
||||
**driver probe:**
|
||||
Call :c:func:`media_device_usb_allocate()` to allocate or get a reference
|
||||
Call :c:func:`media_device_register()`, if media devnode isn't registered
|
||||
|
||||
**driver disconnect:**
|
||||
Call :c:func:`media_device_delete()` to free the media_device. Freeing is
|
||||
handled by the kref put handler.
|
||||
|
||||
API Definitions
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
.. kernel-doc:: include/media/media-device.h
|
||||
|
||||
.. kernel-doc:: include/media/media-devnode.h
|
||||
|
@ -266,3 +305,5 @@ in the end provide a way to use driver-specific callbacks.
|
|||
.. kernel-doc:: include/media/media-entity.h
|
||||
|
||||
.. kernel-doc:: include/media/media-request.h
|
||||
|
||||
.. kernel-doc:: include/media/media-dev-allocator.h
|
||||
|
|
|
@ -63,6 +63,7 @@ ignore symbol RC_PROTO_IMON
|
|||
ignore symbol RC_PROTO_RCMM12
|
||||
ignore symbol RC_PROTO_RCMM24
|
||||
ignore symbol RC_PROTO_RCMM32
|
||||
ignore symbol RC_PROTO_XBOX_DVD
|
||||
|
||||
# Undocumented macros
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ A queued request cannot be modified anymore.
|
|||
.. caution::
|
||||
For :ref:`memory-to-memory devices <mem2mem>` you can use requests only for
|
||||
output buffers, not for capture buffers. Attempting to add a capture buffer
|
||||
to a request will result in an ``EACCES`` error.
|
||||
to a request will result in an ``EBADR`` error.
|
||||
|
||||
If the request contains configurations for multiple entities, individual drivers
|
||||
may synchronize so the requested pipeline's topology is applied before the
|
||||
|
|
|
@ -165,7 +165,7 @@ of appropriately sized buffers for each use case).
|
|||
struct v4l2_buffer
|
||||
==================
|
||||
|
||||
.. tabularcolumns:: |p{2.8cm}|p{2.5cm}|p{1.3cm}|p{10.5cm}|
|
||||
.. tabularcolumns:: |p{2.8cm}|p{2.5cm}|p{1.6cm}|p{10.2cm}|
|
||||
|
||||
.. cssclass:: longtable
|
||||
|
||||
|
@ -326,7 +326,7 @@ struct v4l2_buffer
|
|||
Applications should not set ``V4L2_BUF_FLAG_REQUEST_FD`` for any ioctls
|
||||
other than :ref:`VIDIOC_QBUF <VIDIOC_QBUF>`.
|
||||
|
||||
If the device does not support requests, then ``EACCES`` will be returned.
|
||||
If the device does not support requests, then ``EBADR`` will be returned.
|
||||
If requests are supported but an invalid request file descriptor is
|
||||
given, then ``EINVAL`` will be returned.
|
||||
|
||||
|
@ -420,7 +420,7 @@ enum v4l2_buf_type
|
|||
|
||||
.. cssclass:: longtable
|
||||
|
||||
.. tabularcolumns:: |p{7.2cm}|p{0.6cm}|p{9.7cm}|
|
||||
.. tabularcolumns:: |p{7.8cm}|p{0.6cm}|p{9.1cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -482,7 +482,11 @@ enum v4l2_buf_type
|
|||
Buffer Flags
|
||||
============
|
||||
|
||||
.. tabularcolumns:: |p{7.0cm}|p{2.2cm}|p{8.3cm}|
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. tabularcolumns:: |p{7.0cm}|p{2.1cm}|p{8.4cm}|
|
||||
|
||||
.. cssclass:: longtable
|
||||
|
||||
|
@ -681,6 +685,9 @@ Buffer Flags
|
|||
exposure of the frame has begun. This is only valid for the
|
||||
``V4L2_BUF_TYPE_VIDEO_CAPTURE`` buffer type.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
||||
.. c:type:: v4l2_memory
|
||||
|
@ -688,7 +695,7 @@ Buffer Flags
|
|||
enum v4l2_memory
|
||||
================
|
||||
|
||||
.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
|
||||
.. tabularcolumns:: |p{5.0cm}|p{0.8cm}|p{11.7cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -724,7 +731,7 @@ The :c:type:`v4l2_buffer_timecode` structure is designed to hold a
|
|||
struct v4l2_timecode
|
||||
--------------------
|
||||
|
||||
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
||||
.. tabularcolumns:: |p{1.4cm}|p{2.8cm}|p{12.3cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -761,7 +768,7 @@ struct v4l2_timecode
|
|||
Timecode Types
|
||||
--------------
|
||||
|
||||
.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
|
||||
.. tabularcolumns:: |p{5.6cm}|p{0.8cm}|p{11.1cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
|
|
@ -39,7 +39,7 @@ whole range, 0-255, dividing the angular value by 1.41. The enum
|
|||
colorspaces except for BT.2020 which uses limited range R'G'B'
|
||||
quantization.
|
||||
|
||||
.. tabularcolumns:: |p{6.0cm}|p{11.5cm}|
|
||||
.. tabularcolumns:: |p{6.7cm}|p{10.8cm}|
|
||||
|
||||
.. c:type:: v4l2_colorspace
|
||||
|
||||
|
@ -112,7 +112,7 @@ whole range, 0-255, dividing the angular value by 1.41. The enum
|
|||
|
||||
.. c:type:: v4l2_ycbcr_encoding
|
||||
|
||||
.. tabularcolumns:: |p{6.5cm}|p{11.0cm}|
|
||||
.. tabularcolumns:: |p{7.2cm}|p{10.3cm}|
|
||||
|
||||
.. flat-table:: V4L2 Y'CbCr Encodings
|
||||
:header-rows: 1
|
||||
|
|
|
@ -56,9 +56,9 @@ The Y value in the CIE XYZ colorspace corresponds to luminance. Often
|
|||
the CIE XYZ colorspace is transformed to the normalized CIE xyY
|
||||
colorspace:
|
||||
|
||||
x = X / (X + Y + Z)
|
||||
x = X / (X + Y + Z)
|
||||
|
||||
y = Y / (X + Y + Z)
|
||||
y = Y / (X + Y + Z)
|
||||
|
||||
The x and y values are the chromaticity coordinates and can be used to
|
||||
define a color without the luminance component Y. It is very confusing
|
||||
|
|
|
@ -106,7 +106,7 @@ VBI devices must implement both the :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` and
|
|||
and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does.
|
||||
:ref:`VIDIOC_TRY_FMT <VIDIOC_G_FMT>` is optional.
|
||||
|
||||
.. tabularcolumns:: |p{2.4cm}|p{4.4cm}|p{10.7cm}|
|
||||
.. tabularcolumns:: |p{1.6cm}|p{4.2cm}|p{11.7cm}|
|
||||
|
||||
.. c:type:: v4l2_vbi_format
|
||||
|
||||
|
@ -190,7 +190,7 @@ and always returns default parameters as :ref:`VIDIOC_G_FMT <VIDIOC_G_FMT>` does
|
|||
applications must set it to zero.
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{4.0cm}|p{1.5cm}|p{12.0cm}|
|
||||
.. tabularcolumns:: |p{4.4cm}|p{1.5cm}|p{11.6cm}|
|
||||
|
||||
.. _vbifmt-flags:
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ RDS datastructures
|
|||
|
||||
.. _v4l2-rds-block-codes:
|
||||
|
||||
.. tabularcolumns:: |p{5.6cm}|p{2.0cm}|p{1.5cm}|p{7.0cm}|
|
||||
.. tabularcolumns:: |p{6.4cm}|p{2.0cm}|p{1.2cm}|p{7.9cm}|
|
||||
|
||||
.. flat-table:: Block defines
|
||||
:header-rows: 0
|
||||
|
|
|
@ -118,7 +118,7 @@ struct v4l2_sliced_vbi_format
|
|||
\scriptsize
|
||||
\setlength{\tabcolsep}{2pt}
|
||||
|
||||
.. tabularcolumns:: |p{.75cm}|p{3.3cm}|p{3.4cm}|p{3.4cm}|p{3.4cm}|
|
||||
.. tabularcolumns:: |p{.85cm}|p{3.3cm}|p{4.4cm}|p{4.4cm}|p{4.4cm}|
|
||||
|
||||
.. cssclass:: longtable
|
||||
|
||||
|
@ -223,7 +223,7 @@ Sliced VBI services
|
|||
|
||||
.. raw:: latex
|
||||
|
||||
\footnotesize
|
||||
\scriptsize
|
||||
|
||||
.. tabularcolumns:: |p{4.1cm}|p{1.1cm}|p{2.4cm}|p{2.0cm}|p{7.3cm}|
|
||||
|
||||
|
@ -541,7 +541,7 @@ Magic Constants for struct v4l2_mpeg_vbi_fmt_ivtv magic field
|
|||
structs v4l2_mpeg_vbi_itv0 and v4l2_mpeg_vbi_ITV0
|
||||
-------------------------------------------------
|
||||
|
||||
.. tabularcolumns:: |p{4.9cm}|p{2.4cm}|p{10.2cm}|
|
||||
.. tabularcolumns:: |p{5.2cm}|p{2.4cm}|p{9.9cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -561,12 +561,12 @@ structs v4l2_mpeg_vbi_itv0 and v4l2_mpeg_vbi_ITV0
|
|||
|
||||
::
|
||||
|
||||
linemask[0] b0: line 6 first field
|
||||
linemask[0] b17: line 23 first field
|
||||
linemask[0] b18: line 6 second field
|
||||
linemask[0] b31: line 19 second field
|
||||
linemask[1] b0: line 20 second field
|
||||
linemask[1] b3: line 23 second field
|
||||
linemask[0] b0: line 6 first field
|
||||
linemask[0] b17: line 23 first field
|
||||
linemask[0] b18: line 6 second field
|
||||
linemask[0] b31: line 19 second field
|
||||
linemask[1] b0: line 20 second field
|
||||
linemask[1] b3: line 23 second field
|
||||
linemask[1] b4-b31: unused and set to 0
|
||||
* - struct
|
||||
:c:type:`v4l2_mpeg_vbi_itv0_line`
|
||||
|
@ -590,7 +590,7 @@ structs v4l2_mpeg_vbi_itv0 and v4l2_mpeg_vbi_ITV0
|
|||
struct v4l2_mpeg_vbi_ITV0
|
||||
-------------------------
|
||||
|
||||
.. tabularcolumns:: |p{4.9cm}|p{4.4cm}|p{8.2cm}|
|
||||
.. tabularcolumns:: |p{5.2cm}|p{2.4cm}|p{9.9cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -635,7 +635,7 @@ struct v4l2_mpeg_vbi_itv0_line
|
|||
Line Identifiers for struct v4l2_mpeg_vbi_itv0_line id field
|
||||
------------------------------------------------------------
|
||||
|
||||
.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
|
||||
.. tabularcolumns:: |p{7.0cm}|p{1.8cm}|p{8.7cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 1
|
||||
|
|
|
@ -211,7 +211,7 @@ list entity names and pad numbers).
|
|||
|
||||
.. raw:: latex
|
||||
|
||||
\tiny
|
||||
\scriptsize
|
||||
|
||||
.. tabularcolumns:: |p{2.0cm}|p{2.3cm}|p{2.3cm}|p{2.3cm}|p{2.3cm}|p{2.3cm}|p{2.3cm}|
|
||||
|
||||
|
@ -223,40 +223,80 @@ list entity names and pad numbers).
|
|||
:widths: 5 5 5 5 5 5 5
|
||||
|
||||
* -
|
||||
- Sensor/0 format
|
||||
- Frontend/0 format
|
||||
- Frontend/1 format
|
||||
- Scaler/0 format
|
||||
- Scaler/0 compose selection rectangle
|
||||
- Scaler/1 format
|
||||
- Sensor/0
|
||||
|
||||
format
|
||||
- Frontend/0
|
||||
|
||||
format
|
||||
- Frontend/1
|
||||
|
||||
format
|
||||
- Scaler/0
|
||||
|
||||
format
|
||||
- Scaler/0
|
||||
|
||||
compose selection rectangle
|
||||
- Scaler/1
|
||||
|
||||
format
|
||||
* - Initial state
|
||||
- 2048x1536/SGRBG8_1X8
|
||||
- 2048x1536
|
||||
|
||||
SGRBG8_1X8
|
||||
- (default)
|
||||
- (default)
|
||||
- (default)
|
||||
- (default)
|
||||
- (default)
|
||||
* - Configure frontend sink format
|
||||
- 2048x1536/SGRBG8_1X8
|
||||
- *2048x1536/SGRBG8_1X8*
|
||||
- *2046x1534/SGRBG8_1X8*
|
||||
- 2048x1536
|
||||
|
||||
SGRBG8_1X8
|
||||
- *2048x1536*
|
||||
|
||||
*SGRBG8_1X8*
|
||||
- *2046x1534*
|
||||
|
||||
*SGRBG8_1X8*
|
||||
- (default)
|
||||
- (default)
|
||||
- (default)
|
||||
* - Configure scaler sink format
|
||||
- 2048x1536/SGRBG8_1X8
|
||||
- 2048x1536/SGRBG8_1X8
|
||||
- 2046x1534/SGRBG8_1X8
|
||||
- *2046x1534/SGRBG8_1X8*
|
||||
- 2048x1536
|
||||
|
||||
SGRBG8_1X8
|
||||
- 2048x1536
|
||||
|
||||
SGRBG8_1X8
|
||||
- 2046x1534
|
||||
|
||||
SGRBG8_1X8
|
||||
- *2046x1534*
|
||||
|
||||
*SGRBG8_1X8*
|
||||
- *0,0/2046x1534*
|
||||
- *2046x1534/SGRBG8_1X8*
|
||||
- *2046x1534*
|
||||
|
||||
*SGRBG8_1X8*
|
||||
* - Configure scaler sink compose selection
|
||||
- 2048x1536/SGRBG8_1X8
|
||||
- 2048x1536/SGRBG8_1X8
|
||||
- 2046x1534/SGRBG8_1X8
|
||||
- 2046x1534/SGRBG8_1X8
|
||||
- 2048x1536
|
||||
|
||||
SGRBG8_1X8
|
||||
- 2048x1536
|
||||
|
||||
SGRBG8_1X8
|
||||
- 2046x1534
|
||||
|
||||
SGRBG8_1X8
|
||||
- 2046x1534
|
||||
|
||||
SGRBG8_1X8
|
||||
- *0,0/1280x960*
|
||||
- *1280x960/SGRBG8_1X8*
|
||||
- *1280x960*
|
||||
|
||||
*SGRBG8_1X8*
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ enum v4l2_exposure_metering -
|
|||
Determines how the camera measures the amount of light available for
|
||||
the frame exposure. Possible values are:
|
||||
|
||||
.. tabularcolumns:: |p{8.5cm}|p{9.0cm}|
|
||||
.. tabularcolumns:: |p{8.7cm}|p{8.8cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -180,7 +180,7 @@ enum v4l2_exposure_metering -
|
|||
control may stop updates of the ``V4L2_CID_AUTO_FOCUS_STATUS``
|
||||
control value.
|
||||
|
||||
.. tabularcolumns:: |p{6.5cm}|p{11.0cm}|
|
||||
.. tabularcolumns:: |p{6.7cm}|p{10.8cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -206,7 +206,7 @@ enum v4l2_exposure_metering -
|
|||
enum v4l2_auto_focus_range -
|
||||
Determines auto focus distance range for which lens may be adjusted.
|
||||
|
||||
.. tabularcolumns:: |p{6.5cm}|p{11.0cm}|
|
||||
.. tabularcolumns:: |p{6.8cm}|p{10.7cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -281,7 +281,7 @@ enum v4l2_auto_n_preset_white_balance -
|
|||
representation. The following white balance presets are listed in
|
||||
order of increasing color temperature.
|
||||
|
||||
.. tabularcolumns:: |p{7.0 cm}|p{10.5cm}|
|
||||
.. tabularcolumns:: |p{7.2 cm}|p{10.3cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -387,7 +387,11 @@ enum v4l2_scene_mode -
|
|||
to ``V4L2_SCENE_MODE_NONE`` to make sure the other possibly related
|
||||
controls are accessible. The following scene programs are defined:
|
||||
|
||||
.. tabularcolumns:: |p{6.0cm}|p{11.5cm}|
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. tabularcolumns:: |p{5.9cm}|p{11.5cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -459,6 +463,9 @@ enum v4l2_scene_mode -
|
|||
may be switched to close-up mode and this setting may also involve
|
||||
some lens-distortion correction.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
||||
``V4L2_CID_3A_LOCK (bitmask)``
|
||||
|
|
|
@ -105,7 +105,7 @@ enum v4l2_mpeg_stream_vbi_fmt -
|
|||
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{6 cm}|p{11.5cm}|
|
||||
.. tabularcolumns:: |p{6.6 cm}|p{10.9cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -477,7 +477,7 @@ enum v4l2_mpeg_audio_dec_playback -
|
|||
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{9.0cm}|p{8.5cm}|
|
||||
.. tabularcolumns:: |p{9.8cm}|p{7.7cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -888,7 +888,7 @@ enum v4l2_mpeg_video_multi_slice_mode -
|
|||
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{8.7cm}|p{8.8cm}|
|
||||
.. tabularcolumns:: |p{9.6cm}|p{7.9cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -923,9 +923,11 @@ enum v4l2_mpeg_video_multi_slice_mode -
|
|||
enum v4l2_mpeg_video_h264_loop_filter_mode -
|
||||
Loop filter mode for H264 encoder. Possible values are:
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. tabularcolumns:: |p{14.0cm}|p{3.5cm}|
|
||||
.. tabularcolumns:: |p{13.6cm}|p{3.9cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -938,6 +940,9 @@ enum v4l2_mpeg_video_h264_loop_filter_mode -
|
|||
* - ``V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY``
|
||||
- Loop filter is disabled at the slice boundary.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (integer)``
|
||||
|
@ -964,6 +969,8 @@ enum v4l2_mpeg_video_h264_entropy_mode -
|
|||
encoder. Possible values are:
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{9.0cm}|p{8.5cm}|
|
||||
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -1048,6 +1055,30 @@ enum v4l2_mpeg_video_h264_entropy_mode -
|
|||
Quantization parameter for an B frame for H264. Valid range: from 0
|
||||
to 51.
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (integer)``
|
||||
Minimum quantization parameter for the H264 I frame to limit I frame
|
||||
quality to a range. Valid range: from 0 to 51. If
|
||||
V4L2_CID_MPEG_VIDEO_H264_MIN_QP is also set, the quantization parameter
|
||||
should be chosen to meet both requirements.
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (integer)``
|
||||
Maximum quantization parameter for the H264 I frame to limit I frame
|
||||
quality to a range. Valid range: from 0 to 51. If
|
||||
V4L2_CID_MPEG_VIDEO_H264_MAX_QP is also set, the quantization parameter
|
||||
should be chosen to meet both requirements.
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (integer)``
|
||||
Minimum quantization parameter for the H264 P frame to limit P frame
|
||||
quality to a range. Valid range: from 0 to 51. If
|
||||
V4L2_CID_MPEG_VIDEO_H264_MIN_QP is also set, the quantization parameter
|
||||
should be chosen to meet both requirements.
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (integer)``
|
||||
Maximum quantization parameter for the H264 P frame to limit P frame
|
||||
quality to a range. Valid range: from 0 to 51. If
|
||||
V4L2_CID_MPEG_VIDEO_H264_MAX_QP is also set, the quantization parameter
|
||||
should be chosen to meet both requirements.
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (integer)``
|
||||
Quantization parameter for an I frame for MPEG4. Valid range: from 1
|
||||
to 31.
|
||||
|
@ -1129,7 +1160,9 @@ enum v4l2_mpeg_video_header_mode -
|
|||
it returned together with the first frame. Applicable to encoders.
|
||||
Possible values are:
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. tabularcolumns:: |p{10.3cm}|p{7.2cm}|
|
||||
|
||||
|
@ -1143,6 +1176,9 @@ enum v4l2_mpeg_video_header_mode -
|
|||
- The stream header is returned together with the first encoded
|
||||
frame.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (boolean)``
|
||||
|
@ -1181,6 +1217,10 @@ enum v4l2_mpeg_video_h264_sei_fp_arrangement_type -
|
|||
Frame packing arrangement type for H264 SEI. Applicable to the H264
|
||||
encoder. Possible values are:
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. tabularcolumns:: |p{12cm}|p{5.5cm}|
|
||||
|
||||
.. flat-table::
|
||||
|
@ -1200,6 +1240,10 @@ enum v4l2_mpeg_video_h264_sei_fp_arrangement_type -
|
|||
* - ``V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL``
|
||||
- One view per frame.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_H264_FMO (boolean)``
|
||||
|
@ -1217,6 +1261,10 @@ enum v4l2_mpeg_video_h264_fmo_map_type -
|
|||
patterns of macroblocks. Applicable to the H264 encoder. Possible
|
||||
values are:
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. tabularcolumns:: |p{12.5cm}|p{5.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
|
@ -1240,6 +1288,10 @@ enum v4l2_mpeg_video_h264_fmo_map_type -
|
|||
* - ``V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT``
|
||||
- User defined map type.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (integer)``
|
||||
|
@ -1361,6 +1413,8 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
|
|||
|
||||
.. cssclass:: longtable
|
||||
|
||||
.. tabularcolumns:: |p{5.8cm}|p{4.8cm}|p{6.6cm}|
|
||||
|
||||
.. flat-table:: struct v4l2_ctrl_mpeg2_slice_params
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
@ -1402,6 +1456,8 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
|
|||
|
||||
.. cssclass:: longtable
|
||||
|
||||
.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
|
||||
|
||||
.. flat-table:: struct v4l2_mpeg2_sequence
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
@ -1433,6 +1489,8 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
|
|||
|
||||
.. cssclass:: longtable
|
||||
|
||||
.. tabularcolumns:: |p{1.5cm}|p{6.3cm}|p{9.4cm}|
|
||||
|
||||
.. flat-table:: struct v4l2_mpeg2_picture
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
@ -1492,6 +1550,12 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
|
|||
|
||||
.. cssclass:: longtable
|
||||
|
||||
.. tabularcolumns:: |p{1.2cm}|p{8.0cm}|p{7.4cm}|
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. flat-table:: struct v4l2_ctrl_mpeg2_quantization
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
@ -1537,6 +1601,19 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type -
|
|||
non-intra-coded frames, in zigzag scanning order. Only relevant for
|
||||
non-4:2:0 YUV formats.
|
||||
|
||||
``V4L2_CID_FWHT_I_FRAME_QP (integer)``
|
||||
Quantization parameter for an I frame for FWHT. Valid range: from 1
|
||||
to 31.
|
||||
|
||||
``V4L2_CID_FWHT_P_FRAME_QP (integer)``
|
||||
Quantization parameter for a P frame for FWHT. Valid range: from 1
|
||||
to 31.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
||||
MFC 5.1 MPEG Controls
|
||||
=====================
|
||||
|
||||
|
@ -1644,7 +1721,11 @@ enum v4l2_mpeg_mfc51_video_frame_skip_mode -
|
|||
are:
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{9.0cm}|p{8.5cm}|
|
||||
.. tabularcolumns:: |p{9.2cm}|p{8.3cm}|
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -1659,7 +1740,9 @@ enum v4l2_mpeg_mfc51_video_frame_skip_mode -
|
|||
- Frame skip mode enabled and buffer limit is set by the VBV
|
||||
(MPEG1/2/4) or CPB (H264) buffer size control.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
``V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (integer)``
|
||||
Enable rate-control with fixed target bit. If this setting is
|
||||
|
@ -1682,7 +1765,7 @@ enum v4l2_mpeg_mfc51_video_force_frame_type -
|
|||
Force a frame type for the next queued buffer. Applicable to
|
||||
encoders. Possible values are:
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{9.5cm}|p{8.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -1696,6 +1779,125 @@ enum v4l2_mpeg_mfc51_video_force_frame_type -
|
|||
- Force a non-coded frame.
|
||||
|
||||
|
||||
.. _v4l2-mpeg-fwht:
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_FWHT_PARAMS (struct)``
|
||||
Specifies the fwht parameters (as extracted from the bitstream) for the
|
||||
associated FWHT data. This includes the necessary parameters for
|
||||
configuring a stateless hardware decoding pipeline for FWHT.
|
||||
|
||||
.. note::
|
||||
|
||||
This compound control is not yet part of the public kernel API and
|
||||
it is expected to change.
|
||||
|
||||
.. c:type:: v4l2_ctrl_fwht_params
|
||||
|
||||
.. cssclass:: longtable
|
||||
|
||||
.. tabularcolumns:: |p{1.4cm}|p{4.3cm}|p{11.8cm}|
|
||||
|
||||
.. flat-table:: struct v4l2_ctrl_fwht_params
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 1 1 2
|
||||
|
||||
* - __u64
|
||||
- ``backward_ref_ts``
|
||||
- Timestamp of the V4L2 capture buffer to use as backward reference, used
|
||||
with P-coded frames. The timestamp refers to the
|
||||
``timestamp`` field in struct :c:type:`v4l2_buffer`. Use the
|
||||
:c:func:`v4l2_timeval_to_ns()` function to convert the struct
|
||||
:c:type:`timeval` in struct :c:type:`v4l2_buffer` to a __u64.
|
||||
* - __u32
|
||||
- ``version``
|
||||
- The version of the codec
|
||||
* - __u32
|
||||
- ``width``
|
||||
- The width of the frame
|
||||
* - __u32
|
||||
- ``height``
|
||||
- The height of the frame
|
||||
* - __u32
|
||||
- ``flags``
|
||||
- The flags of the frame, see :ref:`fwht-flags`.
|
||||
* - __u32
|
||||
- ``colorspace``
|
||||
- The colorspace of the frame, from enum :c:type:`v4l2_colorspace`.
|
||||
* - __u32
|
||||
- ``xfer_func``
|
||||
- The transfer function, from enum :c:type:`v4l2_xfer_func`.
|
||||
* - __u32
|
||||
- ``ycbcr_enc``
|
||||
- The Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`.
|
||||
* - __u32
|
||||
- ``quantization``
|
||||
- The quantization range, from enum :c:type:`v4l2_quantization`.
|
||||
|
||||
|
||||
|
||||
.. _fwht-flags:
|
||||
|
||||
FWHT Flags
|
||||
============
|
||||
|
||||
.. cssclass:: longtable
|
||||
|
||||
.. tabularcolumns:: |p{6.8cm}|p{2.4cm}|p{8.3cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 3 1 4
|
||||
|
||||
* - ``FWHT_FL_IS_INTERLACED``
|
||||
- 0x00000001
|
||||
- Set if this is an interlaced format
|
||||
* - ``FWHT_FL_IS_BOTTOM_FIRST``
|
||||
- 0x00000002
|
||||
- Set if this is a bottom-first (NTSC) interlaced format
|
||||
* - ``FWHT_FL_IS_ALTERNATE``
|
||||
- 0x00000004
|
||||
- Set if each 'frame' contains just one field
|
||||
* - ``FWHT_FL_IS_BOTTOM_FIELD``
|
||||
- 0x00000008
|
||||
- If FWHT_FL_IS_ALTERNATE was set, then this is set if this 'frame' is the
|
||||
bottom field, else it is the top field.
|
||||
* - ``FWHT_FL_LUMA_IS_UNCOMPRESSED``
|
||||
- 0x00000010
|
||||
- Set if the luma plane is uncompressed
|
||||
* - ``FWHT_FL_CB_IS_UNCOMPRESSED``
|
||||
- 0x00000020
|
||||
- Set if the cb plane is uncompressed
|
||||
* - ``FWHT_FL_CR_IS_UNCOMPRESSED``
|
||||
- 0x00000040
|
||||
- Set if the cr plane is uncompressed
|
||||
* - ``FWHT_FL_CHROMA_FULL_HEIGHT``
|
||||
- 0x00000080
|
||||
- Set if the chroma plane has the same height as the luma plane,
|
||||
else the chroma plane is half the height of the luma plane
|
||||
* - ``FWHT_FL_CHROMA_FULL_WIDTH``
|
||||
- 0x00000100
|
||||
- Set if the chroma plane has the same width as the luma plane,
|
||||
else the chroma plane is half the width of the luma plane
|
||||
* - ``FWHT_FL_ALPHA_IS_UNCOMPRESSED``
|
||||
- 0x00000200
|
||||
- Set if the alpha plane is uncompressed
|
||||
* - ``FWHT_FL_I_FRAME``
|
||||
- 0x00000400
|
||||
- Set if this is an I-frame
|
||||
* - ``FWHT_FL_COMPONENTS_NUM_MSK``
|
||||
- 0x00070000
|
||||
- A 4-values flag - the number of components - 1
|
||||
* - ``FWHT_FL_PIXENC_YUV``
|
||||
- 0x00080000
|
||||
- Set if the pixel encoding is YUV
|
||||
* - ``FWHT_FL_PIXENC_RGB``
|
||||
- 0x00100000
|
||||
- Set if the pixel encoding is RGB
|
||||
* - ``FWHT_FL_PIXENC_HSV``
|
||||
- 0x00180000
|
||||
- Set if the pixel encoding is HSV
|
||||
|
||||
|
||||
CX2341x MPEG Controls
|
||||
|
@ -1745,10 +1947,12 @@ enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type -
|
|||
Select the algorithm to use for the Luma Spatial Filter (default
|
||||
``1D_HOR``). Possible values:
|
||||
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{14.5cm}|p{3.0cm}|
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
@ -1764,6 +1968,10 @@ enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type -
|
|||
* - ``V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE``
|
||||
- Two-dimensional symmetrical non-separable
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
||||
|
||||
.. _chroma-spatial-filter-type:
|
||||
|
@ -1776,6 +1984,7 @@ enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type -
|
|||
``1D_HOR``). Possible values are:
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{14.0cm}|p{3.5cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -1918,6 +2127,10 @@ enum v4l2_vp8_num_ref_frames -
|
|||
|
||||
.. tabularcolumns:: |p{7.9cm}|p{9.6cm}|
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
@ -1932,6 +2145,10 @@ enum v4l2_vp8_num_ref_frames -
|
|||
- The last encoded frame, the golden frame and the altref frame will
|
||||
be searched.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
||||
|
||||
``V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (integer)``
|
||||
|
@ -1961,7 +2178,7 @@ enum v4l2_vp8_golden_frame_sel -
|
|||
|
||||
.. raw:: latex
|
||||
|
||||
\footnotesize
|
||||
\scriptsize
|
||||
|
||||
.. tabularcolumns:: |p{9.0cm}|p{8.0cm}|
|
||||
|
||||
|
@ -2283,7 +2500,7 @@ enum v4l2_mpeg_video_hevc_loop_filter_mode -
|
|||
|
||||
\footnotesize
|
||||
|
||||
.. tabularcolumns:: |p{10.7cm}|p{6.3cm}|
|
||||
.. tabularcolumns:: |p{12.1cm}|p{5.4cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
|
|
@ -30,7 +30,7 @@ Detect Control IDs
|
|||
``V4L2_CID_DETECT_MD_MODE (menu)``
|
||||
Sets the motion detection mode.
|
||||
|
||||
.. tabularcolumns:: |p{7.5cm}|p{10.0cm}|
|
||||
.. tabularcolumns:: |p{7.7cm}|p{9.8cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
|
|
@ -106,7 +106,7 @@ enum v4l2_dv_it_content_type -
|
|||
or an analog source. The enum v4l2_dv_it_content_type defines
|
||||
the possible content types:
|
||||
|
||||
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
|
||||
.. tabularcolumns:: |p{7.3cm}|p{10.4cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
|
|
@ -87,7 +87,7 @@ Flash Control IDs
|
|||
``V4L2_CID_FLASH_STROBE_SOURCE (menu)``
|
||||
Defines the source of the flash LED strobe.
|
||||
|
||||
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
|
||||
.. tabularcolumns:: |p{7.5cm}|p{10.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
@ -146,7 +146,7 @@ Flash Control IDs
|
|||
an effect is chip dependent. Reading the faults resets the control
|
||||
and returns the chip to a usable state if possible.
|
||||
|
||||
.. tabularcolumns:: |p{8.0cm}|p{9.5cm}|
|
||||
.. tabularcolumns:: |p{8.4cm}|p{9.1cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
|
|
@ -37,7 +37,7 @@ JPEG Control IDs
|
|||
how Cb and Cr components are downsampled after converting an input
|
||||
image from RGB to Y'CbCr color space.
|
||||
|
||||
.. tabularcolumns:: |p{7.0cm}|p{10.5cm}|
|
||||
.. tabularcolumns:: |p{7.5cm}|p{10.0cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
|
|
@ -64,7 +64,9 @@ enum v4l2_field
|
|||
|
||||
.. c:type:: v4l2_field
|
||||
|
||||
.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.7cm}|
|
||||
.. tabularcolumns:: |p{5.8cm}|p{0.6cm}|p{11.1cm}|
|
||||
|
||||
.. cssclass:: longtable
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
|
|
@ -125,3 +125,9 @@ Compressed Formats
|
|||
- 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 codec-fwht.h header for more details.
|
||||
* .. _V4L2-PIX-FMT-FWHT-STATELESS:
|
||||
|
||||
- ``V4L2_PIX_FMT_FWHT_STATELESS``
|
||||
- 'SFWH'
|
||||
- Same format as V4L2_PIX_FMT_FWHT but requires stateless codec implementation.
|
||||
See the :ref:`associated Codec Control IDs <v4l2-mpeg-fwht>`.
|
||||
|
|
|
@ -36,13 +36,16 @@ per frame, therefore their headers cannot be larger than 255 bytes.
|
|||
Below are proprietary Microsoft style metadata types, used by D4xx cameras,
|
||||
where all fields are in little endian order:
|
||||
|
||||
.. tabularcolumns:: |p{5.0cm}|p{12.5cm}|
|
||||
|
||||
|
||||
.. flat-table:: D4xx metadata
|
||||
:widths: 1 4
|
||||
:widths: 1 2
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
* - Field
|
||||
- Description
|
||||
* - **Field**
|
||||
- **Description**
|
||||
* - :cspan:`1` *Depth Control*
|
||||
* - __u32 ID
|
||||
- 0x80000000
|
||||
|
|
|
@ -41,6 +41,10 @@ The Hue position **m** (0 - 5) of the bucket in the matrix depends on
|
|||
how the HGT Hue areas are configured. There are 6 user configurable Hue
|
||||
Areas which can be configured to cover overlapping Hue values:
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
::
|
||||
|
||||
Area 0 Area 1 Area 2 Area 3 Area 4 Area 5
|
||||
|
@ -53,6 +57,11 @@ Areas which can be configured to cover overlapping Hue values:
|
|||
5U 0L 0U 1L 1U 2L 2U 3L 3U 4L 4U 5L 5U 0L
|
||||
<0..............................Hue Value............................255>
|
||||
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
When two consecutive areas don't overlap (n+1L is equal to nU) the boundary
|
||||
value is considered as part of the lower area.
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ The values are packed in 24 or 32 bit formats.
|
|||
\tiny
|
||||
\setlength{\tabcolsep}{2pt}
|
||||
|
||||
.. tabularcolumns:: |p{2.0cm}|p{0.54cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||
.. tabularcolumns:: |p{2.6cm}|p{0.8cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||
|
||||
.. _packed-hsv-formats:
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ next to each other in memory.
|
|||
\tiny
|
||||
\setlength{\tabcolsep}{2pt}
|
||||
|
||||
.. tabularcolumns:: |p{2.3cm}|p{1.6cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||
.. tabularcolumns:: |p{2.8cm}|p{2.0cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||
|
||||
|
||||
.. _rgb-formats:
|
||||
|
@ -139,6 +139,144 @@ next to each other in memory.
|
|||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-RGBA444:
|
||||
|
||||
- ``V4L2_PIX_FMT_RGBA444``
|
||||
- 'RA12'
|
||||
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
- a\ :sub:`3`
|
||||
- a\ :sub:`2`
|
||||
- a\ :sub:`1`
|
||||
- a\ :sub:`0`
|
||||
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-RGBX444:
|
||||
|
||||
- ``V4L2_PIX_FMT_RGBX444``
|
||||
- 'RX12'
|
||||
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-ABGR444:
|
||||
|
||||
- ``V4L2_PIX_FMT_ABGR444``
|
||||
- 'AB12'
|
||||
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
|
||||
- a\ :sub:`3`
|
||||
- a\ :sub:`2`
|
||||
- a\ :sub:`1`
|
||||
- a\ :sub:`0`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-XBGR444:
|
||||
|
||||
- ``V4L2_PIX_FMT_XBGR444``
|
||||
- 'XB12'
|
||||
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-BGRA444:
|
||||
|
||||
- ``V4L2_PIX_FMT_BGRA444``
|
||||
- 'BA12'
|
||||
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
- a\ :sub:`3`
|
||||
- a\ :sub:`2`
|
||||
- a\ :sub:`1`
|
||||
- a\ :sub:`0`
|
||||
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-BGRX444:
|
||||
|
||||
- ``V4L2_PIX_FMT_BGRX444``
|
||||
- 'BX12'
|
||||
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-ARGB555:
|
||||
|
||||
- ``V4L2_PIX_FMT_ARGB555``
|
||||
|
@ -185,6 +323,144 @@ next to each other in memory.
|
|||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-RGBA555:
|
||||
|
||||
- ``V4L2_PIX_FMT_RGBA555``
|
||||
- 'RA15'
|
||||
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
- a
|
||||
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-RGBX555:
|
||||
|
||||
- ``V4L2_PIX_FMT_RGBX555``
|
||||
- 'RX15'
|
||||
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
-
|
||||
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-ABGR555:
|
||||
|
||||
- ``V4L2_PIX_FMT_ABGR555``
|
||||
- 'AB15'
|
||||
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
|
||||
- a
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-XBGR555:
|
||||
|
||||
- ``V4L2_PIX_FMT_XBGR555``
|
||||
- 'XB15'
|
||||
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
|
||||
-
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-BGRA555:
|
||||
|
||||
- ``V4L2_PIX_FMT_BGRA555``
|
||||
- 'BA15'
|
||||
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
- a
|
||||
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-BGRX555:
|
||||
|
||||
- ``V4L2_PIX_FMT_BGRX555``
|
||||
- 'BX15'
|
||||
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
-
|
||||
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-RGB565:
|
||||
|
||||
- ``V4L2_PIX_FMT_RGB565``
|
||||
|
@ -453,6 +729,166 @@ next to each other in memory.
|
|||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
* .. _V4L2-PIX-FMT-BGRA32:
|
||||
|
||||
- ``V4L2_PIX_FMT_BGRA32``
|
||||
- 'RA24'
|
||||
|
||||
- a\ :sub:`7`
|
||||
- a\ :sub:`6`
|
||||
- a\ :sub:`5`
|
||||
- a\ :sub:`4`
|
||||
- a\ :sub:`3`
|
||||
- a\ :sub:`2`
|
||||
- a\ :sub:`1`
|
||||
- a\ :sub:`0`
|
||||
|
||||
- b\ :sub:`7`
|
||||
- b\ :sub:`6`
|
||||
- b\ :sub:`5`
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
|
||||
- g\ :sub:`7`
|
||||
- g\ :sub:`6`
|
||||
- g\ :sub:`5`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
|
||||
- r\ :sub:`7`
|
||||
- r\ :sub:`6`
|
||||
- r\ :sub:`5`
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
* .. _V4L2-PIX-FMT-BGRX32:
|
||||
|
||||
- ``V4L2_PIX_FMT_BGRX32``
|
||||
- 'RX24'
|
||||
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
|
||||
- b\ :sub:`7`
|
||||
- b\ :sub:`6`
|
||||
- b\ :sub:`5`
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
|
||||
- g\ :sub:`7`
|
||||
- g\ :sub:`6`
|
||||
- g\ :sub:`5`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
|
||||
- r\ :sub:`7`
|
||||
- r\ :sub:`6`
|
||||
- r\ :sub:`5`
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
* .. _V4L2-PIX-FMT-RGBA32:
|
||||
|
||||
- ``V4L2_PIX_FMT_RGBA32``
|
||||
- 'AB24'
|
||||
|
||||
- r\ :sub:`7`
|
||||
- r\ :sub:`6`
|
||||
- r\ :sub:`5`
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
|
||||
- g\ :sub:`7`
|
||||
- g\ :sub:`6`
|
||||
- g\ :sub:`5`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
|
||||
- b\ :sub:`7`
|
||||
- b\ :sub:`6`
|
||||
- b\ :sub:`5`
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
|
||||
- a\ :sub:`7`
|
||||
- a\ :sub:`6`
|
||||
- a\ :sub:`5`
|
||||
- a\ :sub:`4`
|
||||
- a\ :sub:`3`
|
||||
- a\ :sub:`2`
|
||||
- a\ :sub:`1`
|
||||
- a\ :sub:`0`
|
||||
* .. _V4L2-PIX-FMT-RGBX32:
|
||||
|
||||
- ``V4L2_PIX_FMT_RGBX32``
|
||||
- 'XB24'
|
||||
|
||||
- r\ :sub:`7`
|
||||
- r\ :sub:`6`
|
||||
- r\ :sub:`5`
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
|
||||
- g\ :sub:`7`
|
||||
- g\ :sub:`6`
|
||||
- g\ :sub:`5`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
|
||||
- b\ :sub:`7`
|
||||
- b\ :sub:`6`
|
||||
- b\ :sub:`5`
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
|
||||
-
|
||||
-
|
||||
-
|
||||
|
@ -656,7 +1092,7 @@ either the corresponding ARGB or XRGB format, depending on the driver.
|
|||
\tiny
|
||||
\setlength{\tabcolsep}{2pt}
|
||||
|
||||
.. tabularcolumns:: |p{2.2cm}|p{0.60cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||
.. tabularcolumns:: |p{2.6cm}|p{0.70cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||
|
||||
.. _rgb-formats-deprecated:
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||
|
||||
.. _packed-yuv-formats:
|
||||
|
||||
.. tabularcolumns:: |p{2.0cm}|p{0.67cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|p{0.29cm}|
|
||||
.. tabularcolumns:: |p{2.5cm}|p{0.69cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|
|
||||
|
||||
.. flat-table:: Packed YUV Image Formats
|
||||
:header-rows: 2
|
||||
|
@ -44,6 +44,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||
- :cspan:`7` Byte 2
|
||||
|
||||
- :cspan:`7` Byte 3
|
||||
|
||||
* -
|
||||
-
|
||||
- 7
|
||||
|
@ -81,6 +82,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||
- 2
|
||||
- 1
|
||||
- 0
|
||||
|
||||
* .. _V4L2-PIX-FMT-YUV444:
|
||||
|
||||
- ``V4L2_PIX_FMT_YUV444``
|
||||
|
@ -103,7 +105,9 @@ component of each pixel in one 16 or 32 bit word.
|
|||
- Y'\ :sub:`2`
|
||||
- Y'\ :sub:`1`
|
||||
- Y'\ :sub:`0`
|
||||
-
|
||||
|
||||
- :cspan:`15`
|
||||
|
||||
* .. _V4L2-PIX-FMT-YUV555:
|
||||
|
||||
- ``V4L2_PIX_FMT_YUV555``
|
||||
|
@ -126,7 +130,8 @@ component of each pixel in one 16 or 32 bit word.
|
|||
- Y'\ :sub:`0`
|
||||
- Cb\ :sub:`4`
|
||||
- Cb\ :sub:`3`
|
||||
-
|
||||
|
||||
- :cspan:`15`
|
||||
* .. _V4L2-PIX-FMT-YUV565:
|
||||
|
||||
- ``V4L2_PIX_FMT_YUV565``
|
||||
|
@ -149,7 +154,9 @@ component of each pixel in one 16 or 32 bit word.
|
|||
- Cb\ :sub:`5`
|
||||
- Cb\ :sub:`4`
|
||||
- Cb\ :sub:`3`
|
||||
-
|
||||
|
||||
- :cspan:`15`
|
||||
|
||||
* .. _V4L2-PIX-FMT-YUV32:
|
||||
|
||||
- ``V4L2_PIX_FMT_YUV32``
|
||||
|
@ -190,7 +197,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||
- Cr\ :sub:`2`
|
||||
- Cr\ :sub:`1`
|
||||
- Cr\ :sub:`0`
|
||||
-
|
||||
|
||||
* .. _V4L2-PIX-FMT-AYUV32:
|
||||
|
||||
- ``V4L2_PIX_FMT_AYUV32``
|
||||
|
@ -231,7 +238,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||
- Cr\ :sub:`2`
|
||||
- Cr\ :sub:`1`
|
||||
- Cr\ :sub:`0`
|
||||
-
|
||||
|
||||
* .. _V4L2-PIX-FMT-XYUV32:
|
||||
|
||||
- ``V4L2_PIX_FMT_XYUV32``
|
||||
|
@ -272,7 +279,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||
- Cr\ :sub:`2`
|
||||
- Cr\ :sub:`1`
|
||||
- Cr\ :sub:`0`
|
||||
-
|
||||
|
||||
* .. _V4L2-PIX-FMT-VUYA32:
|
||||
|
||||
- ``V4L2_PIX_FMT_VUYA32``
|
||||
|
@ -313,7 +320,7 @@ component of each pixel in one 16 or 32 bit word.
|
|||
- a\ :sub:`2`
|
||||
- a\ :sub:`1`
|
||||
- a\ :sub:`0`
|
||||
-
|
||||
|
||||
* .. _V4L2-PIX-FMT-VUYX32:
|
||||
|
||||
- ``V4L2_PIX_FMT_VUYX32``
|
||||
|
|
|
@ -40,7 +40,7 @@ of a small V4L2_PIX_FMT_SBGGR10P image:
|
|||
**Byte Order.**
|
||||
Each cell is one byte.
|
||||
|
||||
.. tabularcolumns:: |p{2.0cm}|p{1.0cm}|p{1.0cm}|p{1.0cm}|p{1.0cm}|p{5.4cm}|
|
||||
.. tabularcolumns:: |p{2.4cm}|p{1.4cm}|p{1.2cm}|p{1.2cm}|p{1.2cm}|p{6.4cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
|
|
|
@ -18,6 +18,7 @@ V4L2_PIX_FMT_SRGGB12P ('pRAA'), V4L2_PIX_FMT_SGRBG12P ('pgAA'), V4L2_PIX_FMT_SGB
|
|||
|
||||
|
||||
12-bit packed Bayer formats
|
||||
---------------------------
|
||||
|
||||
|
||||
Description
|
||||
|
@ -37,7 +38,7 @@ Below is an example of a small V4L2_PIX_FMT_SBGGR12P image:
|
|||
**Byte Order.**
|
||||
Each cell is one byte.
|
||||
|
||||
.. tabularcolumns:: |p{2.0cm}|p{1.0cm}|p{1.0cm}|p{2.7cm}|p{1.0cm}|p{1.0cm}|p{2.7cm}|
|
||||
.. tabularcolumns:: |p{2.2cm}|p{1.2cm}|p{1.2cm}|p{3.1cm}|p{1.2cm}|p{1.2cm}|p{3.1cm}|
|
||||
|
||||
|
||||
.. flat-table::
|
||||
|
|
|
@ -41,17 +41,21 @@ of one of these formats:
|
|||
**Byte Order.**
|
||||
Each cell is one byte.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\footnotesize
|
||||
|
||||
.. tabularcolumns:: |p{1.8cm}|p{1.0cm}|p{1.0cm}|p{1.0cm}|p{1.1cm}|p{3.3cm}|p{3.3cm}|p{3.3cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
:widths: 2 1 1 1 1 1 1 1
|
||||
:widths: 2 1 1 1 1 3 3 3
|
||||
|
||||
|
||||
- .. row 1
|
||||
|
||||
- start + 0:
|
||||
- start + 0
|
||||
|
||||
- B\ :sub:`00high`
|
||||
|
||||
|
@ -62,17 +66,20 @@ Each cell is one byte.
|
|||
- 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:
|
||||
- start + 7
|
||||
|
||||
- G\ :sub:`00high`
|
||||
|
||||
|
@ -83,12 +90,15 @@ Each cell is one byte.
|
|||
- 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
|
||||
|
@ -104,12 +114,15 @@ Each cell is one byte.
|
|||
- 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
|
||||
|
@ -132,3 +145,8 @@ Each cell is one byte.
|
|||
|
||||
- R\ :sub:`33low bits 5--0`\ (bits 7--2)
|
||||
G\ :sub:`32low bits 5--4`\ (bits 1--0)
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ array of struct :c:type:`v4l2_plane_pix_format` structures,
|
|||
describing all planes of that format.
|
||||
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
||||
|
||||
.. c:type:: v4l2_plane_pix_format
|
||||
|
@ -41,6 +42,10 @@ describing all planes of that format.
|
|||
applications.
|
||||
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. tabularcolumns:: |p{4.4cm}|p{5.6cm}|p{7.5cm}|
|
||||
|
||||
.. c:type:: v4l2_pix_format_mplane
|
||||
|
@ -82,9 +87,7 @@ describing all planes of that format.
|
|||
* - __u8
|
||||
- ``flags``
|
||||
- Flags set by the application or driver, see :ref:`format-flags`.
|
||||
* - union {
|
||||
- (anonymous)
|
||||
-
|
||||
* - :cspan:`2` union { (anonymous)
|
||||
* - __u8
|
||||
- ``ycbcr_enc``
|
||||
- Y'CbCr encoding, from enum :c:type:`v4l2_ycbcr_encoding`.
|
||||
|
@ -97,9 +100,7 @@ describing all planes of that format.
|
|||
This information supplements the ``colorspace`` and must be set by
|
||||
the driver for capture streams and by the application for output
|
||||
streams, see :ref:`colorspaces`.
|
||||
* - }
|
||||
-
|
||||
-
|
||||
* - :cspan:`2` }
|
||||
* - __u8
|
||||
- ``quantization``
|
||||
- Quantization range, from enum :c:type:`v4l2_quantization`.
|
||||
|
@ -116,3 +117,7 @@ describing all planes of that format.
|
|||
- ``reserved[7]``
|
||||
- Reserved for future extensions. Should be zeroed by drivers and
|
||||
applications.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
|
|
@ -27,6 +27,12 @@ in the same order.
|
|||
|
||||
**Bit-packed representation.**
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\small
|
||||
|
||||
.. tabularcolumns:: |p{1.2cm}||p{1.2cm}||p{1.2cm}||p{1.2cm}|p{3.2cm}|p{3.2cm}|
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
@ -38,3 +44,7 @@ in the same order.
|
|||
- 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)
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
\normalsize
|
||||
|
|
|
@ -980,6 +980,113 @@ The following tables list existing packed RGB formats.
|
|||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
* .. _MEDIA-BUS-FMT-BGR888-3X8:
|
||||
|
||||
- MEDIA_BUS_FMT_BGR888_3X8
|
||||
- 0x101b
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
- b\ :sub:`7`
|
||||
- b\ :sub:`6`
|
||||
- b\ :sub:`5`
|
||||
- b\ :sub:`4`
|
||||
- b\ :sub:`3`
|
||||
- b\ :sub:`2`
|
||||
- b\ :sub:`1`
|
||||
- b\ :sub:`0`
|
||||
* -
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
- g\ :sub:`7`
|
||||
- g\ :sub:`6`
|
||||
- g\ :sub:`5`
|
||||
- g\ :sub:`4`
|
||||
- g\ :sub:`3`
|
||||
- g\ :sub:`2`
|
||||
- g\ :sub:`1`
|
||||
- g\ :sub:`0`
|
||||
* -
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
-
|
||||
- r\ :sub:`7`
|
||||
- r\ :sub:`6`
|
||||
- r\ :sub:`5`
|
||||
- r\ :sub:`4`
|
||||
- r\ :sub:`3`
|
||||
- r\ :sub:`2`
|
||||
- r\ :sub:`1`
|
||||
- r\ :sub:`0`
|
||||
* .. _MEDIA-BUS-FMT-GBR888-1X24:
|
||||
|
||||
- MEDIA_BUS_FMT_GBR888_1X24
|
||||
|
@ -7414,7 +7521,7 @@ The following table lists existing HSV/HSL formats.
|
|||
\tiny
|
||||
\setlength{\tabcolsep}{2pt}
|
||||
|
||||
.. tabularcolumns:: |p{3.0cm}|p{0.60cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||
.. tabularcolumns:: |p{3.9cm}|p{0.73cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|p{0.22cm}|
|
||||
|
||||
.. _v4l2-mbus-pixelcode-hsv:
|
||||
|
||||
|
@ -7524,7 +7631,7 @@ The following table lists existing JPEG compressed formats.
|
|||
|
||||
.. _v4l2-mbus-pixelcode-jpeg:
|
||||
|
||||
.. tabularcolumns:: |p{5.4cm}|p{1.4cm}|p{10.7cm}|
|
||||
.. tabularcolumns:: |p{6.0cm}|p{1.4cm}|p{10.1cm}|
|
||||
|
||||
.. flat-table:: JPEG Formats
|
||||
:header-rows: 1
|
||||
|
@ -7557,7 +7664,7 @@ formats.
|
|||
|
||||
.. _v4l2-mbus-pixelcode-vendor-specific:
|
||||
|
||||
.. tabularcolumns:: |p{6.8cm}|p{1.4cm}|p{9.3cm}|
|
||||
.. tabularcolumns:: |p{8.0cm}|p{1.4cm}|p{7.7cm}|
|
||||
|
||||
.. flat-table:: Vendor and device specific formats
|
||||
:header-rows: 1
|
||||
|
|
|
@ -111,7 +111,7 @@ in use. Setting it means that the buffer will not be passed to the driver
|
|||
until the request itself is queued. Also, the driver will apply any
|
||||
settings associated with the request for this buffer. This field will
|
||||
be ignored unless the ``V4L2_BUF_FLAG_REQUEST_FD`` flag is set.
|
||||
If the device does not support requests, then ``EACCES`` will be returned.
|
||||
If the device does not support requests, then ``EBADR`` will be returned.
|
||||
If requests are supported but an invalid request file descriptor is given,
|
||||
then ``EINVAL`` will be returned.
|
||||
|
||||
|
@ -125,7 +125,7 @@ then ``EINVAL`` will be returned.
|
|||
|
||||
For :ref:`memory-to-memory devices <mem2mem>` you can specify the
|
||||
``request_fd`` only for output buffers, not for capture buffers. Attempting
|
||||
to specify this for a capture buffer will result in an ``EACCES`` error.
|
||||
to specify this for a capture buffer will result in an ``EBADR`` error.
|
||||
|
||||
Applications call the ``VIDIOC_DQBUF`` ioctl to dequeue a filled
|
||||
(capturing) or displayed (output) buffer from the driver's outgoing
|
||||
|
@ -185,9 +185,11 @@ EPIPE
|
|||
codecs if a buffer with the ``V4L2_BUF_FLAG_LAST`` was already
|
||||
dequeued and no new buffers are expected to become available.
|
||||
|
||||
EACCES
|
||||
EBADR
|
||||
The ``V4L2_BUF_FLAG_REQUEST_FD`` flag was set but the device does not
|
||||
support requests for the given buffer type.
|
||||
support requests for the given buffer type, or
|
||||
the ``V4L2_BUF_FLAG_REQUEST_FD`` flag was not set but the device requires
|
||||
that the buffer is part of a request.
|
||||
|
||||
EBUSY
|
||||
The first buffer was queued via a request, but the application now tries
|
||||
|
|
|
@ -65,5 +65,4 @@ For more details see the file COPYING in the source distribution of Linux.
|
|||
soc-camera
|
||||
uvcvideo
|
||||
vivid
|
||||
zoran
|
||||
zr364xx
|
||||
|
|
|
@ -1,583 +0,0 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
The Zoran driver
|
||||
================
|
||||
|
||||
unified zoran driver (zr360x7, zoran, buz, dc10(+), dc30(+), lml33)
|
||||
|
||||
website: http://mjpeg.sourceforge.net/driver-zoran/
|
||||
|
||||
|
||||
Frequently Asked Questions
|
||||
--------------------------
|
||||
|
||||
What cards are supported
|
||||
------------------------
|
||||
|
||||
Iomega Buz, Linux Media Labs LML33/LML33R10, Pinnacle/Miro
|
||||
DC10/DC10+/DC30/DC30+ and related boards (available under various names).
|
||||
|
||||
Iomega Buz
|
||||
~~~~~~~~~~
|
||||
|
||||
* Zoran zr36067 PCI controller
|
||||
* Zoran zr36060 MJPEG codec
|
||||
* Philips saa7111 TV decoder
|
||||
* Philips saa7185 TV encoder
|
||||
|
||||
Drivers to use: videodev, i2c-core, i2c-algo-bit,
|
||||
videocodec, saa7111, saa7185, zr36060, zr36067
|
||||
|
||||
Inputs/outputs: Composite and S-video
|
||||
|
||||
Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
|
||||
|
||||
Card number: 7
|
||||
|
||||
AverMedia 6 Eyes AVS6EYES
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Zoran zr36067 PCI controller
|
||||
* Zoran zr36060 MJPEG codec
|
||||
* Samsung ks0127 TV decoder
|
||||
* Conexant bt866 TV encoder
|
||||
|
||||
Drivers to use: videodev, i2c-core, i2c-algo-bit,
|
||||
videocodec, ks0127, bt866, zr36060, zr36067
|
||||
|
||||
Inputs/outputs:
|
||||
Six physical inputs. 1-6 are composite,
|
||||
1-2, 3-4, 5-6 doubles as S-video,
|
||||
1-3 triples as component.
|
||||
One composite output.
|
||||
|
||||
Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
|
||||
|
||||
Card number: 8
|
||||
|
||||
.. note::
|
||||
|
||||
Not autodetected, card=8 is necessary.
|
||||
|
||||
Linux Media Labs LML33
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Zoran zr36067 PCI controller
|
||||
* Zoran zr36060 MJPEG codec
|
||||
* Brooktree bt819 TV decoder
|
||||
* Brooktree bt856 TV encoder
|
||||
|
||||
Drivers to use: videodev, i2c-core, i2c-algo-bit,
|
||||
videocodec, bt819, bt856, zr36060, zr36067
|
||||
|
||||
Inputs/outputs: Composite and S-video
|
||||
|
||||
Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
|
||||
|
||||
Card number: 5
|
||||
|
||||
Linux Media Labs LML33R10
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Zoran zr36067 PCI controller
|
||||
* Zoran zr36060 MJPEG codec
|
||||
* Philips saa7114 TV decoder
|
||||
* Analog Devices adv7170 TV encoder
|
||||
|
||||
Drivers to use: videodev, i2c-core, i2c-algo-bit,
|
||||
videocodec, saa7114, adv7170, zr36060, zr36067
|
||||
|
||||
Inputs/outputs: Composite and S-video
|
||||
|
||||
Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
|
||||
|
||||
Card number: 6
|
||||
|
||||
Pinnacle/Miro DC10(new)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Zoran zr36057 PCI controller
|
||||
* Zoran zr36060 MJPEG codec
|
||||
* Philips saa7110a TV decoder
|
||||
* Analog Devices adv7176 TV encoder
|
||||
|
||||
Drivers to use: videodev, i2c-core, i2c-algo-bit,
|
||||
videocodec, saa7110, adv7175, zr36060, zr36067
|
||||
|
||||
Inputs/outputs: Composite, S-video and Internal
|
||||
|
||||
Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
|
||||
|
||||
Card number: 1
|
||||
|
||||
Pinnacle/Miro DC10+
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Zoran zr36067 PCI controller
|
||||
* Zoran zr36060 MJPEG codec
|
||||
* Philips saa7110a TV decoder
|
||||
* Analog Devices adv7176 TV encoder
|
||||
|
||||
Drivers to use: videodev, i2c-core, i2c-algo-bit,
|
||||
videocodec, sa7110, adv7175, zr36060, zr36067
|
||||
|
||||
Inputs/outputs: Composite, S-video and Internal
|
||||
|
||||
Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
|
||||
|
||||
Card number: 2
|
||||
|
||||
Pinnacle/Miro DC10(old)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Zoran zr36057 PCI controller
|
||||
* Zoran zr36050 MJPEG codec
|
||||
* Zoran zr36016 Video Front End or Fuji md0211 Video Front End (clone?)
|
||||
* Micronas vpx3220a TV decoder
|
||||
* mse3000 TV encoder or Analog Devices adv7176 TV encoder
|
||||
|
||||
Drivers to use: videodev, i2c-core, i2c-algo-bit,
|
||||
videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067
|
||||
|
||||
Inputs/outputs: Composite, S-video and Internal
|
||||
|
||||
Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
|
||||
|
||||
Card number: 0
|
||||
|
||||
Pinnacle/Miro DC30
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Zoran zr36057 PCI controller
|
||||
* Zoran zr36050 MJPEG codec
|
||||
* Zoran zr36016 Video Front End
|
||||
* Micronas vpx3225d/vpx3220a/vpx3216b TV decoder
|
||||
* Analog Devices adv7176 TV encoder
|
||||
|
||||
Drivers to use: videodev, i2c-core, i2c-algo-bit,
|
||||
videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067
|
||||
|
||||
Inputs/outputs: Composite, S-video and Internal
|
||||
|
||||
Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
|
||||
|
||||
Card number: 3
|
||||
|
||||
Pinnacle/Miro DC30+
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* Zoran zr36067 PCI controller
|
||||
* Zoran zr36050 MJPEG codec
|
||||
* Zoran zr36016 Video Front End
|
||||
* Micronas vpx3225d/vpx3220a/vpx3216b TV decoder
|
||||
* Analog Devices adv7176 TV encoder
|
||||
|
||||
Drivers to use: videodev, i2c-core, i2c-algo-bit,
|
||||
videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36015, zr36067
|
||||
|
||||
Inputs/outputs: Composite, S-video and Internal
|
||||
|
||||
Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
|
||||
|
||||
Card number: 4
|
||||
|
||||
.. note::
|
||||
|
||||
#) No module for the mse3000 is available yet
|
||||
#) No module for the vpx3224 is available yet
|
||||
|
||||
1.1 What the TV decoder can do an what not
|
||||
------------------------------------------
|
||||
|
||||
The best know TV standards are NTSC/PAL/SECAM. but for decoding a frame that
|
||||
information is not enough. There are several formats of the TV standards.
|
||||
And not every TV decoder is able to handle every format. Also the every
|
||||
combination is supported by the driver. There are currently 11 different
|
||||
tv broadcast formats all aver the world.
|
||||
|
||||
The CCIR defines parameters needed for broadcasting the signal.
|
||||
The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,...
|
||||
The CCIR says not much about the colorsystem used !!!
|
||||
And talking about a colorsystem says not to much about how it is broadcast.
|
||||
|
||||
The CCIR standards A,E,F are not used any more.
|
||||
|
||||
When you speak about NTSC, you usually mean the standard: CCIR - M using
|
||||
the NTSC colorsystem which is used in the USA, Japan, Mexico, Canada
|
||||
and a few others.
|
||||
|
||||
When you talk about PAL, you usually mean: CCIR - B/G using the PAL
|
||||
colorsystem which is used in many Countries.
|
||||
|
||||
When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem
|
||||
which is used in France, and a few others.
|
||||
|
||||
There the other version of SECAM, CCIR - D/K is used in Bulgaria, China,
|
||||
Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others.
|
||||
|
||||
The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in
|
||||
Egypt, Libya, Sri Lanka, Syrain Arab. Rep.
|
||||
|
||||
The CCIR - I uses the PAL colorsystem, and is used in Great Britain, Hong Kong,
|
||||
Ireland, Nigeria, South Africa.
|
||||
|
||||
The CCIR - N uses the PAL colorsystem and PAL frame size but the NTSC framerate,
|
||||
and is used in Argentinia, Uruguay, an a few others
|
||||
|
||||
We do not talk about how the audio is broadcast !
|
||||
|
||||
A rather good sites about the TV standards are:
|
||||
http://www.sony.jp/support/
|
||||
http://info.electronicwerkstatt.de/bereiche/fernsehtechnik/frequenzen_und_normen/Fernsehnormen/
|
||||
and http://www.cabl.com/restaurant/channel.html
|
||||
|
||||
Other weird things around: NTSC 4.43 is a modificated NTSC, which is mainly
|
||||
used in PAL VCR's that are able to play back NTSC. PAL 60 seems to be the same
|
||||
as NTSC 4.43 . The Datasheets also talk about NTSC 44, It seems as if it would
|
||||
be the same as NTSC 4.43.
|
||||
NTSC Combs seems to be a decoder mode where the decoder uses a comb filter
|
||||
to split coma and luma instead of a Delay line.
|
||||
|
||||
But I did not defiantly find out what NTSC Comb is.
|
||||
|
||||
Philips saa7111 TV decoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 1997, is used in the BUZ and
|
||||
- can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC N, NTSC 4.43 and SECAM
|
||||
|
||||
Philips saa7110a TV decoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 1995, is used in the Pinnacle/Miro DC10(new), DC10+ and
|
||||
- can handle: PAL B/G, NTSC M and SECAM
|
||||
|
||||
Philips saa7114 TV decoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 2000, is used in the LML33R10 and
|
||||
- can handle: PAL B/G/D/H/I/N, PAL N, PAL M, NTSC M, NTSC 4.43 and SECAM
|
||||
|
||||
Brooktree bt819 TV decoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 1996, and is used in the LML33 and
|
||||
- can handle: PAL B/D/G/H/I, NTSC M
|
||||
|
||||
Micronas vpx3220a TV decoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 1996, is used in the DC30 and DC30+ and
|
||||
- can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC 44, PAL 60, SECAM,NTSC Comb
|
||||
|
||||
Samsung ks0127 TV decoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- is used in the AVS6EYES card and
|
||||
- can handle: NTSC-M/N/44, PAL-M/N/B/G/H/I/D/K/L and SECAM
|
||||
|
||||
|
||||
What the TV encoder can do an what not
|
||||
--------------------------------------
|
||||
|
||||
The TV encoder are doing the "same" as the decoder, but in the oder direction.
|
||||
You feed them digital data and the generate a Composite or SVHS signal.
|
||||
For information about the colorsystems and TV norm take a look in the
|
||||
TV decoder section.
|
||||
|
||||
Philips saa7185 TV Encoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 1996, is used in the BUZ
|
||||
- can generate: PAL B/G, NTSC M
|
||||
|
||||
Brooktree bt856 TV Encoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 1994, is used in the LML33
|
||||
- can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL-N (Argentina)
|
||||
|
||||
Analog Devices adv7170 TV Encoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 2000, is used in the LML300R10
|
||||
- can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL 60
|
||||
|
||||
Analog Devices adv7175 TV Encoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 1996, is used in the DC10, DC10+, DC10 old, DC30, DC30+
|
||||
- can generate: PAL B/D/G/H/I/N, PAL M, NTSC M
|
||||
|
||||
ITT mse3000 TV encoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- was introduced in 1991, is used in the DC10 old
|
||||
- can generate: PAL , NTSC , SECAM
|
||||
|
||||
Conexant bt866 TV encoder
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- is used in AVS6EYES, and
|
||||
- can generate: NTSC/PAL, PALM, PALN
|
||||
|
||||
The adv717x, should be able to produce PAL N. But you find nothing PAL N
|
||||
specific in the registers. Seem that you have to reuse a other standard
|
||||
to generate PAL N, maybe it would work if you use the PAL M settings.
|
||||
|
||||
How do I get this damn thing to work
|
||||
------------------------------------
|
||||
|
||||
Load zr36067.o. If it can't autodetect your card, use the card=X insmod
|
||||
option with X being the card number as given in the previous section.
|
||||
To have more than one card, use card=X1[,X2[,X3,[X4[..]]]]
|
||||
|
||||
To automate this, add the following to your /etc/modprobe.d/zoran.conf:
|
||||
|
||||
options zr36067 card=X1[,X2[,X3[,X4[..]]]]
|
||||
alias char-major-81-0 zr36067
|
||||
|
||||
One thing to keep in mind is that this doesn't load zr36067.o itself yet. It
|
||||
just automates loading. If you start using xawtv, the device won't load on
|
||||
some systems, since you're trying to load modules as a user, which is not
|
||||
allowed ("permission denied"). A quick workaround is to add 'Load "v4l"' to
|
||||
XF86Config-4 when you use X by default, or to run 'v4l-conf -c <device>' in
|
||||
one of your startup scripts (normally rc.local) if you don't use X. Both
|
||||
make sure that the modules are loaded on startup, under the root account.
|
||||
|
||||
What mainboard should I use (or why doesn't my card work)
|
||||
---------------------------------------------------------
|
||||
|
||||
|
||||
<insert lousy disclaimer here>. In short: good=SiS/Intel, bad=VIA.
|
||||
|
||||
Experience tells us that people with a Buz, on average, have more problems
|
||||
than users with a DC10+/LML33. Also, it tells us that people owning a VIA-
|
||||
based mainboard (ktXXX, MVP3) have more problems than users with a mainboard
|
||||
based on a different chipset. Here's some notes from Andrew Stevens:
|
||||
|
||||
Here's my experience of using LML33 and Buz on various motherboards:
|
||||
|
||||
- VIA MVP3
|
||||
- Forget it. Pointless. Doesn't work.
|
||||
- Intel 430FX (Pentium 200)
|
||||
- LML33 perfect, Buz tolerable (3 or 4 frames dropped per movie)
|
||||
- Intel 440BX (early stepping)
|
||||
- LML33 tolerable. Buz starting to get annoying (6-10 frames/hour)
|
||||
- Intel 440BX (late stepping)
|
||||
- Buz tolerable, LML3 almost perfect (occasional single frame drops)
|
||||
- SiS735
|
||||
- LML33 perfect, Buz tolerable.
|
||||
- VIA KT133(*)
|
||||
- LML33 starting to get annoying, Buz poor enough that I have up.
|
||||
|
||||
- Both 440BX boards were dual CPU versions.
|
||||
|
||||
Bernhard Praschinger later added:
|
||||
|
||||
- AMD 751
|
||||
- Buz perfect-tolerable
|
||||
- AMD 760
|
||||
- Buz perfect-tolerable
|
||||
|
||||
In general, people on the user mailinglist won't give you much of a chance
|
||||
if you have a VIA-based motherboard. They may be cheap, but sometimes, you'd
|
||||
rather want to spend some more money on better boards. In general, VIA
|
||||
mainboard's IDE/PCI performance will also suck badly compared to others.
|
||||
You'll noticed the DC10+/DC30+ aren't mentioned anywhere in the overview.
|
||||
Basically, you can assume that if the Buz works, the LML33 will work too. If
|
||||
the LML33 works, the DC10+/DC30+ will work too. They're most tolerant to
|
||||
different mainboard chipsets from all of the supported cards.
|
||||
|
||||
If you experience timeouts during capture, buy a better mainboard or lower
|
||||
the quality/buffersize during capture (see 'Concerning buffer sizes, quality,
|
||||
output size etc.'). If it hangs, there's little we can do as of now. Check
|
||||
your IRQs and make sure the card has its own interrupts.
|
||||
|
||||
Programming interface
|
||||
---------------------
|
||||
|
||||
This driver conforms to video4linux2. Support for V4L1 and for the custom
|
||||
zoran ioctls has been removed in kernel 2.6.38.
|
||||
|
||||
For programming example, please, look at lavrec.c and lavplay.c code in
|
||||
the MJPEG-tools (http://mjpeg.sf.net/).
|
||||
|
||||
Additional notes for software developers:
|
||||
|
||||
The driver returns maxwidth and maxheight parameters according to
|
||||
the current TV standard (norm). Therefore, the software which
|
||||
communicates with the driver and "asks" for these parameters should
|
||||
first set the correct norm. Well, it seems logically correct: TV
|
||||
standard is "more constant" for current country than geometry
|
||||
settings of a variety of TV capture cards which may work in ITU or
|
||||
square pixel format.
|
||||
|
||||
Applications
|
||||
------------
|
||||
|
||||
Applications known to work with this driver:
|
||||
|
||||
TV viewing:
|
||||
|
||||
* xawtv
|
||||
* kwintv
|
||||
* probably any TV application that supports video4linux or video4linux2.
|
||||
|
||||
MJPEG capture/playback:
|
||||
|
||||
* mjpegtools/lavtools (or Linux Video Studio)
|
||||
* gstreamer
|
||||
* mplayer
|
||||
|
||||
General raw capture:
|
||||
|
||||
* xawtv
|
||||
* gstreamer
|
||||
* probably any application that supports video4linux or video4linux2
|
||||
|
||||
Video editing:
|
||||
|
||||
* Cinelerra
|
||||
* MainActor
|
||||
* mjpegtools (or Linux Video Studio)
|
||||
|
||||
|
||||
Concerning buffer sizes, quality, output size etc.
|
||||
--------------------------------------------------
|
||||
|
||||
|
||||
The zr36060 can do 1:2 JPEG compression. This is really the theoretical
|
||||
maximum that the chipset can reach. The driver can, however, limit compression
|
||||
to a maximum (size) of 1:4. The reason for this is that some cards (e.g. Buz)
|
||||
can't handle 1:2 compression without stopping capture after only a few minutes.
|
||||
With 1:4, it'll mostly work. If you have a Buz, use 'low_bitrate=1' to go into
|
||||
1:4 max. compression mode.
|
||||
|
||||
100% JPEG quality is thus 1:2 compression in practice. So for a full PAL frame
|
||||
(size 720x576). The JPEG fields are stored in YUY2 format, so the size of the
|
||||
fields are 720x288x16/2 bits/field (2 fields/frame) = 207360 bytes/field x 2 =
|
||||
414720 bytes/frame (add some more bytes for headers and DHT (huffman)/DQT
|
||||
(quantization) tables, and you'll get to something like 512kB per frame for
|
||||
1:2 compression. For 1:4 compression, you'd have frames of half this size.
|
||||
|
||||
Some additional explanation by Martin Samuelsson, which also explains the
|
||||
importance of buffer sizes:
|
||||
--
|
||||
> Hmm, I do not think it is really that way. With the current (downloaded
|
||||
> at 18:00 Monday) driver I get that output sizes for 10 sec:
|
||||
> -q 50 -b 128 : 24.283.332 Bytes
|
||||
> -q 50 -b 256 : 48.442.368
|
||||
> -q 25 -b 128 : 24.655.992
|
||||
> -q 25 -b 256 : 25.859.820
|
||||
|
||||
I woke up, and can't go to sleep again. I'll kill some time explaining why
|
||||
this doesn't look strange to me.
|
||||
|
||||
Let's do some math using a width of 704 pixels. I'm not sure whether the Buz
|
||||
actually use that number or not, but that's not too important right now.
|
||||
|
||||
704x288 pixels, one field, is 202752 pixels. Divided by 64 pixels per block;
|
||||
3168 blocks per field. Each pixel consist of two bytes; 128 bytes per block;
|
||||
1024 bits per block. 100% in the new driver mean 1:2 compression; the maximum
|
||||
output becomes 512 bits per block. Actually 510, but 512 is simpler to use
|
||||
for calculations.
|
||||
|
||||
Let's say that we specify d1q50. We thus want 256 bits per block; times 3168
|
||||
becomes 811008 bits; 101376 bytes per field. We're talking raw bits and bytes
|
||||
here, so we don't need to do any fancy corrections for bits-per-pixel or such
|
||||
things. 101376 bytes per field.
|
||||
|
||||
d1 video contains two fields per frame. Those sum up to 202752 bytes per
|
||||
frame, and one of those frames goes into each buffer.
|
||||
|
||||
But wait a second! -b128 gives 128kB buffers! It's not possible to cram
|
||||
202752 bytes of JPEG data into 128kB!
|
||||
|
||||
This is what the driver notice and automatically compensate for in your
|
||||
examples. Let's do some math using this information:
|
||||
|
||||
128kB is 131072 bytes. In this buffer, we want to store two fields, which
|
||||
leaves 65536 bytes for each field. Using 3168 blocks per field, we get
|
||||
20.68686868... available bytes per block; 165 bits. We can't allow the
|
||||
request for 256 bits per block when there's only 165 bits available! The -q50
|
||||
option is silently overridden, and the -b128 option takes precedence, leaving
|
||||
us with the equivalence of -q32.
|
||||
|
||||
This gives us a data rate of 165 bits per block, which, times 3168, sums up
|
||||
to 65340 bytes per field, out of the allowed 65536. The current driver has
|
||||
another level of rate limiting; it won't accept -q values that fill more than
|
||||
6/8 of the specified buffers. (I'm not sure why. "Playing it safe" seem to be
|
||||
a safe bet. Personally, I think I would have lowered requested-bits-per-block
|
||||
by one, or something like that.) We can't use 165 bits per block, but have to
|
||||
lower it again, to 6/8 of the available buffer space: We end up with 124 bits
|
||||
per block, the equivalence of -q24. With 128kB buffers, you can't use greater
|
||||
than -q24 at -d1. (And PAL, and 704 pixels width...)
|
||||
|
||||
The third example is limited to -q24 through the same process. The second
|
||||
example, using very similar calculations, is limited to -q48. The only
|
||||
example that actually grab at the specified -q value is the last one, which
|
||||
is clearly visible, looking at the file size.
|
||||
--
|
||||
|
||||
Conclusion: the quality of the resulting movie depends on buffer size, quality,
|
||||
whether or not you use 'low_bitrate=1' as insmod option for the zr36060.c
|
||||
module to do 1:4 instead of 1:2 compression, etc.
|
||||
|
||||
If you experience timeouts, lowering the quality/buffersize or using
|
||||
'low_bitrate=1 as insmod option for zr36060.o might actually help, as is
|
||||
proven by the Buz.
|
||||
|
||||
It hangs/crashes/fails/whatevers! Help!
|
||||
---------------------------------------
|
||||
|
||||
Make sure that the card has its own interrupts (see /proc/interrupts), check
|
||||
the output of dmesg at high verbosity (load zr36067.o with debug=2,
|
||||
load all other modules with debug=1). Check that your mainboard is favorable
|
||||
(see question 2) and if not, test the card in another computer. Also see the
|
||||
notes given in question 3 and try lowering quality/buffersize/capturesize
|
||||
if recording fails after a period of time.
|
||||
|
||||
If all this doesn't help, give a clear description of the problem including
|
||||
detailed hardware information (memory+brand, mainboard+chipset+brand, which
|
||||
MJPEG card, processor, other PCI cards that might be of interest), give the
|
||||
system PnP information (/proc/interrupts, /proc/dma, /proc/devices), and give
|
||||
the kernel version, driver version, glibc version, gcc version and any other
|
||||
information that might possibly be of interest. Also provide the dmesg output
|
||||
at high verbosity. See 'Contacting' on how to contact the developers.
|
||||
|
||||
Maintainers/Contacting
|
||||
----------------------
|
||||
|
||||
The driver is currently maintained by Laurent Pinchart and Ronald Bultje
|
||||
(<laurent.pinchart@skynet.be> and <rbultje@ronald.bitfreak.net>). For bug
|
||||
reports or questions, please contact the mailinglist instead of the developers
|
||||
individually. For user questions (i.e. bug reports or how-to questions), send
|
||||
an email to <mjpeg-users@lists.sf.net>, for developers (i.e. if you want to
|
||||
help programming), send an email to <mjpeg-developer@lists.sf.net>. See
|
||||
http://www.sf.net/projects/mjpeg/ for subscription information.
|
||||
|
||||
For bug reports, be sure to include all the information as described in
|
||||
the section 'It hangs/crashes/fails/whatevers! Help!'. Please make sure
|
||||
you're using the latest version (http://mjpeg.sf.net/driver-zoran/).
|
||||
|
||||
Previous maintainers/developers of this driver include Serguei Miridonov
|
||||
<mirsev@cicese.mx>, Wolfgang Scherr <scherr@net4you.net>, Dave Perks
|
||||
<dperks@ibm.net> and Rainer Johanni <Rainer@Johanni.de>.
|
||||
|
||||
Driver's License
|
||||
----------------
|
||||
|
||||
This driver is distributed under the terms of the General Public License.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
See http://www.gnu.org/ for more information.
|
14
MAINTAINERS
14
MAINTAINERS
|
@ -10090,6 +10090,7 @@ L: linux-amlogic@lists.infradead.org
|
|||
W: http://linux-meson.com/
|
||||
S: Supported
|
||||
F: drivers/media/platform/meson/ao-cec.c
|
||||
F: drivers/media/platform/meson/ao-cec-g12a.c
|
||||
F: Documentation/devicetree/bindings/media/meson-ao-cec.txt
|
||||
T: git git://linuxtv.org/media_tree.git
|
||||
|
||||
|
@ -14401,9 +14402,8 @@ SOC-CAMERA V4L2 SUBSYSTEM
|
|||
L: linux-media@vger.kernel.org
|
||||
T: git git://linuxtv.org/media_tree.git
|
||||
S: Orphan
|
||||
F: include/media/soc*
|
||||
F: drivers/media/i2c/soc_camera/
|
||||
F: drivers/media/platform/soc_camera/
|
||||
F: include/media/soc_camera.h
|
||||
F: drivers/staging/media/soc_camera/
|
||||
|
||||
SOCIONEXT SYNQUACER I2C DRIVER
|
||||
M: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||||
|
@ -14743,6 +14743,14 @@ S: Maintained
|
|||
F: drivers/iio/imu/st_lsm6dsx/
|
||||
F: Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt
|
||||
|
||||
ST MIPID02 CSI-2 TO PARALLEL BRIDGE DRIVER
|
||||
M: Mickael Guene <mickael.guene@st.com>
|
||||
L: linux-media@vger.kernel.org
|
||||
T: git git://linuxtv.org/media_tree.git
|
||||
S: Maintained
|
||||
F: drivers/media/i2c/st-mipid02.c
|
||||
F: Documentation/devicetree/bindings/media/i2c/st,st-mipid02.txt
|
||||
|
||||
ST STM32 I2C/SMBUS DRIVER
|
||||
M: Pierre-Yves MORDRET <pierre-yves.mordret@st.com>
|
||||
L: linux-i2c@vger.kernel.org
|
||||
|
|
|
@ -31,14 +31,14 @@ comment "Multimedia core support"
|
|||
#
|
||||
config MEDIA_CAMERA_SUPPORT
|
||||
bool "Cameras/video grabbers support"
|
||||
---help---
|
||||
help
|
||||
Enable support for webcams and video grabbers.
|
||||
|
||||
Say Y when you have a webcam or a video capture grabber board.
|
||||
|
||||
config MEDIA_ANALOG_TV_SUPPORT
|
||||
bool "Analog TV support"
|
||||
---help---
|
||||
help
|
||||
Enable analog TV support.
|
||||
|
||||
Say Y when you have a TV board with analog support or with a
|
||||
|
@ -50,7 +50,7 @@ config MEDIA_ANALOG_TV_SUPPORT
|
|||
|
||||
config MEDIA_DIGITAL_TV_SUPPORT
|
||||
bool "Digital TV support"
|
||||
---help---
|
||||
help
|
||||
Enable digital TV support.
|
||||
|
||||
Say Y when you have a board with digital support or a board with
|
||||
|
@ -58,7 +58,7 @@ config MEDIA_DIGITAL_TV_SUPPORT
|
|||
|
||||
config MEDIA_RADIO_SUPPORT
|
||||
bool "AM/FM radio receivers/transmitters support"
|
||||
---help---
|
||||
help
|
||||
Enable AM/FM radio support.
|
||||
|
||||
Additional info and docs are available on the web at
|
||||
|
@ -72,14 +72,14 @@ config MEDIA_RADIO_SUPPORT
|
|||
|
||||
config MEDIA_SDR_SUPPORT
|
||||
bool "Software defined radio support"
|
||||
---help---
|
||||
help
|
||||
Enable software defined radio support.
|
||||
|
||||
Say Y when you have a software defined radio device.
|
||||
|
||||
config MEDIA_CEC_SUPPORT
|
||||
bool "HDMI CEC support"
|
||||
---help---
|
||||
help
|
||||
Enable support for HDMI CEC (Consumer Electronics Control),
|
||||
which is an optional HDMI feature.
|
||||
|
||||
|
@ -96,7 +96,7 @@ source "drivers/media/cec/Kconfig"
|
|||
config MEDIA_CONTROLLER
|
||||
bool "Media Controller API"
|
||||
depends on MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT
|
||||
---help---
|
||||
help
|
||||
Enable the media controller API used to query media devices internal
|
||||
topology and configure it dynamically.
|
||||
|
||||
|
@ -105,7 +105,7 @@ config MEDIA_CONTROLLER
|
|||
config MEDIA_CONTROLLER_DVB
|
||||
bool "Enable Media controller for DVB (EXPERIMENTAL)"
|
||||
depends on MEDIA_CONTROLLER && DVB_CORE
|
||||
---help---
|
||||
help
|
||||
Enable the media controller API support for DVB.
|
||||
|
||||
This is currently experimental.
|
||||
|
@ -114,7 +114,7 @@ config MEDIA_CONTROLLER_REQUEST_API
|
|||
bool "Enable Media controller Request API (EXPERIMENTAL)"
|
||||
depends on MEDIA_CONTROLLER && STAGING_MEDIA
|
||||
default n
|
||||
---help---
|
||||
help
|
||||
DO NOT ENABLE THIS OPTION UNLESS YOU KNOW WHAT YOU'RE DOING.
|
||||
|
||||
This option enables the Request API for the Media controller and V4L2
|
||||
|
@ -137,7 +137,7 @@ config VIDEO_DEV
|
|||
config VIDEO_V4L2_SUBDEV_API
|
||||
bool "V4L2 sub-device userspace API"
|
||||
depends on VIDEO_DEV && MEDIA_CONTROLLER
|
||||
---help---
|
||||
help
|
||||
Enables the V4L2 sub-device pad-level userspace API used to configure
|
||||
video format, size and frame rate between hardware blocks.
|
||||
|
||||
|
|
|
@ -6,6 +6,12 @@
|
|||
media-objs := media-device.o media-devnode.o media-entity.o \
|
||||
media-request.o
|
||||
|
||||
ifeq ($(CONFIG_MEDIA_CONTROLLER),y)
|
||||
ifeq ($(CONFIG_USB),y)
|
||||
media-objs += media-dev-allocator.o
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# I2C drivers should come before other drivers, otherwise they'll fail
|
||||
# when compiled as builtin drivers
|
||||
|
|
|
@ -2,11 +2,11 @@ config MEDIA_CEC_RC
|
|||
bool "HDMI CEC RC integration"
|
||||
depends on CEC_CORE && RC_CORE
|
||||
depends on CEC_CORE=m || RC_CORE=y
|
||||
---help---
|
||||
help
|
||||
Pass on CEC remote control messages to the RC framework.
|
||||
|
||||
config CEC_PIN_ERROR_INJ
|
||||
bool "Enable CEC error injection support"
|
||||
depends on CEC_PIN && DEBUG_FS
|
||||
---help---
|
||||
help
|
||||
This option enables CEC error injection using debugfs.
|
||||
|
|
|
@ -126,6 +126,7 @@ static int __must_check cec_devnode_register(struct cec_devnode *devnode,
|
|||
/* Part 2: Initialize and register the character device */
|
||||
cdev_init(&devnode->cdev, &cec_devnode_fops);
|
||||
devnode->cdev.owner = owner;
|
||||
kobject_set_name(&devnode->cdev.kobj, "cec%d", devnode->minor);
|
||||
|
||||
ret = cdev_device_add(&devnode->cdev, &devnode->dev);
|
||||
if (ret) {
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <linux/slab.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/of_platform.h>
|
||||
|
||||
#include <media/cec.h>
|
||||
#include <media/cec-notifier.h>
|
||||
|
@ -127,3 +128,32 @@ void cec_notifier_unregister(struct cec_notifier *n)
|
|||
cec_notifier_put(n);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cec_notifier_unregister);
|
||||
|
||||
struct device *cec_notifier_parse_hdmi_phandle(struct device *dev)
|
||||
{
|
||||
struct platform_device *hdmi_pdev;
|
||||
struct device *hdmi_dev = NULL;
|
||||
struct device_node *np;
|
||||
|
||||
np = of_parse_phandle(dev->of_node, "hdmi-phandle", 0);
|
||||
|
||||
if (!np) {
|
||||
dev_err(dev, "Failed to find HDMI node in device tree\n");
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
hdmi_pdev = of_find_device_by_node(np);
|
||||
of_node_put(np);
|
||||
if (hdmi_pdev) {
|
||||
hdmi_dev = &hdmi_pdev->dev;
|
||||
/*
|
||||
* Note that the device struct is only used as a key into the
|
||||
* cec_notifiers list, it is never actually accessed.
|
||||
* So we decrement the reference here so we don't leak
|
||||
* memory.
|
||||
*/
|
||||
put_device(hdmi_dev);
|
||||
return hdmi_dev;
|
||||
}
|
||||
return ERR_PTR(-EPROBE_DEFER);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cec_notifier_parse_hdmi_phandle);
|
||||
|
|
|
@ -1028,7 +1028,7 @@ static int cx2341x_api(void *priv, cx2341x_mbox_func func,
|
|||
return func(priv, cmd, args, 0, data);
|
||||
}
|
||||
|
||||
#define NEQ(field) (old->field != new->field)
|
||||
#define CMP_FIELD(__old, __new, __field) (__old->__field != __new->__field)
|
||||
|
||||
int cx2341x_update(void *priv, cx2341x_mbox_func func,
|
||||
const struct cx2341x_mpeg_params *old,
|
||||
|
@ -1042,20 +1042,22 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,
|
|||
11, /* VCD */
|
||||
12, /* SVCD */
|
||||
};
|
||||
|
||||
int err = 0;
|
||||
int force = (old == NULL);
|
||||
u16 temporal = new->video_temporal_filter;
|
||||
int err;
|
||||
|
||||
cx2341x_api(priv, func, CX2341X_ENC_SET_OUTPUT_PORT, 2, new->port, 0);
|
||||
|
||||
if (force || NEQ(is_50hz)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, is_50hz)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_FRAME_RATE, 1,
|
||||
new->is_50hz);
|
||||
if (err) return err;
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
|
||||
if (force || NEQ(width) || NEQ(height) || NEQ(video_encoding)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, width) ||
|
||||
CMP_FIELD(old, new, height) ||
|
||||
CMP_FIELD(old, new, video_encoding)) {
|
||||
u16 w = new->width;
|
||||
u16 h = new->height;
|
||||
|
||||
|
@ -1065,94 +1067,127 @@ int cx2341x_update(void *priv, cx2341x_mbox_func func,
|
|||
}
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_FRAME_SIZE, 2,
|
||||
h, w);
|
||||
if (err) return err;
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(stream_type)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, stream_type)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_STREAM_TYPE, 1,
|
||||
mpeg_stream_type[new->stream_type]);
|
||||
if (err) return err;
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_aspect)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_aspect)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_ASPECT_RATIO, 1,
|
||||
1 + new->video_aspect);
|
||||
if (err) return err;
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_b_frames) || NEQ(video_gop_size)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_b_frames) ||
|
||||
CMP_FIELD(old, new, video_gop_size)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_GOP_PROPERTIES, 2,
|
||||
new->video_gop_size, new->video_b_frames + 1);
|
||||
if (err) return err;
|
||||
new->video_gop_size, new->video_b_frames + 1);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_gop_closure)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_gop_closure)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_GOP_CLOSURE, 1,
|
||||
new->video_gop_closure);
|
||||
if (err) return err;
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(audio_properties)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, audio_properties)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_AUDIO_PROPERTIES,
|
||||
1, new->audio_properties);
|
||||
if (err) return err;
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(audio_mute)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, audio_mute)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_MUTE_AUDIO, 1,
|
||||
new->audio_mute);
|
||||
if (err) return err;
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_bitrate_mode) || NEQ(video_bitrate) ||
|
||||
NEQ(video_bitrate_peak)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_bitrate_mode) ||
|
||||
CMP_FIELD(old, new, video_bitrate) ||
|
||||
CMP_FIELD(old, new, video_bitrate_peak)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_BIT_RATE, 5,
|
||||
new->video_bitrate_mode, new->video_bitrate,
|
||||
new->video_bitrate_peak / 400, 0, 0);
|
||||
if (err) return err;
|
||||
new->video_bitrate_mode, new->video_bitrate,
|
||||
new->video_bitrate_peak / 400, 0, 0);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_spatial_filter_mode) ||
|
||||
NEQ(video_temporal_filter_mode) ||
|
||||
NEQ(video_median_filter_type)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_spatial_filter_mode) ||
|
||||
CMP_FIELD(old, new, video_temporal_filter_mode) ||
|
||||
CMP_FIELD(old, new, video_median_filter_type)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_DNR_FILTER_MODE,
|
||||
2, new->video_spatial_filter_mode |
|
||||
2,
|
||||
new->video_spatial_filter_mode |
|
||||
(new->video_temporal_filter_mode << 1),
|
||||
new->video_median_filter_type);
|
||||
if (err) return err;
|
||||
new->video_median_filter_type);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_luma_median_filter_bottom) ||
|
||||
NEQ(video_luma_median_filter_top) ||
|
||||
NEQ(video_chroma_median_filter_bottom) ||
|
||||
NEQ(video_chroma_median_filter_top)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_luma_median_filter_bottom) ||
|
||||
CMP_FIELD(old, new, video_luma_median_filter_top) ||
|
||||
CMP_FIELD(old, new, video_chroma_median_filter_bottom) ||
|
||||
CMP_FIELD(old, new, video_chroma_median_filter_top)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_CORING_LEVELS, 4,
|
||||
new->video_luma_median_filter_bottom,
|
||||
new->video_luma_median_filter_top,
|
||||
new->video_chroma_median_filter_bottom,
|
||||
new->video_chroma_median_filter_top);
|
||||
if (err) return err;
|
||||
new->video_luma_median_filter_bottom,
|
||||
new->video_luma_median_filter_top,
|
||||
new->video_chroma_median_filter_bottom,
|
||||
new->video_chroma_median_filter_top);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_luma_spatial_filter_type) ||
|
||||
NEQ(video_chroma_spatial_filter_type)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_luma_spatial_filter_type) ||
|
||||
CMP_FIELD(old, new, video_chroma_spatial_filter_type)) {
|
||||
err = cx2341x_api(priv, func,
|
||||
CX2341X_ENC_SET_SPATIAL_FILTER_TYPE,
|
||||
2, new->video_luma_spatial_filter_type,
|
||||
new->video_chroma_spatial_filter_type);
|
||||
if (err) return err;
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_spatial_filter) ||
|
||||
old->video_temporal_filter != temporal) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_spatial_filter) ||
|
||||
CMP_FIELD(old, new, video_temporal_filter)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_DNR_FILTER_PROPS,
|
||||
2, new->video_spatial_filter, temporal);
|
||||
if (err) return err;
|
||||
2, new->video_spatial_filter,
|
||||
new->video_temporal_filter);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_temporal_decimation)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_temporal_decimation)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_SET_FRAME_DROP_RATE,
|
||||
1, new->video_temporal_decimation);
|
||||
if (err) return err;
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(video_mute) ||
|
||||
(new->video_mute && NEQ(video_mute_yuv))) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, video_mute) ||
|
||||
(new->video_mute && CMP_FIELD(old, new, video_mute_yuv))) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_MUTE_VIDEO, 1,
|
||||
new->video_mute | (new->video_mute_yuv << 8));
|
||||
if (err) return err;
|
||||
new->video_mute | (new->video_mute_yuv << 8));
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
if (force || NEQ(stream_insert_nav_packets)) {
|
||||
if (!old ||
|
||||
CMP_FIELD(old, new, stream_insert_nav_packets)) {
|
||||
err = cx2341x_api(priv, func, CX2341X_ENC_MISC, 2,
|
||||
7, new->stream_insert_nav_packets);
|
||||
if (err) return err;
|
||||
7, new->stream_insert_nav_packets);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ config SMS_SIANO_RC
|
|||
depends on SMS_USB_DRV || SMS_SDIO_DRV
|
||||
depends on MEDIA_COMMON_OPTIONS
|
||||
default y
|
||||
---help---
|
||||
help
|
||||
Choose Y to select Remote Controller support for Siano driver.
|
||||
|
||||
config SMS_SIANO_DEBUGFS
|
||||
|
@ -24,7 +24,7 @@ config SMS_SIANO_DEBUGFS
|
|||
depends on DEBUG_FS
|
||||
depends on SMS_USB_DRV = SMS_SDIO_DRV
|
||||
|
||||
---help---
|
||||
help
|
||||
Choose Y to enable visualizing a dump of the frontend
|
||||
statistics response packets via debugfs. Currently, works
|
||||
only with Siano USB devices.
|
||||
|
|
|
@ -672,6 +672,11 @@ int vb2_core_reqbufs(struct vb2_queue *q, enum vb2_memory memory,
|
|||
return -EBUSY;
|
||||
}
|
||||
|
||||
if (q->waiting_in_dqbuf && *count) {
|
||||
dprintk(1, "another dup()ped fd is waiting for a buffer\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
if (*count == 0 || q->num_buffers != 0 ||
|
||||
(q->memory != VB2_MEMORY_UNKNOWN && q->memory != memory)) {
|
||||
/*
|
||||
|
@ -807,6 +812,10 @@ int vb2_core_create_bufs(struct vb2_queue *q, enum vb2_memory memory,
|
|||
}
|
||||
|
||||
if (!q->num_buffers) {
|
||||
if (q->waiting_in_dqbuf && *count) {
|
||||
dprintk(1, "another dup()ped fd is waiting for a buffer\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
memset(q->alloc_devs, 0, sizeof(q->alloc_devs));
|
||||
q->memory = memory;
|
||||
q->waiting_for_buffers = !q->is_output;
|
||||
|
@ -915,8 +924,7 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
|
|||
|
||||
if (WARN_ON(state != VB2_BUF_STATE_DONE &&
|
||||
state != VB2_BUF_STATE_ERROR &&
|
||||
state != VB2_BUF_STATE_QUEUED &&
|
||||
state != VB2_BUF_STATE_REQUEUEING))
|
||||
state != VB2_BUF_STATE_QUEUED))
|
||||
state = VB2_BUF_STATE_ERROR;
|
||||
|
||||
#ifdef CONFIG_VIDEO_ADV_DEBUG
|
||||
|
@ -929,8 +937,7 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
|
|||
dprintk(4, "done processing on buffer %d, state: %d\n",
|
||||
vb->index, state);
|
||||
|
||||
if (state != VB2_BUF_STATE_QUEUED &&
|
||||
state != VB2_BUF_STATE_REQUEUEING) {
|
||||
if (state != VB2_BUF_STATE_QUEUED) {
|
||||
/* sync buffers */
|
||||
for (plane = 0; plane < vb->num_planes; ++plane)
|
||||
call_void_memop(vb, finish, vb->planes[plane].mem_priv);
|
||||
|
@ -938,8 +945,7 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
|
|||
}
|
||||
|
||||
spin_lock_irqsave(&q->done_lock, flags);
|
||||
if (state == VB2_BUF_STATE_QUEUED ||
|
||||
state == VB2_BUF_STATE_REQUEUEING) {
|
||||
if (state == VB2_BUF_STATE_QUEUED) {
|
||||
vb->state = VB2_BUF_STATE_QUEUED;
|
||||
} else {
|
||||
/* Add the buffer to the done buffers list */
|
||||
|
@ -949,8 +955,6 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
|
|||
atomic_dec(&q->owned_by_drv_count);
|
||||
|
||||
if (state != VB2_BUF_STATE_QUEUED && vb->req_obj.req) {
|
||||
/* This is not supported at the moment */
|
||||
WARN_ON(state == VB2_BUF_STATE_REQUEUEING);
|
||||
media_request_object_unbind(&vb->req_obj);
|
||||
media_request_object_put(&vb->req_obj);
|
||||
}
|
||||
|
@ -962,10 +966,6 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
|
|||
switch (state) {
|
||||
case VB2_BUF_STATE_QUEUED:
|
||||
return;
|
||||
case VB2_BUF_STATE_REQUEUEING:
|
||||
if (q->start_streaming_called)
|
||||
__enqueue_in_driver(vb);
|
||||
return;
|
||||
default:
|
||||
/* Inform any processes that may be waiting for buffers */
|
||||
wake_up(&q->done_wq);
|
||||
|
@ -1516,6 +1516,12 @@ int vb2_core_qbuf(struct vb2_queue *q, unsigned int index, void *pb,
|
|||
|
||||
vb = q->bufs[index];
|
||||
|
||||
if (!req && vb->state != VB2_BUF_STATE_IN_REQUEST &&
|
||||
q->requires_requests) {
|
||||
dprintk(1, "qbuf requires a request\n");
|
||||
return -EBADR;
|
||||
}
|
||||
|
||||
if ((req && q->uses_qbuf) ||
|
||||
(!req && vb->state != VB2_BUF_STATE_IN_REQUEST &&
|
||||
q->uses_requests)) {
|
||||
|
@ -1659,6 +1665,11 @@ static int __vb2_wait_for_done_vb(struct vb2_queue *q, int nonblocking)
|
|||
for (;;) {
|
||||
int ret;
|
||||
|
||||
if (q->waiting_in_dqbuf) {
|
||||
dprintk(1, "another dup()ped fd is waiting for a buffer\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
if (!q->streaming) {
|
||||
dprintk(1, "streaming off, will not wait for buffers\n");
|
||||
return -EINVAL;
|
||||
|
@ -1686,6 +1697,7 @@ static int __vb2_wait_for_done_vb(struct vb2_queue *q, int nonblocking)
|
|||
return -EAGAIN;
|
||||
}
|
||||
|
||||
q->waiting_in_dqbuf = 1;
|
||||
/*
|
||||
* We are streaming and blocking, wait for another buffer to
|
||||
* become ready or for streamoff. Driver's lock is released to
|
||||
|
@ -1706,6 +1718,7 @@ static int __vb2_wait_for_done_vb(struct vb2_queue *q, int nonblocking)
|
|||
* the locks or return an error if one occurred.
|
||||
*/
|
||||
call_void_qop(q, wait_finish, q);
|
||||
q->waiting_in_dqbuf = 0;
|
||||
if (ret) {
|
||||
dprintk(1, "sleep was interrupted\n");
|
||||
return ret;
|
||||
|
@ -2247,6 +2260,9 @@ int vb2_core_queue_init(struct vb2_queue *q)
|
|||
WARN_ON(!q->ops->buf_queue))
|
||||
return -EINVAL;
|
||||
|
||||
if (WARN_ON(q->requires_requests && !q->supports_requests))
|
||||
return -EINVAL;
|
||||
|
||||
INIT_LIST_HEAD(&q->queued_list);
|
||||
INIT_LIST_HEAD(&q->done_list);
|
||||
spin_lock_init(&q->done_lock);
|
||||
|
@ -2585,6 +2601,12 @@ static size_t __vb2_perform_fileio(struct vb2_queue *q, char __user *data, size_
|
|||
if (!data)
|
||||
return -EINVAL;
|
||||
|
||||
if (q->waiting_in_dqbuf) {
|
||||
dprintk(3, "another dup()ped fd is %s\n",
|
||||
read ? "reading" : "writing");
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize emulator on first call.
|
||||
*/
|
||||
|
|
|
@ -122,9 +122,9 @@ static int __verify_length(struct vb2_buffer *vb, const struct v4l2_buffer *b)
|
|||
}
|
||||
|
||||
/*
|
||||
* __init_v4l2_vb2_buffer() - initialize the v4l2_vb2_buffer struct
|
||||
* __init_vb2_v4l2_buffer() - initialize the vb2_v4l2_buffer struct
|
||||
*/
|
||||
static void __init_v4l2_vb2_buffer(struct vb2_buffer *vb)
|
||||
static void __init_vb2_v4l2_buffer(struct vb2_buffer *vb)
|
||||
{
|
||||
struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
|
||||
|
||||
|
@ -368,6 +368,12 @@ static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct media_device *md
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (!is_prepare && (b->flags & V4L2_BUF_FLAG_REQUEST_FD) &&
|
||||
vb->state != VB2_BUF_STATE_DEQUEUED) {
|
||||
dprintk(1, "%s: buffer is not in dequeued state\n", opname);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!vb->prepared) {
|
||||
/* Copy relevant information provided by the userspace */
|
||||
memset(vbuf->planes, 0,
|
||||
|
@ -381,6 +387,10 @@ static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct media_device *md
|
|||
return 0;
|
||||
|
||||
if (!(b->flags & V4L2_BUF_FLAG_REQUEST_FD)) {
|
||||
if (q->requires_requests) {
|
||||
dprintk(1, "%s: queue requires requests\n", opname);
|
||||
return -EBADR;
|
||||
}
|
||||
if (q->uses_requests) {
|
||||
dprintk(1, "%s: queue uses requests\n", opname);
|
||||
return -EBUSY;
|
||||
|
@ -388,7 +398,7 @@ static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct media_device *md
|
|||
return 0;
|
||||
} else if (!q->supports_requests) {
|
||||
dprintk(1, "%s: queue does not support requests\n", opname);
|
||||
return -EACCES;
|
||||
return -EBADR;
|
||||
} else if (q->uses_qbuf) {
|
||||
dprintk(1, "%s: queue does not use requests\n", opname);
|
||||
return -EBUSY;
|
||||
|
@ -419,11 +429,6 @@ static int vb2_queue_or_prepare_buf(struct vb2_queue *q, struct media_device *md
|
|||
!q->ops->buf_out_validate))
|
||||
return -EINVAL;
|
||||
|
||||
if (vb->state != VB2_BUF_STATE_DEQUEUED) {
|
||||
dprintk(1, "%s: buffer is not in dequeued state\n", opname);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (b->request_fd < 0) {
|
||||
dprintk(1, "%s: request_fd < 0\n", opname);
|
||||
return -EINVAL;
|
||||
|
@ -543,7 +548,6 @@ static void __fill_v4l2_buffer(struct vb2_buffer *vb, void *pb)
|
|||
break;
|
||||
case VB2_BUF_STATE_PREPARING:
|
||||
case VB2_BUF_STATE_DEQUEUED:
|
||||
case VB2_BUF_STATE_REQUEUEING:
|
||||
/* nothing */
|
||||
break;
|
||||
}
|
||||
|
@ -592,7 +596,7 @@ static int __fill_vb2_buffer(struct vb2_buffer *vb, struct vb2_plane *planes)
|
|||
|
||||
static const struct vb2_buf_ops v4l2_buf_ops = {
|
||||
.verify_planes_array = __verify_planes_array_core,
|
||||
.init_buffer = __init_v4l2_vb2_buffer,
|
||||
.init_buffer = __init_vb2_v4l2_buffer,
|
||||
.fill_user_buffer = __fill_v4l2_buffer,
|
||||
.fill_vb2_buffer = __fill_vb2_buffer,
|
||||
.copy_timestamp = __copy_timestamp,
|
||||
|
|
|
@ -46,17 +46,17 @@ static void *vb2_vmalloc_alloc(struct device *dev, unsigned long attrs,
|
|||
|
||||
buf->size = size;
|
||||
buf->vaddr = vmalloc_user(buf->size);
|
||||
buf->dma_dir = dma_dir;
|
||||
buf->handler.refcount = &buf->refcount;
|
||||
buf->handler.put = vb2_vmalloc_put;
|
||||
buf->handler.arg = buf;
|
||||
|
||||
if (!buf->vaddr) {
|
||||
pr_debug("vmalloc of size %ld failed\n", buf->size);
|
||||
kfree(buf);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
buf->dma_dir = dma_dir;
|
||||
buf->handler.refcount = &buf->refcount;
|
||||
buf->handler.put = vb2_vmalloc_put;
|
||||
buf->handler.arg = buf;
|
||||
|
||||
refcount_set(&buf->refcount, 1);
|
||||
return buf;
|
||||
}
|
||||
|
|
|
@ -526,7 +526,6 @@ int dvb_register_device(struct dvb_adapter *adap, struct dvb_device **pdvbdev,
|
|||
dvb_media_device_free(dvbdev);
|
||||
kfree(dvbdevfops);
|
||||
kfree(dvbdev);
|
||||
up_write(&minor_rwsem);
|
||||
mutex_unlock(&dvbdev_register_lock);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -467,7 +467,7 @@ struct dvb_frontend *as102_attach(const char *name,
|
|||
|
||||
/* init frontend callback ops */
|
||||
memcpy(&fe->ops, &as102_fe_ops, sizeof(struct dvb_frontend_ops));
|
||||
strncpy(fe->ops.info.name, name, sizeof(fe->ops.info.name));
|
||||
strscpy(fe->ops.info.name, name, sizeof(fe->ops.info.name));
|
||||
|
||||
return fe;
|
||||
|
||||
|
|
|
@ -2774,7 +2774,8 @@ static struct dvb_frontend *dib7000p_init(struct i2c_adapter *i2c_adap, u8 i2c_a
|
|||
dibx000_init_i2c_master(&st->i2c_master, DIB7000P, st->i2c_adap, st->i2c_addr);
|
||||
|
||||
/* init 7090 tuner adapter */
|
||||
strncpy(st->dib7090_tuner_adap.name, "DiB7090 tuner interface", sizeof(st->dib7090_tuner_adap.name));
|
||||
strscpy(st->dib7090_tuner_adap.name, "DiB7090 tuner interface",
|
||||
sizeof(st->dib7090_tuner_adap.name));
|
||||
st->dib7090_tuner_adap.algo = &dib7090_tuner_xfer_algo;
|
||||
st->dib7090_tuner_adap.algo_data = NULL;
|
||||
st->dib7090_tuner_adap.dev.parent = st->i2c_adap->dev.parent;
|
||||
|
|
|
@ -4458,8 +4458,8 @@ static struct dvb_frontend *dib8000_init(struct i2c_adapter *i2c_adap, u8 i2c_ad
|
|||
dibx000_init_i2c_master(&state->i2c_master, DIB8000, state->i2c.adap, state->i2c.addr);
|
||||
|
||||
/* init 8096p tuner adapter */
|
||||
strncpy(state->dib8096p_tuner_adap.name, "DiB8096P tuner interface",
|
||||
sizeof(state->dib8096p_tuner_adap.name));
|
||||
strscpy(state->dib8096p_tuner_adap.name, "DiB8096P tuner interface",
|
||||
sizeof(state->dib8096p_tuner_adap.name));
|
||||
state->dib8096p_tuner_adap.algo = &dib8096p_tuner_xfer_algo;
|
||||
state->dib8096p_tuner_adap.algo_data = NULL;
|
||||
state->dib8096p_tuner_adap.dev.parent = state->i2c.adap->dev.parent;
|
||||
|
|
|
@ -2521,7 +2521,8 @@ struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, c
|
|||
dibx000_init_i2c_master(&st->i2c_master, DIB7000MC, st->i2c.i2c_adap, st->i2c.i2c_addr);
|
||||
|
||||
st->tuner_adap.dev.parent = i2c_adap->dev.parent;
|
||||
strncpy(st->tuner_adap.name, "DIB9000_FW TUNER ACCESS", sizeof(st->tuner_adap.name));
|
||||
strscpy(st->tuner_adap.name, "DIB9000_FW TUNER ACCESS",
|
||||
sizeof(st->tuner_adap.name));
|
||||
st->tuner_adap.algo = &dib9000_tuner_algo;
|
||||
st->tuner_adap.algo_data = NULL;
|
||||
i2c_set_adapdata(&st->tuner_adap, st);
|
||||
|
@ -2529,7 +2530,8 @@ struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, c
|
|||
goto error;
|
||||
|
||||
st->component_bus.dev.parent = i2c_adap->dev.parent;
|
||||
strncpy(st->component_bus.name, "DIB9000_FW COMPONENT BUS ACCESS", sizeof(st->component_bus.name));
|
||||
strscpy(st->component_bus.name, "DIB9000_FW COMPONENT BUS ACCESS",
|
||||
sizeof(st->component_bus.name));
|
||||
st->component_bus.algo = &dib9000_component_bus_algo;
|
||||
st->component_bus.algo_data = NULL;
|
||||
st->component_bus_speed = 340;
|
||||
|
|
|
@ -2263,61 +2263,41 @@ static int DRX_Start(struct drxd_state *state, s32 off)
|
|||
case DRX_CHANNEL_LOW:
|
||||
transmissionParams |= SC_RA_RAM_OP_PARAM_PRIO_LO;
|
||||
status = Write16(state, EC_SB_REG_PRIOR__A, EC_SB_REG_PRIOR_LO, 0x0000);
|
||||
if (status < 0)
|
||||
break;
|
||||
break;
|
||||
case DRX_CHANNEL_HIGH:
|
||||
transmissionParams |= SC_RA_RAM_OP_PARAM_PRIO_HI;
|
||||
status = Write16(state, EC_SB_REG_PRIOR__A, EC_SB_REG_PRIOR_HI, 0x0000);
|
||||
if (status < 0)
|
||||
break;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
switch (p->code_rate_HP) {
|
||||
case FEC_1_2:
|
||||
transmissionParams |= SC_RA_RAM_OP_PARAM_RATE_1_2;
|
||||
if (state->type_A) {
|
||||
if (state->type_A)
|
||||
status = Write16(state, EC_VD_REG_SET_CODERATE__A, EC_VD_REG_SET_CODERATE_C1_2, 0x0000);
|
||||
if (status < 0)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
operationMode |= SC_RA_RAM_OP_AUTO_RATE__M;
|
||||
/* fall through */
|
||||
case FEC_2_3:
|
||||
transmissionParams |= SC_RA_RAM_OP_PARAM_RATE_2_3;
|
||||
if (state->type_A) {
|
||||
if (state->type_A)
|
||||
status = Write16(state, EC_VD_REG_SET_CODERATE__A, EC_VD_REG_SET_CODERATE_C2_3, 0x0000);
|
||||
if (status < 0)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case FEC_3_4:
|
||||
transmissionParams |= SC_RA_RAM_OP_PARAM_RATE_3_4;
|
||||
if (state->type_A) {
|
||||
if (state->type_A)
|
||||
status = Write16(state, EC_VD_REG_SET_CODERATE__A, EC_VD_REG_SET_CODERATE_C3_4, 0x0000);
|
||||
if (status < 0)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case FEC_5_6:
|
||||
transmissionParams |= SC_RA_RAM_OP_PARAM_RATE_5_6;
|
||||
if (state->type_A) {
|
||||
if (state->type_A)
|
||||
status = Write16(state, EC_VD_REG_SET_CODERATE__A, EC_VD_REG_SET_CODERATE_C5_6, 0x0000);
|
||||
if (status < 0)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case FEC_7_8:
|
||||
transmissionParams |= SC_RA_RAM_OP_PARAM_RATE_7_8;
|
||||
if (state->type_A) {
|
||||
if (state->type_A)
|
||||
status = Write16(state, EC_VD_REG_SET_CODERATE__A, EC_VD_REG_SET_CODERATE_C7_8, 0x0000);
|
||||
if (status < 0)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (status < 0)
|
||||
|
|
|
@ -839,7 +839,7 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
|
|||
memcpy(&fe->ops.tuner_ops, &dvb_pll_tuner_ops,
|
||||
sizeof(struct dvb_tuner_ops));
|
||||
|
||||
strncpy(fe->ops.tuner_ops.info.name, desc->name,
|
||||
strscpy(fe->ops.tuner_ops.info.name, desc->name,
|
||||
sizeof(fe->ops.tuner_ops.info.name));
|
||||
|
||||
fe->ops.tuner_ops.info.frequency_min_hz = desc->min;
|
||||
|
|
|
@ -309,6 +309,9 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
|
|||
u16 u16tmp;
|
||||
u32 tuner_frequency_khz, target_mclk;
|
||||
s32 s32tmp;
|
||||
static const struct reg_sequence reset_buf[] = {
|
||||
{0x07, 0x80}, {0x07, 0x00}
|
||||
};
|
||||
|
||||
dev_dbg(&client->dev,
|
||||
"delivery_system=%d modulation=%d frequency=%u symbol_rate=%d inversion=%d pilot=%d rolloff=%d\n",
|
||||
|
@ -321,11 +324,7 @@ static int m88ds3103_set_frontend(struct dvb_frontend *fe)
|
|||
}
|
||||
|
||||
/* reset */
|
||||
ret = regmap_write(dev->regmap, 0x07, 0x80);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
ret = regmap_write(dev->regmap, 0x07, 0x00);
|
||||
ret = regmap_multi_reg_write(dev->regmap, reset_buf, 2);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
|
@ -1470,7 +1469,7 @@ static int m88ds3103_probe(struct i2c_client *client,
|
|||
/* create dvb_frontend */
|
||||
memcpy(&dev->fe.ops, &m88ds3103_ops, sizeof(struct dvb_frontend_ops));
|
||||
if (dev->chip_id == M88RS6000_CHIP_ID)
|
||||
strncpy(dev->fe.ops.info.name, "Montage Technology M88RS6000",
|
||||
strscpy(dev->fe.ops.info.name, "Montage Technology M88RS6000",
|
||||
sizeof(dev->fe.ops.info.name));
|
||||
if (!pdata->attach_in_use)
|
||||
dev->fe.ops.release = NULL;
|
||||
|
|
|
@ -275,18 +275,20 @@ static u32 si2165_get_fe_clk(struct si2165_state *state)
|
|||
|
||||
static int si2165_wait_init_done(struct si2165_state *state)
|
||||
{
|
||||
int ret = -EINVAL;
|
||||
int ret;
|
||||
u8 val = 0;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 3; ++i) {
|
||||
si2165_readreg8(state, REG_INIT_DONE, &val);
|
||||
ret = si2165_readreg8(state, REG_INIT_DONE, &val);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
if (val == 0x01)
|
||||
return 0;
|
||||
usleep_range(1000, 50000);
|
||||
}
|
||||
dev_err(&state->client->dev, "init_done was not set\n");
|
||||
return ret;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int si2165_upload_firmware_block(struct si2165_state *state,
|
||||
|
@ -1299,7 +1301,6 @@ MODULE_DEVICE_TABLE(i2c, si2165_id_table);
|
|||
|
||||
static struct i2c_driver si2165_driver = {
|
||||
.driver = {
|
||||
.owner = THIS_MODULE,
|
||||
.name = "si2165",
|
||||
},
|
||||
.probe = si2165_probe,
|
||||
|
|
|
@ -180,6 +180,9 @@ static int ts2020_set_tuner_rf(struct dvb_frontend *fe)
|
|||
unsigned int utmp;
|
||||
|
||||
ret = regmap_read(dev->regmap, 0x3d, &utmp);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
utmp &= 0x7f;
|
||||
if (utmp < 0x16)
|
||||
utmp = 0xa1;
|
||||
|
|
|
@ -8,7 +8,7 @@ config VIDEO_IR_I2C
|
|||
tristate "I2C module for IR" if !MEDIA_SUBDRV_AUTOSELECT
|
||||
depends on I2C && RC_CORE
|
||||
default y
|
||||
---help---
|
||||
help
|
||||
Most boards have an IR chip directly connected via GPIO. However,
|
||||
some video boards have the IR connected via I2C bus.
|
||||
|
||||
|
@ -29,7 +29,7 @@ comment "Audio decoders, processors and mixers"
|
|||
config VIDEO_TVAUDIO
|
||||
tristate "Simple audio decoder chips"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for several audio decoder chips found on some bt8xx boards:
|
||||
Philips: tda9840, tda9873h, tda9874h/a, tda9850, tda985x, tea6300,
|
||||
tea6320, tea6420, tda8425, ta8874z.
|
||||
|
@ -41,7 +41,7 @@ config VIDEO_TVAUDIO
|
|||
config VIDEO_TDA7432
|
||||
tristate "Philips TDA7432 audio processor"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for tda7432 audio decoder chip found on some bt8xx boards.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -50,7 +50,7 @@ config VIDEO_TDA7432
|
|||
config VIDEO_TDA9840
|
||||
tristate "Philips TDA9840 audio processor"
|
||||
depends on I2C
|
||||
---help---
|
||||
help
|
||||
Support for tda9840 audio decoder chip found on some Zoran boards.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -60,9 +60,10 @@ config VIDEO_TDA1997X
|
|||
tristate "NXP TDA1997x HDMI receiver"
|
||||
depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
|
||||
depends on SND_SOC
|
||||
select SND_PCM
|
||||
select HDMI
|
||||
---help---
|
||||
select SND_PCM
|
||||
select V4L2_FWNODE
|
||||
help
|
||||
V4L2 subdevice driver for the NXP TDA1997x HDMI receivers.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -71,7 +72,7 @@ config VIDEO_TDA1997X
|
|||
config VIDEO_TEA6415C
|
||||
tristate "Philips TEA6415C audio processor"
|
||||
depends on I2C
|
||||
---help---
|
||||
help
|
||||
Support for tea6415c audio decoder chip found on some bt8xx boards.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -80,7 +81,7 @@ config VIDEO_TEA6415C
|
|||
config VIDEO_TEA6420
|
||||
tristate "Philips TEA6420 audio processor"
|
||||
depends on I2C
|
||||
---help---
|
||||
help
|
||||
Support for tea6420 audio decoder chip found on some bt8xx boards.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -89,7 +90,7 @@ config VIDEO_TEA6420
|
|||
config VIDEO_MSP3400
|
||||
tristate "Micronas MSP34xx audio decoders"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Micronas MSP34xx series of audio decoders.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -98,7 +99,7 @@ config VIDEO_MSP3400
|
|||
config VIDEO_CS3308
|
||||
tristate "Cirrus Logic CS3308 audio ADC"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Cirrus Logic CS3308 High Performance 8-Channel
|
||||
Analog Volume Control
|
||||
|
||||
|
@ -108,7 +109,7 @@ config VIDEO_CS3308
|
|||
config VIDEO_CS5345
|
||||
tristate "Cirrus Logic CS5345 audio ADC"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Cirrus Logic CS5345 24-bit, 192 kHz
|
||||
stereo A/D converter.
|
||||
|
||||
|
@ -118,7 +119,7 @@ config VIDEO_CS5345
|
|||
config VIDEO_CS53L32A
|
||||
tristate "Cirrus Logic CS53L32A audio ADC"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Cirrus Logic CS53L32A low voltage
|
||||
stereo A/D converter.
|
||||
|
||||
|
@ -128,7 +129,7 @@ config VIDEO_CS53L32A
|
|||
config VIDEO_TLV320AIC23B
|
||||
tristate "Texas Instruments TLV320AIC23B audio codec"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Texas Instruments TLV320AIC23B audio codec.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -137,7 +138,7 @@ config VIDEO_TLV320AIC23B
|
|||
config VIDEO_UDA1342
|
||||
tristate "Philips UDA1342 audio codec"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Philips UDA1342 audio codec.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -146,7 +147,7 @@ config VIDEO_UDA1342
|
|||
config VIDEO_WM8775
|
||||
tristate "Wolfson Microelectronics WM8775 audio ADC with input mixer"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Wolfson Microelectronics WM8775 high
|
||||
performance stereo A/D Converter with a 4 channel input mixer.
|
||||
|
||||
|
@ -156,7 +157,7 @@ config VIDEO_WM8775
|
|||
config VIDEO_WM8739
|
||||
tristate "Wolfson Microelectronics WM8739 stereo audio ADC"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Wolfson Microelectronics WM8739
|
||||
stereo A/D Converter.
|
||||
|
||||
|
@ -166,7 +167,7 @@ config VIDEO_WM8739
|
|||
config VIDEO_VP27SMPX
|
||||
tristate "Panasonic VP27's internal MPX"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the internal MPX of the Panasonic VP27s tuner.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -200,7 +201,7 @@ comment "Video decoders"
|
|||
config VIDEO_ADV7180
|
||||
tristate "Analog Devices ADV7180 decoder"
|
||||
depends on GPIOLIB && VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
|
||||
---help---
|
||||
help
|
||||
Support for the Analog Devices ADV7180 video decoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -209,7 +210,7 @@ config VIDEO_ADV7180
|
|||
config VIDEO_ADV7183
|
||||
tristate "Analog Devices ADV7183 decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
V4l2 subdevice driver for the Analog Devices
|
||||
ADV7183 video decoder.
|
||||
|
||||
|
@ -221,7 +222,8 @@ config VIDEO_ADV748X
|
|||
depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
|
||||
depends on OF
|
||||
select REGMAP_I2C
|
||||
---help---
|
||||
select V4L2_FWNODE
|
||||
help
|
||||
V4L2 subdevice driver for the Analog Devices
|
||||
ADV7481 and ADV7482 HDMI/Analog video decoders.
|
||||
|
||||
|
@ -234,7 +236,7 @@ config VIDEO_ADV7604
|
|||
depends on GPIOLIB || COMPILE_TEST
|
||||
select HDMI
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
Support for the Analog Devices ADV7604 video decoder.
|
||||
|
||||
This is a Analog Devices Component/Graphics Digitizer
|
||||
|
@ -247,7 +249,7 @@ config VIDEO_ADV7604_CEC
|
|||
bool "Enable Analog Devices ADV7604 CEC support"
|
||||
depends on VIDEO_ADV7604
|
||||
select CEC_CORE
|
||||
---help---
|
||||
help
|
||||
When selected the adv7604 will support the optional
|
||||
HDMI CEC feature.
|
||||
|
||||
|
@ -255,7 +257,7 @@ config VIDEO_ADV7842
|
|||
tristate "Analog Devices ADV7842 decoder"
|
||||
depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
|
||||
select HDMI
|
||||
---help---
|
||||
help
|
||||
Support for the Analog Devices ADV7842 video decoder.
|
||||
|
||||
This is a Analog Devices Component/Graphics/SD Digitizer
|
||||
|
@ -268,14 +270,14 @@ config VIDEO_ADV7842_CEC
|
|||
bool "Enable Analog Devices ADV7842 CEC support"
|
||||
depends on VIDEO_ADV7842
|
||||
select CEC_CORE
|
||||
---help---
|
||||
help
|
||||
When selected the adv7842 will support the optional
|
||||
HDMI CEC feature.
|
||||
|
||||
config VIDEO_BT819
|
||||
tristate "BT819A VideoStream decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for BT819A video decoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -284,7 +286,7 @@ config VIDEO_BT819
|
|||
config VIDEO_BT856
|
||||
tristate "BT856 VideoStream decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for BT856 video decoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -293,7 +295,7 @@ config VIDEO_BT856
|
|||
config VIDEO_BT866
|
||||
tristate "BT866 VideoStream decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for BT866 video decoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -302,7 +304,7 @@ config VIDEO_BT866
|
|||
config VIDEO_KS0127
|
||||
tristate "KS0127 video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for KS0127 video decoder.
|
||||
|
||||
This chip is used on AverMedia AVS6EYES Zoran-based MJPEG
|
||||
|
@ -314,53 +316,16 @@ config VIDEO_KS0127
|
|||
config VIDEO_ML86V7667
|
||||
tristate "OKI ML86V7667 video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the OKI Semiconductor ML86V7667 video decoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called ml86v7667.
|
||||
|
||||
config VIDEO_AD5820
|
||||
tristate "AD5820 lens voice coil support"
|
||||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
---help---
|
||||
This is a driver for the AD5820 camera lens voice coil.
|
||||
It is used for example in Nokia N900 (RX-51).
|
||||
|
||||
config VIDEO_AK7375
|
||||
tristate "AK7375 lens voice coil support"
|
||||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
depends on VIDEO_V4L2_SUBDEV_API
|
||||
help
|
||||
This is a driver for the AK7375 camera lens voice coil.
|
||||
AK7375 is a 12 bit DAC with 120mA output current sink
|
||||
capability. This is designed for linear control of
|
||||
voice coil motors, controlled via I2C serial interface.
|
||||
|
||||
config VIDEO_DW9714
|
||||
tristate "DW9714 lens voice coil support"
|
||||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
depends on VIDEO_V4L2_SUBDEV_API
|
||||
---help---
|
||||
This is a driver for the DW9714 camera lens voice coil.
|
||||
DW9714 is a 10 bit DAC with 120mA output current sink
|
||||
capability. This is designed for linear control of
|
||||
voice coil motors, controlled via I2C serial interface.
|
||||
|
||||
config VIDEO_DW9807_VCM
|
||||
tristate "DW9807 lens voice coil support"
|
||||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
depends on VIDEO_V4L2_SUBDEV_API
|
||||
---help---
|
||||
This is a driver for the DW9807 camera lens voice coil.
|
||||
DW9807 is a 10 bit DAC with 100mA output current sink
|
||||
capability. This is designed for linear control of
|
||||
voice coil motors, controlled via I2C serial interface.
|
||||
|
||||
config VIDEO_SAA7110
|
||||
tristate "Philips SAA7110 video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Philips SAA7110 video decoders.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -369,7 +334,7 @@ config VIDEO_SAA7110
|
|||
config VIDEO_SAA711X
|
||||
tristate "Philips SAA7111/3/4/5 video decoders"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Philips SAA7111/3/4/5 video decoders.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -380,7 +345,7 @@ config VIDEO_TC358743
|
|||
depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
|
||||
select HDMI
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
Support for the Toshiba TC358743 HDMI to MIPI CSI-2 bridge.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -390,7 +355,7 @@ config VIDEO_TC358743_CEC
|
|||
bool "Enable Toshiba TC358743 CEC support"
|
||||
depends on VIDEO_TC358743
|
||||
select CEC_CORE
|
||||
---help---
|
||||
help
|
||||
When selected the tc358743 will support the optional
|
||||
HDMI CEC feature.
|
||||
|
||||
|
@ -398,7 +363,7 @@ config VIDEO_TVP514X
|
|||
tristate "Texas Instruments TVP514x video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the TI TVP5146/47
|
||||
decoder. It is currently working with the TI OMAP3 camera
|
||||
controller.
|
||||
|
@ -410,7 +375,7 @@ config VIDEO_TVP5150
|
|||
tristate "Texas Instruments TVP5150 video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
Support for the Texas Instruments TVP5150 video decoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -420,7 +385,7 @@ config VIDEO_TVP7002
|
|||
tristate "Texas Instruments TVP7002 video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
Support for the Texas Instruments TVP7002 video decoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -429,7 +394,7 @@ config VIDEO_TVP7002
|
|||
config VIDEO_TW2804
|
||||
tristate "Techwell TW2804 multiple video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Techwell tw2804 multiple video decoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -438,7 +403,7 @@ config VIDEO_TW2804
|
|||
config VIDEO_TW9903
|
||||
tristate "Techwell TW9903 video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Techwell tw9903 multi-standard video decoder
|
||||
with high quality down scaler.
|
||||
|
||||
|
@ -448,7 +413,7 @@ config VIDEO_TW9903
|
|||
config VIDEO_TW9906
|
||||
tristate "Techwell TW9906 video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Techwell tw9906 enhanced multi-standard comb filter
|
||||
video decoder with YCbCr input support.
|
||||
|
||||
|
@ -458,7 +423,7 @@ config VIDEO_TW9906
|
|||
config VIDEO_TW9910
|
||||
tristate "Techwell TW9910 video decoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for Techwell TW9910 NTSC/PAL/SECAM video decoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -467,7 +432,7 @@ config VIDEO_TW9910
|
|||
config VIDEO_VPX3220
|
||||
tristate "vpx3220a, vpx3216b & vpx3214c video decoders"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for VPX322x video decoders.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -478,7 +443,7 @@ comment "Video and audio decoders"
|
|||
config VIDEO_SAA717X
|
||||
tristate "Philips SAA7171/3/4 audio/video decoders"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Philips SAA7171/3/4 audio/video decoders.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -491,7 +456,7 @@ comment "Video encoders"
|
|||
config VIDEO_SAA7127
|
||||
tristate "Philips SAA7127/9 digital video encoders"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Philips SAA7127/9 digital video encoders.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -500,7 +465,7 @@ config VIDEO_SAA7127
|
|||
config VIDEO_SAA7185
|
||||
tristate "Philips SAA7185 video encoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Philips SAA7185 video encoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -509,7 +474,7 @@ config VIDEO_SAA7185
|
|||
config VIDEO_ADV7170
|
||||
tristate "Analog Devices ADV7170 video encoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Analog Devices ADV7170 video encoder driver
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -518,7 +483,7 @@ config VIDEO_ADV7170
|
|||
config VIDEO_ADV7175
|
||||
tristate "Analog Devices ADV7175 video encoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Analog Devices ADV7175 video encoder driver
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -546,7 +511,7 @@ config VIDEO_ADV7511
|
|||
tristate "Analog Devices ADV7511 encoder"
|
||||
depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
|
||||
select HDMI
|
||||
---help---
|
||||
help
|
||||
Support for the Analog Devices ADV7511 video encoder.
|
||||
|
||||
This is a Analog Devices HDMI transmitter.
|
||||
|
@ -558,14 +523,14 @@ config VIDEO_ADV7511_CEC
|
|||
bool "Enable Analog Devices ADV7511 CEC support"
|
||||
depends on VIDEO_ADV7511
|
||||
select CEC_CORE
|
||||
---help---
|
||||
help
|
||||
When selected the adv7511 will support the optional
|
||||
HDMI CEC feature.
|
||||
|
||||
config VIDEO_AD9389B
|
||||
tristate "Analog Devices AD9389B encoder"
|
||||
depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
|
||||
---help---
|
||||
help
|
||||
Support for the Analog Devices AD9389B video encoder.
|
||||
|
||||
This is a Analog Devices HDMI transmitter.
|
||||
|
@ -582,7 +547,7 @@ config VIDEO_AK881X
|
|||
config VIDEO_THS8200
|
||||
tristate "Texas Instruments THS8200 video encoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Texas Instruments THS8200 video encoder.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -612,7 +577,7 @@ config VIDEO_IMX258
|
|||
tristate "Sony IMX258 sensor support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the Sony
|
||||
IMX258 camera.
|
||||
|
||||
|
@ -624,7 +589,7 @@ config VIDEO_IMX274
|
|||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select REGMAP_I2C
|
||||
---help---
|
||||
help
|
||||
This is a V4L2 sensor driver for the Sony IMX274
|
||||
CMOS image sensor.
|
||||
|
||||
|
@ -666,7 +631,7 @@ config VIDEO_OV2659
|
|||
depends on VIDEO_V4L2 && I2C
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV2659 camera.
|
||||
|
||||
|
@ -678,7 +643,7 @@ config VIDEO_OV2680
|
|||
depends on VIDEO_V4L2 && I2C && MEDIA_CONTROLLER
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV2680 camera.
|
||||
|
||||
|
@ -690,7 +655,7 @@ config VIDEO_OV2685
|
|||
depends on VIDEO_V4L2 && I2C && MEDIA_CONTROLLER
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV2685 camera.
|
||||
|
||||
|
@ -703,7 +668,7 @@ config VIDEO_OV5640
|
|||
depends on GPIOLIB && VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the Omnivision
|
||||
OV5640 camera sensor with a MIPI CSI-2 interface.
|
||||
|
||||
|
@ -713,7 +678,7 @@ config VIDEO_OV5645
|
|||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV5645 camera.
|
||||
|
||||
|
@ -725,7 +690,7 @@ config VIDEO_OV5647
|
|||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV5647 camera.
|
||||
|
||||
|
@ -736,7 +701,7 @@ config VIDEO_OV6650
|
|||
tristate "OmniVision OV6650 sensor support"
|
||||
depends on I2C && VIDEO_V4L2
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV6650 camera.
|
||||
|
||||
|
@ -749,7 +714,7 @@ config VIDEO_OV5670
|
|||
depends on MEDIA_CAMERA_SUPPORT
|
||||
depends on MEDIA_CONTROLLER
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV5670 camera.
|
||||
|
||||
|
@ -760,7 +725,7 @@ config VIDEO_OV5695
|
|||
tristate "OmniVision OV5695 sensor support"
|
||||
depends on I2C && VIDEO_V4L2
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV5695 camera.
|
||||
|
||||
|
@ -784,7 +749,7 @@ config VIDEO_OV772X
|
|||
depends on I2C && VIDEO_V4L2
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select REGMAP_SCCB
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV772x camera.
|
||||
|
||||
|
@ -795,7 +760,7 @@ config VIDEO_OV7640
|
|||
tristate "OmniVision OV7640 sensor support"
|
||||
depends on I2C && VIDEO_V4L2
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV7640 camera.
|
||||
|
||||
|
@ -807,7 +772,7 @@ config VIDEO_OV7670
|
|||
depends on I2C && VIDEO_V4L2
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV7670 VGA camera. It currently only works with the M88ALP01
|
||||
controller.
|
||||
|
@ -816,7 +781,7 @@ config VIDEO_OV7740
|
|||
tristate "OmniVision OV7740 sensor support"
|
||||
depends on I2C && VIDEO_V4L2
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV7740 VGA camera sensor.
|
||||
|
||||
|
@ -843,7 +808,7 @@ config VIDEO_OV9650
|
|||
tristate "OmniVision OV9650/OV9652 sensor support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
select REGMAP_SCCB
|
||||
---help---
|
||||
help
|
||||
This is a V4L2 sensor driver for the Omnivision
|
||||
OV9650 and OV9652 camera sensors.
|
||||
|
||||
|
@ -852,7 +817,7 @@ config VIDEO_OV13858
|
|||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the OmniVision
|
||||
OV13858 camera.
|
||||
|
||||
|
@ -860,7 +825,7 @@ config VIDEO_VS6624
|
|||
tristate "ST VS6624 sensor support"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the ST VS6624
|
||||
camera.
|
||||
|
||||
|
@ -880,7 +845,7 @@ config VIDEO_MT9M032
|
|||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select VIDEO_APTINA_PLL
|
||||
---help---
|
||||
help
|
||||
This driver supports MT9M032 camera sensors from Aptina, monochrome
|
||||
models only.
|
||||
|
||||
|
@ -897,7 +862,7 @@ config VIDEO_MT9P031
|
|||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select VIDEO_APTINA_PLL
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the Aptina
|
||||
(Micron) mt9p031 5 Mpixel camera.
|
||||
|
||||
|
@ -905,7 +870,7 @@ config VIDEO_MT9T001
|
|||
tristate "Aptina MT9T001 support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the Aptina
|
||||
(Micron) mt0t001 3 Mpixel camera.
|
||||
|
||||
|
@ -913,7 +878,7 @@ config VIDEO_MT9T112
|
|||
tristate "Aptina MT9T111/MT9T112 support"
|
||||
depends on I2C && VIDEO_V4L2
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the Aptina
|
||||
(Micron) MT9T111 and MT9T112 3 Mpixel camera.
|
||||
|
||||
|
@ -924,7 +889,7 @@ config VIDEO_MT9V011
|
|||
tristate "Micron mt9v011 sensor support"
|
||||
depends on I2C && VIDEO_V4L2
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the Micron
|
||||
mt0v011 1.3 Mpixel camera. It currently only works with the
|
||||
em28xx driver.
|
||||
|
@ -935,7 +900,7 @@ config VIDEO_MT9V032
|
|||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select REGMAP_I2C
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a Video4Linux2 sensor driver for the Micron
|
||||
MT9V032 752x480 CMOS sensor.
|
||||
|
||||
|
@ -954,14 +919,14 @@ config VIDEO_SR030PC30
|
|||
tristate "Siliconfile SR030PC30 sensor support"
|
||||
depends on I2C && VIDEO_V4L2
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This driver supports SR030PC30 VGA camera from Siliconfile
|
||||
|
||||
config VIDEO_NOON010PC30
|
||||
tristate "Siliconfile NOON010PC30 sensor support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This driver supports NOON010PC30 CIF camera from Siliconfile
|
||||
|
||||
source "drivers/media/i2c/m5mols/Kconfig"
|
||||
|
@ -981,7 +946,7 @@ config VIDEO_S5K6AA
|
|||
tristate "Samsung S5K6AAFX sensor support"
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
---help---
|
||||
help
|
||||
This is a V4L2 sensor driver for Samsung S5K6AA(FX) 1.3M
|
||||
camera sensor with an embedded SoC image signal processor.
|
||||
|
||||
|
@ -989,7 +954,7 @@ config VIDEO_S5K6A3
|
|||
tristate "Samsung S5K6A3 sensor support"
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
---help---
|
||||
help
|
||||
This is a V4L2 sensor driver for Samsung S5K6A3 raw
|
||||
camera sensor.
|
||||
|
||||
|
@ -997,7 +962,7 @@ config VIDEO_S5K4ECGX
|
|||
tristate "Samsung S5K4ECGX sensor support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
select CRC32
|
||||
---help---
|
||||
help
|
||||
This is a V4L2 sensor driver for Samsung S5K4ECGX 5M
|
||||
camera sensor with an embedded SoC image signal processor.
|
||||
|
||||
|
@ -1005,7 +970,7 @@ config VIDEO_S5K5BAF
|
|||
tristate "Samsung S5K5BAF sensor support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a V4L2 sensor driver for Samsung S5K5BAF 2M
|
||||
camera sensor with an embedded SoC image signal processor.
|
||||
|
||||
|
@ -1016,17 +981,56 @@ config VIDEO_S5C73M3
|
|||
tristate "Samsung S5C73M3 sensor support"
|
||||
depends on I2C && SPI && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a V4L2 sensor driver for Samsung S5C73M3
|
||||
8 Mpixel camera.
|
||||
|
||||
comment "Lens drivers"
|
||||
|
||||
config VIDEO_AD5820
|
||||
tristate "AD5820 lens voice coil support"
|
||||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
help
|
||||
This is a driver for the AD5820 camera lens voice coil.
|
||||
It is used for example in Nokia N900 (RX-51).
|
||||
|
||||
config VIDEO_AK7375
|
||||
tristate "AK7375 lens voice coil support"
|
||||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
depends on VIDEO_V4L2_SUBDEV_API
|
||||
help
|
||||
This is a driver for the AK7375 camera lens voice coil.
|
||||
AK7375 is a 12 bit DAC with 120mA output current sink
|
||||
capability. This is designed for linear control of
|
||||
voice coil motors, controlled via I2C serial interface.
|
||||
|
||||
config VIDEO_DW9714
|
||||
tristate "DW9714 lens voice coil support"
|
||||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
depends on VIDEO_V4L2_SUBDEV_API
|
||||
help
|
||||
This is a driver for the DW9714 camera lens voice coil.
|
||||
DW9714 is a 10 bit DAC with 120mA output current sink
|
||||
capability. This is designed for linear control of
|
||||
voice coil motors, controlled via I2C serial interface.
|
||||
|
||||
config VIDEO_DW9807_VCM
|
||||
tristate "DW9807 lens voice coil support"
|
||||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
depends on VIDEO_V4L2_SUBDEV_API
|
||||
help
|
||||
This is a driver for the DW9807 camera lens voice coil.
|
||||
DW9807 is a 10 bit DAC with 100mA output current sink
|
||||
capability. This is designed for linear control of
|
||||
voice coil motors, controlled via I2C serial interface.
|
||||
|
||||
comment "Flash devices"
|
||||
|
||||
config VIDEO_ADP1653
|
||||
tristate "ADP1653 flash support"
|
||||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This is a driver for the ADP1653 flash controller. It is used for
|
||||
example in Nokia N900.
|
||||
|
||||
|
@ -1035,7 +1039,7 @@ config VIDEO_LM3560
|
|||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select REGMAP_I2C
|
||||
---help---
|
||||
help
|
||||
This is a driver for the lm3560 dual flash controllers. It controls
|
||||
flash, torch LEDs.
|
||||
|
||||
|
@ -1044,7 +1048,7 @@ config VIDEO_LM3646
|
|||
depends on I2C && VIDEO_V4L2 && MEDIA_CONTROLLER
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select REGMAP_I2C
|
||||
---help---
|
||||
help
|
||||
This is a driver for the lm3646 dual flash controllers. It controls
|
||||
flash, torch LEDs.
|
||||
|
||||
|
@ -1053,7 +1057,7 @@ comment "Video improvement chips"
|
|||
config VIDEO_UPD64031A
|
||||
tristate "NEC Electronics uPD64031A Ghost Reduction"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the NEC Electronics uPD64031A Ghost Reduction
|
||||
video chip. It is most often found in NTSC TV cards made for
|
||||
Japan and is used to reduce the 'ghosting' effect that can
|
||||
|
@ -1065,7 +1069,7 @@ config VIDEO_UPD64031A
|
|||
config VIDEO_UPD64083
|
||||
tristate "NEC Electronics uPD64083 3-Dimensional Y/C separation"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the NEC Electronics uPD64083 3-Dimensional Y/C
|
||||
separation video chip. It is used to improve the quality of
|
||||
the colors of a composite signal.
|
||||
|
@ -1079,7 +1083,7 @@ config VIDEO_SAA6752HS
|
|||
tristate "Philips SAA6752HS MPEG-2 Audio/Video Encoder"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
select CRC32
|
||||
---help---
|
||||
help
|
||||
Support for the Philips SAA6752HS MPEG-2 video and MPEG-audio/AC-3
|
||||
audio encoder with multiplexer.
|
||||
|
||||
|
@ -1091,7 +1095,7 @@ comment "SDR tuner chips"
|
|||
config SDR_MAX2175
|
||||
tristate "Maxim 2175 RF to Bits tuner"
|
||||
depends on VIDEO_V4L2 && MEDIA_SDR_SUPPORT && I2C
|
||||
---help---
|
||||
help
|
||||
Support for Maxim 2175 tuner. It is an advanced analog/digital
|
||||
radio receiver with RF-to-Bits front-end designed for SDR solutions.
|
||||
|
||||
|
@ -1112,7 +1116,7 @@ config VIDEO_THS7303
|
|||
config VIDEO_M52790
|
||||
tristate "Mitsubishi M52790 A/V switch"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Mitsubishi M52790 A/V switch.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
@ -1123,7 +1127,7 @@ config VIDEO_I2C
|
|||
depends on VIDEO_V4L2 && I2C
|
||||
select VIDEOBUF2_VMALLOC
|
||||
imply HWMON
|
||||
---help---
|
||||
help
|
||||
Enable the I2C transport video support which supports the
|
||||
following:
|
||||
* Panasonic AMG88xx Grid-Eye Sensors
|
||||
|
@ -1132,6 +1136,19 @@ config VIDEO_I2C
|
|||
To compile this driver as a module, choose M here: the
|
||||
module will be called video-i2c
|
||||
|
||||
config VIDEO_ST_MIPID02
|
||||
tristate "STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
help
|
||||
Support for STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge.
|
||||
It is used to allow usage of CSI-2 sensor with PARALLEL port
|
||||
controller.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called st-mipid02.
|
||||
|
||||
endmenu
|
||||
|
||||
endif
|
||||
|
|
|
@ -113,5 +113,6 @@ obj-$(CONFIG_VIDEO_IMX258) += imx258.o
|
|||
obj-$(CONFIG_VIDEO_IMX274) += imx274.o
|
||||
obj-$(CONFIG_VIDEO_IMX319) += imx319.o
|
||||
obj-$(CONFIG_VIDEO_IMX355) += imx355.o
|
||||
obj-$(CONFIG_VIDEO_ST_MIPID02) += st-mipid02.o
|
||||
|
||||
obj-$(CONFIG_SDR_MAX2175) += max2175.o
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
config VIDEO_CX25840
|
||||
tristate "Conexant CX2584x audio/video decoders"
|
||||
depends on VIDEO_V4L2 && I2C
|
||||
---help---
|
||||
help
|
||||
Support for the Conexant CX2584x audio/video decoders.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
|
|
@ -2,6 +2,6 @@ config VIDEO_ET8EK8
|
|||
tristate "ET8EK8 camera sensor support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a driver for the Toshiba ET8EK8 5 MP camera sensor.
|
||||
It is used for example in Nokia N900 (RX-51).
|
||||
|
|
|
@ -588,12 +588,10 @@ static int imx214_set_format(struct v4l2_subdev *sd,
|
|||
|
||||
__crop = __imx214_get_pad_crop(imx214, cfg, format->pad, format->which);
|
||||
|
||||
if (format)
|
||||
mode = v4l2_find_nearest_size(imx214_modes,
|
||||
ARRAY_SIZE(imx214_modes), width, height,
|
||||
format->format.width, format->format.height);
|
||||
else
|
||||
mode = &imx214_modes[0];
|
||||
mode = v4l2_find_nearest_size(imx214_modes,
|
||||
ARRAY_SIZE(imx214_modes), width, height,
|
||||
format->format.width,
|
||||
format->format.height);
|
||||
|
||||
__crop->width = mode->width;
|
||||
__crop->height = mode->height;
|
||||
|
|
|
@ -2,5 +2,5 @@ config VIDEO_M5MOLS
|
|||
tristate "Fujitsu M-5MOLS 8MP sensor support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
---help---
|
||||
help
|
||||
This driver supports Fujitsu M-5MOLS camera sensor with ISP
|
||||
|
|
|
@ -1117,8 +1117,10 @@ static int ov2659_set_fmt(struct v4l2_subdev *sd,
|
|||
if (ov2659_formats[index].code == mf->code)
|
||||
break;
|
||||
|
||||
if (index < 0)
|
||||
return -EINVAL;
|
||||
if (index < 0) {
|
||||
index = 0;
|
||||
mf->code = ov2659_formats[index].code;
|
||||
}
|
||||
|
||||
mf->colorspace = V4L2_COLORSPACE_SRGB;
|
||||
mf->field = V4L2_FIELD_NONE;
|
||||
|
@ -1130,7 +1132,7 @@ static int ov2659_set_fmt(struct v4l2_subdev *sd,
|
|||
mf = v4l2_subdev_get_try_format(sd, cfg, fmt->pad);
|
||||
*mf = fmt->format;
|
||||
#else
|
||||
return -ENOTTY;
|
||||
ret = -ENOTTY;
|
||||
#endif
|
||||
} else {
|
||||
s64 val;
|
||||
|
|
|
@ -804,15 +804,25 @@ static int ov6650_prog_dflt(struct i2c_client *client)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int ov6650_video_probe(struct i2c_client *client)
|
||||
static int ov6650_video_probe(struct v4l2_subdev *sd)
|
||||
{
|
||||
struct i2c_client *client = v4l2_get_subdevdata(sd);
|
||||
struct ov6650 *priv = to_ov6650(client);
|
||||
u8 pidh, pidl, midh, midl;
|
||||
int ret;
|
||||
|
||||
ret = ov6650_s_power(&priv->subdev, 1);
|
||||
if (ret < 0)
|
||||
priv->clk = v4l2_clk_get(&client->dev, NULL);
|
||||
if (IS_ERR(priv->clk)) {
|
||||
ret = PTR_ERR(priv->clk);
|
||||
dev_err(&client->dev, "v4l2_clk request err: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = ov6650_s_power(sd, 1);
|
||||
if (ret < 0)
|
||||
goto eclkput;
|
||||
|
||||
msleep(20);
|
||||
|
||||
/*
|
||||
* check and show product ID and manufacturer ID
|
||||
|
@ -846,7 +856,12 @@ static int ov6650_video_probe(struct i2c_client *client)
|
|||
ret = v4l2_ctrl_handler_setup(&priv->hdl);
|
||||
|
||||
done:
|
||||
ov6650_s_power(&priv->subdev, 0);
|
||||
ov6650_s_power(sd, 0);
|
||||
if (!ret)
|
||||
return 0;
|
||||
eclkput:
|
||||
v4l2_clk_put(priv->clk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -929,6 +944,10 @@ static const struct v4l2_subdev_ops ov6650_subdev_ops = {
|
|||
.pad = &ov6650_pad_ops,
|
||||
};
|
||||
|
||||
static const struct v4l2_subdev_internal_ops ov6650_internal_ops = {
|
||||
.registered = ov6650_video_probe,
|
||||
};
|
||||
|
||||
/*
|
||||
* i2c_driver function
|
||||
*/
|
||||
|
@ -989,18 +1008,12 @@ static int ov6650_probe(struct i2c_client *client,
|
|||
priv->code = MEDIA_BUS_FMT_YUYV8_2X8;
|
||||
priv->colorspace = V4L2_COLORSPACE_JPEG;
|
||||
|
||||
priv->clk = v4l2_clk_get(&client->dev, NULL);
|
||||
if (IS_ERR(priv->clk)) {
|
||||
ret = PTR_ERR(priv->clk);
|
||||
goto eclkget;
|
||||
}
|
||||
priv->subdev.internal_ops = &ov6650_internal_ops;
|
||||
priv->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
|
||||
|
||||
ret = ov6650_video_probe(client);
|
||||
if (ret) {
|
||||
v4l2_clk_put(priv->clk);
|
||||
eclkget:
|
||||
ret = v4l2_async_register_subdev(&priv->subdev);
|
||||
if (ret)
|
||||
v4l2_ctrl_handler_free(&priv->hdl);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -1010,7 +1023,7 @@ static int ov6650_remove(struct i2c_client *client)
|
|||
struct ov6650 *priv = to_ov6650(client);
|
||||
|
||||
v4l2_clk_put(priv->clk);
|
||||
v4l2_device_unregister_subdev(&priv->subdev);
|
||||
v4l2_async_unregister_subdev(&priv->subdev);
|
||||
v4l2_ctrl_handler_free(&priv->hdl);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -864,7 +864,15 @@ static int ov7675_set_framerate(struct v4l2_subdev *sd,
|
|||
/* Recalculate frame rate */
|
||||
ov7675_get_framerate(sd, tpf);
|
||||
|
||||
return ov7675_apply_framerate(sd);
|
||||
/*
|
||||
* If the device is not powered up by the host driver do
|
||||
* not apply any changes to H/W at this time. Instead
|
||||
* the framerate will be restored right after power-up.
|
||||
*/
|
||||
if (info->on)
|
||||
return ov7675_apply_framerate(sd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ov7670_get_framerate_legacy(struct v4l2_subdev *sd,
|
||||
|
@ -895,7 +903,16 @@ static int ov7670_set_framerate_legacy(struct v4l2_subdev *sd,
|
|||
info->clkrc = (info->clkrc & 0x80) | div;
|
||||
tpf->numerator = 1;
|
||||
tpf->denominator = info->clock_speed / div;
|
||||
return ov7670_write(sd, REG_CLKRC, info->clkrc);
|
||||
|
||||
/*
|
||||
* If the device is not powered up by the host driver do
|
||||
* not apply any changes to H/W at this time. Instead
|
||||
* the framerate will be restored right after power-up.
|
||||
*/
|
||||
if (info->on)
|
||||
return ov7670_write(sd, REG_CLKRC, info->clkrc);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1105,9 +1122,13 @@ static int ov7670_set_fmt(struct v4l2_subdev *sd,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = ov7670_apply_fmt(sd);
|
||||
if (ret)
|
||||
return ret;
|
||||
/*
|
||||
* If the device is not powered up by the host driver do
|
||||
* not apply any changes to H/W at this time. Instead
|
||||
* the frame format will be restored right after power-up.
|
||||
*/
|
||||
if (info->on)
|
||||
return ov7670_apply_fmt(sd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1664,6 +1685,7 @@ static int ov7670_s_power(struct v4l2_subdev *sd, int on)
|
|||
|
||||
if (on) {
|
||||
ov7670_power_on (sd);
|
||||
ov7670_init(sd, 0);
|
||||
ov7670_apply_fmt(sd);
|
||||
ov7675_apply_framerate(sd);
|
||||
v4l2_ctrl_handler_setup(&info->hdl);
|
||||
|
|
|
@ -448,6 +448,27 @@ static int ov7740_get_gain(struct ov7740 *ov7740, struct v4l2_ctrl *ctrl)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int ov7740_get_exp(struct ov7740 *ov7740, struct v4l2_ctrl *ctrl)
|
||||
{
|
||||
struct regmap *regmap = ov7740->regmap;
|
||||
unsigned int value0, value1;
|
||||
int ret;
|
||||
|
||||
if (ctrl->val == V4L2_EXPOSURE_MANUAL)
|
||||
return 0;
|
||||
|
||||
ret = regmap_read(regmap, REG_AEC, &value0);
|
||||
if (ret)
|
||||
return ret;
|
||||
ret = regmap_read(regmap, REG_HAEC, &value1);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ov7740->exposure->val = (value1 << 8) | (value0 & 0xff);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ov7740_set_exp(struct regmap *regmap, int value)
|
||||
{
|
||||
int ret;
|
||||
|
@ -494,6 +515,9 @@ static int ov7740_get_volatile_ctrl(struct v4l2_ctrl *ctrl)
|
|||
case V4L2_CID_AUTOGAIN:
|
||||
ret = ov7740_get_gain(ov7740, ctrl);
|
||||
break;
|
||||
case V4L2_CID_EXPOSURE_AUTO:
|
||||
ret = ov7740_get_exp(ov7740, ctrl);
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
|
@ -991,8 +1015,6 @@ static int ov7740_init_controls(struct ov7740 *ov7740)
|
|||
|
||||
ov7740->exposure = v4l2_ctrl_new_std(ctrl_hdlr, &ov7740_ctrl_ops,
|
||||
V4L2_CID_EXPOSURE, 0, 65535, 1, 500);
|
||||
if (ov7740->exposure)
|
||||
ov7740->exposure->flags |= V4L2_CTRL_FLAG_VOLATILE;
|
||||
|
||||
ov7740->auto_exposure = v4l2_ctrl_new_std_menu(ctrl_hdlr,
|
||||
&ov7740_ctrl_ops,
|
||||
|
@ -1003,7 +1025,7 @@ static int ov7740_init_controls(struct ov7740 *ov7740)
|
|||
v4l2_ctrl_auto_cluster(3, &ov7740->auto_wb, 0, false);
|
||||
v4l2_ctrl_auto_cluster(2, &ov7740->auto_gain, 0, true);
|
||||
v4l2_ctrl_auto_cluster(2, &ov7740->auto_exposure,
|
||||
V4L2_EXPOSURE_MANUAL, false);
|
||||
V4L2_EXPOSURE_MANUAL, true);
|
||||
v4l2_ctrl_cluster(2, &ov7740->hflip);
|
||||
|
||||
if (ctrl_hdlr->error) {
|
||||
|
|
|
@ -4,5 +4,5 @@ config VIDEO_SMIAPP
|
|||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select VIDEO_SMIAPP_PLL
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
help
|
||||
This is a generic driver for SMIA++/SMIA camera modules.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,135 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* media-dev-allocator.c - Media Controller Device Allocator API
|
||||
*
|
||||
* Copyright (c) 2019 Shuah Khan <shuah@kernel.org>
|
||||
*
|
||||
* Credits: Suggested by Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file adds a global refcounted Media Controller Device Instance API.
|
||||
* A system wide global media device list is managed and each media device
|
||||
* includes a kref count. The last put on the media device releases the media
|
||||
* device instance.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/kref.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/usb.h>
|
||||
|
||||
#include <media/media-device.h>
|
||||
#include <media/media-dev-allocator.h>
|
||||
|
||||
static LIST_HEAD(media_device_list);
|
||||
static DEFINE_MUTEX(media_device_lock);
|
||||
|
||||
struct media_device_instance {
|
||||
struct media_device mdev;
|
||||
struct module *owner;
|
||||
struct list_head list;
|
||||
struct kref refcount;
|
||||
};
|
||||
|
||||
static inline struct media_device_instance *
|
||||
to_media_device_instance(struct media_device *mdev)
|
||||
{
|
||||
return container_of(mdev, struct media_device_instance, mdev);
|
||||
}
|
||||
|
||||
static void media_device_instance_release(struct kref *kref)
|
||||
{
|
||||
struct media_device_instance *mdi =
|
||||
container_of(kref, struct media_device_instance, refcount);
|
||||
|
||||
dev_dbg(mdi->mdev.dev, "%s: releasing Media Device\n", __func__);
|
||||
|
||||
mutex_lock(&media_device_lock);
|
||||
|
||||
media_device_unregister(&mdi->mdev);
|
||||
media_device_cleanup(&mdi->mdev);
|
||||
|
||||
list_del(&mdi->list);
|
||||
mutex_unlock(&media_device_lock);
|
||||
|
||||
kfree(mdi);
|
||||
}
|
||||
|
||||
/* Callers should hold media_device_lock when calling this function */
|
||||
static struct media_device *__media_device_get(struct device *dev,
|
||||
const char *module_name,
|
||||
struct module *owner)
|
||||
{
|
||||
struct media_device_instance *mdi;
|
||||
|
||||
list_for_each_entry(mdi, &media_device_list, list) {
|
||||
if (mdi->mdev.dev != dev)
|
||||
continue;
|
||||
|
||||
kref_get(&mdi->refcount);
|
||||
|
||||
/* get module reference for the media_device owner */
|
||||
if (owner != mdi->owner && !try_module_get(mdi->owner))
|
||||
dev_err(dev,
|
||||
"%s: module %s get owner reference error\n",
|
||||
__func__, module_name);
|
||||
else
|
||||
dev_dbg(dev, "%s: module %s got owner reference\n",
|
||||
__func__, module_name);
|
||||
return &mdi->mdev;
|
||||
}
|
||||
|
||||
mdi = kzalloc(sizeof(*mdi), GFP_KERNEL);
|
||||
if (!mdi)
|
||||
return NULL;
|
||||
|
||||
mdi->owner = owner;
|
||||
kref_init(&mdi->refcount);
|
||||
list_add_tail(&mdi->list, &media_device_list);
|
||||
|
||||
dev_dbg(dev, "%s: Allocated media device for owner %s\n",
|
||||
__func__, module_name);
|
||||
return &mdi->mdev;
|
||||
}
|
||||
|
||||
struct media_device *media_device_usb_allocate(struct usb_device *udev,
|
||||
const char *module_name,
|
||||
struct module *owner)
|
||||
{
|
||||
struct media_device *mdev;
|
||||
|
||||
mutex_lock(&media_device_lock);
|
||||
mdev = __media_device_get(&udev->dev, module_name, owner);
|
||||
if (!mdev) {
|
||||
mutex_unlock(&media_device_lock);
|
||||
return ERR_PTR(-ENOMEM);
|
||||
}
|
||||
|
||||
/* check if media device is already initialized */
|
||||
if (!mdev->dev)
|
||||
__media_device_usb_init(mdev, udev, udev->product,
|
||||
module_name);
|
||||
mutex_unlock(&media_device_lock);
|
||||
return mdev;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(media_device_usb_allocate);
|
||||
|
||||
void media_device_delete(struct media_device *mdev, const char *module_name,
|
||||
struct module *owner)
|
||||
{
|
||||
struct media_device_instance *mdi = to_media_device_instance(mdev);
|
||||
|
||||
mutex_lock(&media_device_lock);
|
||||
/* put module reference for the media_device owner */
|
||||
if (mdi->owner != owner) {
|
||||
module_put(mdi->owner);
|
||||
dev_dbg(mdi->mdev.dev,
|
||||
"%s: module %s put owner module reference\n",
|
||||
__func__, module_name);
|
||||
}
|
||||
mutex_unlock(&media_device_lock);
|
||||
kref_put(&mdi->refcount, media_device_instance_release);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(media_device_delete);
|
|
@ -251,6 +251,7 @@ int __must_check media_devnode_register(struct media_device *mdev,
|
|||
/* Part 2: Initialize the character device */
|
||||
cdev_init(&devnode->cdev, &media_devnode_fops);
|
||||
devnode->cdev.owner = owner;
|
||||
kobject_set_name(&devnode->cdev.kobj, "media%d", devnode->minor);
|
||||
|
||||
/* Part 3: Add the media and char device */
|
||||
ret = cdev_device_add(&devnode->cdev, &devnode->dev);
|
||||
|
@ -290,8 +291,9 @@ void media_devnode_unregister(struct media_devnode *devnode)
|
|||
mutex_lock(&media_devnode_lock);
|
||||
/* Delete the cdev on this minor as well */
|
||||
cdev_device_del(&devnode->cdev, &devnode->dev);
|
||||
mutex_unlock(&media_devnode_lock);
|
||||
devnode->media_dev = NULL;
|
||||
mutex_unlock(&media_devnode_lock);
|
||||
|
||||
put_device(&devnode->dev);
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
*/
|
||||
|
||||
#include <linux/bitmap.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/slab.h>
|
||||
#include <media/media-entity.h>
|
||||
|
@ -436,7 +435,10 @@ __must_check int __media_pipeline_start(struct media_entity *entity,
|
|||
|
||||
entity->stream_count++;
|
||||
|
||||
if (WARN_ON(entity->pipe && entity->pipe != pipe)) {
|
||||
if (entity->pipe && entity->pipe != pipe) {
|
||||
pr_err("Pipe active for %s. Can't start for %s\n",
|
||||
entity->name,
|
||||
entity_err->name);
|
||||
ret = -EBUSY;
|
||||
goto error;
|
||||
}
|
||||
|
@ -587,33 +589,6 @@ void media_pipeline_stop(struct media_entity *entity)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(media_pipeline_stop);
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Module use count
|
||||
*/
|
||||
|
||||
struct media_entity *media_entity_get(struct media_entity *entity)
|
||||
{
|
||||
if (entity == NULL)
|
||||
return NULL;
|
||||
|
||||
if (entity->graph_obj.mdev->dev &&
|
||||
!try_module_get(entity->graph_obj.mdev->dev->driver->owner))
|
||||
return NULL;
|
||||
|
||||
return entity;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(media_entity_get);
|
||||
|
||||
void media_entity_put(struct media_entity *entity)
|
||||
{
|
||||
if (entity == NULL)
|
||||
return;
|
||||
|
||||
if (entity->graph_obj.mdev->dev)
|
||||
module_put(entity->graph_obj.mdev->dev->driver->owner);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(media_entity_put);
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* Links management
|
||||
*/
|
||||
|
|
|
@ -251,7 +251,7 @@ media_request_get_by_fd(struct media_device *mdev, int request_fd)
|
|||
|
||||
if (!mdev || !mdev->ops ||
|
||||
!mdev->ops->req_validate || !mdev->ops->req_queue)
|
||||
return ERR_PTR(-EACCES);
|
||||
return ERR_PTR(-EBADR);
|
||||
|
||||
f = fdget(request_fd);
|
||||
if (!f.file)
|
||||
|
@ -407,7 +407,7 @@ int media_request_object_bind(struct media_request *req,
|
|||
int ret = -EBUSY;
|
||||
|
||||
if (WARN_ON(!ops->release))
|
||||
return -EACCES;
|
||||
return -EBADR;
|
||||
|
||||
spin_lock_irqsave(&req->lock, flags);
|
||||
|
||||
|
|
|
@ -9,5 +9,5 @@ config SMS_SDIO_DRV
|
|||
depends on !RC_CORE || RC_CORE
|
||||
select MEDIA_COMMON_OPTIONS
|
||||
select SMS_SIANO_MDTV
|
||||
---help---
|
||||
help
|
||||
Choose if you would like to have Siano's support for SDIO interface
|
||||
|
|
|
@ -13,7 +13,7 @@ config VIDEO_BT848
|
|||
select VIDEO_SAA6588 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select RADIO_ADAPTERS
|
||||
select RADIO_TEA575X
|
||||
---help---
|
||||
help
|
||||
Support for BT848 based frame grabber/overlay boards. This includes
|
||||
the Miro, Hauppauge and STB boards. Please read the material in
|
||||
<file:Documentation/media/v4l-drivers/bttv.rst> for more information.
|
||||
|
|
|
@ -1100,7 +1100,8 @@ static int dst_get_device_id(struct dst_state *state)
|
|||
/* Card capabilities */
|
||||
state->dst_hw_cap = p_dst_type->dst_feature;
|
||||
pr_err("Recognise [%s]\n", p_dst_type->device_id);
|
||||
strncpy(&state->fw_name[0], p_dst_type->device_id, 6);
|
||||
strscpy(state->fw_name, p_dst_type->device_id,
|
||||
sizeof(state->fw_name));
|
||||
/* Multiple tuners */
|
||||
if (p_dst_type->tuner_type & TUNER_TYPE_MULTI) {
|
||||
switch (use_dst_type) {
|
||||
|
|
|
@ -138,7 +138,7 @@ struct dst_state {
|
|||
u32 tuner_type;
|
||||
char *tuner_name;
|
||||
struct mutex dst_mutex;
|
||||
u8 fw_name[8];
|
||||
char fw_name[8];
|
||||
struct dvb_device *dst_ca;
|
||||
};
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ config VIDEO_COBALT
|
|||
select VIDEO_ADV7511
|
||||
select VIDEO_ADV7842
|
||||
select VIDEOBUF2_DMA_SG
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for the Cisco PCIe Cobalt card.
|
||||
|
||||
This board is sadly not available outside of Cisco, but it is
|
||||
|
|
|
@ -128,7 +128,7 @@ static void cobalt_dma_stream_queue_handler(struct cobalt_stream *s)
|
|||
cb->vb.sequence = s->sequence++;
|
||||
vb2_buffer_done(&cb->vb.vb2_buf,
|
||||
(skip || s->unstable_frame) ?
|
||||
VB2_BUF_STATE_REQUEUEING : VB2_BUF_STATE_DONE);
|
||||
VB2_BUF_STATE_ERROR : VB2_BUF_STATE_DONE);
|
||||
}
|
||||
|
||||
irqreturn_t cobalt_irq_handler(int irq, void *dev_id)
|
||||
|
|
|
@ -13,7 +13,7 @@ config VIDEO_CX18
|
|||
select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_TDA8290 if MEDIA_SUBDRV_AUTOSELECT
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for Conexant cx23418 based
|
||||
PCI combo video recorder devices.
|
||||
|
||||
|
@ -27,7 +27,7 @@ config VIDEO_CX18_ALSA
|
|||
tristate "Conexant 23418 DMA audio support"
|
||||
depends on VIDEO_CX18 && SND
|
||||
select SND_PCM
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for direct (DMA) audio on
|
||||
Conexant 23418 based TV cards using ALSA.
|
||||
|
||||
|
|
|
@ -484,7 +484,7 @@ static ssize_t cx18_read_pos(struct cx18_stream *s, char __user *ubuf,
|
|||
|
||||
CX18_DEBUG_HI_FILE("read %zd from %s, got %zd\n", count, s->name, rc);
|
||||
if (rc > 0)
|
||||
pos += rc;
|
||||
*pos += rc;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ config VIDEO_CX23885
|
|||
select MEDIA_TUNER_SI2157 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_M88RS6000T if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_TUNER_DIB0070 if MEDIA_SUBDRV_AUTOSELECT
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for Conexant 23885 based
|
||||
TV cards.
|
||||
|
||||
|
@ -54,7 +54,7 @@ config MEDIA_ALTERA_CI
|
|||
tristate "Altera FPGA based CI module"
|
||||
depends on VIDEO_CX23885 && DVB_CORE
|
||||
select ALTERA_STAPL
|
||||
---help---
|
||||
help
|
||||
An Altera FPGA CI module for NetUP Dual DVB-T/C RF CI card.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
|
|
|
@ -1474,8 +1474,9 @@ static int dvb_register(struct cx23885_tsport *port)
|
|||
if (fe0->dvb.frontend != NULL) {
|
||||
struct i2c_adapter *tun_i2c;
|
||||
|
||||
fe0->dvb.frontend->sec_priv = kmalloc(sizeof(dib7000p_ops), GFP_KERNEL);
|
||||
memcpy(fe0->dvb.frontend->sec_priv, &dib7000p_ops, sizeof(dib7000p_ops));
|
||||
fe0->dvb.frontend->sec_priv = kmemdup(&dib7000p_ops, sizeof(dib7000p_ops), GFP_KERNEL);
|
||||
if (!fe0->dvb.frontend->sec_priv)
|
||||
return -ENOMEM;
|
||||
tun_i2c = dib7000p_ops.get_i2c_master(fe0->dvb.frontend, DIBX000_I2C_INTERFACE_TUNER, 1);
|
||||
if (!dvb_attach(dib0070_attach, fe0->dvb.frontend, tun_i2c, &dib7070p_dib0070_config))
|
||||
return -ENODEV;
|
||||
|
|
|
@ -3,7 +3,7 @@ config VIDEO_CX25821
|
|||
depends on VIDEO_DEV && PCI && I2C
|
||||
select I2C_ALGOBIT
|
||||
select VIDEOBUF2_DMA_SG
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for Conexant 25821 based
|
||||
TV cards.
|
||||
|
||||
|
@ -14,7 +14,7 @@ config VIDEO_CX25821_ALSA
|
|||
tristate "Conexant 25821 DMA audio support"
|
||||
depends on VIDEO_CX25821 && SND
|
||||
select SND_PCM
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for direct (DMA) audio on
|
||||
Conexant 25821 based capture cards using ALSA.
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ config VIDEO_CX88
|
|||
select VIDEO_TUNER
|
||||
select VIDEO_TVEEPROM
|
||||
select VIDEO_WM8775 if MEDIA_SUBDRV_AUTOSELECT
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for Conexant 2388x based
|
||||
TV cards.
|
||||
|
||||
|
@ -17,7 +17,7 @@ config VIDEO_CX88_ALSA
|
|||
tristate "Conexant 2388x DMA audio support"
|
||||
depends on VIDEO_CX88 && SND
|
||||
select SND_PCM
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for direct (DMA) audio on
|
||||
Conexant 2388x based TV cards using ALSA.
|
||||
|
||||
|
@ -33,7 +33,7 @@ config VIDEO_CX88_BLACKBIRD
|
|||
tristate "Blackbird MPEG encoder support (cx2388x + cx23416)"
|
||||
depends on VIDEO_CX88
|
||||
select VIDEO_CX2341X
|
||||
---help---
|
||||
help
|
||||
This adds support for MPEG encoder cards based on the
|
||||
Blackbird reference design, using the Conexant 2388x
|
||||
and 23416 chips.
|
||||
|
@ -64,7 +64,7 @@ config VIDEO_CX88_DVB
|
|||
select DVB_DS3000 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_TS2020 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_SIMPLE if MEDIA_SUBDRV_AUTOSELECT
|
||||
---help---
|
||||
help
|
||||
This adds support for DVB/ATSC cards based on the
|
||||
Conexant 2388x chip.
|
||||
|
||||
|
@ -75,7 +75,7 @@ config VIDEO_CX88_ENABLE_VP3054
|
|||
bool "VP-3054 Secondary I2C Bus Support"
|
||||
default y
|
||||
depends on VIDEO_CX88_DVB && DVB_MT352
|
||||
---help---
|
||||
help
|
||||
This adds DVB-T support for cards based on the
|
||||
Conexant 2388x chip and the MT352 demodulator,
|
||||
which also require support for the VP-3054
|
||||
|
|
|
@ -15,7 +15,7 @@ config DVB_DDBRIDGE
|
|||
select DVB_MXL5XX if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_CXD2099 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_DUMMY_FE if MEDIA_SUBDRV_AUTOSELECT
|
||||
---help---
|
||||
help
|
||||
Support for cards with the Digital Devices PCI express bridge:
|
||||
- Octopus PCIe Bridge
|
||||
- Octopus mini PCIe Bridge
|
||||
|
@ -36,7 +36,7 @@ config DVB_DDBRIDGE_MSIENABLE
|
|||
depends on DVB_DDBRIDGE
|
||||
depends on PCI_MSI
|
||||
default n
|
||||
---help---
|
||||
help
|
||||
Use PCI MSI (Message Signaled Interrupts) per default. Enabling this
|
||||
might lead to I2C errors originating from the bridge in conjunction
|
||||
with certain SATA controllers, requiring a reload of the ddbridge
|
||||
|
|
|
@ -3,7 +3,7 @@ config VIDEO_DT3155
|
|||
depends on PCI && VIDEO_DEV && VIDEO_V4L2
|
||||
select VIDEOBUF2_DMA_CONTIG
|
||||
default n
|
||||
---help---
|
||||
help
|
||||
Enables dt3155 device driver for the DataTranslation DT3155 frame grabber.
|
||||
Say Y here if you have this hardware.
|
||||
In doubt, say N.
|
||||
|
|
|
@ -7,7 +7,7 @@ config VIDEO_IPU3_CIO2
|
|||
select V4L2_FWNODE
|
||||
select VIDEOBUF2_DMA_SG
|
||||
|
||||
---help---
|
||||
help
|
||||
This is the Intel IPU3 CIO2 CSI-2 receiver unit, found in Intel
|
||||
Skylake and Kaby Lake SoCs and used for capturing images and
|
||||
video from a camera sensor.
|
||||
|
|
|
@ -1601,6 +1601,7 @@ static int cio2_queue_init(struct cio2_device *cio2, struct cio2_queue *q)
|
|||
subdev->owner = THIS_MODULE;
|
||||
snprintf(subdev->name, sizeof(subdev->name),
|
||||
CIO2_ENTITY_NAME " %td", q - cio2->queue);
|
||||
subdev->entity.function = MEDIA_ENT_F_VID_IF_BRIDGE;
|
||||
v4l2_set_subdevdata(subdev, cio2);
|
||||
r = v4l2_device_register_subdev(&cio2->v4l2_dev, subdev);
|
||||
if (r) {
|
||||
|
|
|
@ -18,7 +18,7 @@ config VIDEO_IVTV
|
|||
select VIDEO_VP27SMPX
|
||||
select VIDEO_UPD64031A
|
||||
select VIDEO_UPD64083
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for Conexant cx23416 or cx23415 based
|
||||
PCI personal video recorder devices.
|
||||
|
||||
|
@ -32,7 +32,7 @@ config VIDEO_IVTV_DEPRECATED_IOCTLS
|
|||
bool "enable the DVB ioctls abuse on ivtv driver"
|
||||
depends on VIDEO_IVTV
|
||||
default n
|
||||
---help---
|
||||
help
|
||||
Enable the usage of the a DVB set of ioctls that were abused by
|
||||
IVTV driver for a while.
|
||||
|
||||
|
@ -45,7 +45,7 @@ config VIDEO_IVTV_ALSA
|
|||
tristate "Conexant cx23415/cx23416 ALSA interface for PCM audio capture"
|
||||
depends on VIDEO_IVTV && SND
|
||||
select SND_PCM
|
||||
---help---
|
||||
help
|
||||
This driver provides an ALSA interface as another method for user
|
||||
applications to obtain PCM audio data from Conexant cx23415/cx23416
|
||||
based PCI TV cards supported by the ivtv driver.
|
||||
|
@ -63,7 +63,7 @@ config VIDEO_FB_IVTV
|
|||
select FB_CFB_FILLRECT
|
||||
select FB_CFB_COPYAREA
|
||||
select FB_CFB_IMAGEBLIT
|
||||
---help---
|
||||
help
|
||||
This is a framebuffer driver for the Conexant cx23415 MPEG
|
||||
encoder/decoder.
|
||||
|
||||
|
@ -77,7 +77,7 @@ config VIDEO_FB_IVTV_FORCE_PAT
|
|||
bool "force cx23415 framebuffer init with x86 PAT enabled"
|
||||
depends on VIDEO_FB_IVTV && X86_PAT
|
||||
default n
|
||||
---help---
|
||||
help
|
||||
With PAT enabled, the cx23415 framebuffer driver does not
|
||||
utilize write-combined caching on the framebuffer memory.
|
||||
For this reason, the driver will by default disable itself
|
||||
|
|
|
@ -420,7 +420,7 @@ static ssize_t ivtv_read_pos(struct ivtv_stream *s, char __user *ubuf, size_t co
|
|||
|
||||
IVTV_DEBUG_HI_FILE("read %zd from %s, got %zd\n", count, s->name, rc);
|
||||
if (rc > 0)
|
||||
pos += rc;
|
||||
*pos += rc;
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
@ -225,7 +225,7 @@ int mantis_i2c_init(struct mantis_pci *mantis)
|
|||
|
||||
init_waitqueue_head(&mantis->i2c_wq);
|
||||
mutex_init(&mantis->i2c_lock);
|
||||
strncpy(i2c_adapter->name, "Mantis I2C", sizeof(i2c_adapter->name));
|
||||
strscpy(i2c_adapter->name, "Mantis I2C", sizeof(i2c_adapter->name));
|
||||
i2c_set_adapdata(i2c_adapter, mantis);
|
||||
|
||||
i2c_adapter->owner = THIS_MODULE;
|
||||
|
|
|
@ -2,7 +2,7 @@ config VIDEO_MEYE
|
|||
tristate "Sony Vaio Picturebook Motion Eye Video For Linux"
|
||||
depends on PCI && VIDEO_V4L2
|
||||
depends on SONY_LAPTOP || COMPILE_TEST
|
||||
---help---
|
||||
help
|
||||
This is the video4linux driver for the Motion Eye camera found
|
||||
in the Vaio Picturebook laptops. Please read the material in
|
||||
<file:Documentation/media/v4l-drivers/meye.rst> for more information.
|
||||
|
|
|
@ -8,7 +8,7 @@ config DVB_NETUP_UNIDVB
|
|||
select DVB_HELENE if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_LNBH25 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_CXD2841ER if MEDIA_SUBDRV_AUTOSELECT
|
||||
---help---
|
||||
help
|
||||
Support for NetUP PCI express Universal DVB card.
|
||||
|
||||
Say Y when you want to support NetUP Dual Universal DVB card.
|
||||
|
|
|
@ -15,6 +15,6 @@ config DVB_NGENE
|
|||
select DVB_STV6111 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_LNBH25 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_CXD2099 if MEDIA_SUBDRV_AUTOSELECT
|
||||
---help---
|
||||
help
|
||||
Support for Micronas PCI express cards with nGene bridge.
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ config VIDEO_SAA7134
|
|||
select CRC32
|
||||
select VIDEO_SAA6588 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select VIDEO_SAA6752HS if MEDIA_SUBDRV_AUTOSELECT
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for Philips SAA713x based
|
||||
TV cards.
|
||||
|
||||
|
@ -18,7 +18,7 @@ config VIDEO_SAA7134_ALSA
|
|||
tristate "Philips SAA7134 DMA audio support"
|
||||
depends on VIDEO_SAA7134 && SND
|
||||
select SND_PCM
|
||||
---help---
|
||||
help
|
||||
This is a video4linux driver for direct (DMA) audio in
|
||||
Philips SAA713x based TV cards using ALSA
|
||||
|
||||
|
@ -31,7 +31,7 @@ config VIDEO_SAA7134_RC
|
|||
depends on VIDEO_SAA7134
|
||||
depends on !(RC_CORE=m && VIDEO_SAA7134=y)
|
||||
default y
|
||||
---help---
|
||||
help
|
||||
Enables Remote Controller support on saa7134 driver.
|
||||
|
||||
config VIDEO_SAA7134_DVB
|
||||
|
@ -57,7 +57,7 @@ config VIDEO_SAA7134_DVB
|
|||
select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select MEDIA_TUNER_TDA8290 if MEDIA_SUBDRV_AUTOSELECT
|
||||
select DVB_ZL10039 if MEDIA_SUBDRV_AUTOSELECT
|
||||
---help---
|
||||
help
|
||||
This adds support for DVB cards based on the
|
||||
Philips saa7134 chip.
|
||||
|
||||
|
@ -68,6 +68,6 @@ config VIDEO_SAA7134_GO7007
|
|||
tristate "go7007 support for saa7134 based TV cards"
|
||||
depends on VIDEO_SAA7134
|
||||
depends on VIDEO_GO7007
|
||||
---help---
|
||||
help
|
||||
Enables saa7134 driver support for boards with go7007
|
||||
MPEG encoder (WIS Voyager or compatible).
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue