Skip to content

Commit 61da593

Browse files
committed
Merge tag 'media/v6.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: - v4l core: subdev frame interval now supports which field - v4l kapi: moves and renames the init_cfg pad op to init_state as an internal op. - new sensor drivers: gc0308, gc2145, Avnet Alvium, ov64a40, tw9900 - new camera driver: STM32 DCMIPP - s5p-mfc has gained MFC v12 support - new ISP driver added to staging: Starfive - new stateful encoder/decoded: Wave5 codec It is found on the J721S2 SoC, JH7100 SoC, ssd202d SoC. Etc. - fwnode gained support for MIPI "DisCo for Imaging" (https://www.mipi.org/specifications/mipi-disco-imaging) - as usual, lots of cleanups, fixups and driver improvements. * tag 'media/v6.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (309 commits) media: i2c: thp7312: select CONFIG_FW_LOADER media: i2c: mt9m114: use fsleep() in place of udelay() media: videobuf2: core: Rename min_buffers_needed field in vb2_queue media: i2c: thp7312: Store frame interval in subdev state media: docs: uAPI: Fix documentation of 'which' field for routing ioctls media: docs: uAPI: Expand error documentation for invalid 'which' value media: docs: uAPI: Clarify error documentation for invalid 'which' value media: v4l2-subdev: Store frame interval in subdev state media: v4l2-subdev: Add which field to struct v4l2_subdev_frame_interval media: v4l2-subdev: Turn .[gs]_frame_interval into pad operations media: v4l: subdev: Move out subdev state lock macros outside CONFIG_MEDIA_CONTROLLER media: s5p-mfc: DPB Count Independent of VIDIOC_REQBUF media: s5p-mfc: Load firmware for each run in MFCv12. media: s5p-mfc: Set context for valid case before calling try_run media: s5p-mfc: Add support for DMABUF for encoder media: s5p-mfc: Add support for UHD encoding. media: s5p-mfc: Add support for rate controls in MFCv12 media: s5p-mfc: Add YV12 and I420 multiplanar format support media: s5p-mfc: Add initial support for MFCv12 media: s5p-mfc: Rename IS_MFCV10 macro ...
2 parents a3cc31e + 60a031b commit 61da593

File tree

478 files changed

+38136
-5193
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

478 files changed

