Skip to content

Commit be3ca57

Browse files
committed
Merge tag 'media/v6.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: - the old V4L2 core videobuf kAPI was finally removed. All media drivers should now be using VB2 kAPI - new automotive driver: mgb4 - new platform video driver: npcm-video - new sensor driver: mt9m114 - new TI driver used in conjunction with Cadence CSI2RX IP to bridge TI-specific parts - ir-rx51 was removed and the N900 DT binding was moved to the pwm-ir-tx generic driver - drop atomisp-specific ov5693, using the upstream driver instead - the camss driver has gained RDI3 support for VFE 17x - the atomisp driver now detects ISP2400 or ISP2401 at run time. No need to set it up at build time anymore - lots of driver fixes, cleanups and improvements * tag 'media/v6.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (377 commits) media: nuvoton: VIDEO_NPCM_VCD_ECE should depend on ARCH_NPCM media: venus: Fix firmware path for resources media: venus: hfi_cmds: Replace one-element array with flex-array member and use __counted_by media: venus: hfi_parser: Add check to keep the number of codecs within range media: venus: hfi: add checks to handle capabilities from firmware media: venus: hfi: fix the check to handle session buffer requirement media: venus: hfi: add checks to perform sanity on queue pointers media: platform: cadence: select MIPI_DPHY dependency media: MAINTAINERS: Fix path for J721E CSI2RX bindings media: cec: meson: always include meson sub-directory in Makefile media: videobuf2: Fix IS_ERR checking in vb2_dc_put_userptr() media: platform: mtk-mdp3: fix uninitialized variable in mdp_path_config() media: mediatek: vcodec: using encoder device to alloc/free encoder memory media: imx-jpeg: notify source chagne event when the first picture parsed media: cx231xx: Use EP5_BUF_SIZE macro media: siano: Drop unnecessary error check for debugfs_create_dir/file() media: mediatek: vcodec: Handle invalid encoder vsi media: aspeed: Drop unnecessary error check for debugfs_create_file() Documentation: media: buffer.rst: fix V4L2_BUF_FLAG_PREPARED Documentation: media: gen-errors.rst: fix confusing ENOTTY description ...
2 parents d2f51b3 + 3e23841 commit be3ca57

File tree

505 files changed

+17217
-18024
lines changed

Some content is hidden

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

505 files changed

+17217
-18024
lines changed
Lines changed: 374 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,374 @@
1+
.. SPDX-License-Identifier: GPL-2.0
2+
3+
====================
4+
mgb4 sysfs interface
5+
====================
6+
7+
The mgb4 driver provides a sysfs interface, that is used to configure video
8+
stream related parameters (some of them must be set properly before the v4l2
9+
device can be opened) and obtain the video device/stream status.
10+
11+
There are two types of parameters - global / PCI card related, found under
12+
``/sys/class/video4linux/videoX/device`` and module specific found under
13+
``/sys/class/video4linux/videoX``.
14+
15+
16+
Global (PCI card) parameters
17+
============================
18+
19+
**module_type** (R):
20+
Module type.
21+
22+
| 0 - No module present
23+
| 1 - FPDL3
24+
| 2 - GMSL
25+
26+
**module_version** (R):
27+
Module version number. Zero in case of a missing module.
28+
29+
**fw_type** (R):
30+
Firmware type.
31+
32+
| 1 - FPDL3
33+
| 2 - GMSL
34+
35+
**fw_version** (R):
36+
Firmware version number.
37+
38+
**serial_number** (R):
39+
Card serial number. The format is::
40+
41+
PRODUCT-REVISION-SERIES-SERIAL
42+
43+
where each component is a 8b number.
44+
45+
46+
Common FPDL3/GMSL input parameters
47+
==================================
48+
49+
**input_id** (R):
50+
Input number ID, zero based.
51+
52+
**oldi_lane_width** (RW):
53+
Number of deserializer output lanes.
54+
55+
| 0 - single
56+
| 1 - dual (default)
57+
58+
**color_mapping** (RW):
59+
Mapping of the incoming bits in the signal to the colour bits of the pixels.
60+
61+
| 0 - OLDI/JEIDA
62+
| 1 - SPWG/VESA (default)
63+
64+
**link_status** (R):
65+
Video link status. If the link is locked, chips are properly connected and
66+
communicating at the same speed and protocol. The link can be locked without
67+
an active video stream.
68+
69+
A value of 0 is equivalent to the V4L2_IN_ST_NO_SYNC flag of the V4L2
70+
VIDIOC_ENUMINPUT status bits.
71+
72+
| 0 - unlocked
73+
| 1 - locked
74+
75+
**stream_status** (R):
76+
Video stream status. A stream is detected if the link is locked, the input
77+
pixel clock is running and the DE signal is moving.
78+
79+
A value of 0 is equivalent to the V4L2_IN_ST_NO_SIGNAL flag of the V4L2
80+
VIDIOC_ENUMINPUT status bits.
81+
82+
| 0 - not detected
83+
| 1 - detected
84+
85+
**video_width** (R):
86+
Video stream width. This is the actual width as detected by the HW.
87+
88+
The value is identical to what VIDIOC_QUERY_DV_TIMINGS returns in the width
89+
field of the v4l2_bt_timings struct.
90+
91+
**video_height** (R):
92+
Video stream height. This is the actual height as detected by the HW.
93+
94+
The value is identical to what VIDIOC_QUERY_DV_TIMINGS returns in the height
95+
field of the v4l2_bt_timings struct.
96+
97+
**vsync_status** (R):
98+
The type of VSYNC pulses as detected by the video format detector.
99+
100+
The value is equivalent to the flags returned by VIDIOC_QUERY_DV_TIMINGS in
101+
the polarities field of the v4l2_bt_timings struct.
102+
103+
| 0 - active low
104+
| 1 - active high
105+
| 2 - not available
106+
107+
**hsync_status** (R):
108+
The type of HSYNC pulses as detected by the video format detector.
109+
110+
The value is equivalent to the flags returned by VIDIOC_QUERY_DV_TIMINGS in
111+
the polarities field of the v4l2_bt_timings struct.
112+
113+
| 0 - active low
114+
| 1 - active high
115+
| 2 - not available
116+
117+
**vsync_gap_length** (RW):
118+
If the incoming video signal does not contain synchronization VSYNC and
119+
HSYNC pulses, these must be generated internally in the FPGA to achieve
120+
the correct frame ordering. This value indicates, how many "empty" pixels
121+
(pixels with deasserted Data Enable signal) are necessary to generate the
122+
internal VSYNC pulse.
123+
124+
**hsync_gap_length** (RW):
125+
If the incoming video signal does not contain synchronization VSYNC and
126+
HSYNC pulses, these must be generated internally in the FPGA to achieve
127+
the correct frame ordering. This value indicates, how many "empty" pixels
128+
(pixels with deasserted Data Enable signal) are necessary to generate the
129+
internal HSYNC pulse. The value must be greater than 1 and smaller than
130+
vsync_gap_length.
131+
132+
**pclk_frequency** (R):
133+
Input pixel clock frequency in kHz.
134+
135+
The value is identical to what VIDIOC_QUERY_DV_TIMINGS returns in
136+
the pixelclock field of the v4l2_bt_timings struct.
137+
138+
*Note: The frequency_range parameter must be set properly first to get
139+
a valid frequency here.*
140+
141+
**hsync_width** (R):
142+
Width of the HSYNC signal in PCLK clock ticks.
143+
144+
The value is identical to what VIDIOC_QUERY_DV_TIMINGS returns in
145+
the hsync field of the v4l2_bt_timings struct.
146+
147+
**vsync_width** (R):
148+
Width of the VSYNC signal in PCLK clock ticks.
149+
150+
The value is identical to what VIDIOC_QUERY_DV_TIMINGS returns in
151+
the vsync field of the v4l2_bt_timings struct.
152+
153+
**hback_porch** (R):
154+
Number of PCLK pulses between deassertion of the HSYNC signal and the first
155+
valid pixel in the video line (marked by DE=1).
156+
157+
The value is identical to what VIDIOC_QUERY_DV_TIMINGS returns in
158+
the hbackporch field of the v4l2_bt_timings struct.
159+
160+
**hfront_porch** (R):
161+
Number of PCLK pulses between the end of the last valid pixel in the video
162+
line (marked by DE=1) and assertion of the HSYNC signal.
163+
164+
The value is identical to what VIDIOC_QUERY_DV_TIMINGS returns in
165+
the hfrontporch field of the v4l2_bt_timings struct.
166+
167+
**vback_porch** (R):
168+
Number of video lines between deassertion of the VSYNC signal and the video
169+
line with the first valid pixel (marked by DE=1).
170+
171+
The value is identical to what VIDIOC_QUERY_DV_TIMINGS returns in
172+
the vbackporch field of the v4l2_bt_timings struct.
173+
174+
**vfront_porch** (R):
175+
Number of video lines between the end of the last valid pixel line (marked
176+
by DE=1) and assertion of the VSYNC signal.
177+
178+
The value is identical to what VIDIOC_QUERY_DV_TIMINGS returns in
179+
the vfrontporch field of the v4l2_bt_timings struct.
180+
181+
**frequency_range** (RW)
182+
PLL frequency range of the OLDI input clock generator. The PLL frequency is
183+
derived from the Pixel Clock Frequency (PCLK) and is equal to PCLK if
184+
oldi_lane_width is set to "single" and PCLK/2 if oldi_lane_width is set to
185+
"dual".
186+
187+
| 0 - PLL < 50MHz (default)
188+
| 1 - PLL >= 50MHz
189+
190+
*Note: This parameter can not be changed while the input v4l2 device is
191+
open.*
192+
193+
194+
Common FPDL3/GMSL output parameters
195+
===================================
196+
197+
**output_id** (R):
198+
Output number ID, zero based.
199+
200+
**video_source** (RW):
201+
Output video source. If set to 0 or 1, the source is the corresponding card
202+
input and the v4l2 output devices are disabled. If set to 2 or 3, the source
203+
is the corresponding v4l2 video output device. The default is
204+
the corresponding v4l2 output, i.e. 2 for OUT1 and 3 for OUT2.
205+
206+
| 0 - input 0
207+
| 1 - input 1
208+
| 2 - v4l2 output 0
209+
| 3 - v4l2 output 1
210+
211+
*Note: This parameter can not be changed while ANY of the input/output v4l2
212+
devices is open.*
213+
214+
**display_width** (RW):
215+
Display width. There is no autodetection of the connected display, so the
216+
proper value must be set before the start of streaming. The default width
217+
is 1280.
218+
219+
*Note: This parameter can not be changed while the output v4l2 device is
220+
open.*
221+
222+
**display_height** (RW):
223+
Display height. There is no autodetection of the connected display, so the
224+
proper value must be set before the start of streaming. The default height
225+
is 640.
226+
227+
*Note: This parameter can not be changed while the output v4l2 device is
228+
open.*
229+
230+
**frame_rate** (RW):
231+
Output video frame rate in frames per second. The default frame rate is
232+
60Hz.
233+
234+
**hsync_polarity** (RW):
235+
HSYNC signal polarity.
236+
237+
| 0 - active low (default)
238+
| 1 - active high
239+
240+
**vsync_polarity** (RW):
241+
VSYNC signal polarity.
242+
243+
| 0 - active low (default)
244+
| 1 - active high
245+
246+
**de_polarity** (RW):
247+
DE signal polarity.
248+
249+
| 0 - active low
250+
| 1 - active high (default)
251+
252+
**pclk_frequency** (RW):
253+
Output pixel clock frequency. Allowed values are between 25000-190000(kHz)
254+
and there is a non-linear stepping between two consecutive allowed
255+
frequencies. The driver finds the nearest allowed frequency to the given
256+
value and sets it. When reading this property, you get the exact
257+
frequency set by the driver. The default frequency is 70000kHz.
258+
259+
*Note: This parameter can not be changed while the output v4l2 device is
260+
open.*
261+
262+
**hsync_width** (RW):
263+
Width of the HSYNC signal in pixels. The default value is 16.
264+
265+
**vsync_width** (RW):
266+
Width of the VSYNC signal in video lines. The default value is 2.
267+
268+
**hback_porch** (RW):
269+
Number of PCLK pulses between deassertion of the HSYNC signal and the first
270+
valid pixel in the video line (marked by DE=1). The default value is 32.
271+
272+
**hfront_porch** (RW):
273+
Number of PCLK pulses between the end of the last valid pixel in the video
274+
line (marked by DE=1) and assertion of the HSYNC signal. The default value
275+
is 32.
276+
277+
**vback_porch** (RW):
278+
Number of video lines between deassertion of the VSYNC signal and the video
279+
line with the first valid pixel (marked by DE=1). The default value is 2.
280+
281+
**vfront_porch** (RW):
282+
Number of video lines between the end of the last valid pixel line (marked
283+
by DE=1) and assertion of the VSYNC signal. The default value is 2.
284+
285+
286+
FPDL3 specific input parameters
287+
===============================
288+
289+
**fpdl3_input_width** (RW):
290+
Number of deserializer input lines.
291+
292+
| 0 - auto (default)
293+
| 1 - single
294+
| 2 - dual
295+
296+
FPDL3 specific output parameters
297+
================================
298+
299+
**fpdl3_output_width** (RW):
300+
Number of serializer output lines.
301+
302+
| 0 - auto (default)
303+
| 1 - single
304+
| 2 - dual
305+
306+
GMSL specific input parameters
307+
==============================
308+
309+
**gmsl_mode** (RW):
310+
GMSL speed mode.
311+
312+
| 0 - 12Gb/s (default)
313+
| 1 - 6Gb/s
314+
| 2 - 3Gb/s
315+
| 3 - 1.5Gb/s
316+
317+
**gmsl_stream_id** (RW):
318+
The GMSL multi-stream contains up to four video streams. This parameter
319+
selects which stream is captured by the video input. The value is the
320+
zero-based index of the stream. The default stream id is 0.
321+
322+
*Note: This parameter can not be changed while the input v4l2 device is
323+
open.*
324+
325+
**gmsl_fec** (RW):
326+
GMSL Forward Error Correction (FEC).
327+
328+
| 0 - disabled
329+
| 1 - enabled (default)
330+
331+
332+
====================
333+
mgb4 mtd partitions
334+
====================
335+
336+
The mgb4 driver creates a MTD device with two partitions:
337+
- mgb4-fw.X - FPGA firmware.
338+
- mgb4-data.X - Factory settings, e.g. card serial number.
339+
340+
The *mgb4-fw* partition is writable and is used for FW updates, *mgb4-data* is
341+
read-only. The *X* attached to the partition name represents the card number.
342+
Depending on the CONFIG_MTD_PARTITIONED_MASTER kernel configuration, you may
343+
also have a third partition named *mgb4-flash* available in the system. This
344+
partition represents the whole, unpartitioned, card's FLASH memory and one should
345+
not fiddle with it...
346+
347+
====================
348+
mgb4 iio (triggers)
349+
====================
350+
351+
The mgb4 driver creates an Industrial I/O (IIO) device that provides trigger and
352+
signal level status capability. The following scan elements are available:
353+
354+
**activity**:
355+
The trigger levels and pending status.
356+
357+
| bit 1 - trigger 1 pending
358+
| bit 2 - trigger 2 pending
359+
| bit 5 - trigger 1 level
360+
| bit 6 - trigger 2 level
361+
362+
**timestamp**:
363+
The trigger event timestamp.
364+
365+
The iio device can operate either in "raw" mode where you can fetch the signal
366+
levels (activity bits 5 and 6) using sysfs access or in triggered buffer mode.
367+
In the triggered buffer mode you can follow the signal level changes (activity
368+
bits 1 and 2) using the iio device in /dev. If you enable the timestamps, you
369+
will also get the exact trigger event time that can be matched to a video frame
370+
(every mgb4 video frame has a timestamp with the same clock source).
371+
372+
*Note: although the activity sample always contains all the status bits, it makes
373+
no sense to get the pending bits in raw mode or the level bits in the triggered
374+
buffer mode - the values do not represent valid data in such case.*

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ ipu3-cio2 Intel ipu3-cio2 driver
7777
ivtv Conexant cx23416/cx23415 MPEG encoder/decoder
7878
ivtvfb Conexant cx23415 framebuffer
7979
mantis MANTIS based cards
80+
mgb4 Digiteq Automotive MGB4 frame grabber
8081
mxb Siemens-Nixdorf 'Multimedia eXtension Board'
8182
netup-unidvb NetUP Universal DVB card
8283
ngene Micronas nGene

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Video4Linux (V4L) driver-specific documentation
1717
imx7
1818
ipu3
1919
ivtv
20+
mgb4
2021
omap3isp
2122
omap4_camera
2223
philips

0 commit comments

Comments
 (0)