Commit fab0fca1 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'media/v5.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab:

 - some rework at the uAPI pixel format docs

 - the smiapp driver has started to gain support for MIPI CSS camera
   sensors and was renamed

 - two new sensor drivers: ov02a10 and ov9734

 - Meson gained a driver for the 2D acceleration unit

 - Rockchip rkisp1 driver was promoted from staging

 - Cedrus driver gained support for VP8

 - two new remote controller keymaps were added

 - the usual set of fixes cleanups and driver improvements

* tag 'media/v5.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (447 commits)
  media: ccs: Add support for obtaining C-PHY configuration from firmware
  media: ccs-pll: Print pixel rates
  media: ccs: Print written register values
  media: ccs: Add support for DDR OP SYS and OP PIX clocks
  media: ccs-pll: Add support for DDR OP system and pixel clocks
  media: ccs: Dual PLL support
  media: ccs-pll: Add trivial dual PLL support
  media: ccs-pll: Separate VT divisor limit calculation from the rest
  media: ccs-pll: Fix VT post-PLL divisor calculation
  media: ccs-pll: Make VT divisors 16-bit
  media: ccs-pll: Rework bounds checks
  media: ccs-pll: Print relevant information on PLL tree
  media: ccs-pll: Better separate OP and VT sub-tree calculation
  media: ccs-pll: Check for derating and overrating, support non-derating sensors
  media: ccs-pll: Split off VT subtree calculation
  media: ccs-pll: Add C-PHY support
  media: ccs-pll: Add sanity checks
  media: ccs-pll: Add support flexible OP PLL pixel clock divider
  media: ccs-pll: Support two cycles per pixel on OP domain
  media: ccs-pll: Add support for extended input PLL clock divider
  ...
