mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
[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:
commit
42e6549eaf
|
|
@ -450,3 +450,7 @@ EM28xx cards list
|
|||
- StarTech SVID2USB232
|
||||
- em28281
|
||||
- eb1a:8286
|
||||
* - 114
|
||||
- StarTech.com SVID2USB23
|
||||
- em2860
|
||||
- eb1a:5051
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
121
Documentation/devicetree/bindings/media/i2c/himax,hm1246.yaml
Normal file
121
Documentation/devicetree/bindings/media/i2c/himax,hm1246.yaml
Normal 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -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 = <®_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 {
|
||||
|
|
|
|||
177
Documentation/devicetree/bindings/media/i2c/ite,it6625.yaml
Normal file
177
Documentation/devicetree/bindings/media/i2c/ite,it6625.yaml
Normal 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
242
Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml
Normal file
242
Documentation/devicetree/bindings/media/i2c/maxim,max9296a.yaml
Normal 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
117
Documentation/devicetree/bindings/media/i2c/samsung,s5kjn5.yaml
Normal file
117
Documentation/devicetree/bindings/media/i2c/samsung,s5kjn5.yaml
Normal 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
||||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
114
Documentation/devicetree/bindings/media/i2c/sony,imx576.yaml
Normal file
114
Documentation/devicetree/bindings/media/i2c/sony,imx576.yaml
Normal 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
300
Documentation/devicetree/bindings/media/qcom,glymur-camss.yaml
Normal file
300
Documentation/devicetree/bindings/media/qcom,glymur-camss.yaml
Normal 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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>,
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ properties:
|
|||
- rockchip,rk3568-mipi-csi2
|
||||
- items:
|
||||
- enum:
|
||||
- rockchip,rk3576-mipi-csi2
|
||||
- rockchip,rk3588-mipi-csi2
|
||||
- const: rockchip,rk3568-mipi-csi2
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
@ -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::
|
||||
|
||||
|
|
|
|||
14
Documentation/userspace-api/media/drivers/dcmipp.rst
Normal file
14
Documentation/userspace-api/media/drivers/dcmipp.rst
Normal 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.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
95
MAINTAINERS
95
MAINTAINERS
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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 = <®_cam>;
|
||||
VDIG-supply = <®_cam>;
|
||||
VDDL-supply = <®_cam>;
|
||||
orientation = <2>;
|
||||
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
|
||||
rotation = <0>;
|
||||
|
||||
port {
|
||||
|
|
|
|||
|
|
@ -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 = <®_vcam_1v2>;
|
||||
vddio-supply = <®_csi_1v8>;
|
||||
rotation = <90>;
|
||||
orientation = <0>;
|
||||
orientation = <MEDIA_ORIENTATION_FRONT>;
|
||||
|
||||
port {
|
||||
camera1_ep: endpoint {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 = <®_cam_j1>;
|
||||
VDDL-supply = <®_cam_j1>;
|
||||
|
||||
orientation = <2>;
|
||||
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
|
||||
rotation = <0>;
|
||||
|
||||
port {
|
||||
|
|
|
|||
|
|
@ -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 = <®_cam_j1>;
|
||||
vddd-supply = <®_cam_j1>;
|
||||
|
||||
orientation = <2>;
|
||||
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
|
||||
rotation = <0>;
|
||||
|
||||
port {
|
||||
|
|
|
|||
|
|
@ -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 = <®_cam_j2>;
|
||||
VDDL-supply = <®_cam_j2>;
|
||||
|
||||
orientation = <2>;
|
||||
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
|
||||
rotation = <0>;
|
||||
|
||||
port {
|
||||
|
|
|
|||
|
|
@ -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 = <®_cam_j2>;
|
||||
vddd-supply = <®_cam_j2>;
|
||||
|
||||
orientation = <2>;
|
||||
orientation = <MEDIA_ORIENTATION_EXTERNAL>;
|
||||
rotation = <0>;
|
||||
|
||||
port {
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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) &&
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue
Block a user