[GIT PULL for v7.4] media updates

-----BEGIN PGP SIGNATURE-----
 
 iQIyBAABCgAdFiEE+QmuaPwR3wnBdVwACF8+vY7k4RUFAmrXJzcACgkQCF8+vY7k
 4RWBOw/1FZWR4yNXSAP7UooVxSGYge/oNSvAFPNZxInSAySyDZl5ZNfHofmPJeYJ
 75sF1RIVcL01RzBsdFUlicIa5XScvoo+O7GNgXSBj8w5CdGOgDkKPL2Ak8MMs7EV
 0MQgBLNjPJaNVQLYegqPTksGa0uCVpYKdaodio8VGanCkJU0xGDOEgpYbhjGXGTw
 9FKf7tqZpsw6hZnzDT+dXEDBFpn+u13AySgCHpk4JftfjiP+dzPqwVoYdvEZXgvy
 hW9SllJAe8nMjVUUt6bD3g5bQBLs2taw2RXgIX25bD0VxhUQ93wp1F8TrHV3U7M7
 rYNwdJ4MS29mm4VFlBtmtXhocehtYNDt3Qgy5xLFSIN+17VgjfvgsxjBosP20iFy
 GA6GwRmncErdbFS+JaSCMUXLLk7HYUgapTrZYnp17KjFWa9p54TAx2NbujZAAYxP
 V9ohGEgdhjjv4p6YCBBzNAjsSGOHKX4pF+HBHBKNNxScEIXVC0Bv9SfnogNvqShk
 U4msbJOsi2MQDZgWM+IUxSIb9q2jRHAdJWroSiYgOG3krIM461yMM97PpvQTXB+4
 4DyTVCx1GxpbJqhN5C013f3PyhO4Y+Nr1zrZupYmUIZhTAGJgAzcDc8wbIk0KBto
 uD3OVchaQR5E0raCPQQCbnSbW8i6rRkrfCSU1mBM2VGEITeQkA==
 =LMlY
 -----END PGP SIGNATURE-----

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

Pull media updates from Mauro Carvalho Chehab:

 - v4l2 core:
     - improve subdev and pixformat kAPI;
     - fix P010 format info and add Y12 format info;
     - add fwnode_graph_for_each_endpoint_scoped();

 - New sensor drivers:
     - Sony IMX576
     - OmniVision OS02G10, OV05C10 and OG0VA1B
     - Samsung S5KJN5
     - Himax HM1246

 - Maxim GMSL2/3: add support for MAX9296A, MAX96717, and MAX96724

 - Intel IPU6: add support for IPU7, IPU7.5 and IPU8

 - NXP: add support for i.MX95 CSI pixel formatter driver

 - ITE: add driver for IT6625/IT6626 HDMI bridge

 - Qualcomm: add CSI2 3ph DPHY driver

 - Rockchip: add rk3576 MIPI capture vicap driver

 - STM32 DCMIPP: Add STM32MP25 subdevices

 - Lots of driver fixes and cleanups

* tag 'media/v7.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (596 commits)
  media: i2c: imx576: Fix line length register
  media: ov05c10: Remove duplicated writes to analogue gain register
  media: ov05c10: Power management fixes
  media: ov05c10: Set reset GPIO high when acquiring it
  media: ov05c10: Small cleanups
  media: maxim-serdes: Disable test pattern generator for now
  media: mc: Keep INTERNAL pad flags just for the kernel, for now
  media: i2c: imx576: select VIDEO_CCS_PLL to repair build error
  media: Documentation: mc: Fix Stream reference
  media: i2c: add imx576 image sensor driver
  dt-bindings: media: i2c: Add imx576 sensor
  media: i2c: maxim-serdes: add MAX9296A driver
  media: i2c: remove MAX96714 driver
  media: i2c: maxim-serdes: add MAX96724 driver
  staging: media: remove MAX96712 driver
  arm64: defconfig: disable deprecated MAX96712 driver
  media: i2c: maxim-serdes: add MAX96717 driver
  media: i2c: remove MAX96717 driver
  media: i2c: add Maxim GMSL2/3 deserializer framework
  media: i2c: add Maxim GMSL2/3 serializer framework
  ...
This commit is contained in:
Linus Torvalds 2026-10-24 19:27:32 -10:00
commit 42e6549eaf
654 changed files with 44424 additions and 8034 deletions

View File

@ -450,3 +450,7 @@ EM28xx cards list
- StarTech SVID2USB232
- em28281
- eb1a:8286
* - 114
- StarTech.com SVID2USB23
- em2860
- eb1a:5051

View File

@ -6,7 +6,7 @@ The Virtual Video Test Driver (vivid)
This driver emulates video4linux hardware of various types: video capture, video
output, vbi capture and output, metadata capture and output, radio receivers and
transmitters, touch capture and a software defined radio receiver. In addition a
simple framebuffer device is available for testing capture and output overlays.
simple framebuffer device is available for testing output overlays.
Up to 64 vivid instances can be created, each with up to 16 inputs and 16 outputs.
@ -35,7 +35,7 @@ This document describes the features implemented by this driver:
- Raw and Sliced VBI capture and output support
- Radio receiver and transmitter support, including RDS support
- Software defined radio (SDR) support
- Capture and output overlay support
- Output overlay support
- Metadata capture and output support
- Touch capture support

View File

@ -39,6 +39,18 @@ properties:
ID in its "clocks" phandle cell. See
include/dt-bindings/clock/nxp,imx95-clock.h
'#address-cells':
const: 1
'#size-cells':
const: 1
patternProperties:
'^formatter@[0-9a-f]+$':
type: object
$ref: /schemas/media/fsl,imx95-csi-formatter.yaml#
unevaluatedProperties: false
required:
- compatible
- reg
@ -46,6 +58,23 @@ required:
- power-domains
- clocks
allOf:
- if:
properties:
compatible:
contains:
const: nxp,imx95-camera-csr
then:
required:
- '#address-cells'
- '#size-cells'
else:
properties:
'#address-cells': false
'#size-cells': false
patternProperties:
'^formatter@[0-9a-f]+$': false
additionalProperties: false
examples:
@ -57,4 +86,46 @@ examples:
clocks = <&scmi_clk 114>;
power-domains = <&scmi_devpd 21>;
};
- |
#include <dt-bindings/clock/nxp,imx95-clock.h>
syscon@4ac10000 {
compatible = "nxp,imx95-camera-csr", "syscon";
reg = <0x4ac10000 0x10000>;
#address-cells = <1>;
#size-cells = <1>;
#clock-cells = <1>;
clocks = <&scmi_clk 62>;
power-domains = <&scmi_devpd 3>;
formatter@20 {
compatible = "fsl,imx95-csi-formatter";
reg = <0x20 0x100>;
clocks = <&cameramix_csr IMX95_CLK_CAMBLK_CSI2_FOR0>;
power-domains = <&scmi_devpd 3>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
endpoint {
remote-endpoint = <&mipi_csi_0_out>;
};
};
port@1 {
reg = <1>;
endpoint {
remote-endpoint = <&isi_in_2>;
};
};
};
};
};
...

View File

@ -24,6 +24,7 @@ properties:
- allwinner,sun50i-a64-video-engine
- allwinner,sun50i-h5-video-engine
- allwinner,sun50i-h6-video-engine
- allwinner,sun50i-h616-video-engine
reg:
maxItems: 1
@ -48,14 +49,21 @@ properties:
allwinner,sram:
$ref: /schemas/types.yaml#/definitions/phandle-array
minItems: 1
items:
- items:
- description: phandle to SRAM
- description: register value for device
description: Phandle to the device SRAM
- items:
- description: phandle to SRAM alias
- description: register value for device
description: Phandle to the device SRAM(s)
iommus:
maxItems: 1
minItems: 1
items:
- description: VE port on IOMMU
- description: VE_R port on IOMMU
memory-region:
maxItems: 1
@ -82,6 +90,39 @@ required:
- resets
- allwinner,sram
allOf:
- if:
properties:
compatible:
contains:
enum:
- allwinner,sun50i-h6-video-engine
- allwinner,sun50i-h616-video-engine
then:
properties:
iommus:
minItems: 2
else:
properties:
iommus:
maxItems: 1
- if:
properties:
compatible:
contains:
enum:
- allwinner,sun50i-h6-video-engine
- allwinner,sun50i-h616-video-engine
then:
properties:
allwinner,sram:
minItems: 2
else:
properties:
allwinner,sram:
maxItems: 1
additionalProperties: false
examples:

View File

@ -0,0 +1,88 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/fsl,imx95-csi-formatter.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: i.MX95 CSI Pixel Formatter
maintainers:
- Guoniu Zhou <guoniu.zhou@nxp.com>
description:
The CSI pixel formatting module found on i.MX95 uses packet info, pixel
and non-pixel data from the CSI-2 host controller and reformat them to
match Pixel Link(PL) definition.
properties:
compatible:
const: fsl,imx95-csi-formatter
reg:
maxItems: 1
description: Register offset and size within the parent syscon
clocks:
maxItems: 1
power-domains:
maxItems: 1
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/properties/port
description:
Input port, connects to MIPI CSI-2 receiver output (IDI interface)
port@1:
$ref: /schemas/graph.yaml#/properties/port
description:
Output port, connects to ISI input via Pixel Link (PL)
required:
- port@0
- port@1
required:
- compatible
- reg
- clocks
- power-domains
- ports
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/nxp,imx95-clock.h>
formatter@20 {
compatible = "fsl,imx95-csi-formatter";
reg = <0x20 0x100>;
clocks = <&cameramix_csr IMX95_CLK_CAMBLK_CSI2_FOR0>;
power-domains = <&scmi_devpd 3>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
endpoint {
remote-endpoint = <&mipi_csi_0_out>;
};
};
port@1 {
reg = <1>;
endpoint {
remote-endpoint = <&isi_in_2>;
};
};
};
};

View File

@ -0,0 +1,121 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright 2025 Matthias Fend <matthias.fend@emfend.at>
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/himax,hm1246.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Himax HM1246-AWD 1/3.7-Inch megapixel SoC image sensor
maintainers:
- Matthias Fend <matthias.fend@emfend.at>
description:
The Himax HM1246-AWD is a 1/3.7-Inch CMOS image sensor SoC with an active
array size of 1296 x 976. It is programmable through an I2C interface and
connected via parallel bus.
allOf:
- $ref: /schemas/media/video-interface-devices.yaml#
properties:
compatible:
const: himax,hm1246
reg:
maxItems: 1
clocks:
description: Input reference clock (6 - 27 MHz)
maxItems: 1
reset-gpios:
description: Active low XSHUTDOWN pin
maxItems: 1
avdd-supply:
description: Power for analog circuit (3.0 - 3.6 V)
iovdd-supply:
description: Power for I/O circuit (1.7 - 3.6 V)
dvdd-supply:
description: Power for digital circuit (1.5 / 1.8 V)
port:
$ref: /schemas/graph.yaml#/$defs/port-base
additionalProperties: false
description: Parallel video output port
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
bus-width:
default: 10
hsync-active:
default: 1
vsync-active:
default: 1
pclk-sample:
default: 0
required:
- link-frequencies
required:
- endpoint
required:
- compatible
- reg
- clocks
- avdd-supply
- iovdd-supply
- dvdd-supply
- port
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
sensor@24 {
compatible = "himax,hm1246";
reg = <0x24>;
clocks = <&hm1246_clk>;
reset-gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
avdd-supply = <&hm1246_avdd>;
iovdd-supply = <&hm1246_iovdd>;
dvdd-supply = <&hm1246_dvdd>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
port {
endpoint {
remote-endpoint = <&isp_par_in>;
bus-width = <10>;
hsync-active = <1>; /* active high */
vsync-active = <1>; /* active high */
pclk-sample = <1>; /* sample on rising edge */
link-frequencies = /bits/ 64 <42200000>;
};
};
};
};

View File

@ -86,6 +86,7 @@ unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -102,7 +103,7 @@ examples:
vddio-supply = <&reg_camera_vddio>;
reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
shutdown-gpios = <&gpio5 4 GPIO_ACTIVE_LOW>;
orientation = <0>;
orientation = <MEDIA_ORIENTATION_FRONT>;
rotation = <0>;
port {

View File

@ -0,0 +1,177 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/ite,it6625.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ITE IT6625/IT6626 HDMI to dual MIPI CSI-2 bridge
maintainers:
- Hermes Wu <Hermes.wu@ite.com.tw>
description:
The ITE IT6625 and IT6626 are HDMI to MIPI CSI-2 bridge devices.
IT6625 supports an HDMI 2.0 input and converts it to one or two D-PHY CSI
outputs, while IT6626 supports an HDMI 2.1 input and converts it to one or
two C/D-PHY CSI outputs. The bridges are programmable through I2C and
expose two selectable CSI-2 output ports and an HDMI input port. The
bridge can operate in split mode or clone mode.
properties:
compatible:
enum:
- ite,it6625
- ite,it6626
reg:
maxItems: 1
interrupts:
maxItems: 1
reset-gpios:
description:
GPIO connected to the active-low reset line.
maxItems: 1
vcc10-supply:
description: 1.0V core supply
vdd33-supply:
description: 3.3V supply
ovdd-supply:
description: I/O supply voltage
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: CSI-2 output port MIPI0
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
data-lanes:
minItems: 1
maxItems: 4
bus-type:
enum:
- 1 # MEDIA_BUS_TYPE_CSI2_CPHY
- 4 # MEDIA_BUS_TYPE_CSI2_DPHY
default: 4 # MEDIA_BUS_TYPE_CSI2_DPHY
required:
- data-lanes
port@1:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: CSI-2 output port MIPI1
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
data-lanes:
minItems: 1
maxItems: 4
bus-type:
enum:
- 1 # MEDIA_BUS_TYPE_CSI2_CPHY
- 4 # MEDIA_BUS_TYPE_CSI2_DPHY
default: 4 # MEDIA_BUS_TYPE_CSI2_DPHY
required:
- data-lanes
port@2:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: HDMI input port
required:
- port@0
required:
- compatible
- reg
- ports
- vcc10-supply
- vdd33-supply
- ovdd-supply
allOf:
- if:
properties:
compatible:
contains:
const: ite,it6626
then:
properties:
ports:
properties:
port@0:
properties:
endpoint:
required:
- bus-type
port@1:
properties:
endpoint:
required:
- bus-type
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
hdmi-bridge@4c {
compatible = "ite,it6625";
reg = <0x4c>;
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
reset-gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
vcc10-supply = <&vcc10_reg>;
vdd33-supply = <&vdd33_reg>;
ovdd-supply = <&ovdd_reg>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
csi_out0: endpoint {
remote-endpoint = <&csi2_rx0>;
bus-type = <4>; /* MEDIA_BUS_TYPE_CSI2_DPHY */
data-lanes = <1 2 3 4>;
};
};
port@2 {
reg = <2>;
endpoint {
remote-endpoint = <&hdmi_con>;
};
};
};
};
};

View File

