Skip to content

Commit b1bc554

Browse files
committed
Merge tag 'media/v6.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: - New sensor drivers: gc05a2, gc08a3 and imx283 - New serializer/deserializer drivers: max96714 and max96717 - New JPEG encoder driver: e5010 - Support for Raspberry Pi PiSP Backend (BE) ISP driver - Old documentation for av7110 driver removed, as a new version was added as Documentation/userspace-api/media/dvb/legacy*.rst - atompisp: Linux firmwares are now available, so drop firmware-related task from TODO and update firmware logic - The imx258 driver has gained several improvements - wave5 driver has gained support for HEVC decoding - em28xx gained support for MyGica UTV3 - av7110 budget-patch driver removed - Lots of other cleanups, improvements and fixes * tag 'media/v6.11-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (301 commits) media: raspberrypi: Switch to remove_new media: uapi: pisp_be_config: Add extra config fields media: uapi: pisp_be_config: Re-sort pisp_be_tiles_config media: uapi: pisp_common: Capitalize all macros media: uapi: pisp_common: Add 32 bpp format test media: uapi: pisp_be_config: Drop BIT() from uAPI media: stm32: dcmipp: correct error handling in dcmipp_create_subdevs media: atomisp: Fix spelling mistakes in sh_css_sp.c media: atomisp: Fix spelling mistake in ia_css_debug.c media: atomisp: Fix spelling mistake in hmm_bo.c media: atomisp: Fix spelling mistake in ia_css_eed1_8.host.c media: atomisp: Fix spelling mistake in sh_css_internal.h media: atomisp: Fix spelling mistake "pipline" -> "pipeline" media: atomisp: Remove unused GPIO related defines and APIs media: atomisp: Replace COMPILATION_ERROR_IF() by static_assert() media: atomisp: Clean up unused macros from math_support.h media: atomisp: csi2-bridge: Add DMI quirk for OV5693 on Xiaomi Mipad2 media: atomisp: Update TODO media: atomisp: Prefix firmware paths with "intel/ipu/" media: atomisp: Remove firmware_name module parameter ...
2 parents 0ffb8a4 + 68a7210 commit b1bc554

File tree

405 files changed

+21983
-10210
lines changed

Some content is hidden

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

405 files changed

+21983
-10210
lines changed

Documentation/admin-guide/media/em28xx-cardlist.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,3 +438,11 @@ EM28xx cards list
438438
- MyGica iGrabber
439439
- em2860
440440
- 1f4d:1abe
441+
* - 106
442+
- Hauppauge USB QuadHD ATSC
443+
- em28274
444+
- 2040:846d
445+
* - 107
446+
- MyGica UTV3 Analog USB2.0 TV Box
447+
- em2860
448+
- eb1a:2860