+38136
-5193
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
.. SPDX-License-Identifier: GPL-2.0
2+
3+
.. include:: <isonum.txt>
4+
5+
================================
6+
Starfive Camera Subsystem driver
7+
================================
8+
9+
Introduction
10+
------------
11+
12+
This file documents the driver for the Starfive Camera Subsystem found on
13+
Starfive JH7110 SoC. The driver is located under drivers/staging/media/starfive/
14+
camss.
15+
16+
The driver implements V4L2, Media controller and v4l2_subdev interfaces. Camera
17+
sensor using V4L2 subdev interface in the kernel is supported.
18+
19+
The driver has been successfully used on the Gstreamer 1.18.5 with v4l2src
20+
plugin.
21+
22+
23+
Starfive Camera Subsystem hardware
24+
----------------------------------
25+
26+
The Starfive Camera Subsystem hardware consists of::
27+
28+
|\ +---------------+ +-----------+
29+
+----------+ | \ | | | |
30+
| | | | | | | |
31+
| MIPI |----->| |----->| ISP |----->| |
32+
| | | | | | | |
33+
+----------+ | | | | | Memory |
34+
|MUX| +---------------+ | Interface |
35+
+----------+ | | | |
36+
| | | |---------------------------->| |
37+
| Parallel |----->| | | |
38+
| | | | | |
39+
+----------+ | / | |
40+
|/ +-----------+
41+
42+
- MIPI: The MIPI interface, receiving data from a MIPI CSI-2 camera sensor.
43+
44+
- Parallel: The parallel interface, receiving data from a parallel sensor.
45+
46+
- ISP: The ISP, processing raw Bayer data from an image sensor and producing
47+
YUV frames.
48+
49+
50+
Topology
51+
--------
52+
53+
The media controller pipeline graph is as follows:
54+
55+
.. _starfive_camss_graph:
56+
57+
.. kernel-figure:: starfive_camss_graph.dot
58+
:alt: starfive_camss_graph.dot
59+
:align: center
60+
61+
The driver has 2 video devices:
62+
63+
- capture_raw: The capture device, capturing image data directly from a sensor.
64+
- capture_yuv: The capture device, capturing YUV frame data processed by the
65+
ISP module
66+
67+
The driver has 3 subdevices:
68+
69+
- stf_isp: is responsible for all the isp operations, outputs YUV frames.
70+
- cdns_csi2rx: a CSI-2 bridge supporting up to 4 CSI lanes in input, and 4
71+
different pixel streams in output.
72+
- imx219: an image sensor, image data is sent through MIPI CSI-2.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
digraph board {
2+
rankdir=TB
3+
n00000001 [label="{{<port0> 0} | stf_isp\n/dev/v4l-subdev0 | {<port1> 1}}", shape=Mrecord, style=filled, fillcolor=green]
4+
n00000001:port1 -> n00000008 [style=dashed]
5+
n00000004 [label="capture_raw\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
6+
n00000008 [label="capture_yuv\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
7+
n0000000e [label="{{<port0> 0} | cdns_csi2rx.19800000.csi-bridge\n | {<port1> 1 | <port2> 2 | <port3> 3 | <port4> 4}}", shape=Mrecord, style=filled, fillcolor=green]
8+
n0000000e:port1 -> n00000001:port0 [style=dashed]
9+
n0000000e:port1 -> n00000004 [style=dashed]
10+
n00000018 [label="{{} | imx219 6-0010\n/dev/v4l-subdev1 | {<port0> 0}}", shape=Mrecord, style=filled, fillcolor=green]
11+
n00000018:port0 -> n0000000e:port0 [style=bold]
12+
}

Documentation/admin-guide/media/v4l-drivers.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Video4Linux (V4L) driver-specific documentation
2828
si470x
2929
si4713
3030
si476x
31+
starfive_camss
3132
vimc
3233
visl
3334
vivid

Documentation/admin-guide/media/visl.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ The following codecs are supported:
7171
- VP9
7272
- H.264
7373
- HEVC
74+
- AV1
7475

7576
visl trace events
7677
-----------------
@@ -79,6 +80,7 @@ The trace events are defined on a per-codec basis, e.g.:
7980
.. code-block:: bash
8081
8182
$ ls /sys/kernel/tracing/events/ | grep visl
83+
visl_av1_controls
8284
visl_fwht_controls
8385
visl_h264_controls
8486
visl_hevc_controls
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/media/cnm,wave521c.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Chips&Media Wave 5 Series multi-standard codec IP
8+
9+
maintainers:
10+
- Nas Chung <[email protected]>
11+
- Jackson Lee <[email protected]>
12+
13+
description:
14+
The Chips&Media WAVE codec IP is a multi format video encoder/decoder
15+
16+
properties:
17+
compatible:
18+
items:
19+
- enum:
20+
- ti,k3-j721s2-wave521c
21+
- const: cnm,wave521c
22+
23+
reg:
24+
maxItems: 1
25+
26+
clocks:
27+
items:
28+
- description: VCODEC clock
29+
30+
interrupts:
31+
maxItems: 1
32+
33+
power-domains:
34+
maxItems: 1
35+
36+
resets:
37+
maxItems: 1
38+
39+
sram:
40+
$ref: /schemas/types.yaml#/definitions/phandle
41+
description:
42+
The VPU uses the SRAM to store some of the reference data instead of
43+
storing it on DMA memory. It is mainly used for the purpose of reducing
44+
bandwidth.
45+
46+
required:
47+
- compatible
48+
- reg
49+
- clocks
50+
51+
additionalProperties: false
52+
53+
examples:
54+
- |
55+
vpu: video-codec@12345678 {
56+
compatible = "ti,k3-j721s2-wave521c", "cnm,wave521c";
57+
reg = <0x12345678 0x1000>;
58+
clocks = <&clks 42>;
59+
interrupts = <42>;
60+
sram = <&sram>;
61+
};
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/media/i2c/alliedvision,alvium-csi2.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Allied Vision Alvium Camera
8+
9+
maintainers:
10+
- Tommaso Merciai <[email protected]>
11+
- Martin Hecht <[email protected]>
12+
13+
allOf:
14+
- $ref: /schemas/media/video-interface-devices.yaml#
15+
16+
properties:
17+
compatible:
18+
const: alliedvision,alvium-csi2
19+
20+
reg:
21+
maxItems: 1
22+
23+
vcc-ext-in-supply:
24+
description: |
25+
The regulator that supplies power to the VCC_EXT_IN pins.
26+
27+
port:
28+
description: Digital Output Port
29+
$ref: /schemas/graph.yaml#/$defs/port-base
30+
additionalProperties: false
31+
32+
properties:
33+
endpoint:
34+
$ref: /schemas/media/video-interfaces.yaml#
35+
unevaluatedProperties: false
36+
37+
properties:
38+
link-frequencies: true
39+
40+
data-lanes:
41+
minItems: 1
42+
items:
43+
- const: 1
44+
- const: 2
45+
- const: 3
46+
- const: 4
47+
48+
required:
49+
- data-lanes
50+
- link-frequencies
51+
52+
required:
53+
- compatible
54+
- reg
55+
- vcc-ext-in-supply
56+
- port
57+
58+
additionalProperties: false
59+
60+
examples:
61+
- |
62+
i2c {
63+
#address-cells = <1>;
64+
#size-cells = <0>;
65+
66+
alvium: camera@3c {
67+
compatible = "alliedvision,alvium-csi2";
68+
reg = <0x3c>;
69+
vcc-ext-in-supply = <&reg_vcc_ext_in>;
70+
71+
port {
72+
alvium_out: endpoint {
73+
remote-endpoint = <&mipi_csi_0_in>;
74+
data-lanes = <1 2 3 4>;
75+
link-frequencies = /bits/ 64 <681250000>;
76+
};
77+
};
78+
};
79+
};
80+
81+
...

Documentation/devicetree/bindings/media/i2c/asahi-kasei,ak7375.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ description:
1515

1616
properties:
1717
compatible:
18-
const: asahi-kasei,ak7375
18+
enum:
19+
- asahi-kasei,ak7345
20+
- asahi-kasei,ak7375
1921

2022
reg:
2123
maxItems: 1
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/media/i2c/galaxycore,gc0308.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Galaxycore GC0308 and GC0309 Image Sensors
8+
9+
maintainers:
10+
- Sebastian Reichel <[email protected]>
11+
12+
description: |
13+
The GalaxyCore GC0308 (1/6.5") and GC0309 (1/9") are 640x480 VGA sensors
14+
programmable through an I2C interface and connected via parallel bus.
15+
They include an ISP capable of auto exposure and auto white balance.
16+
17+
allOf:
18+
- $ref: ../video-interface-devices.yaml#
19+
20+
properties:
21+
compatible:
22+
oneOf:
23+
- const: galaxycore,gc0308
24+
- items:
25+
- const: galaxycore,gc0309
26+
- const: galaxycore,gc0308
27+
28+
reg:
29+
const: 0x21
30+
31+
clocks:
32+
description: Reference to the xclk clock.
33+
maxItems: 1
34+
35+
reset-gpios:
36+
description: GPIO descriptor for the reset pin.
37+
maxItems: 1
38+
39+
powerdown-gpios:
40+
description: GPIO descriptor for the powerdown pin.
41+
maxItems: 1
42+
43+
vdd28-supply:
44+
description: 2.8V supply
45+
46+
port:
47+
$ref: /schemas/graph.yaml#/$defs/port-base
48+
description: |
49+
Video output port.
50+
51+
properties:
52+
endpoint:
53+
$ref: /schemas/media/video-interfaces.yaml#
54+
unevaluatedProperties: false
55+
56+
properties:
57+
bus-width: true
58+
data-shift: true
59+
hsync-active: true
60+
vsync-active: true
61+
data-active: true
62+
pclk-sample: true
63+
64+
required:
65+
- bus-width
66+
67+
additionalProperties: false
68+
69+
required:
70+
- compatible
71+
- reg
72+
- clocks
73+
- powerdown-gpios
74+
- port
75+
76+
additionalProperties: false
77+
78+
examples:
79+
- |
80+
#include <dt-bindings/gpio/gpio.h>
81+
82+
i2c {
83+
#address-cells = <1>;
84+
#size-cells = <0>;
85+
86+
camera-sensor@21 {
87+
compatible = "galaxycore,gc0308";
88+
reg = <0x21>;
89+
clocks = <&camera_clk>;
90+
powerdown-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
91+
reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
92+
vdd28-supply = <&vdd28>;
93+
94+
port {
95+
gc0308_ep: endpoint {
96+
remote-endpoint = <&parallel_from_gc0308>;
97+
bus-width = <8>;
98+
data-shift = <2>; /* lines 9:2 are used */
99+
hsync-active = <1>; /* active high */
100+
vsync-active = <1>; /* active high */
101+
data-active = <1>; /* active high */
102+
pclk-sample = <1>; /* sample on rising edge */
103+
};
104+
};
105+
};
106+
};
107+
108+
...

0 commit comments

Comments
 (0)