@ -0,0 +1,242 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2024 Collabora Ltd.
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/maxim,max9296a.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Maxim MAX9296A GMSL2 to CSI-2 Deserializer
maintainers:
- Cosmin Tanislav <cosmin.tanislav@analog.com>
description: >
The MAX9296A deserializer converts single or dual serial inputs to
MIPI CSI-2 outputs. The GMSL2 links operate at a fixed rate of 3Gbps
or 6Gbps in the forward direction and 187.5Mbps in the reverse
direction. In GMSL1 mode, each serial link can be paired with 3.12Gbps
or 1.5Gbps GMSL1 serializers or operate up to 4.5Gbps with GMSL2
serializers with GMSL1 backward compatibility. The MAX9296A supports
mixed GMSL2 and GMSL1 links. The serial inputs operate independently,
allowing videos with different timings and resolutions to be received
on each input.
MAX96716A supports both tunnel and pixel mode.
MAX96792A supports both tunnel and pixel mode, and has two GMSL3 links.
properties:
compatible:
enum:
- maxim,max9296a
- maxim,max96716a
- maxim,max96792a
reg:
maxItems: 1
powerdown-gpios:
maxItems: 1
description: Specifier for the GPIO connected to the PWDNB pin.
port0-poc-supply:
description: Regulator providing Power over Coax for GMSL port 0
port1-poc-supply:
description: Regulator providing Power over Coax for GMSL port 1
i2c-alias-pool:
maxItems: 2
i2c-atr:
type: object
additionalProperties: false
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
'^i2c@[0-1]$':
$ref: /schemas/i2c/i2c-controller.yaml#
unevaluatedProperties: false
properties:
reg:
items:
minimum: 0
maximum: 1
ports:
$ref: /schemas/graph.yaml#/properties/ports
patternProperties:
'^port@[0-1]$':
$ref: /schemas/graph.yaml#/properties/port
description: GMSL Input ports 0-1
'^port@[2-3]$':
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: CSI-2 Output ports 0-1
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
data-lanes:
minItems: 1
maxItems: 4
lane-polarities:
minItems: 2
maxItems: 5
link-frequencies:
maxItems: 1
required:
- data-lanes
anyOf:
- required:
- port@2
- required:
- port@3
required:
- compatible
- reg
- ports
additionalProperties: false
allOf:
- $ref: /schemas/i2c/i2c-atr.yaml#
dependentRequired:
i2c-atr: [i2c-alias-pool]
i2c-alias-pool: [i2c-atr]
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
deserializer@28 {
compatible = "maxim,max9296a";
reg = <0x28>;
powerdown-gpios = <&main_gpio0 37 GPIO_ACTIVE_LOW>;
i2c-alias-pool = <0x40 0x41>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
des_gmsl_in_0: endpoint {
remote-endpoint = <&ser_0_gmsl_out>;
};
};
port@1 {
reg = <1>;
des_gmsl_in_1: endpoint {
remote-endpoint = <&ser_1_gmsl_out>;
};
};
port@2 {
reg = <2>;
des_csi_out: endpoint {
data-lanes = <1 2 3 4>;
link-frequencies = /bits/ 64 <400000000>;
remote-endpoint = <&csi_in>;
};
};
};
i2c-atr {
#address-cells = <1>;
#size-cells = <0>;
i2c@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
serializer@40 {
compatible = "maxim,max96717", "maxim,max96717f";
reg = <0x40>;
gpio-controller;
#gpio-cells = <2>;
#clock-cells = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ser_0_csi_in: endpoint {
data-lanes = <1 2>;
remote-endpoint = <&sensor_0_out>;
};
};
port@1 {
reg = <1>;
ser_0_gmsl_out: endpoint {
remote-endpoint = <&des_gmsl_in_0>;
};
};
};
};
};
i2c@1 {
#address-cells = <1>;
#size-cells = <0>;
reg = <1>;
serializer@40 {
compatible = "maxim,max96717", "maxim,max96717f";
reg = <0x40>;
gpio-controller;
#gpio-cells = <2>;
#clock-cells = <0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
ser_1_csi_in: endpoint {
data-lanes = <1 2>;
remote-endpoint = <&sensor_1_out>;
};
};
port@1 {
reg = <1>;
ser_1_gmsl_out: endpoint {
remote-endpoint = <&des_gmsl_in_1>;
};
};
};
};
};
};
};
};
...

View File

@ -23,12 +23,17 @@ description: |
MAX96712 can be paired with first-generation 3.12Gbps or 1.5Gbps GMSL1
serializers or operate up to 3.12Gbps with GMSL2 serializers in GMSL1 mode.
MAX96724F and MAX96724R only support a fixed rate of 3Gbps in the forward
direction.
properties:
compatible:
items:
- enum:
- maxim,max96712
- maxim,max96724
- maxim,max96724f
- maxim,max96724r
reg:
description: I2C device address
@ -36,30 +41,51 @@ properties:
enable-gpios: true
maxim,control-channel-port:
description:
Selects which deserializer control-channel port is connected to the
upstream I2C segment when the device resets. 0 selects port 0, 1 selects
port 1. Defaults to 0 when omitted.
$ref: /schemas/types.yaml#/definitions/uint32
enum: [0, 1]
default: 0
i2c-alias-pool:
maxItems: 4
i2c-atr:
type: object
additionalProperties: false
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
'^i2c@[0-3]$':
$ref: /schemas/i2c/i2c-controller.yaml#
unevaluatedProperties: false
properties:
reg:
items:
minimum: 0
maximum: 3
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
patternProperties:
'^port@[0-3]$':
$ref: /schemas/graph.yaml#/properties/port
description: GMSL Input 0
description: GMSL Input ports 0-3
port@1:
$ref: /schemas/graph.yaml#/properties/port
description: GMSL Input 1
port@2:
$ref: /schemas/graph.yaml#/properties/port
description: GMSL Input 2
port@3:
$ref: /schemas/graph.yaml#/properties/port
description: GMSL Input 3
port@4:
'^port@[4-7]$':
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description: CSI-2 Output
description: CSI-2 Output port 0-3
properties:
endpoint:
@ -77,8 +103,15 @@ properties:
- data-lanes
- bus-type
required:
- port@4
anyOf:
- required: [port@4]
- required: [port@5]
- required: [port@6]
- required: [port@7]
patternProperties:
'^port[0-3]-poc-supply$':
description: Regulator providing Power over Coax for GMSL ports
required:
- compatible
@ -87,6 +120,13 @@ required:
additionalProperties: false
allOf:
- $ref: /schemas/i2c/i2c-atr.yaml#
dependentRequired:
i2c-atr: [i2c-alias-pool]
i2c-alias-pool: [i2c-atr]
examples:
- |
#include <dt-bindings/gpio/gpio.h>

View File

@ -22,7 +22,9 @@ description:
The GMSL2 serial link operates at a fixed rate of 3Gbps or 6Gbps in the
forward direction and 187.5Mbps in the reverse direction.
MAX96714F only supports a fixed rate of 3Gbps in the forward direction.
MAX96714F and MAX96714R only support a fixed rate of 3Gbps in the forward
direction.
properties:
compatible:
@ -31,6 +33,7 @@ properties:
- items:
- enum:
- maxim,max96714
- maxim,max96714r
- const: maxim,max96714f
reg:

View File

@ -24,15 +24,23 @@ description:
The GMSL2 serial link operates at a fixed rate of 3Gbps or 6Gbps in the
forward direction and 187.5Mbps in the reverse direction.
MAX96717F only supports a fixed rate of 3Gbps in the forward direction.
MAX9295A only supports pixel mode.
MAX96793 also supports GMSL3 mode.
properties:
compatible:
oneOf:
- const: maxim,max96717f
- enum:
- maxim,max9295a
- maxim,max96717f
- items:
- enum:
- maxim,max96717
- maxim,max96793
- const: maxim,max96717f
'#gpio-cells':
@ -91,13 +99,166 @@ properties:
incoming GMSL2 link. Therefore, it supports an i2c-gate
subnode to configure a sensor.
i2c-alias-pool:
maxItems: 2
i2c-atr:
type: object
additionalProperties: false
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
'^i2c@[01]$':
$ref: /schemas/i2c/i2c-controller.yaml#
unevaluatedProperties: false
properties:
reg:
items:
minimum: 0
maximum: 1
required:
- compatible
- reg
- ports
patternProperties:
'-pins$':
type: object
additionalProperties: false
properties:
function:
enum: [gpio, rclkout]
pins: true
drive-open-drain: true
drive-push-pull: true
bias-disable: true
output-disable: true
output-enable: true
output-low: true
output-high: true
input-enable: true
slew-rate:
description: |
Slew rate.
Rise and fall times represent the time needed for a GPIO to go
from 20% to 80% of VDDIO.
0 - Fastest
rise: 1.0ns @ 1.8V, 0.6ns @ 3.3V,
fall: 0.8ns @ 1.8V, 0.5ns @ 3.3V
1 - Fast
rise: 2.1ns @ 1.8V, 1.1ns @ 3.3V,
fall: 2.0ns @ 1.8V, 1.1ns @ 3.3V
2 - Slow
rise: 4.0ns @ 1.8V, 2.3ns @3.3V,
fall: 10.0ns @ 1.8V, 5.0ns @3.3V
3 - Slowest
rise: 9.0ns @ 1.8V, 5.0ns @3.3V,
fall: 10.0ns @ 1.8V, 5.0ns @3.3V
maximum: 3
bias-pull-up:
oneOf:
- type: boolean
description: Enable regular 40kOhm pull-up
- enum: [ 40000, 1000000 ]
description: Enable either the 40kOhm or the 1MOhm pull-up
bias-pull-down:
oneOf:
- type: boolean
description: Enable regular 40kOhm pull-down
- enum: [ 40000, 1000000 ]
description: Enable either the 40kOhm or the 1MOhm pull-down
maxim,jitter-compensation:
type: boolean
description: |
Enables jitter compensation.
Jitter compensation is used to minimize the jitter of the
signals transmitted from the deserializer to the serializer
by adding a fixed delay to every transition on the serializer
side. This can be used for pulse generation where timing is
critical.
maxim,tx-id:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Enable transmission of the pin state from the serializer to
the deserializer using the specified identifier.
maximum: 31
maxim,rx-id:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Enable transmission of the pin state from the deserializer to
the serializer using the specified identifier.
maximum: 31
required:
- pins
- function
allOf:
- $ref: /schemas/pinctrl/pincfg-node.yaml#
- $ref: /schemas/pinctrl/pinmux-node.yaml#
- if:
properties:
function:
const: gpio
then:
properties:
pins:
items:
enum: [mfp0, mfp1, mfp2, mfp3, mfp4, mfp5, mfp6, mfp7,
mfp8, mfp9, mfp10]
- if:
properties:
function:
const: rclkout
then:
properties:
pins:
items:
enum: [mfp2, mfp4]
- if:
required:
- slew-rate
then:
properties:
pins:
items:
enum: [mfp0, mfp1, mfp2, mfp3, mfp4, mfp7, mfp8]
additionalProperties: false
allOf:
- $ref: /schemas/i2c/i2c-atr.yaml#
- anyOf:
- oneOf:
- required: [i2c-atr]
- required: [i2c-gate]
- not:
required: [i2c-atr, i2c-gate]
dependentRequired:
i2c-atr: [i2c-alias-pool]
i2c-alias-pool: [i2c-atr]
examples:
- |
#include <dt-bindings/gpio/gpio.h>

View File

@ -4,14 +4,13 @@
$id: http://devicetree.org/schemas/media/i2c/ovti,og0ve1b.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: OmniVision OG0VE1B Image Sensor
title: OmniVision OG0VA1B and OG0VE1B Image Sensors
description:
OmniVision OG0VE1B image sensor is a low power consuming monochrome
image sensor. The sensor is controlled over a serial camera control
bus protocol (SCCB), the widest supported image size is 640x480 at
120 frames per second rate, data output format is 8/10-bit RAW
transferred over one-lane MIPI D-PHY at up to 800 Mbps.
OmniVision OG0VA1B and OG0VE1B are low power consuming monochrome image
sensors. The sensors are controlled over a serial camera control bus
protocol (SCCB), the widest supported image size is 640x480, data output
format is 8/10-bit RAW transferred over one-lane MIPI D-PHY.
maintainers:
- Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
@ -21,7 +20,9 @@ allOf:
properties:
compatible:
const: ovti,og0ve1b
enum:
- ovti,og0va1b
- ovti,og0ve1b
reg:
maxItems: 1

View File

@ -0,0 +1,94 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/ovti,os02g10.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: OmniVision OS02G10 Image Sensor
maintainers:
- Tarang Raval <tarang.raval@siliconsignals.io>
description:
The OmniVision OS02G10 is a 2MP (1920x1080) color CMOS image sensor controlled
through an I2C-compatible SCCB bus. It outputs RAW10 format data and supports
a 2-lane MIPI interface.
properties:
compatible:
const: ovti,os02g10
reg:
maxItems: 1
clocks:
items:
- description: XCLK clock
avdd-supply:
description: Analog Domain Power Supply (2.8v)
dovdd-supply:
description: I/O Domain Power Supply (1.8v)
dvdd-supply:
description: Digital core Power Supply (1.5v)
reset-gpios:
maxItems: 1
description: Reset Pin GPIO Control (active low)
port:
description: MIPI CSI-2 transmitter port
$ref: /schemas/graph.yaml#/$defs/port-base
additionalProperties: false
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
required:
- link-frequencies
required:
- endpoint
required:
- compatible
- reg
- clocks
- avdd-supply
- dovdd-supply
- dvdd-supply
- port
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
camera-sensor@3c {
compatible = "ovti,os02g10";
reg = <0x3c>;
clocks = <&os02g10_clk>;
reset-gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
avdd-supply = <&os02g10_avdd_2v8>;
dvdd-supply = <&os02g10_dvdd_1v5>;
dovdd-supply = <&os02g10_dovdd_1v8>;
port {
cam_out: endpoint {
remote-endpoint = <&mipi_in_cam>;
data-lanes = <1 2>;
link-frequencies = /bits/ 64 <720000000>;
};
};
};
};

View File

@ -69,6 +69,7 @@ examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -84,7 +85,7 @@ examples:
avdd-supply = <&ov08d10_vdda_2v8>;
dvdd-supply = <&ov08d10_vddd_1v2>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
reset-gpios = <&gpio 1 GPIO_ACTIVE_LOW>;

View File