Documentation/admin-guide/media/ipu6-isys.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,16 +135,16 @@ sensor ov2740 on Lenovo X1 Yoga laptop.
135135
.. code-block:: none
136136
137137
media-ctl -l "\"ov2740 14-0036\":0 -> \"Intel IPU6 CSI2 1\":0[1]"
138-
media-ctl -l "\"Intel IPU6 CSI2 1\":1 -> \"Intel IPU6 ISYS Capture 0\":0[5]"
139-
media-ctl -l "\"Intel IPU6 CSI2 1\":2 -> \"Intel IPU6 ISYS Capture 1\":0[5]"
138+
media-ctl -l "\"Intel IPU6 CSI2 1\":1 -> \"Intel IPU6 ISYS Capture 0\":0[1]"
139+
media-ctl -l "\"Intel IPU6 CSI2 1\":2 -> \"Intel IPU6 ISYS Capture 1\":0[1]"
140140
141141
# set routing
142-
media-ctl -v -R "\"Intel IPU6 CSI2 1\" [0/0->1/0[1],0/1->2/1[1]]"
142+
media-ctl -R "\"Intel IPU6 CSI2 1\" [0/0->1/0[1],0/1->2/1[1]]"
143143
144-
media-ctl -v "\"Intel IPU6 CSI2 1\":0/0 [fmt:SGRBG10/1932x1092]"
145-
media-ctl -v "\"Intel IPU6 CSI2 1\":0/1 [fmt:GENERIC_8/97x1]"
146-
media-ctl -v "\"Intel IPU6 CSI2 1\":1/0 [fmt:SGRBG10/1932x1092]"
147-
media-ctl -v "\"Intel IPU6 CSI2 1\":2/1 [fmt:GENERIC_8/97x1]"
144+
media-ctl -V "\"Intel IPU6 CSI2 1\":0/0 [fmt:SGRBG10/1932x1092]"
145+
media-ctl -V "\"Intel IPU6 CSI2 1\":0/1 [fmt:GENERIC_8/97x1]"
146+
media-ctl -V "\"Intel IPU6 CSI2 1\":1/0 [fmt:SGRBG10/1932x1092]"
147+
media-ctl -V "\"Intel IPU6 CSI2 1\":2/1 [fmt:GENERIC_8/97x1]"
148148
149149
CAPTURE_DEV=$(media-ctl -e "Intel IPU6 ISYS Capture 0")
150150
./yavta --data-prefix -c100 -n5 -I -s1932x1092 --file=/tmp/frame-#.bin \
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
digraph board {
2+
rankdir=TB
3+
n00000001 [label="{{<port0> 0 | <port1> 1 | <port2> 2 | <port7> 7} | pispbe\n | {<port3> 3 | <port4> 4 | <port5> 5 | <port6> 6}}", shape=Mrecord, style=filled, fillcolor=green]
4+
n00000001:port3 -> n0000001c [style=bold]
5+
n00000001:port4 -> n00000022 [style=bold]
6+
n00000001:port5 -> n00000028 [style=bold]
7+
n00000001:port6 -> n0000002e [style=bold]
8+
n0000000a [label="pispbe-input\n/dev/video0", shape=box, style=filled, fillcolor=yellow]
9+
n0000000a -> n00000001:port0 [style=bold]
10+
n00000010 [label="pispbe-tdn_input\n/dev/video1", shape=box, style=filled, fillcolor=yellow]
11+
n00000010 -> n00000001:port1 [style=bold]
12+
n00000016 [label="pispbe-stitch_input\n/dev/video2", shape=box, style=filled, fillcolor=yellow]
13+
n00000016 -> n00000001:port2 [style=bold]
14+
n0000001c [label="pispbe-output0\n/dev/video3", shape=box, style=filled, fillcolor=yellow]
15+
n00000022 [label="pispbe-output1\n/dev/video4", shape=box, style=filled, fillcolor=yellow]
16+
n00000028 [label="pispbe-tdn_output\n/dev/video5", shape=box, style=filled, fillcolor=yellow]
17+
n0000002e [label="pispbe-stitch_output\n/dev/video6", shape=box, style=filled, fillcolor=yellow]
18+
n00000034 [label="pispbe-config\n/dev/video7", shape=box, style=filled, fillcolor=yellow]
19+
n00000034 -> n00000001:port7 [style=bold]
20+
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
.. SPDX-License-Identifier: GPL-2.0
2+
3+
=========================================================
4+
Raspberry Pi PiSP Back End Memory-to-Memory ISP (pisp-be)
5+
=========================================================
6+
7+
The PiSP Back End
8+
=================
9+
10+
The PiSP Back End is a memory-to-memory Image Signal Processor (ISP) which reads
11+
image data from DRAM memory and performs image processing as specified by the
12+
application through the parameters in a configuration buffer, before writing
13+
pixel data back to memory through two distinct output channels.
14+
15+
The ISP registers and programming model are documented in the `Raspberry Pi
16+
Image Signal Processor (PiSP) Specification document`_
17+
18+
The PiSP Back End ISP processes images in tiles. The handling of image
19+
tessellation and the computation of low-level configuration parameters is
20+
realized by a free software library called `libpisp
21+
<https://github.com/raspberrypi/libpisp>`_.
22+
23+
The full image processing pipeline, which involves capturing RAW Bayer data from
24+
an image sensor through a MIPI CSI-2 compatible capture interface, storing them
25+
in DRAM memory and processing them in the PiSP Back End to obtain images usable
26+
by an application is implemented in `libcamera <https://libcamera.org>`_ as
27+
part of the Raspberry Pi platform support.
28+
29+
The pisp-be driver
30+
==================
31+
32+
The Raspberry Pi PiSP Back End (pisp-be) driver is located under
33+
drivers/media/platform/raspberrypi/pisp-be. It uses the `V4L2 API` to register
34+
a number of video capture and output devices, the `V4L2 subdev API` to register
35+
a subdevice for the ISP that connects the video devices in a single media graph
36+
realized using the `Media Controller (MC) API`.
37+
38+
The media topology registered by the `pisp-be` driver is represented below:
39+
40+
.. _pips-be-topology:
41+
42+
.. kernel-figure:: raspberrypi-pisp-be.dot
43+
:alt: Diagram of the default media pipeline topology
44+
:align: center
45+
46+
47+
The media graph registers the following video device nodes:
48+
49+
- pispbe-input: output device for images to be submitted to the ISP for
50+
processing.
51+
- pispbe-tdn_input: output device for temporal denoise.
52+
- pispbe-stitch_input: output device for image stitching (HDR).
53+
- pispbe-output0: first capture device for processed images.
54+
- pispbe-output1: second capture device for processed images.
55+
- pispbe-tdn_output: capture device for temporal denoise.
56+
- pispbe-stitch_output: capture device for image stitching (HDR).
57+
- pispbe-config: output device for ISP configuration parameters.
58+
59+
pispbe-input
60+
------------
61+
62+
Images to be processed by the ISP are queued to the `pispbe-input` output device
63+
node. For a list of image formats supported as input to the ISP refer to the
64+
`Raspberry Pi Image Signal Processor (PiSP) Specification document`_.
65+
66+
pispbe-tdn_input, pispbe-tdn_output
67+
-----------------------------------
68+
69+
The `pispbe-tdn_input` output video device receives images to be processed by
70+
the temporal denoise block which are captured from the `pispbe-tdn_output`
71+
capture video device. Userspace is responsible for maintaining queues on both
72+
devices, and ensuring that buffers completed on the output are queued to the
73+
input.
74+
75+
pispbe-stitch_input, pispbe-stitch_output
76+
-----------------------------------------
77+
78+
To realize HDR (high dynamic range) image processing the image stitching and
79+
tonemapping blocks are used. The `pispbe-stitch_output` writes images to memory
80+
and the `pispbe-stitch_input` receives the previously written frame to process
81+
it along with the current input image. Userspace is responsible for maintaining
82+
queues on both devices, and ensuring that buffers completed on the output are
83+
queued to the input.
84+
85+
pispbe-output0, pispbe-output1
86+
------------------------------
87+
88+
The two capture devices write to memory the pixel data as processed by the ISP.
89+
90+
pispbe-config
91+
-------------
92+
93+
The `pispbe-config` output video devices receives a buffer of configuration
94+
parameters that define the desired image processing to be performed by the ISP.
95+
96+
The format of the ISP configuration parameter is defined by
97+
:c:type:`pisp_be_tiles_config` C structure and the meaning of each parameter is
98+
described in the `Raspberry Pi Image Signal Processor (PiSP) Specification
99+
document`_.
100+
101+
ISP configuration
102+
=================
103+
104+
The ISP configuration is described solely by the content of the parameters
105+
buffer. The only parameter that userspace needs to configure using the V4L2 API
106+
is the image format on the output and capture video devices for validation of
107+
the content of the parameters buffer.
108+
109+
.. _Raspberry Pi Image Signal Processor (PiSP) Specification document: https://datasheets.raspberrypi.com/camera/raspberry-pi-image-signal-processor-specification.pdf

Documentation/admin-guide/media/tuner-cardlist.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,6 @@ Tuner number Card name
9797
89 Sony BTF-PG472Z PAL/SECAM
9898
90 Sony BTF-PK467Z NTSC-M-JP
9999
91 Sony BTF-PB463Z NTSC-M
100+
92 Silicon Labs Si2157 tuner
101+
93 Tena TNF931D-DFDR1
100102
============ =====================================================

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Video4Linux (V4L) driver-specific documentation
2323
omap4_camera
2424
philips
2525
qcom_camss
26+
raspberrypi-pisp-be
2627
rcar-fdp1
2728
rkisp1
2829
saa7134

0 commit comments

Comments
 (0)