forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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 <milkfafa@gmail.com>
- Loading branch information
1 parent
b90449d
commit f1cf93e
Showing
3 changed files
with
110 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
.. SPDX-License-Identifier: GPL-2.0 | ||
.. include:: <isonum.txt> | ||
|
||
NPCM video driver | ||
================= | ||
|
||
This driver is used to control the Video Capture/Differentiation (VCD) engine | ||
and Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. The VCD can | ||
capture and differentiate video data from digital or analog sources, then the | ||
ECE will compress the data into HEXTILE format. | ||
|
||
Driver-specific Controls | ||
------------------------ | ||
|
||
V4L2_CID_NPCM_CAPTURE_MODE | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
The VCD engine supports two modes: | ||
|
||
- COMPLETE mode: | ||
|
||
Capture the next complete frame into memory. | ||
|
||
- DIFF mode: | ||
|
||
Compare the incoming frame with the frame stored in memory, and updates the | ||
differentiated frame in memory. | ||
|
||
Application can use ``V4L2_CID_NPCM_CAPTURE_MODE`` control to set the VCD mode | ||
with different control values (enum v4l2_npcm_capture_mode): | ||
|
||
- ``V4L2_NPCM_CAPTURE_MODE_COMPLETE``: will set VCD to COMPLETE mode. | ||
- ``V4L2_NPCM_CAPTURE_MODE_DIFF``: will set VCD to DIFF mode. | ||
|
||
V4L2_CID_NPCM_RECT_COUNT | ||
~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
After frame data is captured, the ECE will compress the data into HEXTILE format | ||
and store these HEXTILE rectangles data in V4L2 video buffer with the layout | ||
defined in Remote Framebuffer Protocol: | ||
:: | ||
|
||
(RFC 6143, https://www.rfc-editor.org/rfc/rfc6143.html#section-7.6.1) | ||
|
||
+--------------+--------------+-------------------+ | ||
| No. of bytes | Type [Value] | Description | | ||
+--------------+--------------+-------------------+ | ||
| 2 | U16 | x-position | | ||
| 2 | U16 | y-position | | ||
| 2 | U16 | width | | ||
| 2 | U16 | height | | ||
| 4 | S32 | encoding-type (5) | | ||
+--------------+--------------+-------------------+ | ||
| HEXTILE rectangle data | | ||
+-------------------------------------------------+ | ||
|
||
Application can get these video buffers through V4L2 interfaces and use | ||
``V4L2_CID_NPCM_RECT_COUNT`` control to get the count of compressed HEXTILE | ||
rectangles that can be put in the field number-of-rectangles of | ||
FramebufferUpdate header. | ||
|
||
References | ||
---------- | ||
include/uapi/linux/npcm-video.h | ||
|
||
**Copyright** |copy| 2022 Nuvoton Technologies | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ | ||
/* | ||
* Controls header for NPCM video driver | ||
* | ||
* Copyright (C) 2022 Nuvoton Technologies | ||
*/ | ||
|
||
#ifndef _UAPI_LINUX_NPCM_VIDEO_H | ||
#define _UAPI_LINUX_NPCM_VIDEO_H | ||
|
||
#include <linux/v4l2-controls.h> | ||
|
||
/* | ||
* Check Documentation/userspace-api/media/drivers/npcm-video.rst for control | ||
* details. | ||
*/ | ||
|
||
/* | ||
* This control is meant to set the mode of NPCM Video Capture/Differentiation | ||
* (VCD) engine. | ||
* | ||
* The VCD engine supports two modes: | ||
* COMPLETE - Capture the next complete frame into memory. | ||
* DIFF - Compare the incoming frame with the frame stored in memory, and | ||
* updates the differentiated frame in memory. | ||
*/ | ||
#define V4L2_CID_NPCM_CAPTURE_MODE (V4L2_CID_USER_NPCM_BASE + 0) | ||
|
||
enum v4l2_npcm_capture_mode { | ||
V4L2_NPCM_CAPTURE_MODE_COMPLETE = 0, // COMPLETE mode | ||
V4L2_NPCM_CAPTURE_MODE_DIFF = 1, // DIFF mode | ||
}; | ||
|
||
/* | ||
* This control is meant to get the count of compressed HEXTILE rectangles which | ||
* is relevant to the number of differentiated frames if VCD is in DIFF mode. | ||
* And the count will always be 1 if VCD is in COMPLETE mode. | ||
*/ | ||
#define V4L2_CID_NPCM_RECT_COUNT (V4L2_CID_USER_NPCM_BASE + 1) | ||
|
||
#endif /* _UAPI_LINUX_NPCM_VIDEO_H */ |