@ -96,6 +96,7 @@ unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -114,7 +115,7 @@ examples:
powerdown-gpios = <&pio 107 GPIO_ACTIVE_LOW>;
reset-gpios = <&pio 109 GPIO_ACTIVE_LOW>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
port {

View File

@ -85,6 +85,7 @@ examples:
- |
#include <dt-bindings/clock/px30-cru.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/pinctrl/rockchip.h>
i2c {
@ -108,7 +109,7 @@ examples:
dovdd-supply = <&vcc_2v8>;
rotation = <90>;
orientation = <0>;
orientation = <MEDIA_ORIENTATION_FRONT>;
port {
ucam_out: endpoint {

View File

@ -82,6 +82,8 @@ properties:
unevaluatedProperties: false
properties:
clock-noncontinuous: true
link-frequencies: true
data-lanes:
@ -103,6 +105,7 @@ examples:
- |
#include <dt-bindings/clock/px30-cru.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/pinctrl/rockchip.h>
i2c {
@ -126,7 +129,7 @@ examples:
dovdd-supply = <&vcc_2v8>;
rotation = <90>;
orientation = <0>;
orientation = <MEDIA_ORIENTATION_FRONT>;
port {
ucam_out: endpoint {

View File

@ -72,6 +72,7 @@ unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -87,7 +88,7 @@ examples:
powerdown-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
rotation = <180>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
port {
endpoint {

View File

@ -0,0 +1,117 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/samsung,s5kjn5.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung S5KJN5 Image Sensor
description:
Samsung S5KJN5 is a 50MP 10-bit RAW MIPI CSI-2 image sensor.
The sensor is controlled over I2C. The full resolution pixel array is
8192x6144, data output format is RAW10 transferred over 4-lane MIPI
D-PHY interface.
maintainers:
- Wenmeng Liu <wenmeng.liu@oss.qualcomm.com>
allOf:
- $ref: /schemas/media/video-interface-devices.yaml#
properties:
compatible:
const: samsung,s5kjn5
reg:
maxItems: 1
clocks:
description: MCLK/XVCLK input clock.
maxItems: 1
reset-gpios:
description: Active low GPIO connected to RESET pad of the sensor.
maxItems: 1
vddio-supply:
description:
1.8 volt I/O voltage supply (VDD18). Required for both 1.8 and 1.2 volt
I/O operation.
vddd-supply:
description: Digital core voltage supply, 1.0 volts.
vddm-supply:
description: MIPI voltage supply, 1.0 volts.
vdda-supply:
description: Analogue voltage supply, 2.2 volts.
vddio1p2-supply:
description:
1.2 volt I/O voltage supply (VDDIO12). Required only for 1.2 volt I/O
operation.
afvdd-supply:
description: Autofocus actuator voltage supply, 2.8-3.0 volts.
port:
$ref: /schemas/graph.yaml#/$defs/port-base
additionalProperties: false
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
data-lanes:
items:
- const: 1
- const: 2
- const: 3
- const: 4
required:
- link-frequencies
required:
- compatible
- reg
- clocks
- port
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
camera@10 {
compatible = "samsung,s5kjn5";
reg = <0x10>;
clocks = <&camera_mclk 0>;
assigned-clocks = <&camera_mclk 0>;
assigned-clock-rates = <19200000>;
reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
vddio-supply = <&vreg_1p8>;
vddd-supply = <&vreg_1p0>;
vddm-supply = <&vreg_1p0>;
vdda-supply = <&vreg_2p2>;
vddio1p2-supply = <&vreg_1p2>;
afvdd-supply = <&vreg_2p8>;
port {
endpoint {
link-frequencies = /bits/ 64 <1248000000>;
data-lanes = <1 2 3 4>;
remote-endpoint = <&mipi_csi2_ep>;
};
};
};
};
...

View File

@ -69,6 +69,7 @@ examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -84,7 +85,7 @@ examples:
dvdd-supply = <&camera_vddd_1v2>;
avdd-supply = <&camera_vdda_2v7>;
orientation = <1>;
orientation = <MEDIA_ORIENTATION_BACK>;
rotation = <90>;
nvmem = <&eeprom>;

View File

@ -81,6 +81,7 @@ examples:
- |
#include <dt-bindings/clock/qcom,camcc-sdm845.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -105,7 +106,7 @@ examples:
pinctrl-0 = <&cam_front_default>;
rotation = <270>;
orientation = <0>;
orientation = <MEDIA_ORIENTATION_FRONT>;
port {
cam_front_endpoint: endpoint {

View File

@ -86,6 +86,7 @@ unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -98,7 +99,7 @@ examples:
clocks = <&clock_cam>;
dvdd-supply = <&vcc1v1_cam>;
lens-focus = <&vcm>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
ovdd-supply = <&vcc1v8_cam>;
reset-gpios = <&gpio_expander 14 GPIO_ACTIVE_LOW>;
rotation = <180>;

View File

@ -0,0 +1,114 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/sony,imx576.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Sony IMX576 Image Sensor
maintainers:
- Hardevsinh Palaniya <hardevsinh.palaniya@siliconsignals.io>
description:
IMX576 sensor is a Sony CMOS active pixel digital image sensor with an active
array size of 5760(H) × 4312(V). It is programmable through an I2C interface.
Image data is transmitted through MIPI CSI-2. It supports RAW10/RAW8, COMP8
output formats.
allOf:
- $ref: /schemas/media/video-interface-devices.yaml#
properties:
compatible:
const: sony,imx576
reg:
maxItems: 1
clocks:
items:
- description: INCLK clock
vana-supply:
description: Analog Supply Voltage (2.8v)
vdig-supply:
description: Digital Supply Voltage (1.05v)
vif-supply:
description: Interface Supply Voltage (1.8v)
reset-gpios:
maxItems: 1
description: Reset Pin GPIO Control (active low)
port:
description: MIPI CSI-2 transmitter port
$ref: /schemas/graph.yaml#/$defs/port-base
additionalProperties: false
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
data-lanes:
oneOf:
- items:
- const: 1
- const: 2
- const: 3
- const: 4
- items:
- const: 1
- const: 2
required:
- data-lanes
- link-frequencies
required:
- endpoint
required:
- compatible
- reg
- clocks
- vana-supply
- vif-supply
- vdig-supply
- port
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
camera-sensor@10 {
compatible = "sony,imx576";
reg = <0x10>;
clocks = <&imx576_clk>;
reset-gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
vana-supply = <&vreg_l3p>;
vif-supply = <&vreg_l6p>;
vdig-supply = <&vreg_32m_cam_dvdd_1p05>;
orientation = <0>;
rotation = <90>;
port {
cam_out: endpoint {
remote-endpoint = <&csiphy3_ep>;
data-lanes = <1 2 3 4>;
link-frequencies = /bits/ 64 <1017000000>;
};
};
};
};

View File

@ -106,6 +106,7 @@ unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -124,7 +125,7 @@ examples:
reset-gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
st,leds = <2>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
port {

View File

@ -107,6 +107,7 @@ unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -125,7 +126,7 @@ examples:
reset-gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
st,leds = <6>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
port {

View File

@ -173,6 +173,7 @@ examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
i2c {
#address-cells = <1>;
@ -196,7 +197,7 @@ examples:
vddgpio-0-supply = <&vsys_v4p2>;
vddgpio-1-supply = <&vsys_v4p2>;
orientation = <0>;
orientation = <MEDIA_ORIENTATION_FRONT>;
rotation = <0>;
sensors {

View File

@ -1,48 +0,0 @@
* Toshiba TC358743 HDMI-RX to MIPI CSI2-TX Bridge
The Toshiba TC358743 HDMI-RX to MIPI CSI2-TX (H2C) is a bridge that converts
a HDMI stream to MIPI CSI-2 TX. It is programmable through I2C.
Required Properties:
- compatible: value should be "toshiba,tc358743"
- clocks, clock-names: should contain a phandle link to the reference clock
source, the clock input is named "refclk".
Optional Properties:
- reset-gpios: gpio phandle GPIO connected to the reset pin
- interrupts: GPIO connected to the interrupt pin
- data-lanes: should be <1 2 3 4> for four-lane operation,
or <1 2> for two-lane operation
- clock-lanes: should be <0>
- clock-noncontinuous: Presence of this boolean property decides whether the
MIPI CSI-2 clock is continuous or non-continuous.
- link-frequencies: List of allowed link frequencies in Hz. Each frequency is
expressed as a 64-bit big-endian integer. The frequency
is half of the bps per lane due to DDR transmission.
For further information on the MIPI CSI-2 endpoint node properties, see
Documentation/devicetree/bindings/media/video-interfaces.txt.
Example:
tc358743@f {
compatible = "toshiba,tc358743";
reg = <0x0f>;
clocks = <&hdmi_osc>;
clock-names = "refclk";
reset-gpios = <&gpio6 9 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio2>;
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
port {
tc358743_out: endpoint {
remote-endpoint = <&mipi_csi2_in>;
data-lanes = <1 2 3 4>;
clock-lanes = <0>;
clock-noncontinuous;
link-frequencies = /bits/ 64 <297000000>;
};
};
};

View File

@ -0,0 +1,93 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/toshiba,tc358743.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Toshiba TC358743 HDMI-RX to MIPI CSI2-TX Bridge
maintainers:
- Hans Verkuil <hverkuil@kernel.org>
description:
The Toshiba TC358743 HDMI-RX to MIPI CSI2-TX (H2C) is a bridge that converts
a HDMI stream to MIPI CSI-2 TX. It is programmable through I2C.
properties:
compatible:
const: toshiba,tc358743
reg:
maxItems: 1
clocks:
maxItems: 1
clock-names:
const: refclk
reset-gpios:
maxItems: 1
interrupts:
maxItems: 1
port:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
properties:
endpoint:
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
data-lanes:
oneOf:
- items:
- const: 1
- const: 2
- items:
- const: 1
- const: 2
- const: 3
- const: 4
required:
- compatible
- reg
- clocks
- clock-names
- port
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
bridge@f {
compatible = "toshiba,tc358743";
reg = <0x0f>;
clocks = <&hdmi_osc>;
clock-names = "refclk";
reset-gpios = <&gpio6 9 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio2>;
interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
port {
endpoint {
remote-endpoint = <&mipi_csi2_in>;
data-lanes = <1 2 3 4>;
clock-lanes = <0>;
clock-noncontinuous;
link-frequencies = /bits/ 64 <297000000>;
};
};
};
};

View File

@ -15,10 +15,10 @@ description: |-
properties:
compatible:
oneOf:
- items:
- enum:
- mediatek,mt8173-jpgdec
- mediatek,mt2701-jpgdec
- enum:
- mediatek,mt2701-jpgdec
- mediatek,mt8173-jpgdec
- mediatek,mt8189-jpgdec
- items:
- enum:
- mediatek,mt7623-jpgdec
@ -32,13 +32,16 @@ properties:
maxItems: 1
clocks:
minItems: 1
maxItems: 2
minItems: 2
clock-names:
items:
- const: jpgdec-smi
- const: jpgdec
oneOf:
- items:
- const: jpgdec
- items:
- const: jpgdec-smi
- const: jpgdec
power-domains:
maxItems: 1
@ -51,6 +54,15 @@ properties:
Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details.
Ports are according to the HW.
mediatek,larb:
$ref: /schemas/types.yaml#/definitions/phandle
description: |
A phandle to the local arbiter (SMI LARB) node. This explicitly
describes the hardware topology where the JPEG block is connected
to a dedicated SMI LARB for memory bandwidth arbitration. It is
required to accurately represent the hardware connection independently
of the IOMMU.
required:
- compatible
- reg
@ -60,6 +72,28 @@ required:
- power-domains
- iommus
allOf:
- if:
properties:
compatible:
contains:
const: mediatek,mt8189-jpgdec
then:
properties:
clocks:
maxItems: 1
clock-names:
maxItems: 1
required:
- mediatek,larb
else:
properties:
clocks:
minItems: 2
clock-names:
minItems: 2
mediatek,larb: false
additionalProperties: false
examples:

View File

@ -14,13 +14,17 @@ description: |-
properties:
compatible:
items:
oneOf:
- enum:
- mediatek,mt2701-jpgenc
- mediatek,mt8183-jpgenc
- mediatek,mt8186-jpgenc
- mediatek,mt8188-jpgenc
- const: mediatek,mtk-jpgenc
- mediatek,mt8189-jpgenc
- items:
- enum:
- mediatek,mt2701-jpgenc
- mediatek,mt8183-jpgenc
- mediatek,mt8186-jpgenc
- mediatek,mt8188-jpgenc
- const: mediatek,mtk-jpgenc
reg:
maxItems: 1
@ -45,6 +49,15 @@ properties:
Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details.
Ports are according to the HW.
mediatek,larb:
$ref: /schemas/types.yaml#/definitions/phandle
description: |
A phandle to the local arbiter (SMI LARB) node. This explicitly
describes the hardware topology where the JPEG block is connected
to a dedicated SMI LARB for memory bandwidth arbitration. It is
required to accurately represent the hardware connection independently
of the IOMMU.
required:
- compatible
- reg
@ -54,6 +67,19 @@ required:
- power-domains
- iommus
allOf:
- if:
properties:
compatible:
contains:
const: mediatek,mt8189-jpgenc
then:
required:
- mediatek,larb
else:
properties:
mediatek,larb: false
additionalProperties: false
examples:

View File

@ -220,7 +220,7 @@ examples:
port@0 {
reg = <0>;
imx8mm_mipi_csi_in: endpoint {
mipi_csi_in: endpoint {
remote-endpoint = <&imx477_out>;
data-lanes = <1 2 3 4>;
};
@ -229,7 +229,7 @@ examples:
port@1 {
reg = <1>;
imx8mm_mipi_csi_out: endpoint {
mipi_csi_out: endpoint {
remote-endpoint = <&csi_in>;
};
};

View File

@ -0,0 +1,300 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/qcom,glymur-camss.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm Glymur Camera Subsystem (CAMSS)
maintainers:
- Nihal Kumar Gupta <nihal.gupta@oss.qualcomm.com>
description:
The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms.
properties:
compatible:
const: qcom,glymur-camss
reg:
maxItems: 13
reg-names:
items:
- const: csid_wrapper
- const: csid0
- const: csid1
- const: csid2
- const: csid_lite0
- const: csid_lite1
- const: csitpg0
- const: csitpg1
- const: csitpg2
- const: vfe0
- const: vfe1
- const: vfe_lite0
- const: vfe_lite1
clocks:
maxItems: 20
clock-names:
items:
- const: camnoc_nrt_axi
- const: camnoc_rt_axi
- const: core_ahb
- const: cpas_ahb
- const: cpas_fast_ahb
- const: cpas_vfe0
- const: cpas_vfe1
- const: cpas_vfe_lite
- const: csid
- const: csid_csiphy_rx
- const: gcc_axi_hf
- const: gcc_axi_sf
- const: vfe0
- const: vfe0_fast_ahb
- const: vfe1
- const: vfe1_fast_ahb
- const: vfe_lite
- const: vfe_lite_ahb
- const: vfe_lite_cphy_rx
- const: vfe_lite_csid
interrupts:
maxItems: 9
interrupt-names:
items:
- const: csid0
- const: csid1
- const: csid2
- const: csid_lite0
- const: csid_lite1
- const: vfe0
- const: vfe1
- const: vfe_lite0
- const: vfe_lite1
interconnects:
maxItems: 4
interconnect-names:
items:
- const: ahb
- const: hf_mnoc
- const: sf_mnoc
- const: sf_icp_mnoc
iommus:
items:
- description: S1 HLOS IFE and IFE_LITE non-protected
power-domains:
items:
- description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
- description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
- description: Titan Top GDSC - Titan ISP Block, Global Distributed Switch Controller.
power-domain-names:
items:
- const: ife0
- const: ife1
- const: top
ports:
$ref: /schemas/graph.yaml#/properties/ports
description:
CSI input ports.
patternProperties:
"^port@[0-3]$":
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
description:
Input port for receiving CSI data.
properties:
endpoint:
$ref: video-interfaces.yaml#
unevaluatedProperties: false
properties:
data-lanes:
minItems: 1
maxItems: 4
required:
- compatible
- reg
- reg-names
- clocks
- clock-names
- interrupts
- interrupt-names
- interconnects
- interconnect-names
- iommus
- power-domains
- power-domain-names
- ports
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,glymur-gcc.h>
#include <dt-bindings/clock/qcom,glymur-camcc.h>
#include <dt-bindings/interconnect/qcom,glymur-rpmh.h>
#include <dt-bindings/interconnect/qcom,icc.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/qcom-rpmpd.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
camss: isp@acb6000 {
compatible = "qcom,glymur-camss";
reg = <0x0 0x0acb6000 0x0 0x1000>,
<0x0 0x0acb7000 0x0 0x2000>,
<0x0 0x0acb9000 0x0 0x2000>,
<0x0 0x0acbb000 0x0 0x2000>,
<0x0 0x0acc6000 0x0 0x1000>,
<0x0 0x0acca000 0x0 0x1000>,
<0x0 0x0acf6000 0x0 0x1000>,
<0x0 0x0acf7000 0x0 0x1000>,
<0x0 0x0acf8000 0x0 0x1000>,
<0x0 0x0ac62000 0x0 0xf000>,
<0x0 0x0ac71000 0x0 0xf000>,
<0x0 0x0acc7000 0x0 0x2000>,
<0x0 0x0accb000 0x0 0x2000>;
reg-names = "csid_wrapper",
"csid0",
"csid1",
"csid2",
"csid_lite0",
"csid_lite1",
"csitpg0",
"csitpg1",
"csitpg2",
"vfe0",
"vfe1",
"vfe_lite0",
"vfe_lite1";
clocks = <&camcc CAM_CC_CAMNOC_AXI_NRT_CLK>,
<&camcc CAM_CC_CAMNOC_AXI_RT_CLK>,
<&camcc CAM_CC_CORE_AHB_CLK>,
<&camcc CAM_CC_CPAS_AHB_CLK>,
<&camcc CAM_CC_CPAS_FAST_AHB_CLK>,
<&camcc CAM_CC_CPAS_IFE_0_CLK>,
<&camcc CAM_CC_CPAS_IFE_1_CLK>,
<&camcc CAM_CC_CPAS_IFE_LITE_CLK>,
<&camcc CAM_CC_CSID_CLK>,
<&camcc CAM_CC_CSID_CSIPHY_RX_CLK>,
<&gcc GCC_CAMERA_HF_AXI_CLK>,
<&gcc GCC_CAMERA_SF_AXI_CLK>,
<&camcc CAM_CC_IFE_0_CLK>,
<&camcc CAM_CC_IFE_0_FAST_AHB_CLK>,
<&camcc CAM_CC_IFE_1_CLK>,
<&camcc CAM_CC_IFE_1_FAST_AHB_CLK>,
<&camcc CAM_CC_IFE_LITE_CLK>,
<&camcc CAM_CC_IFE_LITE_AHB_CLK>,
<&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>,
<&camcc CAM_CC_IFE_LITE_CSID_CLK>;
clock-names = "camnoc_nrt_axi",
"camnoc_rt_axi",
"core_ahb",
"cpas_ahb",
"cpas_fast_ahb",
"cpas_vfe0",
"cpas_vfe1",
"cpas_vfe_lite",
"csid",
"csid_csiphy_rx",
"gcc_axi_hf",
"gcc_axi_sf",
"vfe0",
"vfe0_fast_ahb",
"vfe1",
"vfe1_fast_ahb",
"vfe_lite",
"vfe_lite_ahb",
"vfe_lite_cphy_rx",
"vfe_lite_csid";
interrupts = <GIC_SPI 601 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 603 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 431 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 457 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 436 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 270 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 271 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 458 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 860 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "csid0",
"csid1",
"csid2",
"csid_lite0",
"csid_lite1",
"vfe0",
"vfe1",
"vfe_lite0",
"vfe_lite1";
interconnects = <&hsc_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
&config_noc SLAVE_CAMERA_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
<&mmss_noc MASTER_CAMNOC_HF QCOM_ICC_TAG_ALWAYS
&mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
<&mmss_noc MASTER_CAMNOC_SF QCOM_ICC_TAG_ALWAYS
&mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
<&mmss_noc MASTER_CAMNOC_ICP QCOM_ICC_TAG_ALWAYS
&mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
interconnect-names = "ahb",
"hf_mnoc",
"sf_mnoc",
"sf_icp_mnoc";
iommus = <&apps_smmu 0x800 0x20>;
power-domains = <&camcc CAM_CC_IFE_0_GDSC>,
<&camcc CAM_CC_IFE_1_GDSC>,
<&camcc CAM_CC_TITAN_TOP_GDSC>;
power-domain-names = "ife0",
"ife1",
"top";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
camss_csiphy0_ep: endpoint {
data-lanes = <1 2 3 4>;
remote-endpoint = <&csiphy0_out>;
};
};
port@1 {
reg = <1>;
camss_csiphy1_ep: endpoint {
data-lanes = <1 2 3 4>;
remote-endpoint = <&csiphy1_out>;
};
};
port@3 {
reg = <3>;
camss_csiphy4_ep: endpoint {
data-lanes = <1 2 3 4>;
remote-endpoint = <&csiphy4_out>;
};
};
};
};
};

View File

@ -13,14 +13,13 @@ description:
The Venus AR50_LITE IP is a video encode and decode accelerator present
on Qualcomm platforms.
allOf:
- $ref: qcom,venus-common.yaml#
properties:
compatible:
oneOf:
- items:
- const: qcom,sm6115-venus
- enum:
- qcom,shikra-venus
- qcom,sm6115-venus
- const: qcom,qcm2290-venus
- const: qcom,qcm2290-venus
@ -45,9 +44,6 @@ properties:
- const: vcodec0_core
- const: vcodec0_bus
iommus:
maxItems: 2
interconnects:
maxItems: 2
@ -65,6 +61,22 @@ required:
- power-domain-names
- iommus
allOf:
- $ref: qcom,venus-common.yaml#
- if:
properties:
compatible:
contains:
const: qcom,shikra-venus
then:
properties:
iommus:
maxItems: 1
else:
properties:
iommus:
maxItems: 2
unevaluatedProperties: false
examples:

View File

@ -37,7 +37,10 @@ properties:
maxItems: 20
memory-region:
maxItems: 1
minItems: 1
items:
- description: Firmware-loaded codec carveout
- description: IOMMU IOVA reservation region
power-domains:
minItems: 1

View File

@ -104,7 +104,22 @@ properties:
- const: sf_icp_mnoc
iommus:
maxItems: 8
oneOf:
- items:
- description: S1 HLOS IFE and IFE_LITE non-protected read
- description: S1 HLOS IFE and IFE_LITE non-protected write
- description: S1 HLOS SFE non-protected read
- description: S1 HLOS SFE non-protected write
- description: S1 HLOS CDM IFE non-protected
- description: Legacy slot 0 - do not use
- description: Legacy slot 1 - do not use
- description: Legacy slot 2 - do not use
- items:
- description: S1 HLOS IFE and IFE_LITE non-protected read
- description: S1 HLOS IFE and IFE_LITE non-protected write
- description: S1 HLOS SFE non-protected read
- description: S1 HLOS SFE non-protected write
- description: S1 HLOS CDM IFE non-protected
power-domains:
items:
@ -171,8 +186,6 @@ required:
- iommus
- power-domains
- power-domain-names
- vdd-csiphy-0p8-supply
- vdd-csiphy-1p2-supply
- ports
additionalProperties: false
@ -332,13 +345,10 @@ examples:
"sf_icp_mnoc";
iommus = <&apps_smmu 0x800 0x60>,
<&apps_smmu 0x820 0x60>,
<&apps_smmu 0x840 0x60>,
<&apps_smmu 0x860 0x60>,
<&apps_smmu 0x1800 0x60>,
<&apps_smmu 0x1860 0x60>,
<&apps_smmu 0x18e0 0x00>,
<&apps_smmu 0x1980 0x20>,
<&apps_smmu 0x1900 0x00>,
<&apps_smmu 0x19a0 0x20>;
<&apps_smmu 0x18a0 0x0>;
power-domains = <&camcc CAM_CC_IFE_0_GDSC>,
<&camcc CAM_CC_IFE_1_GDSC>,

View File

@ -23,6 +23,7 @@ properties:
- rockchip,rk3568-mipi-csi2
- items:
- enum:
- rockchip,rk3576-mipi-csi2
- rockchip,rk3588-mipi-csi2
- const: rockchip,rk3568-mipi-csi2

View File

@ -15,6 +15,10 @@ description:
the data from camera sensors, video decoders, or other companion ICs and
transfers it into system main memory by AXI bus.
The Rockchip RK3576 Video Capture (VICAP) is similar to its RK3568
counterpart, but features five MIPI CSI-2 ports and an additional
connection to the image signal processor (ISP) block.
The Rockchip RK3588 Video Capture (VICAP) is similar to its RK3568
counterpart, but features six MIPI CSI-2 ports and additional connections
to the image signal processor (ISP) blocks.
@ -23,6 +27,7 @@ properties:
compatible:
enum:
- rockchip,rk3568-vicap
- rockchip,rk3576-vicap
- rockchip,rk3588-vicap
reg:
@ -33,7 +38,7 @@ properties:
clocks:
minItems: 4
maxItems: 5
maxItems: 8
clock-names:
items:
@ -42,6 +47,9 @@ properties:
- const: dclk
- const: iclk
- const: iclk1
- const: iclk2
- const: iclk3
- const: iclk4
minItems: 4
iommus:
@ -221,6 +229,40 @@ allOf:
port@11: false
- if:
properties:
compatible:
contains:
const: rockchip,rk3576-vicap
then:
properties:
clocks:
minItems: 8
clock-names:
minItems: 8
resets:
minItems: 8
maxItems: 8
reset-names:
items:
- const: arst
- const: hrst
- const: drst
- const: irst0
- const: irst1
- const: irst2
- const: irst3
- const: irst4
ports:
properties:
port@6: false
port@11: false
- if:
properties:
compatible:
@ -230,9 +272,11 @@ allOf:
properties:
clocks:
minItems: 5
maxItems: 5
clock-names:
minItems: 5
maxItems: 5
resets:
minItems: 9

View File

@ -78,6 +78,13 @@ properties:
The phandle of the syscon node for the Video Output GRF register
to enable EDID transfer through SDAIN and SCLIN.
"#sound-dai-cells":
const: 1
description:
The HDMI RX controller has two digital audio interfaces, one for
I2S and one for S/PDIF. The DAI cell selects the interface, 0 for
I2S and 1 for S/PDIF.
required:
- compatible
- reg
@ -90,7 +97,10 @@ required:
- pinctrl-0
- hpd-gpios
additionalProperties: false
allOf:
- $ref: /schemas/sound/dai-common.yaml#
unevaluatedProperties: false
examples:
- |
@ -129,4 +139,5 @@ examples:
pinctrl-0 = <&hdmim1_rx_cec &hdmim1_rx_hpdin &hdmim1_rx_scl &hdmim1_rx_sda &hdmirx_5v_detection>;
pinctrl-names = "default";
hpd-gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
#sound-dai-cells = <1>;
};

View File

@ -392,17 +392,22 @@ properties:
The orientation of a device (typically an image sensor or a flash LED)
describing its mounting position relative to the usage orientation of the
system where the device is installed on.
See include/dt-bindings/media/video-interface-devices.h.
$ref: /schemas/types.yaml#/definitions/uint32
enum:
# Front. The device is mounted on the front facing side of the system. For
# mobile devices such as smartphones, tablets and laptops the front side
# is the user facing side.
# MEDIA_ORIENTATION_FRONT
# The device is mounted on the front facing side of the system. For
# mobile devices such as smartphones, tablets and laptops the front
# side is the user facing side.
- 0
# Back. The device is mounted on the back side of the system, which is
# MEDIA_ORIENTATION_BACK
# The device is mounted on the back side of the system, which is
# defined as the opposite side of the front facing one.
- 1
# External. The device is not attached directly to the system but is
# attached in a way that allows it to move freely.
# MEDIA_ORIENTATION_EXTERNAL
# The device is not attached directly to the system but is attached in
# a way that allows it to move freely.
- 2
additionalProperties: true

View File

@ -0,0 +1,213 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/qcom,x1e80100-csi2-phy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm X1E80100 SoC CSI2 PHY
maintainers:
- Bryan O'Donoghue <bod@kernel.org>
description:
Qualcomm MIPI CSI2 C-PHY/D-PHY combination PHY. Connects MIPI CSI2 sensors
to Qualcomm's Camera CSI Decoder. The PHY supports both C-PHY and D-PHY
modes.
properties:
compatible:
oneOf:
- const: qcom,x1e80100-csi2-phy
- items:
- const: qcom,glymur-csi2-phy
- const: qcom,x1e80100-csi2-phy
reg:
maxItems: 1
clocks:
maxItems: 3
clock-names:
items:
- const: core
- const: timer
- const: ahb
interrupts:
maxItems: 1
operating-points-v2: true
opp-table:
type: object
power-domains:
items:
- description: Titan Top GDSC - Titan ISP Block, Global Distributed Switch Controller.
- description: MMCX voltage rail
- description: MXC or MXA voltage rail
power-domain-names:
items:
- const: top
- const: mmcx
- const: mx
vdda-0p9-supply:
description: Phandle to a 0.9V regulator supply to a PHY.
vdda-1p2-supply:
description: Phandle to 1.2V regulator supply to a PHY.
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/$defs/port-base
description:
Sensor input. Always present. A single sensor is described by a
single endpoint with one to four data lanes, numbered 1-4. The
clock lane is position 0.
DPHY split mode, where two independent sensors share the PHY, is
described by two endpoints. endpoint@0 uses data lanes 1 or 1-2,
clock lane position 0; endpoint@1 uses data lane 3, clock lane
position 4.
unevaluatedProperties: false
patternProperties:
"^endpoint(@[01])?$":
$ref: /schemas/media/video-interfaces.yaml#
unevaluatedProperties: false
properties:
bus-type:
enum:
- 1 # MEDIA_BUS_TYPE_CSI2_CPHY
- 4 # MEDIA_BUS_TYPE_CSI2_DPHY
default: 4
data-lanes:
minItems: 1
maxItems: 4
items:
minimum: 1
maximum: 4
description:
Data lane positions following this endpoint's clock
lane. Positions are a per-port logical numbering, not
package pad or ball positions.
required:
- data-lanes
- remote-endpoint
allOf:
- if:
required:
- endpoint@1
then:
properties:
endpoint@0:
properties:
data-lanes:
maxItems: 2
items:
maximum: 2
endpoint@1:
properties:
data-lanes:
items:
- const: 3
required:
- endpoint@0
port@1:
$ref: /schemas/graph.yaml#/properties/port
description: Output to the CAMSS CSID controller.
required:
- port@0
- port@1
required:
- compatible
- reg
- clocks
- clock-names
- interrupts
- operating-points-v2
- power-domains
- power-domain-names
- vdda-0p9-supply
- vdda-1p2-supply
- ports
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,x1e80100-camcc.h>
#include <dt-bindings/clock/qcom,x1e80100-gcc.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/power/qcom,rpmhpd.h>
phy@ace4000 {
compatible = "qcom,x1e80100-csi2-phy";
reg = <0x0ace4000 0x2000>;
clocks = <&camcc CAM_CC_CSIPHY0_CLK>,
<&camcc CAM_CC_CSI0PHYTIMER_CLK>,
<&camcc CAM_CC_CORE_AHB_CLK>;
clock-names = "core",
"timer",
"ahb";
interrupts = <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>;
operating-points-v2 = <&csiphy_opp_table>;
power-domains = <&camcc CAM_CC_TITAN_TOP_GDSC>,
<&rpmhpd RPMHPD_MMCX>,
<&rpmhpd RPMHPD_MX>;
power-domain-names = "top",
"mmcx",
"mx";
vdda-0p9-supply = <&vreg_l2c_0p9>;
vdda-1p2-supply = <&vreg_l1c_1p2>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
csiphy0_in: endpoint {
bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
data-lanes = <1 2 3 4>;
remote-endpoint = <&sensor_out>;
};
};
port@1 {
reg = <1>;
csiphy0_out: endpoint {
remote-endpoint = <&csid_in>;
};
};
};
csiphy_opp_table: opp-table {
compatible = "operating-points-v2";
opp-300000000 {
opp-hz = /bits/ 64 <300000000>;
required-opps = <&rpmhpd_opp_low_svs_d1>,
<&rpmhpd_opp_low_svs_d1>;
};
};
};

View File

@ -104,7 +104,11 @@ where
* - k
- 16 for D-PHY and 7 for C-PHY.
Information on whether D-PHY or C-PHY is used, and the value of ``nr_of_lanes``, can be obtained from the OF endpoint configuration.
Information on whether D-PHY or C-PHY is used as well as the value of
``nr_of_lanes`` can be obtained from the V4L2 endpoint configuration; see
:c:func:`v4l2_fwnode_endpoint_alloc_parse()`,
:c:func:`v4l2_fwnode_endpoint_parse()` and
:c:func:`v4l2_get_active_data_lanes()`.
.. note::

View File

@ -0,0 +1,14 @@
.. SPDX-License-Identifier: GPL-2.0-only
ST DCMIPP driver
================
The ST DCMIPP driver implements a driver specific control as part of its
pixelproc subdev.
``V4L2_CID_DCMIPP_PIXELPROC_GAMMA_CORRECTION_ENABLE (boolean)``
Enable / disable the gamma correction block.
The DCMIPP PixelProc stage implements a gamma compression on each R, G, B
component, using a static gamma exponent 2.2.
The gamma is implemented as a 7-segment linear curve.

View File

@ -30,6 +30,7 @@ For more details see the file COPYING in the source distribution of Linux.
camera-sensor
ccs
cx2341x-uapi
dcmipp
dw100
imx-uapi
mali-c55

View File

@ -361,6 +361,7 @@ Types and flags used to represent the media graph elements
.. _MEDIA-PAD-FL-SINK:
.. _MEDIA-PAD-FL-SOURCE:
.. _MEDIA-PAD-FL-MUST-CONNECT:
.. _MEDIA-PAD-FL-INTERNAL:
.. flat-table:: Media pad flags
:header-rows: 0
@ -381,6 +382,13 @@ Types and flags used to represent the media graph elements
enabled links even when this flag isn't set; the absence of the flag
doesn't imply there is none.
* - ``MEDIA_PAD_FL_INTERNAL``
- The internal flag indicates an internal pad that has no external
connections. As they are internal to entities, internal pads shall not
be connected with links.
The internal flag may currently be present only in a sink pad where it
indicates that the :term:`Stream` originates from within the entity.
One and only one of ``MEDIA_PAD_FL_SINK`` and ``MEDIA_PAD_FL_SOURCE``
must be set for every pad.

View File

@ -11932,6 +11932,13 @@ W: http://www.highpoint-tech.com
F: Documentation/scsi/hptiop.rst
F: drivers/scsi/hptiop.c
HIMAX HM1246 SENSOR DRIVER
M: Matthias Fend <matthias.fend@emfend.at>
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/i2c/himax,hm1246.yaml
F: drivers/media/i2c/hm1246.c
HIMAX HX83112B TOUCHSCREEN SUPPORT
M: Job Noorman <job@noorman.info>
L: linux-input@vger.kernel.org
@ -13242,6 +13249,8 @@ F: drivers/scsi/isci/
INTEL COMPUTER VISION SENSING (CVS) DRIVER
M: Miguel Vadillo <miguel.vadillo@intel.com>
M: Sakari Ailus <sakari.ailus@linux.intel.com>
R: Antti Laakso <antti.laakso@linux.intel.com>
L: linux-media@vger.kernel.org
S: Maintained
F: drivers/media/i2c/cvs/
@ -13429,6 +13438,15 @@ S: Supported
T: git git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux.git
F: drivers/iommu/intel/
INTEL IPU BRIDGE
M: Sakari Ailus <sakari.ailus@linux.intel.com>
M: Dan Scally <dan.scally@ideasonboard.com>
R: Hans de Goede <hansg@kernel.org>
L: linux-media@vger.kernel.org
S: Maintained
F: drivers/media/pci/intel/ipu-bridge.c
F: include/media/ipu-bridge.h
INTEL IPU3 CSI-2 CIO2 DRIVER
M: Yong Zhi <yong.zhi@intel.com>
M: Sakari Ailus <sakari.ailus@linux.intel.com>
@ -13450,6 +13468,10 @@ F: drivers/staging/media/ipu3/
INTEL IPU6 INPUT SYSTEM DRIVER
M: Sakari Ailus <sakari.ailus@linux.intel.com>
R: Antti Laakso <antti.laakso@linux.intel.com>
R: "Sapre, Sarang" <sarang.sapre@intel.com>
R: Divyamani Tripathi <divyamani.tripathi@intel.com>
R: Manik Bajpai <manik.bajpai@intel.com>
L: linux-media@vger.kernel.org
S: Maintained
T: git git://linuxtv.org/media.git
@ -13686,6 +13708,7 @@ K: \bSGX_
INTEL SKYLAKE INT3472 ACPI DEVICE DRIVER
M: Daniel Scally <dan.scally@ideasonboard.com>
M: Sakari Ailus <sakari.ailus@linux.intel.com>
L: linux-media@vger.kernel.org
S: Maintained
T: git git://linuxtv.org/media.git
F: drivers/platform/x86/intel/int3472/
@ -14152,6 +14175,14 @@ T: git https://gitlab.freedesktop.org/drm/misc/kernel.git
F: Documentation/devicetree/bindings/display/bridge/ite,it66121.yaml
F: drivers/gpu/drm/bridge/ite-it66121.c
ITE IT6625 HDMI to MIPI MEDIA DRIVER
M: Hermes Wu <Hermes.Wu@ite.com.tw>
S: Maintained
T: git git://linuxtv.org/media.git
F: Documentation/devicetree/bindings/media/i2c/ite,it6625.yaml
F: drivers/media/i2c/it6625.c
F: include/uapi/linux/it6625.h
IVTV VIDEO4LINUX DRIVER
M: Andy Walls <awalls@md.metrocast.net>
L: linux-media@vger.kernel.org
@ -16286,21 +16317,18 @@ M: Niklas Söderlund <niklas.soderlund@ragnatech.se>
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/i2c/maxim,max96712.yaml
F: drivers/staging/media/max96712/max96712.c
MAX96714 GMSL2 DESERIALIZER DRIVER
M: Julien Massot <julien.massot@collabora.com>
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/i2c/maxim,max96714.yaml
F: drivers/media/i2c/max96714.c
MAX96717 GMSL2 SERIALIZER DRIVER
M: Julien Massot <julien.massot@collabora.com>
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/i2c/maxim,max96717.yaml
F: drivers/media/i2c/max96717.c
MAX9860 MONO AUDIO VOICE CODEC DRIVER
M: Peter Rosin <peda@lysator.liu.se>
@ -16316,6 +16344,13 @@ S: Maintained
F: Documentation/devicetree/bindings/iio/proximity/maxbotix,mb1232.yaml
F: drivers/iio/proximity/mb1232.c
MAXIM GMSL2/3 SERIALIZERS AND DESERIALIZERS
M: Cosmin Tanislav <cosmin.tanislav@analog.com>
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml
F: drivers/media/i2c/maxim-serdes/
MAXIM MAX11205 DRIVER
M: Ramona Bolboaca <ramona.bolboaca@analog.com>
L: linux-iio@vger.kernel.org
@ -16649,6 +16684,7 @@ M: Frank Li <Frank.Li@nxp.com>
M: Martin Kepplinger-Novakovic <martink@posteo.de>
R: Rui Miguel Silva <rmfrfs@gmail.com>
R: Purism Kernel Team <kernel@puri.sm>
R: Bryan O'Donoghue <bod@kernel.org>
L: imx@lists.linux.dev
L: linux-media@vger.kernel.org
S: Maintained
@ -20022,6 +20058,14 @@ S: Maintained
F: Documentation/devicetree/bindings/media/nxp,imx8-jpeg.yaml
F: drivers/media/platform/nxp/imx-jpeg
NXP i.MX 95 CSI PIXEL FORMATTER V4L2 DRIVER
M: Guoniu Zhou <guoniu.zhou@nxp.com>
L: imx@lists.linux.dev
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/fsl,imx95-csi-formatter.yaml
F: drivers/media/platform/nxp/imx95-csi-formatter.c
NXP i.MX CLOCK DRIVERS
M: Abel Vesa <abelvesa@kernel.org>
R: Peng Fan <peng.fan@nxp.com>
@ -20412,6 +20456,14 @@ T: git git://linuxtv.org/media_tree.git
F: Documentation/devicetree/bindings/media/i2c/ovti,og0ve1b.yaml
F: drivers/media/i2c/og0ve1b.c
OMNIVISION OS02G10 SENSOR DRIVER
M: Tarang Raval <tarang.raval@siliconsignals.io>
M: Elgin Perumbilly <elgin.perumbilly@siliconsignals.io>
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/i2c/ovti,os02g10.yaml
F: drivers/media/i2c/os02g10.c
OMNIVISION OS05B10 SENSOR DRIVER
M: Himanshu Bhavani <himanshu.bhavani@siliconsignals.io>
M: Elgin Perumbilly <elgin.perumbilly@siliconsignals.io>
@ -20452,6 +20504,13 @@ T: git git://linuxtv.org/media.git
F: Documentation/devicetree/bindings/media/i2c/ovti,ov02e10.yaml
F: drivers/media/i2c/ov02e10.c
OMNIVISION OV05C10 SENSOR DRIVER
M: Sakari Ailus <sakari.ailus@linux.intel.com>
R: Antti Laakso <antti.laakso@linux.intel.com>
L: linux-media@vger.kernel.org
S: Maintained
F: drivers/media/i2c/ov05c10.c
OMNIVISION OV08D10 SENSOR DRIVER
M: Jimmy Su <jimmy.su@intel.com>
R: Matthias Fend <matthias.fend@emfend.at>
@ -22860,6 +22919,16 @@ S: Maintained
F: Documentation/devicetree/bindings/media/qcom,*-iris.yaml
F: drivers/media/platform/qcom/iris/
QUALCOMM MIPI CSI2 PHY DRIVER
M: Bryan O'Donoghue <bod@kernel.org>
L: linux-phy@lists.infradead.org
L: linux-media@vger.kernel.org
L: linux-arm-msm@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/phy/qcom,*-csi2-phy.yaml
F: drivers/phy/qualcomm/phy-qcom-mipi-csi2*.c
F: drivers/phy/qualcomm/phy-qcom-mipi-csi2*.h
QUALCOMM NAND CONTROLLER DRIVER
M: Manivannan Sadhasivam <mani@kernel.org>
L: linux-mtd@lists.infradead.org
@ -24775,6 +24844,13 @@ T: git git://linuxtv.org/media_tree.git
F: Documentation/devicetree/bindings/media/i2c/samsung,s5kjn1.yaml
F: drivers/media/i2c/s5kjn1.c
SAMSUNG S5KJN5 CAMERA DRIVER
M: Wenmeng Liu <wenmeng.liu@oss.qualcomm.com>
L: linux-media@vger.kernel.org
S: Supported
F: Documentation/devicetree/bindings/media/i2c/samsung,s5kjn5.yaml
F: drivers/media/i2c/s5kjn5.c
SAMSUNG S5P Security SubSystem (SSS) DRIVER
M: Krzysztof Kozlowski <krzk@kernel.org>
M: Vladimir Zapolskiy <vz@mleia.com>
@ -25940,6 +26016,14 @@ L: linux-media@vger.kernel.org
S: Maintained
F: drivers/media/i2c/imx471.c
SONY IMX576 SENSOR DRIVER
M: Himanshu Bhavani <himanshu.bhavani@siliconsignals.io>
M: Hardevsinh Palaniya <hardevsinh.palaniya@siliconsignals.io>
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/i2c/sony,imx576.yaml
F: drivers/media/i2c/imx576.c
SONY IMX678 SENSOR DRIVER
M: Jai Luthra <jai.luthra@ideasonboard.com>
L: linux-media@vger.kernel.org
@ -26955,6 +27039,7 @@ F: include/linux/soc/amd/isp4_misc.h
SYNOPSYS DESIGNWARE MIPI CSI-2 RECEIVER DRIVER
M: Michael Riesch <michael.riesch@collabora.com>
R: Bryan O'Donoghue <bod@kernel.org>
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/rockchip,rk3568-mipi-csi2.yaml
@ -27329,9 +27414,11 @@ M: Luca Ceresoli <luca.ceresoli@bootlin.com>
L: linux-media@vger.kernel.org
L: linux-tegra@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-csi.yaml
F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.yaml
F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-vi.yaml
F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-vip.yaml
F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra210-csi.yaml
F: drivers/staging/media/tegra-video/
TEGRA XUSB PADCTL DRIVER
@ -28068,7 +28155,7 @@ TOSHIBA TC358743 DRIVER
M: Hans Verkuil <hverkuil@kernel.org>
L: linux-media@vger.kernel.org
S: Maintained
F: Documentation/devicetree/bindings/media/i2c/toshiba,tc358743.txt
F: Documentation/devicetree/bindings/media/i2c/toshiba,tc358743.yaml
F: drivers/media/i2c/tc358743*
F: include/media/i2c/tc358743.h

View File

@ -3,6 +3,7 @@
#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/power/summit,smb347-charger.h>
#include <dt-bindings/thermal/thermal.h>
@ -991,7 +992,7 @@ front-camera@48 {
vdd-supply = <&vddio_cam>;
vaa-supply = <&avdd_cam1>;
orientation = <0>; /* Front camera */
orientation = <MEDIA_ORIENTATION_FRONT>;
assigned-clocks = <&tegra_car TEGRA30_CLK_VI_SENSOR>,
<&tegra_car TEGRA30_CLK_CSUS>;

View File

@ -3,6 +3,7 @@
#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/thermal/thermal.h>
#include "tegra30.dtsi"
@ -1262,7 +1263,7 @@ front-camera@48 {
vdd-supply = <&vdd_1v8_cam>;
vaa-supply = <&avdd_2v85_fcam>;
orientation = <0>; /* Front camera */
orientation = <MEDIA_ORIENTATION_FRONT>;
assigned-clocks = <&tegra_car TEGRA30_CLK_VI_SENSOR>,
<&tegra_car TEGRA30_CLK_CSUS>;

View File

@ -1,6 +1,8 @@
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include <dt-bindings/media/video-interface-devices.h>
#include "tegra30-lg-x3.dtsi"
/ {
@ -129,7 +131,7 @@ front-camera@48 {
vdd-supply = <&vt_1v8_front>;
vaa-supply = <&vt_2v8_front>;
orientation = <0>; /* Front camera */
orientation = <MEDIA_ORIENTATION_FRONT>;
assigned-clocks = <&tegra_car TEGRA30_CLK_VI_SENSOR>,
<&tegra_car TEGRA30_CLK_CSUS>;

View File

@ -4,6 +4,7 @@
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/mfd/max77620.h>
#include <dt-bindings/thermal/thermal.h>
@ -1253,7 +1254,7 @@ rear-camera@10 {
dvdd-supply = <&vdd_1v2_rear>;
avdd-supply = <&vdd_2v7_rear>;
orientation = <1>; /* Rear camera */
orientation = <MEDIA_ORIENTATION_BACK>;
rotation = <90>;
nvmem = <&m24c08>;

View File

@ -9,6 +9,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
#include "imx8mp-pinfunc.h"
@ -47,7 +48,7 @@ camera@10 {
VANA-supply = <&reg_cam>;
VDIG-supply = <&reg_cam>;
VDDL-supply = <&reg_cam>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
port {

View File

@ -8,6 +8,7 @@
#include "dt-bindings/input/input.h"
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/media/video-interface-devices.h>
#include "dt-bindings/pwm/pwm.h"
#include "dt-bindings/usb/pd.h"
#include "imx8mq.dtsi"
@ -1116,7 +1117,7 @@ camera_front: camera@20 {
vddd-supply = <&reg_vcam_1v2>;
vddio-supply = <&reg_csi_1v8>;
rotation = <90>;
orientation = <0>;
orientation = <MEDIA_ORIENTATION_FRONT>;
port {
camera1_ep: endpoint {

View File

@ -13,6 +13,7 @@
#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/sound/qcom,q6asm.h>
@ -755,7 +756,7 @@ camera@10 {
pinctrl-0 = <&cam_mclk3_default>;
pinctrl-names = "default";
orientation = <0>; /* Front facing */
orientation = <MEDIA_ORIENTATION_FRONT>;
rotation = <270>;
port {

View File

@ -11,6 +11,7 @@
#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include "sc8280xp.dtsi"
@ -683,7 +684,7 @@ camera@10 {
clocks = <&camcc CAMCC_MCLK3_CLK>;
orientation = <0>; /* Front facing */
orientation = <MEDIA_ORIENTATION_FRONT>;
avdd-supply = <&vreg_l6q>;
dvdd-supply = <&vreg_l2q>;

View File

@ -9,6 +9,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
#include <dt-bindings/power/qcom-rpmpd.h>
#include "sdm670.dtsi"
@ -462,7 +463,7 @@ camera@1a {
pinctrl-names = "default";
rotation = <270>;
orientation = <0>;
orientation = <MEDIA_ORIENTATION_FRONT>;
port {
cam_front_endpoint: endpoint {

View File

@ -12,6 +12,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
&{/} {
clk_cam_j1: clk-cam-j1 {
@ -44,7 +45,7 @@ cam@10 {
VDIG-supply = <&reg_cam_j1>;
VDDL-supply = <&reg_cam_j1>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
port {

View File

@ -12,6 +12,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
&{/} {
clk_cam_j1: clk-cam-j1 {
@ -46,7 +47,7 @@ cam@1a {
vdda-supply = <&reg_cam_j1>;
vddd-supply = <&reg_cam_j1>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
port {

View File

@ -12,6 +12,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
&{/} {
clk_cam_j2: clk-cam-j2 {
@ -44,7 +45,7 @@ cam@10 {
VDIG-supply = <&reg_cam_j2>;
VDDL-supply = <&reg_cam_j2>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
port {

View File

@ -12,6 +12,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
&{/} {
clk_cam_j2: clk-cam-j2 {
@ -46,7 +47,7 @@ cam@1a {
vdda-supply = <&reg_cam_j2>;
vddd-supply = <&reg_cam_j2>;
orientation = <2>;
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
rotation = <0>;
port {

View File

@ -6,6 +6,7 @@
/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include "px30.dtsi"
@ -413,7 +414,7 @@ camera@36 {
dvdd-supply = <&vcc_cam_dvdd>;
dovdd-supply = <&vcc_cam_dovdd>;
lens-focus = <&focus>;
orientation = <0>;
orientation = <MEDIA_ORIENTATION_FRONT>;
pinctrl-names = "default";
pinctrl-0 = <&cif_clkout_m0 &cam_pwdn>;
reset-gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_LOW>;

View File

@ -16,6 +16,7 @@
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/pinctrl/rockchip.h>
&{/} {
@ -185,7 +186,7 @@ camera@36 {
dvdd-supply = <&cam_dvdd_1v2>;
dovdd-supply = <&cam_dovdd_1v8>;
lens-focus = <&focus>;
orientation = <0>;
orientation = <MEDIA_ORIENTATION_FRONT>;
pinctrl-names = "default";
pinctrl-0 = <&cif_clkout_m0>;
reset-gpios = <&pca9670 6 GPIO_ACTIVE_LOW>;

View File

@ -13,6 +13,7 @@
#include <dt-bindings/input/gpio-keys.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/media/video-interface-devices.h>
#include "rk3399-s.dtsi"
/ {
@ -455,7 +456,7 @@ wcam: camera@1a {
reg = <0x1a>;
clocks = <&cru SCLK_CIF_OUT>; /* MIPI_MCLK0, derived from CIF_CLKO */
lens-focus = <&wcam_lens>;
orientation = <1>; /* V4L2_CAMERA_ORIENTATION_BACK */
orientation = <MEDIA_ORIENTATION_BACK>;
pinctrl-names = "default";
pinctrl-0 = <&camera_rst_l>;
reset-gpios = <&gpio1 RK_PA0 GPIO_ACTIVE_LOW>;
@ -487,7 +488,7 @@ ucam: camera@36 {
clocks = <&cru SCLK_CIF_OUT>; /* MIPI_MCLK1, derived from CIF_CLK0 */
clock-names = "xvclk";
dovdd-supply = <&vcc1v8_dvp>;
orientation = <0>; /* V4L2_CAMERA_ORIENTATION_FRONT */
orientation = <MEDIA_ORIENTATION_FRONT>;
pinctrl-names = "default";
pinctrl-0 = <&camera2_rst_l &dvp_pdn0_h>;
powerdown-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_LOW>;

View File

@ -10,6 +10,7 @@
#include <dt-bindings/clock/rockchip,rk3588-cru.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/pinctrl/rockchip.h>
&{/} {
@ -51,7 +52,7 @@ imx415: camera-sensor@1a {
avdd-supply = <&savdd_cam0>;
clocks = <&cru CLK_MIPI_CAMARAOUT_M3>;
dvdd-supply = <&sdvdd_cam0>;
orientation = <2>; /* External */
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
ovdd-supply = <&siovdd_cam0>;
pinctrl-names = "default";
pinctrl-0 = <&cam0_rstn &mipim0_camera3_clk>;

View File

@ -10,6 +10,7 @@
#include <dt-bindings/clock/rockchip,rk3588-cru.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/media/video-interfaces.h>
#include <dt-bindings/media/video-interface-devices.h>
#include <dt-bindings/pinctrl/rockchip.h>
&{/} {
@ -51,7 +52,7 @@ cam1_imx415: camera-sensor@1a {
avdd-supply = <&savdd_cam1>;
clocks = <&cru CLK_MIPI_CAMARAOUT_M4>;
dvdd-supply = <&sdvdd_cam1>;
orientation = <2>; /* External */
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
ovdd-supply = <&siovdd_cam1>;
pinctrl-names = "default";
pinctrl-0 = <&cam1_rstn &mipim0_camera4_clk>;

View File

@ -1436,7 +1436,6 @@ CONFIG_GREYBUS=m
CONFIG_GREYBUS_BEAGLEPLAY=m
CONFIG_STAGING=y
CONFIG_STAGING_MEDIA=y
CONFIG_VIDEO_MAX96712=m
CONFIG_VIDEO_MESON_VDEC=m
CONFIG_SND_BCM2835=m
CONFIG_CHROME_PLATFORMS=y

View File

@ -2085,9 +2085,9 @@ static void assert_ved_power_gated(struct intel_display *display)
static void assert_isp_power_gated(struct intel_display *display)
{
static const struct pci_device_id isp_ids[] = {
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0f38)},
{PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x22b8)},
{}
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ISP_BYT) },
{ PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ISP_BSW) },
{ }
};
drm_WARN(display->drm, !pci_dev_present(isp_ids) &&

View File

@ -540,6 +540,12 @@ static int i2c_atr_attach_addr(struct i2c_adapter *adapter,
struct i2c_atr_alias_pair *c2a;
int ret = 0;
/*
* attach_addr() may reconfigure the remote side of the bus, keep
* transfers on other channels out until it is done.
*/
mutex_lock(&atr->lock);
mutex_lock(&chan->alias_pairs_lock);
c2a = i2c_atr_create_mapping_by_addr(chan, addr);
@ -557,6 +563,8 @@ static int i2c_atr_attach_addr(struct i2c_adapter *adapter,
out_unlock:
mutex_unlock(&chan->alias_pairs_lock);
mutex_unlock(&atr->lock);
return ret;
}
@ -567,6 +575,8 @@ static void i2c_atr_detach_addr(struct i2c_adapter *adapter,
struct i2c_atr *atr = chan->atr;
struct i2c_atr_alias_pair *c2a;
mutex_lock(&atr->lock);
atr->ops->detach_addr(atr, chan->chan_id, addr);
mutex_lock(&chan->alias_pairs_lock);
@ -574,6 +584,7 @@ static void i2c_atr_detach_addr(struct i2c_adapter *adapter,
c2a = i2c_atr_find_mapping_by_addr(chan, addr);
if (!c2a) {
mutex_unlock(&chan->alias_pairs_lock);
mutex_unlock(&atr->lock);
return;
}
@ -586,6 +597,7 @@ static void i2c_atr_detach_addr(struct i2c_adapter *adapter,
i2c_atr_destroy_c2a(&c2a);
mutex_unlock(&chan->alias_pairs_lock);
mutex_unlock(&atr->lock);
}
static int i2c_atr_bus_notifier_call(struct notifier_block *nb,

View File

@ -334,7 +334,7 @@ static int meson_ao_cec_g12a_setup_clk(struct meson_ao_cec_g12a_device *ao_cec)
{
struct meson_ao_cec_g12a_dualdiv_clk *dualdiv_clk;
struct device *dev = &ao_cec->pdev->dev;
struct clk_init_data init;
struct clk_init_data init = {};
const char *parent_name;
struct clk *clk;
char *name;

View File

@ -847,7 +847,9 @@ static irqreturn_t extron_interrupt(struct serio *serio, unsigned char data,
return IRQ_HANDLED;
memcpy(extron->data, extron->buf, extron->idx);
extron->len = extron->idx;
extron->data[extron->len] = 0;
/* Keep fixed-offset response tests from using stale tail bytes. */
memset(extron->data + extron->len, 0,
min_t(size_t, 10, sizeof(extron->data) - extron->len));
if (debug)
dev_info(extron->dev, "received %s\n", extron->data);
extron->idx = 0;

View File

@ -59,6 +59,8 @@ static int cypress_get_hexline(const struct firmware *fw,
if (hx->type == 0x04) {
/* b[4] and b[5] are the Extended linear address record data
* field */
if (hx->len != 2)
return -EINVAL;
hx->addr |= (b[4] << 24) | (b[5] << 16);
}

View File

@ -18,17 +18,6 @@ unsigned int saa7146_debug;
module_param(saa7146_debug, uint, 0644);
MODULE_PARM_DESC(saa7146_debug, "debug level (default: 0)");
#if 0
static void dump_registers(struct saa7146_dev* dev)
{
int i = 0;
pr_info(" @ %li jiffies:\n", jiffies);
for (i = 0; i <= 0x148; i += 4)
pr_info("0x%03x: 0x%08x\n", i, saa7146_read(dev, i));
}
#endif
/****************************************************************************
* gpio and debi helper functions
****************************************************************************/
@ -252,6 +241,15 @@ int saa7146_pgtable_build_single(struct pci_dev *pci, struct saa7146_pgtable *pt
ptr = pt->cpu;
for_each_sg_dma_page(list, &dma_iter, sglen, 0) {
/*
* The page table is exactly PAGE_SIZE large, i.e. it holds
* PAGE_SIZE / sizeof(__le32) entries. Buffers needing more
* pages would overflow it.
*/
if (nr_pages >= PAGE_SIZE / sizeof(__le32)) {
pr_err("page table too small\n");
return -EIO;
}
*ptr++ = cpu_to_le32(sg_page_iter_dma_address(&dma_iter));
nr_pages++;
}
@ -340,6 +338,8 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
goto out;
}
spin_lock_init(&dev->int_slock);
/* create a nice device name */
sprintf(dev->name, "saa7146 (%d)", saa7146_num);
@ -425,7 +425,6 @@ static int saa7146_init_one(struct pci_dev *pci, const struct pci_device_id *ent
dev->ext = ext;
mutex_init(&dev->v4l2_lock);
spin_lock_init(&dev->int_slock);
spin_lock_init(&dev->slock);
mutex_init(&dev->i2c_lock);

View File

@ -410,6 +410,17 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *fh, struct v4l2_forma
f->fmt.pix.bytesperline = calc_bpl;
f->fmt.pix.sizeimage = f->fmt.pix.bytesperline * f->fmt.pix.height;
/*
* The DMA page tables hold one entry per page and are exactly
* PAGE_SIZE large. Reject formats whose buffer would need more
* entries than the tables can hold.
*/
if (f->fmt.pix.sizeimage > PAGE_SIZE / sizeof(__le32) * PAGE_SIZE) {
DEB_D("sizeimage %d too large\n", f->fmt.pix.sizeimage);
return -EINVAL;
}
DEB_D("w:%d, h:%d, bytesperline:%d, sizeimage:%d\n",
f->fmt.pix.width, f->fmt.pix.height,
f->fmt.pix.bytesperline, f->fmt.pix.sizeimage);

View File

@ -10,8 +10,8 @@
/*
* Note: originally, this file contained 12000+ lines of data
* Probably a few lines for every firwmare assembler instruction. However,
* only a few defines were actually used. So, removed all uneeded lines.
* Probably a few lines for every firmware assembler instruction. However,
* only a few defines were actually used. So, removed all unneeded lines.
* If ever needed, the other lines can be easily obtained via git history.
*/

View File

@ -1773,6 +1773,8 @@ static int stv0900_recv_slave_reply(struct dvb_frontend *fe,
if (stv0900_get_bits(intp, RX_END)) {
reply->msg_len = stv0900_get_bits(intp, FIFO_BYTENBR);
if (reply->msg_len > sizeof(reply->msg))
reply->msg_len = sizeof(reply->msg);
for (i = 0; i < reply->msg_len; i++)
reply->msg[i] = stv0900_read_reg(intp, DISRXDATA);

View File

@ -3902,6 +3902,8 @@ static int stv090x_recv_slave_reply(struct dvb_frontend *fe, struct dvb_diseqc_s
if (rx_end) {
reply->msg_len = STV090x_GETFIELD_Px(reg, FIFO_BYTENBR_FIELD);
if (reply->msg_len > sizeof(reply->msg))
reply->msg_len = sizeof(reply->msg);
for (i = 0; i < reply->msg_len; i++)
reply->msg[i] = STV090x_READ_DEMOD(state, DISRXDATA);
}

View File

@ -137,6 +137,17 @@ config VIDEO_HI847
To compile this driver as a module, choose M here: the
module will be called hi847.
config VIDEO_HM1246
tristate "Himax HM1246 sensor support"
depends on OF
select V4L2_CCI_I2C
help
This is a Video4Linux2 sensor driver for the Himax
HM1246 camera.
To compile this driver as a module, choose M here: the
module will be called hm1246.
config VIDEO_IMX111
tristate "Sony IMX111 sensor support"
select V4L2_CCI_I2C
@ -299,6 +310,17 @@ config VIDEO_IMX471
To compile this driver as a module, choose M here: the
module will be called imx471.
config VIDEO_IMX576
tristate "Sony IMX576 sensor support"
select V4L2_CCI_I2C
select VIDEO_CCS_PLL
help
This is a Video4Linux2 sensor driver for the Sony
IMX576 camera.
To compile this driver as a module, choose M here: the
module will be called imx576.
config VIDEO_IMX678
tristate "Sony IMX678 sensor support"
depends on GPIOLIB
@ -396,6 +418,16 @@ config VIDEO_OG0VE1B
To compile this driver as a module, choose M here: the
module will be called og0ve1b.
config VIDEO_OS02G10
tristate "OmniVision OS02G10 sensor support"
select V4L2_CCI_I2C
help
This is a Video4Linux2 sensor driver for Omnivision
OS02G10 camera sensor.
To compile this driver as a module, choose M here: the
module will be called os02g10.
config VIDEO_OS05B10
tristate "OmniVision OS05B10 sensor support"
select V4L2_CCI_I2C
@ -445,6 +477,16 @@ config VIDEO_OV02C10
To compile this driver as a module, choose M here: the
module will be called ov02c10.
config VIDEO_OV05C10
tristate "OmniVision OV05C10 sensor support"
select V4L2_CCI_I2C
help
This is a Video4Linux2 sensor driver for the OmniVision
OV05C10 camera.
To compile this driver as a module, choose M here: the
module will be called ov05c10.
config VIDEO_OV08D10
tristate "OmniVision OV08D10 sensor support"
help
@ -826,6 +868,17 @@ config VIDEO_S5KJN1
To compile this driver as a module, choose M here: the
module will be called s5kjn1.
config VIDEO_S5KJN5
tristate "Samsung S5KJN5 sensor support"
depends on GPIOLIB
select V4L2_CCI_I2C
help
This is a V4L2 sensor driver for Samsung S5KJN5 50MP
10-bit RAW MIPI CSI-2 camera sensor.
To compile this driver as a module, choose M here: the
module will be called s5kjn5.
config VIDEO_T4KA3
tristate "Toshiba T4KA3 sensor support"
depends on ACPI || COMPILE_TEST
@ -989,14 +1042,12 @@ endmenu
# V4L2 I2C drivers that aren't related with Camera support
#
comment "audio, video and radio I2C drivers auto-selected by 'Autoselect ancillary drivers'"
depends on MEDIA_HIDE_ANCILLARY_SUBDRV
comment "audio, video and radio I2C drivers"
#
# Encoder / Decoder module configuration
#
menu "Audio decoders, processors and mixers"
visible if !MEDIA_HIDE_ANCILLARY_SUBDRV
config VIDEO_CS3308
tristate "Cirrus Logic CS3308 audio ADC"
@ -1159,7 +1210,6 @@ config VIDEO_WM8775
endmenu
menu "RDS decoders"
visible if !MEDIA_HIDE_ANCILLARY_SUBDRV
config VIDEO_SAA6588
tristate "SAA6588 Radio Chip RDS decoder support"
@ -1176,7 +1226,6 @@ config VIDEO_SAA6588
endmenu
menu "Video decoders"
visible if !MEDIA_HIDE_ANCILLARY_SUBDRV
config VIDEO_ADV7180
tristate "Analog Devices ADV7180 decoder"
@ -1301,6 +1350,25 @@ config VIDEO_ISL7998X
Support for Intersil ISL7998x analog to MIPI-CSI2 or
BT.656 decoder.
config VIDEO_IT6625
tristate "IT6625 HDMI to MIPI CSI bridge"
depends on VIDEO_DEV && I2C
depends on OF
select CEC_CORE
select HDMI
select MEDIA_CONTROLLER
select REGMAP_I2C
select V4L2_FWNODE
select VIDEO_V4L2_SUBDEV_API
help
V4L2 subdevice driver for the ITE IT6625/IT6626 HDMI to MIPI
CSI-2 bridge chips. IT6625 accepts an HDMI 2.0 input and
IT6626 an HDMI 2.1 input, converting it to a MIPI CSI-2
output. The driver also exposes an HDMI CEC adapter.
To compile this driver as a module, choose M here: the
module will be called it6625.
config VIDEO_LT6911UXE
tristate "Lontium LT6911UXE decoder"
depends on ACPI && VIDEO_DEV && I2C
@ -1517,7 +1585,6 @@ source "drivers/media/i2c/cx25840/Kconfig"
endmenu
menu "Video encoders"
visible if !MEDIA_HIDE_ANCILLARY_SUBDRV
config VIDEO_ADV7170
tristate "Analog Devices ADV7170 video encoder"
@ -1616,7 +1683,6 @@ config VIDEO_THS8200
endmenu
menu "Video improvement chips"
visible if !MEDIA_HIDE_ANCILLARY_SUBDRV
config VIDEO_UPD64031A
tristate "NEC Electronics uPD64031A Ghost Reduction"
@ -1645,7 +1711,6 @@ config VIDEO_UPD64083
endmenu
menu "Audio/Video compression chips"
visible if !MEDIA_HIDE_ANCILLARY_SUBDRV
config VIDEO_SAA6752HS
tristate "Philips SAA6752HS MPEG-2 Audio/Video Encoder"
@ -1661,7 +1726,6 @@ config VIDEO_SAA6752HS
endmenu
menu "SDR tuner chips"
visible if !MEDIA_HIDE_ANCILLARY_SUBDRV
config SDR_MAX2175
tristate "Maxim 2175 RF to Bits tuner"
@ -1678,7 +1742,6 @@ config SDR_MAX2175
endmenu
menu "Miscellaneous helper chips"
visible if !MEDIA_HIDE_ANCILLARY_SUBDRV
source "drivers/media/i2c/cvs/Kconfig"
@ -1777,39 +1840,7 @@ config VIDEO_DS90UB960
Device driver for the Texas Instruments DS90UB954, DS90UB960
FPD-Link III Deserializers and DS90UB9702 FPD-Link IV Deserializer.
config VIDEO_MAX96714
tristate "Maxim MAX96714 GMSL2 deserializer"
depends on OF && I2C && VIDEO_DEV
select I2C_MUX
select MEDIA_CONTROLLER
select GPIOLIB
select V4L2_CCI_I2C
select V4L2_FWNODE
select VIDEO_V4L2_SUBDEV_API
help
Device driver for the Maxim MAX96714 GMSL2 Deserializer.
MAX96714 deserializers convert a GMSL2 input to MIPI CSI-2
output.
To compile this driver as a module, choose M here: the
module will be called max96714.
config VIDEO_MAX96717
tristate "Maxim MAX96717 GMSL2 Serializer support"
depends on I2C && VIDEO_DEV && COMMON_CLK
select I2C_MUX
select MEDIA_CONTROLLER
select GPIOLIB
select V4L2_CCI_I2C
select V4L2_FWNODE
select VIDEO_V4L2_SUBDEV_API
help
Device driver for the Maxim MAX96717 GMSL2 Serializer.
MAX96717 serializers convert video on a MIPI CSI-2
input to a GMSL2 output.
To compile this driver as a module, choose M here: the
module will be called max96717.
source "drivers/media/i2c/maxim-serdes/Kconfig"
endmenu

View File

@ -45,6 +45,7 @@ obj-$(CONFIG_VIDEO_GC2145) += gc2145.o
obj-$(CONFIG_VIDEO_HI556) += hi556.o
obj-$(CONFIG_VIDEO_HI846) += hi846.o
obj-$(CONFIG_VIDEO_HI847) += hi847.o
obj-$(CONFIG_VIDEO_HM1246) += hm1246.o
obj-$(CONFIG_VIDEO_I2C) += video-i2c.o
obj-$(CONFIG_VIDEO_IMX111) += imx111.o
obj-$(CONFIG_VIDEO_IMX208) += imx208.o
@ -61,10 +62,12 @@ obj-$(CONFIG_VIDEO_IMX335) += imx335.o
obj-$(CONFIG_VIDEO_IMX355) += imx355.o
obj-$(CONFIG_VIDEO_IMX412) += imx412.o
obj-$(CONFIG_VIDEO_IMX415) += imx415.o
obj-$(CONFIG_VIDEO_IMX678) += imx678.o
obj-$(CONFIG_VIDEO_IMX471) += imx471.o
obj-$(CONFIG_VIDEO_IMX576) += imx576.o
obj-$(CONFIG_VIDEO_IMX678) += imx678.o
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o
obj-$(CONFIG_VIDEO_IT6625) += it6625.o
obj-$(CONFIG_VIDEO_KS0127) += ks0127.o
obj-$(CONFIG_VIDEO_LM3560) += lm3560.o
obj-$(CONFIG_VIDEO_LM3646) += lm3646.o
@ -72,8 +75,7 @@ obj-$(CONFIG_VIDEO_LT6911UXE) += lt6911uxe.o
obj-$(CONFIG_VIDEO_M52790) += m52790.o
obj-$(CONFIG_VIDEO_MAX9271_LIB) += max9271.o
obj-$(CONFIG_VIDEO_MAX9286) += max9286.o
obj-$(CONFIG_VIDEO_MAX96714) += max96714.o
obj-$(CONFIG_VIDEO_MAX96717) += max96717.o
obj-$(CONFIG_VIDEO_MAXIM_SERDES) += maxim-serdes/
obj-$(CONFIG_VIDEO_ML86V7667) += ml86v7667.o
obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o
obj-$(CONFIG_VIDEO_MT9M001) += mt9m001.o
@ -86,11 +88,13 @@ obj-$(CONFIG_VIDEO_MT9V032) += mt9v032.o
obj-$(CONFIG_VIDEO_MT9V111) += mt9v111.o
obj-$(CONFIG_VIDEO_OG01A1B) += og01a1b.o
obj-$(CONFIG_VIDEO_OG0VE1B) += og0ve1b.o
obj-$(CONFIG_VIDEO_OS02G10) += os02g10.o
obj-$(CONFIG_VIDEO_OS05B10) += os05b10.o
obj-$(CONFIG_VIDEO_OV01A10) += ov01a10.o
obj-$(CONFIG_VIDEO_OV02A10) += ov02a10.o
obj-$(CONFIG_VIDEO_OV02C10) += ov02c10.o
obj-$(CONFIG_VIDEO_OV02E10) += ov02e10.o
obj-$(CONFIG_VIDEO_OV05C10) += ov05c10.o
obj-$(CONFIG_VIDEO_OV08D10) += ov08d10.o
obj-$(CONFIG_VIDEO_OV08X40) += ov08x40.o
obj-$(CONFIG_VIDEO_OV13858) += ov13858.o
@ -133,6 +137,7 @@ obj-$(CONFIG_VIDEO_S5K3M5) += s5k3m5.o
obj-$(CONFIG_VIDEO_S5K5BAF) += s5k5baf.o
obj-$(CONFIG_VIDEO_S5K6A3) += s5k6a3.o
obj-$(CONFIG_VIDEO_S5KJN1) += s5kjn1.o
obj-$(CONFIG_VIDEO_S5KJN5) += s5kjn5.o
obj-$(CONFIG_VIDEO_SAA6588) += saa6588.o
obj-$(CONFIG_VIDEO_SAA6752HS) += saa6752hs.o
obj-$(CONFIG_VIDEO_SAA7110) += saa7110.o

View File

@ -284,6 +284,7 @@ static int adv7170_get_fmt(struct v4l2_subdev *sd,
}
static int adv7170_set_fmt(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{

View File

@ -209,7 +209,7 @@ static int adv7175_s_std_output(struct v4l2_subdev *sd, v4l2_std_id std)
/* This is an attempt to convert
* SECAM->PAL (typically it does not work
* due to genlock: when decoder is in SECAM
* and encoder in in PAL the subcarrier can
* and encoder in PAL the subcarrier can
* not be synchronized with horizontal
* quency) */
adv7175_write_block(sd, init_pal, sizeof(init_pal));
@ -322,6 +322,7 @@ static int adv7175_get_fmt(struct v4l2_subdev *sd,
}
static int adv7175_set_fmt(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{

View File

@ -770,6 +770,7 @@ static int adv7180_get_pad_format(struct v4l2_subdev *sd,
}
static int adv7180_set_pad_format(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{
@ -807,7 +808,7 @@ static int adv7180_init_state(struct v4l2_subdev *sd,
: V4L2_SUBDEV_FORMAT_ACTIVE,
};
return adv7180_set_pad_format(sd, sd_state, &fmt);
return adv7180_set_pad_format(sd, NULL, sd_state, &fmt);
}
static int adv7180_get_mbus_config(struct v4l2_subdev *sd,
@ -1454,6 +1455,7 @@ static int adv7180_probe(struct i2c_client *client)
if (state == NULL)
return -ENOMEM;
mutex_init(&state->mutex);
state->client = client;
state->field = V4L2_FIELD_ALTERNATE;
state->chip_info = i2c_get_match_data(client);
@ -1497,7 +1499,6 @@ static int adv7180_probe(struct i2c_client *client)
}
state->irq = client->irq;
mutex_init(&state->mutex);
state->curr_norm = V4L2_STD_NTSC;
state->input = 0;

View File

@ -420,6 +420,7 @@ static int adv7183_enum_mbus_code(struct v4l2_subdev *sd,
}
static int adv7183_set_fmt(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{
@ -598,7 +599,7 @@ static int adv7183_probe(struct i2c_client *client)
adv7183_s_std(sd, decoder->std);
fmt.format.width = 720;
fmt.format.height = 576;
adv7183_set_fmt(sd, NULL, &fmt);
adv7183_set_fmt(sd, NULL, NULL, &fmt);
/* initialize the hardware to the default control values */
ret = v4l2_ctrl_handler_setup(hdl);

View File

@ -1,18 +1,10 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* adv7343 - ADV7343 Video Encoder Driver
*
* The encoder hardware does not support SECAM.
*
* Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
*
* 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 version 2.
*
* This program is distributed .as is. WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/kernel.h>

View File

@ -1,3 +1,4 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* adv7393 - ADV7393 Video Encoder Driver
*
@ -9,15 +10,6 @@
* Based on ADV7343 driver,
*
* Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
*
* 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 version 2.
*
* This program is distributed .as is. WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/kernel.h>

View File

@ -349,6 +349,7 @@ static int adv748x_afe_get_format(struct v4l2_subdev *sd,
}
static int adv748x_afe_set_format(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *sdformat)
{

View File

@ -675,9 +675,6 @@ static int adv748x_parse_dt(struct adv748x_state *state)
continue;
}
of_node_get(ep_np);
state->endpoints[ep.port] = ep_np;
/*
* At least one input endpoint and one output endpoint shall
* be defined.
@ -689,8 +686,13 @@ static int adv748x_parse_dt(struct adv748x_state *state)
/* Store number of CSI-2 lanes used for TXA and TXB. */
ret = adv748x_parse_csi2_lanes(state, ep.port, ep_np);
if (ret)
if (ret) {
of_node_put(ep_np);
return ret;
}
of_node_get(ep_np);
state->endpoints[ep.port] = ep_np;
}
return in_found && out_found ? 0 : -ENODEV;
@ -739,7 +741,7 @@ static int adv748x_probe(struct i2c_client *client)
ret = adv748x_parse_dt(state);
if (ret) {
adv_err(state, "Failed to parse device tree");
goto err_free_mutex;
goto err_cleanup_dt;
}
/* Configure IO Regmap region */
@ -809,7 +811,6 @@ static int adv748x_probe(struct i2c_client *client)
adv748x_unregister_clients(state);
err_cleanup_dt:
adv748x_dt_cleanup(state);
err_free_mutex:
mutex_destroy(&state->mutex);
return ret;

View File

@ -226,6 +226,7 @@ static bool adv748x_csi2_is_fmt_supported(struct adv748x_csi2 *tx, u32 code)
}
static int adv748x_csi2_set_format(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *sdformat)
{

View File

@ -440,6 +440,7 @@ static int adv748x_hdmi_get_format(struct v4l2_subdev *sd,
}
static int adv748x_hdmi_set_format(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *sdformat)
{

View File

@ -1273,6 +1273,7 @@ static int adv7511_get_fmt(struct v4l2_subdev *sd,
}
static int adv7511_set_fmt(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{

View File

@ -1943,6 +1943,7 @@ static int adv76xx_get_format(struct v4l2_subdev *sd,
}
static int adv76xx_get_selection(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_selection *sel)
{
@ -1963,6 +1964,7 @@ static int adv76xx_get_selection(struct v4l2_subdev *sd,
}
static int adv76xx_set_format(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{
@ -2449,7 +2451,7 @@ static int adv76xx_set_edid(struct v4l2_subdev *sd, struct v4l2_edid *edid)
cec_s_phys_addr(state->cec_adap, parent_pa, false);
/* enable hotplug after 143 ms */
schedule_delayed_work(&state->delayed_work_enable_hotplug, HZ / 7);
schedule_delayed_work(&state->delayed_work_enable_hotplug, V4L2_SET_EDID_HPD_LOW_JIFFIES);
return 0;
}
@ -2641,8 +2643,9 @@ static int adv76xx_log_status(struct v4l2_subdev *sd)
"(16-235)" : "(0-255)",
(reg_io_0x02 & 0x08) ? "enabled" : "disabled");
}
ret = cp_read(sd, info->cp_csc) >> 4;
v4l2_info(sd, "Color space conversion: %s\n",
csc_coeff_sel_rb[cp_read(sd, info->cp_csc) >> 4]);
ret < 0 ? "" : csc_coeff_sel_rb[ret]);
if (!is_digital_input(sd))
return 0;

View File

@ -747,8 +747,9 @@ static int edid_write_vga_segment(struct v4l2_subdev *sd)
return -EIO;
}
/* enable hotplug after 200 ms */
schedule_delayed_work(&state->delayed_work_enable_hotplug, HZ / 5);
/* enable hotplug after 143 ms */
schedule_delayed_work(&state->delayed_work_enable_hotplug,
V4L2_SET_EDID_HPD_LOW_JIFFIES);
return 0;
}
@ -830,8 +831,9 @@ static int edid_write_hdmi_segment(struct v4l2_subdev *sd, u8 port)
}
cec_s_phys_addr(state->cec_adap, parent_pa, false);
/* enable hotplug after 200 ms */
schedule_delayed_work(&state->delayed_work_enable_hotplug, HZ / 5);
/* enable hotplug after 143 ms */
schedule_delayed_work(&state->delayed_work_enable_hotplug,
V4L2_SET_EDID_HPD_LOW_JIFFIES);
return 0;
}
@ -2110,6 +2112,7 @@ static int adv7842_get_format(struct v4l2_subdev *sd,
}
static int adv7842_set_format(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{

View File

@ -122,6 +122,7 @@ static int ak881x_enum_mbus_code(struct v4l2_subdev *sd,
}
static int ak881x_get_selection(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_selection *sel)
{
@ -216,7 +217,6 @@ static const struct v4l2_subdev_video_ops ak881x_subdev_video_ops = {
static const struct v4l2_subdev_pad_ops ak881x_subdev_pad_ops = {
.enum_mbus_code = ak881x_enum_mbus_code,
.get_selection = ak881x_get_selection,
.set_fmt = ak881x_fill_fmt,
.get_fmt = ak881x_fill_fmt,
};

View File

@ -1887,6 +1887,7 @@ static int alvium_init_state(struct v4l2_subdev *sd,
}
static int alvium_set_fmt(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{
@ -1922,6 +1923,7 @@ static int alvium_set_fmt(struct v4l2_subdev *sd,
}
static int alvium_set_selection(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_selection *sel)
{
@ -1957,6 +1959,7 @@ static int alvium_set_selection(struct v4l2_subdev *sd,
}
static int alvium_get_selection(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_selection *sel)
{
@ -2523,6 +2526,7 @@ static void alvium_remove(struct i2c_client *client)
* make sure to turn power off manually.
*/
pm_runtime_disable(dev);
pm_runtime_put_noidle(dev);
if (!pm_runtime_status_suspended(dev))
alvium_set_power(alvium, false);
pm_runtime_set_suspended(dev);

View File

@ -457,6 +457,7 @@ static int ar0521_get_fmt(struct v4l2_subdev *sd,
}
static int ar0521_set_fmt(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{
@ -1142,7 +1143,6 @@ static int ar0521_probe(struct i2c_client *client)
disable:
v4l2_async_unregister_subdev(&sensor->sd);
media_entity_cleanup(&sensor->sd.entity);
free_ctrls:
v4l2_ctrl_handler_free(&sensor->ctrls.handler);
entity_cleanup:

View File

@ -2189,6 +2189,7 @@ static void ccs_propagate(struct v4l2_subdev *subdev,
}
static int ccs_set_format_source(struct v4l2_subdev *subdev,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *fmt)
{
@ -2242,6 +2243,7 @@ static int ccs_set_format_source(struct v4l2_subdev *subdev,
}
static int ccs_set_format(struct v4l2_subdev *subdev,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *fmt)
{
@ -2252,7 +2254,7 @@ static int ccs_set_format(struct v4l2_subdev *subdev,
if (fmt->pad == ssd->source_pad) {
int rval;
rval = ccs_set_format_source(subdev, sd_state, fmt);
rval = ccs_set_format_source(subdev, ci, sd_state, fmt);
return rval;
}
@ -2467,6 +2469,7 @@ static void ccs_set_compose_scaler(struct v4l2_subdev *subdev,
}
/* We're only called on source pads. This function sets scaling. */
static int ccs_set_compose(struct v4l2_subdev *subdev,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_selection *sel)
{
@ -2536,6 +2539,7 @@ static int ccs_sel_supported(struct v4l2_subdev *subdev,
}
static int ccs_set_crop(struct v4l2_subdev *subdev,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_selection *sel)
{
@ -2587,6 +2591,7 @@ static void ccs_get_native_size(struct ccs_subdev *ssd, struct v4l2_rect *r)
}
static int ccs_get_selection(struct v4l2_subdev *subdev,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_selection *sel)
{
@ -2633,6 +2638,7 @@ static int ccs_get_selection(struct v4l2_subdev *subdev,
}
static int ccs_set_selection(struct v4l2_subdev *subdev,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_selection *sel)
{
@ -2655,10 +2661,10 @@ static int ccs_set_selection(struct v4l2_subdev *subdev,
switch (sel->target) {
case V4L2_SEL_TGT_CROP:
ret = ccs_set_crop(subdev, sd_state, sel);
ret = ccs_set_crop(subdev, ci, sd_state, sel);
break;
case V4L2_SEL_TGT_COMPOSE:
ret = ccs_set_compose(subdev, sd_state, sel);
ret = ccs_set_compose(subdev, ci, sd_state, sel);
break;
default:
ret = -EINVAL;

View File

@ -160,7 +160,7 @@ struct ccs_pdaf_pix_loc_pixel_desc_group {
* @main_offset_y: Start Y coordinate of PDAF pixel blocks
* @global_pdaf_type: PDAF pattern type
* @block_width: Width of a block in pixels
* @block_height: Heigth of a block in pixels
* @block_height: Height of a block in pixels
* @num_block_desc_groups: Number of block descriptor groups
* @block_desc_groups: Block descriptor groups
* @num_pixel_desc_grups: Number of pixel descriptor groups
@ -197,7 +197,7 @@ struct ccs_pdaf_pix_loc {
* @module_rules: Rules for the module
* @sensor_pdaf: PDAF data for the sensor
* @module_pdaf: PDAF data for the module
* @license_length: Lenght of the license data
* @license_length: Length of the license data
* @license: License data
* @end: Whether or not there's an end block
* @backing: Raw data, pointed to from elsewhere so keep it around

View File

@ -4,6 +4,7 @@ config VIDEO_INTEL_CVS
tristate "Intel CVS CSI-2 bridge support"
depends on I2C && ACPI && VIDEO_DEV
depends on IPU_BRIDGE || !IPU_BRIDGE
default VIDEO_INTEL_IPU6
select MEDIA_CONTROLLER
select VIDEO_V4L2_SUBDEV_API
select V4L2_FWNODE

View File

@ -21,7 +21,6 @@
#include <linux/workqueue.h>
#include <media/ipu-bridge.h>
#include <media/ipu6-pci-table.h>
#include "icvs.h"
@ -70,6 +69,13 @@ static const struct icvs_device_quirk cvs_quirk_table[] = {
ICVS_NO_CAPS |
ICVS_NO_FW_UPDATE
}, /* Lattice NX33 */
{ 0x2ac1, 0x20d1, ICVS_NO_MIPI_CONFIG |
ICVS_NO_CAPS |
ICVS_NO_FW_UPDATE
}, /*
* The Lattice device was found on a Dell laptop
* XPS 14 (Dell 14 Premium) DA14250
*/
{ 0x06CB, 0x0701, ICVS_SKIP_FW_RESET |
ICVS_HOST_SENSOR_PWR_CTRL |
ICVS_HOST_PRIV_CTRL |
@ -656,14 +662,12 @@ static int cvs_configure_dev_caps(struct icvs *ctx)
*/
static int cvs_core_probe(struct device *dev, struct i2c_client *i2c)
{
struct pci_dev *ipu = NULL;
struct pci_dev *ipu;
struct icvs *ctx;
int ret;
/* Locate IPU device */
for (unsigned int i = 0; !ipu && ipu6_pci_tbl[i].vendor; i++)
ipu = pci_get_device(ipu6_pci_tbl[i].vendor,
ipu6_pci_tbl[i].device, NULL);
ipu = ipu_bridge_get_ipu6();
for (unsigned int i = 0; !ipu && icvs_ipu7_tbl[i].vendor; i++)
ipu = pci_get_device(icvs_ipu7_tbl[i].vendor,
icvs_ipu7_tbl[i].device, NULL);
@ -725,8 +729,6 @@ static int cvs_core_probe(struct device *dev, struct i2c_client *i2c)
}
if (ctx->res == ICVS_FULLCAP) {
struct gpio_desc *wake;
ctx->rst = devm_gpiod_get(dev, "rst", GPIOD_OUT_HIGH);
if (IS_ERR(ctx->rst)) {
ret = dev_err_probe(dev, PTR_ERR(ctx->rst),
@ -734,14 +736,12 @@ static int cvs_core_probe(struct device *dev, struct i2c_client *i2c)
goto err_put_ipu;
}
wake = devm_gpiod_get(dev, "wake", GPIOD_IN);
if (IS_ERR(wake)) {
ret = dev_err_probe(dev, PTR_ERR(wake),
"failed to get wake GPIO\n");
goto err_put_ipu;
}
ctx->irq = gpiod_to_irq(wake);
/*
* Do not request the line: another device's _CRS may list
* the same pin, and its driver would then fail with -EBUSY.
*/
ctx->irq = acpi_dev_gpio_irq_get_by(ACPI_COMPANION(dev),
"wake", 0);
if (ctx->irq < 0) {
ret = dev_err_probe(dev, ctx->irq,
"failed to get wake IRQ\n");

View File

@ -13,6 +13,7 @@
#include <media/v4l2-async.h>
#include <media/v4l2-common.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-device.h>
#include <media/v4l2-event.h>
#include <media/v4l2-fwnode.h>
#include <media/v4l2-mc.h>
@ -71,19 +72,6 @@ static int csi_set_link_cfg(struct icvs *ctx, u64 link_freq)
* Streaming
*/
/**
* cvs_csi_enable_streams - Start streaming through the bridge
* @sd: Sub-device pointer
* @state: Active state
* @pad: Pad identifier (must be ICVS_CSI_PAD_SOURCE)
* @streams_mask: Streams to enable (bit 0 supported)
*
* Runtime-resumes the bridge (triggering cvs_runtime_resume() to claim CSI-2
* link ownership), fetches the link frequency, programs the MIPI configuration,
* and forwards the enable request downstream.
*
* Return: 0 on success or negative errno.
*/
static int cvs_csi_enable_streams(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
u32 pad, u64 streams_mask)
@ -129,19 +117,6 @@ static int cvs_csi_enable_streams(struct v4l2_subdev *sd,
return ret;
}
/**
* cvs_csi_disable_streams - Stop streaming through the bridge
* @sd: Sub-device pointer
* @state: Active state
* @pad: Pad identifier (must be ICVS_CSI_PAD_SOURCE)
* @streams_mask: Streams to disable (bit 0 supported)
*
* Disables the remote sensor stream then drops the PM reference acquired
* during enable. After the autosuspend delay, cvs_runtime_suspend() will
* return CSI-2 link ownership to CVS firmware.
*
* Return: 0 on success or negative errno.
*/
static int cvs_csi_disable_streams(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state,
u32 pad, u64 streams_mask)
@ -167,15 +142,6 @@ static int cvs_csi_disable_streams(struct v4l2_subdev *sd,
/*
* Pad operations / formats
*/
/**
* cvs_csi_init_state - Initialize pad formats in subdev state
* @sd: Sub-device
* @state: State container
*
* Sets all pad formats to a minimal 1x1 default.
*
* Return: 0.
*/
static int cvs_csi_init_state(struct v4l2_subdev *sd,
struct v4l2_subdev_state *state)
{
@ -186,18 +152,8 @@ static int cvs_csi_init_state(struct v4l2_subdev *sd,
return 0;
}
/**
* cvs_csi_set_fmt - Negotiate pad format
* @sd: Sub-device
* @state: State
* @format: Desired / returned format
*
* Mirrors sink format onto source pad. Accepts many media bus codes, falling
* back to Y8 if unsupported. Normalizes field setting.
*
* Return: 0.
*/
static int cvs_csi_set_fmt(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *state,
struct v4l2_subdev_format *format)
{
@ -319,17 +275,6 @@ static int cvs_csi_set_fmt(struct v4l2_subdev *sd,
return 0;
}
/**
* cvs_csi_get_mbus_config - Provide current CSI-2 bus configuration
* @sd: Sub-device
* @pad: Pad index
* @cfg: Returned bus config
*
* Fills lane ordering and number of lanes; retrieves link frequency from
* remote entity.
*
* Return: 0 on success or negative errno.
*/
static int cvs_csi_get_mbus_config(struct v4l2_subdev *sd, unsigned int pad,
struct v4l2_mbus_config *cfg)
{
@ -384,23 +329,12 @@ static const struct media_entity_operations cvs_csi_entity_ops = {
/*
* Async notifier
*/
/**
* cvs_csi_notify_bound - Remote sensor bound callback
* @notifier: Async notifier
* @sd: Remote subdev
* @asc: Async match connection
*
* Locates the source pad of the remote sensor and creates a media link to
* the CVS bridge sink pad enabling it by default.
*
* Return: 0 on success or negative errno.
*/
static int cvs_csi_notify_bound(struct v4l2_async_notifier *notifier,
struct v4l2_subdev *sd,
struct v4l2_async_connection *asc)
{
struct icvs *ctx = notifier_to_csi(notifier);
int pad;
int pad, ret;
pad = media_entity_get_fwnode_pad(&sd->entity, asc->match.fwnode,
MEDIA_PAD_FL_SOURCE);
@ -409,17 +343,15 @@ static int cvs_csi_notify_bound(struct v4l2_async_notifier *notifier,
ctx->remote = &sd->entity.pads[pad];
return media_create_pad_link(&sd->entity, pad, &ctx->subdev.entity,
ICVS_CSI_PAD_SINK, MEDIA_LNK_FL_ENABLED |
MEDIA_LNK_FL_IMMUTABLE);
ret = media_create_pad_link(&sd->entity, pad, &ctx->subdev.entity,
ICVS_CSI_PAD_SINK, MEDIA_LNK_FL_ENABLED |
MEDIA_LNK_FL_IMMUTABLE);
if (ret)
return ret;
return v4l2_device_register_subdev_nodes(sd->v4l2_dev);
}
/**
* cvs_csi_notify_unbind - Remote sensor unbind callback
* @notifier: Notifier
* @sd: Remote subdev
* @asc: Connection
*/
static void cvs_csi_notify_unbind(struct v4l2_async_notifier *notifier,
struct v4l2_subdev *sd,
struct v4l2_async_connection *asc)
@ -437,14 +369,6 @@ static const struct v4l2_async_notifier_operations cvs_csi_notify_ops = {
/*
* Controls
*/
/**
* cvs_csi_init_controls - Initialize V4L2 controls
* @ctx: CVS context
*
* Currently sets up a read-only privacy control placeholder.
*
* Return: 0 on success or negative errno.
*/
static int cvs_csi_init_controls(struct icvs *ctx)
{
struct v4l2_ctrl *privacy_ctrl;

View File

@ -1771,6 +1771,7 @@ static int cx25840_s_ctrl(struct v4l2_ctrl *ctrl)
/* ----------------------------------------------------------------------- */
static int cx25840_set_fmt(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_format *format)
{
@ -2289,29 +2290,27 @@ static int cx25840_init(struct v4l2_subdev *sd, u32 val)
{
struct cx25840_state *state = to_state(sd);
if (!is_cx2584x(state))
return -EOPNOTSUPP;
state->generic_mode = true;
if (is_cx2584x(state)) {
/* set datasheet video output defaults */
state->vid_config = CX25840_VCONFIG_FMT_BT656 |
CX25840_VCONFIG_RES_8BIT |
CX25840_VCONFIG_VBIRAW_DISABLED |
CX25840_VCONFIG_ANCDATA_ENABLED |
CX25840_VCONFIG_TASKBIT_ONE |
CX25840_VCONFIG_ACTIVE_HORIZONTAL |
CX25840_VCONFIG_VALID_NORMAL |
CX25840_VCONFIG_HRESETW_NORMAL |
CX25840_VCONFIG_CLKGATE_NONE |
CX25840_VCONFIG_DCMODE_DWORDS |
CX25840_VCONFIG_IDID0S_NORMAL |
CX25840_VCONFIG_VIPCLAMP_DISABLED;
/* set datasheet video output defaults */
state->vid_config = CX25840_VCONFIG_FMT_BT656 |
CX25840_VCONFIG_RES_8BIT |
CX25840_VCONFIG_VBIRAW_DISABLED |
CX25840_VCONFIG_ANCDATA_ENABLED |
CX25840_VCONFIG_TASKBIT_ONE |
CX25840_VCONFIG_ACTIVE_HORIZONTAL |
CX25840_VCONFIG_VALID_NORMAL |
CX25840_VCONFIG_HRESETW_NORMAL |
CX25840_VCONFIG_CLKGATE_NONE |
CX25840_VCONFIG_DCMODE_DWORDS |
CX25840_VCONFIG_IDID0S_NORMAL |
CX25840_VCONFIG_VIPCLAMP_DISABLED;
/* add additional settings */
cx25840_vconfig_add(state, val);
} else {
/* TODO: generic mode needs to be developed for other chips */
WARN_ON(1);
}
/* add additional settings */
cx25840_vconfig_add(state, val);
return 0;
}

View File

@ -373,6 +373,7 @@ static int ub913_set_routing(struct v4l2_subdev *sd,
}
static int ub913_set_fmt(struct v4l2_subdev *sd,
const struct v4l2_subdev_client_info *ci,
struct v4l2_subdev_state *state,
struct v4l2_subdev_format *format)
{

Some files were not shown because too many files have changed in this diff Show More