parents ae1985b5 7ea4d232
...@@ -86,7 +86,7 @@ the driver through the rkisp_params node to improve image quality during a ...@@ -86,7 +86,7 @@ the driver through the rkisp_params node to improve image quality during a
video stream. video stream.
The buffer format is defined by struct :c:type:`rkisp1_stat_buffer`, and The buffer format is defined by struct :c:type:`rkisp1_stat_buffer`, and
userspace should set userspace should set
:ref:`V4L2_META_FMT_RK_ISP1_STAT_3A <v4l2-meta-fmt-stat-rkisp1>` as the :ref:`V4L2_META_FMT_RK_ISP1_STAT_3A <v4l2-meta-fmt-rk-isp1-stat-3a>` as the
dataformat. dataformat.
.. _rkisp1_params: .. _rkisp1_params:
...@@ -100,7 +100,7 @@ and others. ...@@ -100,7 +100,7 @@ and others.
The buffer format is defined by struct :c:type:`rkisp1_params_cfg`, and The buffer format is defined by struct :c:type:`rkisp1_params_cfg`, and
userspace should set userspace should set
:ref:`V4L2_META_FMT_RK_ISP1_PARAMS <v4l2-meta-fmt-params-rkisp1>` as the :ref:`V4L2_META_FMT_RK_ISP1_PARAMS <v4l2-meta-fmt-rk-isp1-params>` as the
dataformat. dataformat.
......
...@@ -18,6 +18,8 @@ properties: ...@@ -18,6 +18,8 @@ properties:
- allwinner,sun7i-a20-video-engine - allwinner,sun7i-a20-video-engine
- allwinner,sun8i-a33-video-engine - allwinner,sun8i-a33-video-engine
- allwinner,sun8i-h3-video-engine - allwinner,sun8i-h3-video-engine
- allwinner,sun8i-v3s-video-engine
- allwinner,sun8i-r40-video-engine
- allwinner,sun50i-a64-video-engine - allwinner,sun50i-a64-video-engine
- allwinner,sun50i-h5-video-engine - allwinner,sun50i-h5-video-engine
- allwinner,sun50i-h6-video-engine - allwinner,sun50i-h6-video-engine
......
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2020 BayLibre, SAS
%YAML 1.2
---
$id: "http://devicetree.org/schemas/media/amlogic,axg-ge2d.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
title: Amlogic GE2D Acceleration Unit
maintainers:
- Neil Armstrong <narmstrong@baylibre.com>
properties:
compatible:
enum:
- amlogic,axg-ge2d
interrupts:
minItems: 1
reg:
minItems: 1
resets:
maxItems: 1
clocks:
minItems: 1
required:
- compatible
- reg
- interrupts
- clocks
- resets
additionalProperties: false
examples:
- |
ge2d: ge2d@ff940000 {
compatible = "amlogic,axg-ge2d";
reg = <0xff940000 0x10000>;
interrupts = <150>;
clocks = <&clk_ge2d>;
resets = <&reset_ge2d>;
};
Chips&Media Coda multi-standard codec IP
========================================
Coda codec IPs are present in i.MX SoCs in various versions,
called VPU (Video Processing Unit).
Required properties:
- compatible : should be "fsl,<chip>-src" for i.MX SoCs:
(a) "fsl,imx27-vpu" for CodaDx6 present in i.MX27
(b) "fsl,imx51-vpu" for CodaHx4 present in i.MX51
(c) "fsl,imx53-vpu" for CODA7541 present in i.MX53
(d) "fsl,imx6q-vpu" for CODA960 present in i.MX6q
- reg: should be register base and length as documented in the
SoC reference manual
- interrupts : Should contain the VPU interrupt. For CODA960,
a second interrupt is needed for the MJPEG unit.
- clocks : Should contain the ahb and per clocks, in the order
determined by the clock-names property.
- clock-names : Should be "ahb", "per"
- iram : phandle pointing to the SRAM device node
Example:
vpu: vpu@63ff4000 {
compatible = "fsl,imx53-vpu";
reg = <0x63ff4000 0x1000>;
interrupts = <9>;
clocks = <&clks 63>, <&clks 63>;
clock-names = "ahb", "per";
iram = <&ocram>;
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/coda.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Chips&Media Coda multi-standard codec IP
maintainers:
- Philipp Zabel <p.zabel@pengutronix.de>
description: |-
Coda codec IPs are present in i.MX SoCs in various versions,
called VPU (Video Processing Unit).
properties:
compatible:
oneOf:
- items:
- const: fsl,imx27-vpu
- const: cnm,codadx6
- items:
- const: fsl,imx51-vpu
- const: cnm,codahx4
- items:
- const: fsl,imx53-vpu
- const: cnm,coda7541
- items:
- enum:
- fsl,imx6dl-vpu
- fsl,imx6q-vpu
- const: cnm,coda960
reg:
maxItems: 1
clocks:
items:
- description: PER clock
- description: AHB interface clock
clock-names:
items:
- const: per
- const: ahb
resets:
maxItems: 1
iram:
$ref: /schemas/types.yaml#/definitions/phandle
description: phandle pointing to the SRAM device node
maxItems: 1
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
allOf:
- if:
properties:
compatible:
contains:
const: cnm,coda960
then:
properties:
interrupts:
items:
- description: BIT processor interrupt
- description: JPEG unit interrupt
interrupt-names:
items:
- const: bit
- const: jpeg
else:
properties:
interrupts:
items:
- description: BIT processor interrupt
- if:
properties:
compatible:
contains:
enum:
- fsl,imx6dl-vpu
- fsl,imx6q-vpu
then:
properties:
power-domains:
$ref: /schemas/types.yaml#/definitions/phandle
description: phandle pointing to the PU power domain
maxItems: 1
examples:
- |
vpu: video-codec@63ff4000 {
compatible = "fsl,imx53-vpu", "cnm,coda7541";
reg = <0x63ff4000 0x1000>;
interrupts = <9>;
clocks = <&clks 63>, <&clks 63>;
clock-names = "per", "ahb";
iram = <&ocram>;
};
* Analog Devices ADV7604/11/12 video decoder with HDMI receiver
The ADV7604 and ADV7611/12 are multiformat video decoders with an integrated
HDMI receiver. The ADV7604 has four multiplexed HDMI inputs and one analog
input, and the ADV7611 has one HDMI input and no analog input. The 7612 is
similar to the 7611 but has 2 HDMI inputs.
These device tree bindings support the ADV7611/12 only at the moment.
Required Properties:
- compatible: Must contain one of the following
- "adi,adv7611" for the ADV7611
- "adi,adv7612" for the ADV7612
- reg: I2C slave addresses
The ADV76xx has up to thirteen 256-byte maps that can be accessed via the
main I2C ports. Each map has it own I2C address and acts as a standard
slave device on the I2C bus. The main address is mandatory, others are
optional and revert to defaults if not specified.
- hpd-gpios: References to the GPIOs that control the HDMI hot-plug
detection pins, one per HDMI input. The active flag indicates the GPIO
level that enables hot-plug detection.
The device node must contain one 'port' child node per device input and output
port, in accordance with the video interface bindings defined in
Documentation/devicetree/bindings/media/video-interfaces.txt. The port nodes
are numbered as follows.
Port ADV7611 ADV7612
------------------------------------------------------------
HDMI 0 0, 1
Digital output 1 2
The digital output port node must contain at least one endpoint.
Optional Properties:
- reset-gpios: Reference to the GPIO connected to the device's reset pin.
- default-input: Select which input is selected after reset.
- reg-names : Names of maps with programmable addresses.
It can contain any map needing a non-default address.
Possible maps names are :
"main", "avlink", "cec", "infoframe", "esdp", "dpp", "afe",
"rep", "edid", "hdmi", "test", "cp", "vdp"
Optional Endpoint Properties:
The following three properties are defined in video-interfaces.txt and are
valid for source endpoints only.
- hsync-active: Horizontal synchronization polarity. Defaults to active low.
- vsync-active: Vertical synchronization polarity. Defaults to active low.
- pclk-sample: Pixel clock polarity. Defaults to output on the falling edge.
If none of hsync-active, vsync-active and pclk-sample is specified the
endpoint will use embedded BT.656 synchronization.
Example:
hdmi_receiver@4c {
compatible = "adi,adv7611";
/*
* The edid page will be accessible @ 0x66 on the I2C bus. All
* other maps will retain their default addresses.
*/
reg = <0x4c>, <0x66>;
reg-names = "main", "edid";
reset-gpios = <&ioexp 0 GPIO_ACTIVE_LOW>;
hpd-gpios = <&ioexp 2 GPIO_ACTIVE_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
default-input = <0>;
port@0 {
reg = <0>;
};
port@1 {
reg = <1>;
hdmi_in: endpoint {
remote-endpoint = <&ccdc_in>;
};
};
};
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/adv7604.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices ADV7604/11/12 video decoder with HDMI receiver
maintainers:
- Hans Verkuil <hverkuil-cisco@xs4all.nl>
description:
The ADV7604 and ADV7611/12 are multiformat video decoders with an integrated
HDMI receiver. The ADV7604 has four multiplexed HDMI inputs and one analog
input, and the ADV7611 has one HDMI input and no analog input. The 7612 is
similar to the 7611 but has 2 HDMI inputs.
These device tree bindings support the ADV7611/12 only at the moment.
properties:
compatible:
items:
- enum:
- adi,adv7611
- adi,adv7612
reg:
minItems: 1
maxItems: 13
reg-names:
minItems: 1
maxItems: 13
items:
- const: main
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
- enum: [ avlink, cec, infoframe, esdp, dpp, afe, rep, edid, hdmi, test, cp, vdp ]
interrupts:
maxItems: 1
reset-gpios:
maxItems: 1
hpd-gpios:
minItems: 1
description:
References to the GPIOs that control the HDMI hot-plug detection pins,
one per HDMI input. The active flag indicates the GPIO level that
enables hot-plug detection.
default-input:
maxItems: 1
description:
Select which input is selected after reset.
ports:
type: object
description:
A node containing input and output port nodes with endpoint definitions
as documented in
Documentation/devicetree/bindings/media/video-interfaces.txt
required:
- compatible
- reg
additionalProperties: false
allOf:
- if:
properties:
compatible:
contains:
const: adi,adv7611
then:
properties:
ports:
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
port@0:
type: object
description: Input port
port@1:
type: object
description: Output port
required:
- port@1
additionalProperties: false
required:
- ports
- if:
properties:
compatible:
contains:
const: adi,adv7612
then:
properties:
ports:
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
port@2:
type: object
description: Output port
patternProperties:
"^port@[0-1]$":
type: object
description: Input port
required:
- port@2
additionalProperties: false
required:
- ports
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
hdmi_receiver@4c {
compatible = "adi,adv7611";
/*
* The edid page will be accessible @ 0x66 on the I2C bus. All
* other maps will retain their default addresses.
*/
reg = <0x4c>, <0x66>;
reg-names = "main", "edid";
reset-gpios = <&ioexp 0 GPIO_ACTIVE_LOW>;
hpd-gpios = <&ioexp 2 GPIO_ACTIVE_HIGH>;
default-input = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
};
port@1 {
reg = <1>;
hdmi_in: endpoint {
remote-endpoint = <&ccdc_in>;
};
};
};
};
};
* Aptina MT9V111 CMOS sensor
----------------------------
The Aptina MT9V111 is a 1/4-Inch VGA-format digital image sensor with a core
based on Aptina MT9V011 sensor and an integrated Image Flow Processor (IFP).
The sensor has an active pixel array of 640x480 pixels and can output a number
of image resolution and formats controllable through a simple two-wires
interface.
Required properties:
--------------------
- compatible: shall be "aptina,mt9v111".
- clocks: reference to the system clock input provider.
Optional properties:
--------------------
- enable-gpios: output enable signal, pin name "OE#". Active low.
- standby-gpios: low power state control signal, pin name "STANDBY".
Active high.
- reset-gpios: chip reset signal, pin name "RESET#". Active low.
The device node must contain one 'port' child node with one 'endpoint' child
sub-node for its digital output video port, in accordance with the video
interface bindings defined in:
Documentation/devicetree/bindings/media/video-interfaces.txt
Example:
--------
&i2c1 {
camera@48 {
compatible = "aptina,mt9v111";
reg = <0x48>;
clocks = <&camera_clk>;
port {
mt9v111_out: endpoint {
remote-endpoint = <&ceu_in>;
};
};
};
};
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/aptina,mt9v111.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Aptina MT9V111 CMOS sensor
maintainers:
- Jacopo Mondi <jacopo@jmondi.org>
description: |
The Aptina MT9V111 is a 1/4-Inch VGA-format digital image sensor with a core
based on Aptina MT9V011 sensor and an integrated Image Flow Processor (IFP).
The sensor has an active pixel array of 640x480 pixels and can output a number
of image resolutions and formats controllable through a simple two-wires
interface.
properties:
compatible:
const: aptina,mt9v111
reg:
maxItems: 1
clocks:
maxItems: 1
enable-gpios:
description: Enable signal, pin name "OE#". Active low.
maxItems: 1
standby-gpios:
description: |
Low power state control signal, pin name "STANDBY". Active high.
maxItems: 1
reset-gpios:
description: Chip reset signal, pin name "RESET#". Active low.
maxItems: 1
port:
type: object
description: |
Output video port. See ../video-interfaces.txt.
required:
- compatible
- reg
- clocks
- port
additionalProperties: false
examples:
- |
i2c0 {
#address-cells = <1>;
#size-cells = <0>;
camera@48 {
compatible = "aptina,mt9v111";
reg = <0x48>;
clocks = <&camera_clk>;
port {
mt9v111_out: endpoint {
remote-endpoint = <&ceu_in>;
};
};
};
};
...
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2014--2020 Intel Corporation
$id: http://devicetree.org/schemas/media/i2c/mipi-ccs.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MIPI CCS, SMIA++ and SMIA compliant camera sensors
maintainers:
- Sakari Ailus <sakari.ailus@linux.intel.com>
description:
CCS (Camera Command Set) is a raw Bayer camera sensor standard defined by the
MIPI Alliance; see
<URL:https://www.mipi.org/specifications/camera-command-set>.
SMIA (Standard Mobile Imaging Architecture) is an image sensor standard
defined jointly by Nokia and ST. SMIA++, defined by Nokia, is an extension of
that.
More detailed documentation can be found in
Documentation/devicetree/bindings/media/video-interfaces.txt .
properties:
compatible:
oneOf:
- items:
- const: mipi-ccs-1.1
- const: mipi-ccs
- items:
- const: mipi-ccs-1.0
- const: mipi-ccs
- const: nokia,smia
reg:
maxItems: 1
vana-supply:
description: Analogue voltage supply (VANA), sensor dependent.
maxItems: 1
vcore-supply:
description: Core voltage supply (VCore), sensor dependent.
maxItems: 1
vio-supply:
description: I/O voltage supply (VIO), sensor dependent.
maxItems: 1
clocks:
description: External clock to the sensor.
maxItems: 1
clock-frequency:
description: Frequency of the external clock to the sensor in Hz.
reset-gpios:
description: Reset GPIO. Also commonly called XSHUTDOWN in hardware
documentation.
maxItems: 1
flash-leds:
description: Flash LED phandles. See ../video-interfaces.txt for details.
lens-focus:
description: Lens focus controller phandles. See ../video-interfaces.txt
for details.
rotation:
description: Rotation of the sensor. See ../video-interfaces.txt for
details.
enum: [ 0, 180 ]
port:
type: object
properties:
endpoint:
type: object
properties:
link-frequencies:
$ref: /schemas/types.yaml#/definitions/uint64-array
description: List of allowed data link frequencies.
data-lanes:
minItems: 1
maxItems: 8
bus-type:
description: The type of the data bus.
oneOf:
- const: 1 # CSI-2 C-PHY
- const: 3 # CCP2
- const: 4 # CSI-2 D-PHY
required:
- link-frequencies
- data-lanes
- bus-type
required:
- compatible
- reg
- clock-frequency
- clocks
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c2 {
#address-cells = <1>;
#size-cells = <0>;
clock-frequency = <400000>;
camera-sensor@10 {
compatible = "mipi-ccs-1.0", "mipi-ccs";
reg = <0x10>;
reset-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
vana-supply = <&vaux3>;
clocks = <&omap3_isp 0>;
clock-frequency = <9600000>;
port {
ccs_ep: endpoint {
data-lanes = <1 2>;
remote-endpoint = <&csi2a_ep>;
link-frequencies = /bits/ 64 <199200000 210000000
499200000>;
bus-type = <4>;
};
};
};
};
...
SMIA/SMIA++ sensor
SMIA (Standard Mobile Imaging Architecture) is an image sensor standard
defined jointly by Nokia and ST. SMIA++, defined by Nokia, is an extension
of that. These definitions are valid for both types of sensors.
More detailed documentation can be found in
Documentation/devicetree/bindings/media/video-interfaces.txt .
The device node should contain a "port" node which may contain one or more
endpoint nodes, in accordance with video interface bindings defined in
Documentation/devicetree/bindings/media/video-interfaces.txt .
Mandatory properties
--------------------
- compatible: "nokia,smia"
- reg: I2C address (0x10, or an alternative address)
- vana-supply: Analogue voltage supply (VANA), typically 2,8 volts (sensor
dependent).
- clocks: External clock to the sensor
- clock-frequency: Frequency of the external clock to the sensor
- link-frequencies: List of allowed data link frequencies. An array of
64-bit elements.
Optional properties
-------------------
- reset-gpios: XSHUTDOWN GPIO
- flash-leds: See ../video-interfaces.txt
- lens-focus: See ../video-interfaces.txt
- rotation: Integer property; valid values are 0 (sensor mounted upright)
and 180 (sensor mounted upside down). See
../video-interfaces.txt .
Endpoint node mandatory properties
----------------------------------
- data-lanes: <1..n>
Example
-------
&i2c2 {
clock-frequency = <400000>;
camera-sensor@10 {
compatible = "nokia,smia";
reg = <0x10>;
reset-gpios = <&gpio3 20 0>;
vana-supply = <&vaux3>;
clocks = <&omap3_isp 0>;
clock-frequency = <9600000>;
nokia,nvm-size = <512>; /* 8 * 64 */
link-frequencies = /bits/ 64 <199200000 210000000 499200000>;
port {
smiapp_ep: endpoint {
data-lanes = <1 2>;
remote-endpoint = <&csi2a_ep>;
};
};
};
};
* Omnivision OV2680 MIPI CSI-2 sensor
Required Properties:
- compatible: should be "ovti,ov2680".
- clocks: reference to the xvclk input clock.
- clock-names: should be "xvclk".
- DOVDD-supply: Digital I/O voltage supply.
- DVDD-supply: Digital core voltage supply.
- AVDD-supply: Analog voltage supply.
Optional Properties:
- reset-gpios: reference to the GPIO connected to the powerdown/reset pin,
if any. This is an active low signal to the OV2680.
The device node must contain one 'port' child node for its digital output
video port, and this port must have a single endpoint in accordance with
the video interface bindings defined in
Documentation/devicetree/bindings/media/video-interfaces.txt.
Endpoint node required properties for CSI-2 connection are:
- remote-endpoint: a phandle to the bus receiver's endpoint node.
- clock-lanes: should be set to <0> (clock lane on hardware lane 0).
- data-lanes: should be set to <1> (one CSI-2 lane supported).
Example:
&i2c2 {
ov2680: camera-sensor@36 {
compatible = "ovti,ov2680";
reg = <0x36>;
clocks = <&osc>;
clock-names = "xvclk";
reset-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
DOVDD-supply = <&sw2_reg>;
DVDD-supply = <&sw2_reg>;
AVDD-supply = <&reg_peri_3p15v>;
port {
ov2680_to_mipi: endpoint {
remote-endpoint = <&mipi_from_sensor>;
clock-lanes = <0>;
data-lanes = <1>;
};
};
};
};
* Omnivision OV7720/OV7725 CMOS sensor
The Omnivision OV7720/OV7725 sensor supports multiple resolutions output,
such as VGA, QVGA, and any size scaling down from CIF to 40x30. It also can
support the YUV422, RGB565/555/444, GRB422 or raw RGB output formats.
Required Properties:
- compatible: shall be one of
"ovti,ov7720"
"ovti,ov7725"
- clocks: reference to the xclk input clock.
Optional Properties:
- reset-gpios: reference to the GPIO connected to the RSTB pin which is
active low, if any.
- powerdown-gpios: reference to the GPIO connected to the PWDN pin which is
active high, if any.
The device node shall contain one 'port' child node with one child 'endpoint'
subnode for its digital output video port, in accordance with the video
interface bindings defined in Documentation/devicetree/bindings/media/
video-interfaces.txt.
Example:
&i2c0 {
ov772x: camera@21 {
compatible = "ovti,ov7725";
reg = <0x21>;
reset-gpios = <&axi_gpio_0 0 GPIO_ACTIVE_LOW>;
powerdown-gpios = <&axi_gpio_0 1 GPIO_ACTIVE_LOW>;
clocks = <&xclk>;
port {
ov772x_0: endpoint {
remote-endpoint = <&vcap1_in0>;
};
};
};
};
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright (c) 2020 MediaTek Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/ovti,ov02a10.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Omnivision OV02A10 CMOS Sensor Device Tree Bindings
maintainers:
- Dongchun Zhu <dongchun.zhu@mediatek.com>
description: |-
The Omnivision OV02A10 is a low-cost, high performance, 1/5-inch, 2 megapixel
image sensor, which is the latest production derived from Omnivision's CMOS
image sensor technology. Ihis chip supports high frame rate speeds up to 30fps
@ 1600x1200 (UXGA) resolution transferred over a 1-lane MIPI interface. The
sensor output is available via CSI-2 serial data output.
properties:
compatible:
const: ovti,ov02a10
reg:
maxItems: 1
clocks:
maxItems: 1
clock-names:
description:
External clock for the sensor.
items:
- const: eclk
clock-frequency:
description:
Frequency of the eclk clock in Hz.
dovdd-supply:
description:
Definition of the regulator used as Digital I/O voltage supply.
avdd-supply:
description:
Definition of the regulator used as Analog voltage supply.
dvdd-supply:
description:
Definition of the regulator used as Digital core voltage supply.
powerdown-gpios:
description:
Must be the device tree identifier of the GPIO connected to the
PD_PAD pin. This pin is used to place the OV02A10 into standby mode
or shutdown mode. As the line needs to be high for the powerdown mode
to be active, it should be marked GPIO_ACTIVE_HIGH.
maxItems: 1
reset-gpios:
description:
Must be the device tree identifier of the GPIO connected to the
RST_PD pin. If specified, it will be asserted during driver probe.
As the line needs to be low for the reset to be active, it should be
marked GPIO_ACTIVE_LOW.
maxItems: 1
rotation:
description:
Definition of the sensor's placement.
allOf:
- $ref: "/schemas/types.yaml#/definitions/uint32"
- enum:
- 0 # Sensor Mounted Upright
- 180 # Sensor Mounted Upside Down
default: 0
# See ../video-interfaces.txt for details
port:
type: object
additionalProperties: false
description:
Output port node, single endpoint describing the CSI-2 transmitter.
properties:
endpoint:
type: object
additionalProperties: false
properties:
link-frequencies: true
ovti,mipi-clock-voltage:
allOf:
- $ref: "/schemas/types.yaml#/definitions/uint32"
description:
Definition of MIPI clock voltage unit. This entry corresponds to
the link speed defined by the 'link-frequencies' property.
If present, the value shall be in the range of 0-4.
default: 4
remote-endpoint: true
required:
- link-frequencies
- remote-endpoint
required:
- endpoint
required:
- compatible
- reg
- clocks
- clock-names
- clock-frequency
- dovdd-supply
- avdd-supply
- dvdd-supply
- powerdown-gpios
- reset-gpios
- port
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
ov02a10: camera-sensor@3d {
compatible = "ovti,ov02a10";
reg = <0x3d>;
powerdown-gpios = <&pio 107 GPIO_ACTIVE_HIGH>;
reset-gpios = <&pio 109 GPIO_ACTIVE_LOW>;
clocks = <&ov02a10_clk>;
clock-names = "eclk";
clock-frequency = <24000000>;
rotation = <180>;
dovdd-supply = <&ov02a10_dovdd>;
avdd-supply = <&ov02a10_avdd>;
dvdd-supply = <&ov02a10_dvdd>;
port {
wcam_out: endpoint {
link-frequencies = /bits/ 64 <390000000>;
ovti,mipi-clock-voltage = <3>;
remote-endpoint = <&mipi_in_wcam>;
};
};
};
};
...
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/ovti,ov2680.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Omnivision OV2680 CMOS Sensor
maintainers:
- Rui Miguel Silva <rmfrfs@gmail.com>
description: |-
The OV2680 color sensor is a low voltage, high performance 1/5 inch UXGA (2
megapixel) CMOS image sensor that provides a single-chip UXGA (1600 x 1200)
camera. It provides full-frame, sub-sampled, or windowed 10-bit images in
various formats via the control of the Serial Camera Control Bus (SCCB)
interface. The OV2680 has an image array capable of operating at up to 30
frames per second (fps) in UXGA resolution.
properties:
compatible:
const: ovti,ov2680
reg:
maxItems: 1
clocks:
maxItems: 1
clock-names:
const: xvclk
reset-gpios:
description:
The phandle and specifier for the GPIO that controls sensor reset.
This corresponds to the hardware pin XSHUTDOWN which is physically
active low.
maxItems: 1
dovdd-supply:
description:
Definition of the regulator used as interface power supply.
avdd-supply:
description:
Definition of the regulator used as analog power supply.
dvdd-supply:
description:
Definition of the regulator used as digital power supply.
port:
type: object
description:
A node containing an output port node with an endpoint definition
as documented in
Documentation/devicetree/bindings/media/video-interfaces.txt
required:
- compatible
- reg
- clocks
- clock-names
- dovdd-supply
- avdd-supply
- dvdd-supply
- reset-gpios
- port
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
ov2680: camera-sensor@36 {
compatible = "ovti,ov2680";
reg = <0x36>;
clocks = <&osc>;
clock-names = "xvclk";
reset-gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
dovdd-supply = <&sw2_reg>;
dvdd-supply = <&sw2_reg>;
avdd-supply = <&reg_peri_3p15v>;
port {
ov2680_to_mipi: endpoint {
remote-endpoint = <&mipi_from_sensor>;
};
};
};
};
...
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/ovti,ov772x.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Omnivision OV7720/OV7725 CMOS sensor
maintainers:
- Jacopo Mondi <jacopo@jmondi.org>
description: |
The Omnivision OV7720/OV7725 sensor supports multiple resolutions output,
such as VGA, QVGA, and any size scaling down from CIF to 40x30. It also can
support the YUV422, RGB565/555/444, GRB422 or raw RGB output formats.
properties:
compatible:
enum:
- ovti,ov7720
- ovti,ov7725
reg:
maxItems: 1
clocks:
maxItems: 1
reset-gpios:
description: |
Reference to the GPIO connected to the RSTB pin which is active low.
maxItems: 1
powerdown-gpios:
description: |
Reference to the GPIO connected to the PWDN pin which is active high.
maxItems: 1
port:
type: object
description: |
Video output port. See ../video-interfaces.txt.
properties:
endpoint:
type: object
properties:
bus-type:
enum: [5, 6]
bus-width:
enum: [8, 10]
default: 10
data-shift:
enum: [0, 2]
default: 0
hsync-active:
enum: [0, 1]
default: 1
vsync-active:
enum: [0, 1]
default: 1
pclk-sample:
enum: [0, 1]
default: 1
allOf:
- if:
properties:
bus-type:
const: 6
then:
properties:
hsync-active: false
vsync-active: false
- if:
properties:
bus-width:
const: 10
then:
properties:
data-shift:
const: 0
required:
- bus-type
unevaluatedProperties: false
additionalProperties: false
required:
- compatible
- reg
- clocks
- port
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c0 {
#address-cells = <1>;
#size-cells = <0>;
ov772x: camera@21 {
compatible = "ovti,ov7725";
reg = <0x21>;
reset-gpios = <&axi_gpio_0 0 GPIO_ACTIVE_LOW>;
powerdown-gpios = <&axi_gpio_0 1 GPIO_ACTIVE_LOW>;
clocks = <&xclk>;
port {
ov772x_0: endpoint {
bus-type = <5>;
vsync-active = <0>;
hsync-active = <0>;
pclk-sample = <0>;
bus-width = <8>;
data-shift = <0>;
remote-endpoint = <&vcap1_in0>;
};
};
};
};
...
* Sony 1/3.06-Inch 13.13Mp CMOS Digital Image Sensor
The Sony imx214 is a 1/3.06-inch CMOS active pixel digital image sensor with
an active array size of 4224H x 3200V. It is programmable through an I2C
interface.
Image data is sent through MIPI CSI-2, through 2 or 4 lanes at a maximum
throughput of 1.2Gbps/lane.
Required Properties:
- compatible: Shall be "sony,imx214".
- reg: I2C bus address of the device. Depending on how the sensor is wired,
it shall be <0x10> or <0x1a>;
- enable-gpios: GPIO descriptor for the enable pin.
- vdddo-supply: Chip digital IO regulator (1.8V).
- vdda-supply: Chip analog regulator (2.7V).
- vddd-supply: Chip digital core regulator (1.12V).
- clocks: Reference to the xclk clock.
- clock-frequency: Frequency of the xclk clock.
Optional Properties:
- flash-leds: See ../video-interfaces.txt
- lens-focus: See ../video-interfaces.txt
The imx214 device node shall contain one 'port' child node with
an 'endpoint' subnode. For further reading on port node refer to
Documentation/devicetree/bindings/media/video-interfaces.txt.
Required Properties on endpoint:
- data-lanes: check ../video-interfaces.txt
- link-frequencies: check ../video-interfaces.txt
- remote-endpoint: check ../video-interfaces.txt
Example:
camera-sensor@1a {
compatible = "sony,imx214";
reg = <0x1a>;
vdddo-supply = <&pm8994_lvs1>;
vddd-supply = <&camera_vddd_1v12>;
vdda-supply = <&pm8994_l17>;
lens-focus = <&ad5820>;
enable-gpios = <&msmgpio 25 GPIO_ACTIVE_HIGH>;
clocks = <&mmcc CAMSS_MCLK0_CLK>;
clock-frequency = <24000000>;
port {
imx214_ep: endpoint {
data-lanes = <1 2 3 4>;
link-frequencies = /bits/ 64 <480000000>;
remote-endpoint = <&csiphy0_ep>;
};
};
};
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/sony,imx214.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Sony 1/3.06-Inch 13.13MP CMOS Digital Image Sensor
maintainers:
- Ricardo Ribalda <ribalda@kernel.org>
description: |
The Sony IMX214 is a 1/3.06-inch CMOS active pixel digital image sensor with
an active array size of 4224H x 3200V. It is programmable through an I2C
interface. Image data is sent through MIPI CSI-2, through 2 or 4 lanes at a
maximum throughput of 1.2Gbps/lane.
properties:
compatible:
const: sony,imx214
reg:
enum:
- 0x10
- 0x1a
clocks:
description: Reference to the xclk clock.
maxItems: 1
clock-frequency:
description: Frequency of the xclk clock in Hz.
enable-gpios:
description: GPIO descriptor for the enable pin.
maxItems: 1
vdddo-supply:
description: Chip digital IO regulator (1.8V).
maxItems: 1
vdda-supply:
description: Chip analog regulator (2.7V).
maxItems: 1
vddd-supply:
description: Chip digital core regulator (1.12V).
maxItems: 1
flash-leds:
description: See ../video-interfaces.txt
lens-focus:
description: See ../video-interfaces.txt
port:
type: object
description: |
Video output port. See ../video-interfaces.txt.
properties:
endpoint:
type: object
properties:
data-lanes:
$ref: /schemas/types.yaml#/definitions/uint32-array
description: See ../video-interfaces.txt
anyOf:
- items:
- const: 1
- const: 2
- items:
- const: 1
- const: 2
- const: 3
- const: 4
link-frequencies:
$ref: /schemas/types.yaml#/definitions/uint64-array
description: See ../video-interfaces.txt
required:
- data-lanes
- link-frequencies
unevaluatedProperties: false
additionalProperties: false
required:
- compatible
- reg
- clocks
- clock-frequency
- enable-gpios
- vdddo-supply
- vdda-supply
- vddd-supply
- port
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c0 {
#address-cells = <1>;
#size-cells = <0>;
camera-sensor@1a {
compatible = "sony,imx214";
reg = <0x1a>;
vdddo-supply = <&pm8994_lvs1>;
vddd-supply = <&camera_vddd_1v12>;
vdda-supply = <&pm8994_l17>;
lens-focus = <&ad5820>;
enable-gpios = <&msmgpio 25 GPIO_ACTIVE_HIGH>;
clocks = <&camera_clk>;
clock-frequency = <24000000>;
port {
imx214_ep: endpoint {
data-lanes = <1 2 3 4>;
link-frequencies = /bits/ 64 <480000000>;
remote-endpoint = <&csiphy0_ep>;
};
};
};
};
...
Freescale i.MX7 CMOS Sensor Interface
=====================================
csi node
--------
This is device node for the CMOS Sensor Interface (CSI) which enables the chip
to connect directly to external CMOS image sensors.
Required properties:
- compatible : "fsl,imx7-csi" or "fsl,imx6ul-csi";
- reg : base address and length of the register set for the device;
- interrupts : should contain CSI interrupt;
- clocks : list of clock specifiers, see
Documentation/devicetree/bindings/clock/clock-bindings.txt for details;
- clock-names : must contain "mclk";
The device node shall contain one 'port' child node with one child 'endpoint'
node, according to the bindings defined in:
Documentation/devicetree/bindings/media/video-interfaces.txt.
In the following example a remote endpoint is a video multiplexer.
example:
csi: csi@30710000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx7-csi";
reg = <0x30710000 0x10000>;
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_CSI_MCLK_ROOT_CLK>;
clock-names = "mclk";
port {
csi_from_csi_mux: endpoint {
remote-endpoint = <&csi_mux_to_csi>;
};
};
};
Freescale i.MX7 Mipi CSI2
=========================
mipi_csi2 node
--------------
This is the device node for the MIPI CSI-2 receiver core in i.MX7 SoC. It is
compatible with previous version of Samsung D-phy.
Required properties:
- compatible : "fsl,imx7-mipi-csi2";
- reg : base address and length of the register set for the device;
- interrupts : should contain MIPI CSIS interrupt;
- clocks : list of clock specifiers, see
Documentation/devicetree/bindings/clock/clock-bindings.txt for details;
- clock-names : must contain "pclk", "wrap" and "phy" entries, matching
entries in the clock property;
- power-domains : a phandle to the power domain, see
Documentation/devicetree/bindings/power/power_domain.txt for details.
- reset-names : should include following entry "mrst";
- resets : a list of phandle, should contain reset entry of
reset-names;
- phy-supply : from the generic phy bindings, a phandle to a regulator that
provides power to MIPI CSIS core;
Optional properties:
- clock-frequency : The IP's main (system bus) clock frequency in Hz, default
value when this property is not specified is 166 MHz;
- fsl,csis-hs-settle : differential receiver (HS-RX) settle time;
The device node should contain two 'port' child nodes with one child 'endpoint'
node, according to the bindings defined in:
Documentation/devicetree/bindings/ media/video-interfaces.txt.
The following are properties specific to those nodes.
port node
---------
- reg : (required) can take the values 0 or 1, where 0 shall be
related to the sink port and port 1 shall be the source
one;
endpoint node
-------------
- data-lanes : (required) an array specifying active physical MIPI-CSI2
data input lanes and their mapping to logical lanes; this
shall only be applied to port 0 (sink port), the array's
content is unused only its length is meaningful,
in this case the maximum length supported is 2;
example:
mipi_csi: mipi-csi@30750000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx7-mipi-csi2";
reg = <0x30750000 0x10000>;
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_IPG_ROOT_CLK>,
<&clks IMX7D_MIPI_CSI_ROOT_CLK>,
<&clks IMX7D_MIPI_DPHY_ROOT_CLK>;
clock-names = "pclk", "wrap", "phy";
clock-frequency = <166000000>;
power-domains = <&pgc_mipi_phy>;
phy-supply = <&reg_1p0d>;
resets = <&src IMX7_RESET_MIPI_PHY_MRST>;
reset-names = "mrst";
fsl,csis-hs-settle = <3>;
port@0 {
reg = <0>;
mipi_from_sensor: endpoint {
remote-endpoint = <&ov2680_to_mipi>;
data-lanes = <1>;
};
};
port@1 {
reg = <1>;
mipi_vc0_to_csi_mux: endpoint {
remote-endpoint = <&csi_mux_from_mipi_vc0>;
};
};
};
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/nxp,imx7-csi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: i.MX7 CMOS Sensor Interface
maintainers:
- Rui Miguel Silva <rmfrfs@gmail.com>
description: |
This is device node for the CMOS Sensor Interface (CSI) which enables the
chip to connect directly to external CMOS image sensors.
properties:
compatible:
enum:
- fsl,imx7-csi
- fsl,imx6ul-csi
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
maxItems: 1
clock-names:
items:
- const: mclk
port:
type: object
description:
A node containing input port nodes with endpoint definitions as documented
in Documentation/devicetree/bindings/media/video-interfaces.txt
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- port
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/imx7d-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
csi: csi@30710000 {
compatible = "fsl,imx7-csi";
reg = <0x30710000 0x10000>;
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_CSI_MCLK_ROOT_CLK>;
clock-names = "mclk";
port {
csi_from_csi_mux: endpoint {
remote-endpoint = <&csi_mux_to_csi>;
};
};
};
...
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/nxp,imx7-mipi-csi2.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP i.MX7 Mipi CSI2
maintainers:
- Rui Miguel Silva <rmfrfs@gmail.com>
description: |
This is the device node for the MIPI CSI-2 receiver core in i.MX7 soc. It is
compatible with previous version of samsung d-phy.
properties:
compatible:
const: fsl,imx7-mipi-csi2
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
minItems: 3
maxItems: 3
clock-names:
items:
- const: pclk
- const: wrap
- const: phy
power-domains:
maxItems: 1
phy-supply:
description:
Phandle to a regulator that provides power to the PHY. This
regulator will be managed during the PHY power on/off sequence.
resets:
maxItems: 1
reset-names:
const: mrst
clock-frequency:
description:
The IP main (system bus) clock frequency in Hertz
default: 166000000
fsl,csis-hs-settle:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Differential receiver (HS-RX) settle time
ports:
type: object
description:
A node containing input and output port nodes with endpoint definitions
as documented in
Documentation/devicetree/bindings/media/video-interfaces.txt
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
port@0:
type: object
description:
Input port node, single endpoint describing the CSI-2 transmitter.
properties:
reg:
const: 0
endpoint:
type: object
properties:
data-lanes:
$ref: /schemas/types.yaml#/definitions/uint32-array
description: See ../video-interfaces.txt
oneOf:
- items:
- const: 1
- items:
- const: 1
- const: 2
remote-endpoint: true
required:
- data-lanes
- remote-endpoint
additionalProperties: false
additionalProperties: false
port@1:
type: object
description:
Output port node
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- power-domains
- phy-supply
- resets
- reset-names
- ports
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/imx7d-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/reset/imx7-reset.h>
mipi_csi: mipi-csi@30750000 {
compatible = "fsl,imx7-mipi-csi2";
reg = <0x30750000 0x10000>;
interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_IPG_ROOT_CLK>,
<&clks IMX7D_MIPI_CSI_ROOT_CLK>,
<&clks IMX7D_MIPI_DPHY_ROOT_CLK>;
clock-names = "pclk", "wrap", "phy";
clock-frequency = <166000000>;
power-domains = <&pgc_mipi_phy>;
phy-supply = <&reg_1p0d>;
resets = <&src IMX7_RESET_MIPI_PHY_MRST>;
reset-names = "mrst";
fsl,csis-hs-settle = <3>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
mipi_from_sensor: endpoint {
remote-endpoint = <&ov2680_to_mipi>;
data-lanes = <1>;
};
};
port@1 {
reg = <1>;
mipi_vc0_to_csi_mux: endpoint {
remote-endpoint = <&csi_mux_from_mipi_vc0>;
};
};
};
};
...
...@@ -8,6 +8,7 @@ Qualcomm Camera Subsystem ...@@ -8,6 +8,7 @@ Qualcomm Camera Subsystem
Definition: Should contain one of: Definition: Should contain one of:
- "qcom,msm8916-camss" - "qcom,msm8916-camss"
- "qcom,msm8996-camss" - "qcom,msm8996-camss"
- "qcom,sdm660-camss"
- reg: - reg:
Usage: required Usage: required
Value type: <prop-encoded-array> Value type: <prop-encoded-array>
...@@ -64,30 +65,36 @@ Qualcomm Camera Subsystem ...@@ -64,30 +65,36 @@ Qualcomm Camera Subsystem
Value type: <stringlist> Value type: <stringlist>
Definition: Should contain the following entries: Definition: Should contain the following entries:
- "top_ahb" - "top_ahb"
- "throttle_axi" (660 only)
- "ispif_ahb" - "ispif_ahb"
- "csiphy0_timer" - "csiphy0_timer"
- "csiphy1_timer" - "csiphy1_timer"
- "csiphy2_timer" (8996 only) - "csiphy2_timer" (8996 only)
- "csiphy_ahb2crif" (660 only)
- "csi0_ahb" - "csi0_ahb"
- "csi0" - "csi0"
- "csi0_phy" - "csi0_phy"
- "csi0_pix" - "csi0_pix"
- "csi0_rdi" - "csi0_rdi"
- "cphy_csid0" (660 only)
- "csi1_ahb" - "csi1_ahb"
- "csi1" - "csi1"
- "csi1_phy" - "csi1_phy"
- "csi1_pix" - "csi1_pix"
- "csi1_rdi" - "csi1_rdi"
- "cphy_csid1" (660 only)
- "csi2_ahb" (8996 only) - "csi2_ahb" (8996 only)
- "csi2" (8996 only) - "csi2" (8996 only)
- "csi2_phy" (8996 only) - "csi2_phy" (8996 only)
- "csi2_pix" (8996 only) - "csi2_pix" (8996 only)
- "csi2_rdi" (8996 only) - "csi2_rdi" (8996 only)
- "cphy_csid2" (660 only)
- "csi3_ahb" (8996 only) - "csi3_ahb" (8996 only)
- "csi3" (8996 only) - "csi3" (8996 only)
- "csi3_phy" (8996 only) - "csi3_phy" (8996 only)
- "csi3_pix" (8996 only) - "csi3_pix" (8996 only)
- "csi3_rdi" (8996 only) - "csi3_rdi" (8996 only)
- "cphy_csid3" (660 only)
- "ahb" - "ahb"
- "vfe0" - "vfe0"
- "csi_vfe0" - "csi_vfe0"
......
...@@ -83,6 +83,7 @@ properties: ...@@ -83,6 +83,7 @@ properties:
- rc-it913x-v2 - rc-it913x-v2
- rc-kaiomy - rc-kaiomy
- rc-khadas - rc-khadas
- rc-khamsin
- rc-kworld-315u - rc-kworld-315u
- rc-kworld-pc150u - rc-kworld-pc150u
- rc-kworld-plus-tv-analog - rc-kworld-plus-tv-analog
...@@ -102,6 +103,7 @@ properties: ...@@ -102,6 +103,7 @@ properties:
- rc-npgtech - rc-npgtech
- rc-odroid - rc-odroid
- rc-pctv-sedna - rc-pctv-sedna
- rc-pine64
- rc-pinnacle-color - rc-pinnacle-color
- rc-pinnacle-grey - rc-pinnacle-grey
- rc-pinnacle-pctv-hd - rc-pinnacle-pctv-hd
......
...@@ -23,10 +23,27 @@ properties: ...@@ -23,10 +23,27 @@ properties:
interrupts: interrupts:
maxItems: 1 maxItems: 1
iommus: clocks:
maxItems: 1 minItems: 3
items:
# isp0 and isp1
- description: ISP clock
- description: ISP AXI clock
- description: ISP AHB clock
# only for isp1
- description: ISP Pixel clock
power-domains: clock-names:
minItems: 3
items:
# isp0 and isp1
- const: isp
- const: aclk
- const: hclk
# only for isp1
- const: pclk_isp
iommus:
maxItems: 1 maxItems: 1
phys: phys:
...@@ -36,21 +53,8 @@ properties: ...@@ -36,21 +53,8 @@ properties:
phy-names: phy-names:
const: dphy const: dphy
clocks: power-domains:
items: maxItems: 1
- description: ISP clock
- description: ISP AXI clock clock
- description: ISP AXI clock wrapper clock
- description: ISP AHB clock clock
- description: ISP AHB wrapper clock
clock-names:
items:
- const: clk_isp
- const: aclk_isp
- const: aclk_isp_wrap
- const: hclk_isp
- const: hclk_isp_wrap
# See ./video-interfaces.txt for details # See ./video-interfaces.txt for details
ports: ports:
...@@ -94,20 +98,42 @@ properties: ...@@ -94,20 +98,42 @@ properties:
remote-endpoint: true remote-endpoint: true
required:
- reg
- "#address-cells"
- "#size-cells"
required: required:
- "#address-cells"
- "#size-cells"
- port@0 - port@0
required: required:
- compatible - compatible
- reg
- interrupts - interrupts
- clocks - clocks
- clock-names - clock-names
- power-domains
- iommus - iommus
- phys - phys
- phy-names - phy-names
- power-domains
- ports - ports
if:
properties:
compatible:
contains:
const: rockchip,rk3399-cif-isp
then:
properties:
clocks:
minItems: 3
maxItems: 4
clock-names:
minItems: 3
maxItems: 4
additionalProperties: false additionalProperties: false
examples: examples:
...@@ -117,7 +143,7 @@ examples: ...@@ -117,7 +143,7 @@ examples:
#include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/rk3399-power.h> #include <dt-bindings/power/rk3399-power.h>
parent0: parent@0 { parent0: parent {
#address-cells = <2>; #address-cells = <2>;
#size-cells = <2>; #size-cells = <2>;
...@@ -126,24 +152,22 @@ examples: ...@@ -126,24 +152,22 @@ examples:
reg = <0x0 0xff910000 0x0 0x4000>; reg = <0x0 0xff910000 0x0 0x4000>;
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>; interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>;
clocks = <&cru SCLK_ISP0>, clocks = <&cru SCLK_ISP0>,
<&cru ACLK_ISP0>, <&cru ACLK_ISP0_WRAPPER>, <&cru ACLK_ISP0_WRAPPER>,
<&cru HCLK_ISP0>, <&cru HCLK_ISP0_WRAPPER>; <&cru HCLK_ISP0_WRAPPER>;
clock-names = "clk_isp", clock-names = "isp", "aclk", "hclk";
"aclk_isp", "aclk_isp_wrap",
"hclk_isp", "hclk_isp_wrap";
power-domains = <&power RK3399_PD_ISP0>;
iommus = <&isp0_mmu>; iommus = <&isp0_mmu>;
phys = <&dphy>; phys = <&dphy>;
phy-names = "dphy"; phy-names = "dphy";
power-domains = <&power RK3399_PD_ISP0>;
ports { ports {
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
port@0 { port@0 {
reg = <0>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
reg = <0>;
mipi_in_wcam: endpoint@0 { mipi_in_wcam: endpoint@0 {
reg = <0>; reg = <0>;
...@@ -160,8 +184,7 @@ examples: ...@@ -160,8 +184,7 @@ examples:
}; };
}; };
i2c7: i2c@ff160000 { i2c7: i2c {
clock-frequency = <400000>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
......
...@@ -44,6 +44,43 @@ properties: ...@@ -44,6 +44,43 @@ properties:
bindings defined in bindings defined in
Documentation/devicetree/bindings/media/video-interfaces.txt. Documentation/devicetree/bindings/media/video-interfaces.txt.
properties:
endpoint:
type: object
properties:
bus-type:
enum: [5, 6]
default: 5
bus-width:
enum: [8, 10, 12, 14]
default: 8
remote-endpoint: true
allOf:
- if:
properties:
bus-type:
const: 6
then:
properties:
hsync-active: false
vsync-active: false
bus-width:
enum: [8]
required:
- remote-endpoint
- bus-type
- pclk-sample
unevaluatedProperties: false
additionalProperties: false
required: required:
- compatible - compatible
- reg - reg
...@@ -75,6 +112,7 @@ examples: ...@@ -75,6 +112,7 @@ examples:
port { port {
dcmi_0: endpoint { dcmi_0: endpoint {
remote-endpoint = <&ov5640_0>; remote-endpoint = <&ov5640_0>;
bus-type = <5>;
bus-width = <8>; bus-width = <8>;
hsync-active = <0>; hsync-active = <0>;
vsync-active = <0>; vsync-active = <0>;
......
...@@ -132,3 +132,16 @@ used to obtain device's power state after the power state transition: ...@@ -132,3 +132,16 @@ used to obtain device's power state after the power state transition:
The function returns a non-zero value if it succeeded getting the power count or The function returns a non-zero value if it succeeded getting the power count or
runtime PM was disabled, in either of which cases the driver may proceed to runtime PM was disabled, in either of which cases the driver may proceed to
access the device. access the device.
Controls
--------
For camera sensors that are connected to a bus where transmitter and receiver
require common configuration set by drivers, such as CSI-2 or parallel (BT.601
or BT.656) bus, the ``V4L2_CID_LINK_FREQ`` control is mandatory on transmitter
drivers. Receiver drivers can use the ``V4L2_CID_LINK_FREQ`` to query the
frequency used on the bus.
The transmitter drivers should also implement ``V4L2_CID_PIXEL_RATE`` control in
order to tell the maximum pixel rate to the receiver. This is required on raw
camera sensors.
...@@ -143,7 +143,7 @@ To enable/disable the 'monitor all' mode:: ...@@ -143,7 +143,7 @@ To enable/disable the 'monitor all' mode::
int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable); int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable);
If enabled, then the adapter should be put in a mode to also monitor messages If enabled, then the adapter should be put in a mode to also monitor messages
that not for us. Not all hardware supports this and this function is only that are not for us. Not all hardware supports this and this function is only
called if the CEC_CAP_MONITOR_ALL capability is set. This callback is optional called if the CEC_CAP_MONITOR_ALL capability is set. This callback is optional
(some hardware may always be in 'monitor all' mode). (some hardware may always be in 'monitor all' mode).
...@@ -335,7 +335,7 @@ So this must work: ...@@ -335,7 +335,7 @@ So this must work:
$ cat einj.txt >error-inj $ cat einj.txt >error-inj
The first callback is called when this file is read and it should show the The first callback is called when this file is read and it should show the
the current error injection state:: current error injection state::
int (*error_inj_show)(struct cec_adapter *adap, struct seq_file *sf); int (*error_inj_show)(struct cec_adapter *adap, struct seq_file *sf);
......
...@@ -28,10 +28,9 @@ interface elements must be present on the sub-device represents the ...@@ -28,10 +28,9 @@ interface elements must be present on the sub-device represents the
CSI-2 transmitter. CSI-2 transmitter.
The V4L2_CID_LINK_FREQ control is used to tell the receiver driver the The V4L2_CID_LINK_FREQ control is used to tell the receiver driver the
frequency (and not the symbol rate) of the link. The frequency (and not the symbol rate) of the link. The V4L2_CID_PIXEL_RATE
V4L2_CID_PIXEL_RATE is may be used by the receiver to obtain the pixel control may be used by the receiver to obtain the pixel rate the transmitter
rate the transmitter uses. The uses. The :c:type:`v4l2_subdev_video_ops`->s_stream() callback provides an
:c:type:`v4l2_subdev_video_ops`->s_stream() callback provides an
ability to start and stop the stream. ability to start and stop the stream.
The value of the V4L2_CID_PIXEL_RATE is calculated as follows:: The value of the V4L2_CID_PIXEL_RATE is calculated as follows::
......
This diff is collapsed.
.. SPDX-License-Identifier: GPL-2.0-only OR BSD-3-Clause
.. include:: <isonum.txt>
MIPI CCS camera sensor driver
=============================
The MIPI CCS camera sensor driver is a generic driver for `MIPI CCS
<https://www.mipi.org/specifications/camera-command-set>`_ compliant
camera sensors. It exposes three sub-devices representing the pixel array,
the binner and the scaler.
As the capabilities of individual devices vary, the driver exposes
interfaces based on the capabilities that exist in hardware.
Pixel Array sub-device
----------------------
The pixel array sub-device represents the camera sensor's pixel matrix, as well
as analogue crop functionality present in many compliant devices. The analogue
crop is configured using the ``V4L2_SEL_TGT_CROP`` on the source pad (0) of the
entity. The size of the pixel matrix can be obtained by getting the
``V4L2_SEL_TGT_NATIVE_SIZE`` target.
Binner
------
The binner sub-device represents the binning functionality on the sensor. For
that purpose, selection target ``V4L2_SEL_TGT_COMPOSE`` is supported on the
sink pad (0).
Additionally, if a device has no scaler or digital crop functionality, the
source pad (1) expses another digital crop selection rectangle that can only
crop at the end of the lines and frames.
Scaler
------
The scaler sub-device represents the digital crop and scaling functionality of
the sensor. The V4L2 selection target ``V4L2_SEL_TGT_CROP`` is used to
configure the digital crop on the sink pad (0) when digital crop is supported.
Scaling is configured using selection target ``V4L2_SEL_TGT_COMPOSE`` on the
sink pad (0) as well.
Additionally, if the scaler sub-device exists, its source pad (1) exposes
another digital crop selection rectangle that can only crop at the end of the
lines and frames.
Digital and analogue crop
-------------------------
Digital crop functionality is referred to as cropping that effectively works by
dropping some data on the floor. Analogue crop, on the other hand, means that
the cropped information is never retrieved. In case of camera sensors, the
analogue data is never read from the pixel matrix that are outside the
configured selection rectangle that designates crop. The difference has an
effect in device timing and likely also in power consumption.
Register definition generator
-----------------------------
The ccs-regs.asc file contains MIPI CCS register definitions that are used
to produce C source code files for definitions that can be better used by
programs written in C language. As there are many dependencies between the
produced files, please do not modify them manually as it's error-prone and
in vain, but instead change the script producing them.
Usage
~~~~~
Conventionally the script is called this way to update the CCS driver
definitions:
.. code-block:: none
$ Documentation/driver-api/media/drivers/ccs/mk-ccs-regs -k \
-e drivers/media/i2c/ccs/ccs-regs.h \
-L drivers/media/i2c/ccs/ccs-limits.h \
-l drivers/media/i2c/ccs/ccs-limits.c \
-c Documentation/driver-api/media/drivers/ccs/ccs-regs.asc
**Copyright** |copy| 2020 Intel Corporation
This diff is collapsed.
...@@ -26,6 +26,7 @@ Video4Linux (V4L) drivers ...@@ -26,6 +26,7 @@ Video4Linux (V4L) drivers
tuners tuners
vimc-devel vimc-devel
zoran zoran
ccs/ccs
Digital TV drivers Digital TV drivers
......
...@@ -244,7 +244,7 @@ Carrier Signal to Noise ratio (:ref:`DTV-STAT-CNR`) ...@@ -244,7 +244,7 @@ Carrier Signal to Noise ratio (:ref:`DTV-STAT-CNR`)
Having it available after inner FEC is more common. Having it available after inner FEC is more common.
Bit counts post-FEC (:ref:`DTV-STAT-POST-ERROR-BIT-COUNT` and :ref:`DTV-STAT-POST-TOTAL-BIT-COUNT`) Bit counts post-FEC (:ref:`DTV-STAT-POST-ERROR-BIT-COUNT` and :ref:`DTV-STAT-POST-TOTAL-BIT-COUNT`)
- Those counters measure the number of bits and bit errors errors after - Those counters measure the number of bits and bit errors after
the forward error correction (FEC) on the inner coding block the forward error correction (FEC) on the inner coding block
(after Viterbi, LDPC or other inner code). (after Viterbi, LDPC or other inner code).
...@@ -253,7 +253,7 @@ Bit counts post-FEC (:ref:`DTV-STAT-POST-ERROR-BIT-COUNT` and :ref:`DTV-STAT-POS ...@@ -253,7 +253,7 @@ Bit counts post-FEC (:ref:`DTV-STAT-POST-ERROR-BIT-COUNT` and :ref:`DTV-STAT-POS
see :c:type:`fe_status`). see :c:type:`fe_status`).
Bit counts pre-FEC (:ref:`DTV-STAT-PRE-ERROR-BIT-COUNT` and :ref:`DTV-STAT-PRE-TOTAL-BIT-COUNT`) Bit counts pre-FEC (:ref:`DTV-STAT-PRE-ERROR-BIT-COUNT` and :ref:`DTV-STAT-PRE-TOTAL-BIT-COUNT`)
- Those counters measure the number of bits and bit errors errors before - Those counters measure the number of bits and bit errors before
the forward error correction (FEC) on the inner coding block the forward error correction (FEC) on the inner coding block
(before Viterbi, LDPC or other inner code). (before Viterbi, LDPC or other inner code).
...@@ -263,7 +263,7 @@ Bit counts pre-FEC (:ref:`DTV-STAT-PRE-ERROR-BIT-COUNT` and :ref:`DTV-STAT-PRE-T ...@@ -263,7 +263,7 @@ Bit counts pre-FEC (:ref:`DTV-STAT-PRE-ERROR-BIT-COUNT` and :ref:`DTV-STAT-PRE-T
after ``FE_HAS_VITERBI``, see :c:type:`fe_status`). after ``FE_HAS_VITERBI``, see :c:type:`fe_status`).
Block counts (:ref:`DTV-STAT-ERROR-BLOCK-COUNT` and :ref:`DTV-STAT-TOTAL-BLOCK-COUNT`) Block counts (:ref:`DTV-STAT-ERROR-BLOCK-COUNT` and :ref:`DTV-STAT-TOTAL-BLOCK-COUNT`)
- Those counters measure the number of blocks and block errors errors after - Those counters measure the number of blocks and block errors after
the forward error correction (FEC) on the inner coding block the forward error correction (FEC) on the inner coding block
(before Viterbi, LDPC or other inner code). (before Viterbi, LDPC or other inner code).
......
...@@ -335,7 +335,7 @@ current and new values: ...@@ -335,7 +335,7 @@ current and new values:
union v4l2_ctrl_ptr p_new; union v4l2_ctrl_ptr p_new;
union v4l2_ctrl_ptr p_cur; union v4l2_ctrl_ptr p_cur;
If the control has a simple s32 type type, then: If the control has a simple s32 type, then:
.. code-block:: c .. code-block:: c
...@@ -349,7 +349,7 @@ Within the control ops you can freely use these. The val and cur.val speak for ...@@ -349,7 +349,7 @@ Within the control ops you can freely use these. The val and cur.val speak for
themselves. The p_char pointers point to character buffers of length themselves. The p_char pointers point to character buffers of length
ctrl->maximum + 1, and are always 0-terminated. ctrl->maximum + 1, and are always 0-terminated.
Unless the control is marked volatile the p_cur field points to the the Unless the control is marked volatile the p_cur field points to the
current cached control value. When you create a new control this value is made current cached control value. When you create a new control this value is made
identical to the default value. After calling v4l2_ctrl_handler_setup() this identical to the default value. After calling v4l2_ctrl_handler_setup() this
value is passed to the hardware. It is generally a good idea to call this value is passed to the hardware. It is generally a good idea to call this
......
...@@ -212,7 +212,7 @@ types exist: ...@@ -212,7 +212,7 @@ types exist:
========================== ==================== ============================== ========================== ==================== ==============================
The last argument gives you a certain amount of control over the device The last argument gives you a certain amount of control over the device
device node number used (i.e. the X in ``videoX``). Normally you will pass -1 node number used (i.e. the X in ``videoX``). Normally you will pass -1
to let the v4l2 framework pick the first free number. But sometimes users to let the v4l2 framework pick the first free number. But sometimes users
want to select a specific node number. It is common that drivers allow want to select a specific node number. It is common that drivers allow
the user to select a specific device node number through a driver module the user to select a specific device node number through a driver module
......
...@@ -188,7 +188,7 @@ Available follower modes are: ...@@ -188,7 +188,7 @@ Available follower modes are:
in combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`, otherwise in combination with :ref:`CEC_MODE_NO_INITIATOR <CEC-MODE-NO-INITIATOR>`, otherwise
the ``EINVAL`` error code will be returned. In 'monitor all' mode all messages the ``EINVAL`` error code will be returned. In 'monitor all' mode all messages
this CEC device transmits and all messages it receives, including this CEC device transmits and all messages it receives, including
directed messages for other CEC devices will be reported. This is directed messages for other CEC devices, will be reported. This is
very useful for debugging, but not all devices support this. This very useful for debugging, but not all devices support this. This
mode requires that the :ref:`CEC_CAP_MONITOR_ALL <CEC-CAP-MONITOR-ALL>` capability is set, mode requires that the :ref:`CEC_CAP_MONITOR_ALL <CEC-CAP-MONITOR-ALL>` capability is set,
otherwise the ``EINVAL`` error code is returned. This is only allowed if otherwise the ``EINVAL`` error code is returned. This is only allowed if
......
...@@ -8,7 +8,7 @@ Digital TV Audio Device ...@@ -8,7 +8,7 @@ Digital TV Audio Device
The Digital TV audio device controls the MPEG2 audio decoder of the Digital The Digital TV audio device controls the MPEG2 audio decoder of the Digital
TV hardware. It can be accessed through ``/dev/dvb/adapter?/audio?``. Data TV hardware. It can be accessed through ``/dev/dvb/adapter?/audio?``. Data
types and and ioctl definitions can be accessed by including types and ioctl definitions can be accessed by including
``linux/dvb/audio.h`` in your application. ``linux/dvb/audio.h`` in your application.
Please note that some Digital TV cards don’t have their own MPEG decoder, which Please note that some Digital TV cards don’t have their own MPEG decoder, which
......
...@@ -7,7 +7,7 @@ Digital TV CA Device ...@@ -7,7 +7,7 @@ Digital TV CA Device
#################### ####################
The Digital TV CA device controls the conditional access hardware. It The Digital TV CA device controls the conditional access hardware. It
can be accessed through ``/dev/dvb/adapter?/ca?``. Data types and and ioctl can be accessed through ``/dev/dvb/adapter?/ca?``. Data types and ioctl
definitions can be accessed by including ``linux/dvb/ca.h`` in your definitions can be accessed by including ``linux/dvb/ca.h`` in your
application. application.
......
...@@ -11,7 +11,7 @@ digital TV. If the driver and hardware supports, those filters are ...@@ -11,7 +11,7 @@ digital TV. If the driver and hardware supports, those filters are
implemented at the hardware. Otherwise, the Kernel provides a software implemented at the hardware. Otherwise, the Kernel provides a software
emulation. emulation.
It can be accessed through ``/dev/adapter?/demux?``. Data types and and It can be accessed through ``/dev/adapter?/demux?``. Data types and
ioctl definitions can be accessed by including ``linux/dvb/dmx.h`` in ioctl definitions can be accessed by including ``linux/dvb/dmx.h`` in
your application. your application.
......
...@@ -50,7 +50,7 @@ by a :ref:`DMX_QUERYBUF` ioctl will do as well. ...@@ -50,7 +50,7 @@ by a :ref:`DMX_QUERYBUF` ioctl will do as well.
When ``DMX_QBUF`` is called with a pointer to this structure, it locks the When ``DMX_QBUF`` is called with a pointer to this structure, it locks the
memory pages of the buffer in physical memory, so they cannot be swapped memory pages of the buffer in physical memory, so they cannot be swapped
out to disk. Buffers remain locked until dequeued, until the out to disk. Buffers remain locked until dequeued, until the
the device is closed. device is closed.
Applications call the ``DMX_DQBUF`` ioctl to dequeue a filled Applications call the ``DMX_DQBUF`` ioctl to dequeue a filled
(capturing) buffer from the driver's outgoing queue. (capturing) buffer from the driver's outgoing queue.
......
...@@ -23,7 +23,7 @@ types that are present on the transport stream. This is done through ...@@ -23,7 +23,7 @@ types that are present on the transport stream. This is done through
virtual ``dvb?_?`` network interfaces, and will be controlled/routed via virtual ``dvb?_?`` network interfaces, and will be controlled/routed via
the standard ip tools (like ip, route, netstat, ifconfig, etc). the standard ip tools (like ip, route, netstat, ifconfig, etc).
Data types and and ioctl definitions are defined via ``linux/dvb/net.h`` Data types and ioctl definitions are defined via ``linux/dvb/net.h``
header. header.
......
...@@ -8,7 +8,7 @@ Digital TV Video Device ...@@ -8,7 +8,7 @@ Digital TV Video Device
The Digital TV video device controls the MPEG2 video decoder of the Digital The Digital TV video device controls the MPEG2 video decoder of the Digital
TV hardware. It can be accessed through **/dev/dvb/adapter0/video0**. Data TV hardware. It can be accessed through **/dev/dvb/adapter0/video0**. Data
types and and ioctl definitions can be accessed by including types and ioctl definitions can be accessed by including
**linux/dvb/video.h** in your application. **linux/dvb/video.h** in your application.
Note that the Digital TV video device only controls decoding of the MPEG video Note that the Digital TV video device only controls decoding of the MPEG video
......
...@@ -64,6 +64,7 @@ ignore symbol RC_PROTO_RCMM12 ...@@ -64,6 +64,7 @@ ignore symbol RC_PROTO_RCMM12
ignore symbol RC_PROTO_RCMM24 ignore symbol RC_PROTO_RCMM24
ignore symbol RC_PROTO_RCMM32 ignore symbol RC_PROTO_RCMM32
ignore symbol RC_PROTO_XBOX_DVD ignore symbol RC_PROTO_XBOX_DVD
ignore symbol RC_PROTO_MAX
# Undocumented macros # Undocumented macros
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
file: uapi/v4l/keytable.c file: uapi/v4l/keytable.c
========================= =========================
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. _lirc_dev_intro: .. _lirc_dev_intro:
...@@ -57,12 +57,12 @@ on the following table. ...@@ -57,12 +57,12 @@ on the following table.
This mode is for both sending and receiving IR. This mode is for both sending and receiving IR.
For transmitting (aka sending), create a ``struct lirc_scancode`` with For transmitting (aka sending), create a struct lirc_scancode with
the desired scancode set in the ``scancode`` member, :c:type:`rc_proto` the desired scancode set in the ``scancode`` member, :c:type:`rc_proto`
set to the :ref:`IR protocol <Remote_controllers_Protocols>`, and all other set to the :ref:`IR protocol <Remote_controllers_Protocols>`, and all other
members set to 0. Write this struct to the lirc device. members set to 0. Write this struct to the lirc device.
For receiving, you read ``struct lirc_scancode`` from the LIRC device. For receiving, you read struct lirc_scancode from the LIRC device.
The ``scancode`` field is set to the received scancode and the The ``scancode`` field is set to the received scancode and the
:ref:`IR protocol <Remote_controllers_Protocols>` is set in :ref:`IR protocol <Remote_controllers_Protocols>` is set in
:c:type:`rc_proto`. If the scancode maps to a valid key code, this is set :c:type:`rc_proto`. If the scancode maps to a valid key code, this is set
...@@ -136,6 +136,13 @@ on the following table. ...@@ -136,6 +136,13 @@ on the following table.
This mode is used only for IR send. This mode is used only for IR send.
*************************************
Data types used by LIRC_MODE_SCANCODE
*************************************
.. kernel-doc:: include/uapi/linux/lirc.h
:identifiers: lirc_scancode rc_proto
******************** ********************
BPF based IR decoder BPF based IR decoder
******************** ********************
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. _lirc_dev: .. _lirc_dev:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. _lirc_func: .. _lirc_func:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_get_features: .. _lirc_get_features:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_get_rec_mode: .. _lirc_get_rec_mode:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_get_rec_resolution: .. _lirc_get_rec_resolution:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_get_send_mode: .. _lirc_get_send_mode:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_get_min_timeout: .. _lirc_get_min_timeout:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. _lirc_header: .. _lirc_header:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc-read: .. _lirc-read:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_set_measure_carrier_mode: .. _lirc_set_measure_carrier_mode:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_set_rec_carrier_range: .. _lirc_set_rec_carrier_range:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_set_rec_carrier: .. _lirc_set_rec_carrier:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_set_rec_timeout_reports: .. _lirc_set_rec_timeout_reports:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_set_rec_timeout: .. _lirc_set_rec_timeout:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_set_send_carrier: .. _lirc_set_send_carrier:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_set_send_duty_cycle: .. _lirc_set_send_duty_cycle:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_set_transmitter_mask: .. _lirc_set_transmitter_mask:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc_set_wideband_receiver: .. _lirc_set_wideband_receiver:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC .. c:namespace:: RC
.. _lirc-write: .. _lirc-write:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. _Remote_controllers_Intro: .. _Remote_controllers_Intro:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. _Remote_controllers_Protocols: .. _Remote_controllers_Protocols:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. _remote_controllers_sysfs_nodes: .. _remote_controllers_sysfs_nodes:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. _Remote_controllers_table_change: .. _Remote_controllers_table_change:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. _Remote_controllers_tables: .. _Remote_controllers_tables:
......
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later .. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. include:: <isonum.txt> .. include:: <isonum.txt>
.. _remote_controllers: .. _remote_controllers:
......
...@@ -270,7 +270,17 @@ EBU Tech 3213 ...@@ -270,7 +270,17 @@ EBU Tech 3213
============= =============
:title: E.B.U. Standard for Chromaticity Tolerances for Studio Monitors" :title: E.B.U. Standard for Chromaticity Tolerances for Studio Monitors
:author: European Broadcast Union (http://www.ebu.ch)
.. _tech3321:
EBU Tech 3321
=============
:title: E.B.U. guidelines for Consumer Flat Panel Displays (FPDs)
:author: European Broadcast Union (http://www.ebu.ch) :author: European Broadcast Union (http://www.ebu.ch)
......
...@@ -604,7 +604,7 @@ Buffer Flags ...@@ -604,7 +604,7 @@ Buffer Flags
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl is called. Due to
hardware limitations, the last buffer may be empty. In this case hardware limitations, the last buffer may be empty. In this case
the driver will set the ``bytesused`` field to 0, regardless of the driver will set the ``bytesused`` field to 0, regardless of
the format. Any Any subsequent call to the the format. Any subsequent call to the
:ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore, :ref:`VIDIOC_DQBUF <VIDIOC_QBUF>` ioctl will not block anymore,
but return an ``EPIPE`` error code. but return an ``EPIPE`` error code.
* .. _`V4L2-BUF-FLAG-REQUEST-FD`: * .. _`V4L2-BUF-FLAG-REQUEST-FD`:
......
...@@ -674,8 +674,9 @@ Colorspace EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG) ...@@ -674,8 +674,9 @@ Colorspace EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG)
========================================================= =========================================================
The :ref:`tech3213` standard defines the colorspace used by PAL/SECAM The :ref:`tech3213` standard defines the colorspace used by PAL/SECAM
in 1975. In practice this colorspace is obsolete and SMPTE 170M should in 1975. Note that this colorspace is not supported by the HDMI interface.
be used instead. The default transfer function is Instead :ref:`tech3321` recommends that Rec. 709 is used instead for HDMI.
The default transfer function is
``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is ``V4L2_XFER_FUNC_709``. The default Y'CbCr encoding is
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited ``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
range. The chromaticities of the primary colors and the white reference range. The chromaticities of the primary colors and the white reference
......
...@@ -44,6 +44,7 @@ applicable to all devices. ...@@ -44,6 +44,7 @@ applicable to all devices.
ext-ctrls-image-source ext-ctrls-image-source
ext-ctrls-image-process ext-ctrls-image-process
ext-ctrls-codec ext-ctrls-codec
ext-ctrls-codec-stateless
ext-ctrls-jpeg ext-ctrls-jpeg
ext-ctrls-dv ext-ctrls-dv
ext-ctrls-rf-tuner ext-ctrls-rf-tuner
......
...@@ -32,7 +32,7 @@ file handle is visible through another file handle). ...@@ -32,7 +32,7 @@ file handle is visible through another file handle).
One of the most common memory-to-memory device is the codec. Codecs One of the most common memory-to-memory device is the codec. Codecs
are more complicated than most and require additional setup for are more complicated than most and require additional setup for
their codec parameters. This is done through codec controls. their codec parameters. This is done through codec controls.
See :ref:`mpeg-controls`. More details on how to use codec memory-to-memory See :ref:`codec-controls`. More details on how to use codec memory-to-memory
devices are given in the following sections. devices are given in the following sections.
.. toctree:: .. toctree::
......
...@@ -58,3 +58,17 @@ Image Source Control IDs ...@@ -58,3 +58,17 @@ Image Source Control IDs
The unit cell consists of the whole area of the pixel, sensitive and The unit cell consists of the whole area of the pixel, sensitive and
non-sensitive. non-sensitive.
This control is required for automatic calibration of sensors/cameras. This control is required for automatic calibration of sensors/cameras.
.. c:type:: v4l2_area
.. flat-table:: struct v4l2_area
:header-rows: 0
:stub-columns: 0
:widths: 1 1 2
* - __u32
- ``width``
- Width of the area.
* - __u32
- ``height``
- Height of the area.
...@@ -55,8 +55,8 @@ controls in that array and a control class. Control classes are used to ...@@ -55,8 +55,8 @@ controls in that array and a control class. Control classes are used to
group similar controls into a single class. For example, control class group similar controls into a single class. For example, control class
``V4L2_CTRL_CLASS_USER`` contains all user controls (i. e. all controls ``V4L2_CTRL_CLASS_USER`` contains all user controls (i. e. all controls
that can also be set using the old :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` that can also be set using the old :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>`
ioctl). Control class ``V4L2_CTRL_CLASS_MPEG`` contains all controls ioctl). Control class ``V4L2_CTRL_CLASS_CODEC`` contains controls
relating to MPEG encoding, etc. relating to codecs.
All controls in the control array must belong to the specified control All controls in the control array must belong to the specified control
class. An error is returned if this is not the case. class. An error is returned if this is not the case.
...@@ -130,9 +130,9 @@ control class is found: ...@@ -130,9 +130,9 @@ control class is found:
.. code-block:: c .. code-block:: c
qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL; qctrl.id = V4L2_CTRL_CLASS_CODEC | V4L2_CTRL_FLAG_NEXT_CTRL;
while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &qctrl)) { while (0 == ioctl(fd, VIDIOC_QUERYCTRL, &qctrl)) {
if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_MPEG) if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_CODEC)
break; break;
/* ... */ /* ... */
qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
......
...@@ -57,18 +57,18 @@ Compressed Formats ...@@ -57,18 +57,18 @@ Compressed Formats
- H264 parsed slice data, including slice headers, either with or - H264 parsed slice data, including slice headers, either with or
without the start code, as extracted from the H264 bitstream. without the start code, as extracted from the H264 bitstream.
This format is adapted for stateless video decoders that implement an This format is adapted for stateless video decoders that implement an
H264 pipeline (using the :ref:`mem2mem` and :ref:`media-request-api`). H264 pipeline with the :ref:`stateless_decoder`.
This pixelformat has two modifiers that must be set at least once This pixelformat has two modifiers that must be set at least once
through the ``V4L2_CID_MPEG_VIDEO_H264_DECODE_MODE`` through the ``V4L2_CID_STATELESS_H264_DECODE_MODE``
and ``V4L2_CID_MPEG_VIDEO_H264_START_CODE`` controls. and ``V4L2_CID_STATELESS_H264_START_CODE`` controls.
In addition, metadata associated with the frame to decode are In addition, metadata associated with the frame to decode are
required to be passed through the ``V4L2_CID_MPEG_VIDEO_H264_SPS``, required to be passed through the ``V4L2_CID_STATELESS_H264_SPS``,
``V4L2_CID_MPEG_VIDEO_H264_PPS``, ``V4L2_CID_STATELESS_H264_PPS``,
``V4L2_CID_MPEG_VIDEO_H264_SCALING_MATRIX``, ``V4L2_CID_STATELESS_H264_SCALING_MATRIX``,
``V4L2_CID_MPEG_VIDEO_H264_SLICE_PARAMS`` and ``V4L2_CID_STATELESS_H264_SLICE_PARAMS`` and
``V4L2_CID_MPEG_VIDEO_H264_DECODE_PARAMS`` controls. See the ``V4L2_CID_STATELESS_H264_DECODE_PARAMS`` controls. See the
:ref:`associated Codec Control IDs <v4l2-mpeg-h264>`. Exactly :ref:`associated Codec Control IDs <v4l2-codec-stateless-h264>`.
one output and one capture buffer must be provided for use Exactly one output and one capture buffer must be provided for use
with this pixel format. The output buffer must contain the with this pixel format. The output buffer must contain the
appropriate number of macroblocks to decode a full appropriate number of macroblocks to decode a full
corresponding frame to the matching capture buffer. corresponding frame to the matching capture buffer.
...@@ -77,11 +77,6 @@ Compressed Formats ...@@ -77,11 +77,6 @@ Compressed Formats
7.3.2.8 "Slice layer without partitioning RBSP syntax" and the following 7.3.2.8 "Slice layer without partitioning RBSP syntax" and the following
sections. sections.
.. note::
This format is not yet part of the public kernel API and it
is expected to change.
* .. _V4L2-PIX-FMT-H263: * .. _V4L2-PIX-FMT-H263:
- ``V4L2_PIX_FMT_H263`` - ``V4L2_PIX_FMT_H263``
...@@ -196,10 +191,10 @@ Compressed Formats ...@@ -196,10 +191,10 @@ Compressed Formats
through the ``V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE`` through the ``V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE``
and ``V4L2_CID_MPEG_VIDEO_HEVC_START_CODE`` controls. and ``V4L2_CID_MPEG_VIDEO_HEVC_START_CODE`` controls.
Metadata associated with the frame to decode is required to be passed Metadata associated with the frame to decode is required to be passed
through the following controls : through the following controls:
* ``V4L2_CID_MPEG_VIDEO_HEVC_SPS`` ``V4L2_CID_MPEG_VIDEO_HEVC_SPS``,
* ``V4L2_CID_MPEG_VIDEO_HEVC_PPS`` ``V4L2_CID_MPEG_VIDEO_HEVC_PPS``, and
* ``V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS`` ``V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS``.
See the :ref:`associated Codec Control IDs <v4l2-mpeg-hevc>`. See the :ref:`associated Codec Control IDs <v4l2-mpeg-hevc>`.
Buffers associated with this pixel format must contain the appropriate Buffers associated with this pixel format must contain the appropriate
number of macroblocks to decode a full corresponding frame. number of macroblocks to decode a full corresponding frame.
...@@ -222,4 +217,6 @@ Compressed Formats ...@@ -222,4 +217,6 @@ Compressed Formats
- ``V4L2_PIX_FMT_FWHT_STATELESS`` - ``V4L2_PIX_FMT_FWHT_STATELESS``
- 'SFWH' - 'SFWH'
- Same format as V4L2_PIX_FMT_FWHT but requires stateless codec implementation. - Same format as V4L2_PIX_FMT_FWHT but requires stateless codec implementation.
See the :ref:`associated Codec Control IDs <v4l2-mpeg-fwht>`. Metadata associated with the frame to decode is required to be passed
through the ``V4L2_CID_STATELESS_FWHT_PARAMS`` control.
See the :ref:`associated Codec Control ID <codec-stateless-fwht>`.
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
.. _V4L2-PIX-FMT-GREY:
**************************
V4L2_PIX_FMT_GREY ('GREY')
**************************
Grey-scale image
Description
===========
This is a grey-scale image. It is really a degenerate Y'CbCr format
which simply contains no Cb or Cr data.
**Byte Order.**
Each cell is one byte.
.. flat-table::
:header-rows: 0
:stub-columns: 0
* - start + 0:
- Y'\ :sub:`00`
- Y'\ :sub:`01`
- Y'\ :sub:`02`
- Y'\ :sub:`03`
* - start + 4:
- Y'\ :sub:`10`
- Y'\ :sub:`11`
- Y'\ :sub:`12`
- Y'\ :sub:`13`
* - start + 8:
- Y'\ :sub:`20`
- Y'\ :sub:`21`
- Y'\ :sub:`22`
- Y'\ :sub:`23`
* - start + 12:
- Y'\ :sub:`30`
- Y'\ :sub:`31`
- Y'\ :sub:`32`
- Y'\ :sub:`33`
.. SPDX-License-Identifier: GPL-2.0 .. SPDX-License-Identifier: GPL-2.0
.. _v4l2-meta-fmt-params-rkisp1: .. _v4l2-meta-fmt-rk-isp1-params:
.. _v4l2-meta-fmt-stat-rkisp1:
.. _v4l2-meta-fmt-rk-isp1-stat-3a:
***************************************************************************** *****************************************************************************
V4L2_META_FMT_RK_ISP1_PARAMS ('rk1p'), V4L2_META_FMT_RK_ISP1_STAT_3A ('rk1s') V4L2_META_FMT_RK_ISP1_PARAMS ('rk1p'), V4L2_META_FMT_RK_ISP1_STAT_3A ('rk1s')
...@@ -46,4 +47,4 @@ important tuning tools using software control loop. ...@@ -46,4 +47,4 @@ important tuning tools using software control loop.
rkisp1 uAPI data types rkisp1 uAPI data types
====================== ======================
.. kernel-doc:: drivers/staging/media/rkisp1/uapi/rkisp1-config.h .. kernel-doc:: include/uapi/linux/rkisp1-config.h
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment