Skip to content

Commit 1568583

Browse files
linkunfaHans Verkuil
authored andcommitted
media: uapi: Add controls for NPCM video driver
Create controls for Nuvoton NPCM video driver to support setting capture mode of Video Capture/Differentiation (VCD) engine and getting the count of HEXTILE rectangles that is compressed by Encoding Compression Engine (ECE). Signed-off-by: Marvin Lin <[email protected]> Signed-off-by: Hans Verkuil <[email protected]>
1 parent 2817154 commit 1568583

File tree

3 files changed

+108
-0
lines changed

3 files changed

+108
-0
lines changed

Documentation/userspace-api/media/drivers/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ For more details see the file COPYING in the source distribution of Linux.
3737
dw100
3838
imx-uapi
3939
max2175
40+
npcm-video
4041
omap3isp-uapi
4142
st-vgxy61
4243
uvcvideo
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
.. SPDX-License-Identifier: GPL-2.0
2+
3+
.. include:: <isonum.txt>
4+
5+
NPCM video driver
6+
=================
7+
8+
This driver is used to control the Video Capture/Differentiation (VCD) engine
9+
and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. The VCD can
10+
capture a frame from digital video input and compare two frames in memory, and
11+
the ECE can compress the frame data into HEXTILE format.
12+
13+
Driver-specific Controls
14+
------------------------
15+
16+
V4L2_CID_NPCM_CAPTURE_MODE
17+
~~~~~~~~~~~~~~~~~~~~~~~~~~
18+
19+
The VCD engine supports two modes:
20+
21+
- COMPLETE mode:
22+
23+
Capture the next complete frame into memory.
24+
25+
- DIFF mode:
26+
27+
Compare the incoming frame with the frame stored in memory, and updates the
28+
differentiated frame in memory.
29+
30+
Application can use ``V4L2_CID_NPCM_CAPTURE_MODE`` control to set the VCD mode
31+
with different control values (enum v4l2_npcm_capture_mode):
32+
33+
- ``V4L2_NPCM_CAPTURE_MODE_COMPLETE``: will set VCD to COMPLETE mode.
34+
- ``V4L2_NPCM_CAPTURE_MODE_DIFF``: will set VCD to DIFF mode.
35+
36+
V4L2_CID_NPCM_RECT_COUNT
37+
~~~~~~~~~~~~~~~~~~~~~~~~
38+
39+
If using V4L2_PIX_FMT_HEXTILE format, VCD will capture frame data and then ECE
40+
will compress the data into HEXTILE rectangles and store them in V4L2 video
41+
buffer with the layout defined in Remote Framebuffer Protocol:
42+
::
43+
44+
(RFC 6143, https://www.rfc-editor.org/rfc/rfc6143.html#section-7.6.1)
45+
46+
+--------------+--------------+-------------------+
47+
| No. of bytes | Type [Value] | Description |
48+
+--------------+--------------+-------------------+
49+
| 2 | U16 | x-position |
50+
| 2 | U16 | y-position |
51+
| 2 | U16 | width |
52+
| 2 | U16 | height |
53+
| 4 | S32 | encoding-type (5) |
54+
+--------------+--------------+-------------------+
55+
| HEXTILE rectangle data |
56+
+-------------------------------------------------+
57+
58+
Application can get the video buffer through VIDIOC_DQBUF, and followed by
59+
calling ``V4L2_CID_NPCM_RECT_COUNT`` control to get the number of HEXTILE
60+
rectangles in this buffer.
61+
62+
References
63+
----------
64+
include/uapi/linux/npcm-video.h
65+
66+
**Copyright** |copy| 2022 Nuvoton Technologies

include/uapi/linux/npcm-video.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2+
/*
3+
* Controls header for NPCM video driver
4+
*
5+
* Copyright (C) 2022 Nuvoton Technologies
6+
*/
7+
8+
#ifndef _UAPI_LINUX_NPCM_VIDEO_H
9+
#define _UAPI_LINUX_NPCM_VIDEO_H
10+
11+
#include <linux/v4l2-controls.h>
12+
13+
/*
14+
* Check Documentation/userspace-api/media/drivers/npcm-video.rst for control
15+
* details.
16+
*/
17+
18+
/*
19+
* This control is meant to set the mode of NPCM Video Capture/Differentiation
20+
* (VCD) engine.
21+
*
22+
* The VCD engine supports two modes:
23+
* COMPLETE - Capture the next complete frame into memory.
24+
* DIFF - Compare the incoming frame with the frame stored in memory, and
25+
* updates the differentiated frame in memory.
26+
*/
27+
#define V4L2_CID_NPCM_CAPTURE_MODE (V4L2_CID_USER_NPCM_BASE + 0)
28+
29+
enum v4l2_npcm_capture_mode {
30+
V4L2_NPCM_CAPTURE_MODE_COMPLETE = 0, /* COMPLETE mode */
31+
V4L2_NPCM_CAPTURE_MODE_DIFF = 1, /* DIFF mode */
32+
};
33+
34+
/*
35+
* This control is meant to get the count of compressed HEXTILE rectangles which
36+
* is relevant to the number of differentiated frames if VCD is in DIFF mode.
37+
* And the count will always be 1 if VCD is in COMPLETE mode.
38+
*/
39+
#define V4L2_CID_NPCM_RECT_COUNT (V4L2_CID_USER_NPCM_BASE + 1)
40+
41+
#endif /* _UAPI_LINUX_NPCM_VIDEO_H */

0 commit comments

Comments
 (0)