xref: /openbmc/linux/Documentation/userspace-api/media/drivers/npcm-video.rst (revision feddc1362f1041d24c53511bf1c5265f53fe48b0)
1*feddc136SMarvin Lin.. SPDX-License-Identifier: GPL-2.0
2*feddc136SMarvin Lin
3*feddc136SMarvin Lin.. include:: <isonum.txt>
4*feddc136SMarvin Lin
5*feddc136SMarvin LinNPCM video driver
6*feddc136SMarvin Lin=================
7*feddc136SMarvin Lin
8*feddc136SMarvin LinThis driver is used to control the Video Capture/Differentiation (VCD) engine
9*feddc136SMarvin Linand Encoding Compression Engine (ECE) present on Nuvoton NPCM SoCs. The VCD can
10*feddc136SMarvin Lincapture a frame from digital video input and compare two frames in memory, and
11*feddc136SMarvin Linthe ECE can compress the frame data into HEXTILE format.
12*feddc136SMarvin Lin
13*feddc136SMarvin LinDriver-specific Controls
14*feddc136SMarvin Lin------------------------
15*feddc136SMarvin Lin
16*feddc136SMarvin LinV4L2_CID_NPCM_CAPTURE_MODE
17*feddc136SMarvin Lin~~~~~~~~~~~~~~~~~~~~~~~~~~
18*feddc136SMarvin Lin
19*feddc136SMarvin LinThe VCD engine supports two modes:
20*feddc136SMarvin Lin
21*feddc136SMarvin Lin- COMPLETE mode:
22*feddc136SMarvin Lin
23*feddc136SMarvin Lin  Capture the next complete frame into memory.
24*feddc136SMarvin Lin
25*feddc136SMarvin Lin- DIFF mode:
26*feddc136SMarvin Lin
27*feddc136SMarvin Lin  Compare the incoming frame with the frame stored in memory, and updates the
28*feddc136SMarvin Lin  differentiated frame in memory.
29*feddc136SMarvin Lin
30*feddc136SMarvin LinApplication can use ``V4L2_CID_NPCM_CAPTURE_MODE`` control to set the VCD mode
31*feddc136SMarvin Linwith different control values (enum v4l2_npcm_capture_mode):
32*feddc136SMarvin Lin
33*feddc136SMarvin Lin- ``V4L2_NPCM_CAPTURE_MODE_COMPLETE``: will set VCD to COMPLETE mode.
34*feddc136SMarvin Lin- ``V4L2_NPCM_CAPTURE_MODE_DIFF``: will set VCD to DIFF mode.
35*feddc136SMarvin Lin
36*feddc136SMarvin LinV4L2_CID_NPCM_RECT_COUNT
37*feddc136SMarvin Lin~~~~~~~~~~~~~~~~~~~~~~~~
38*feddc136SMarvin Lin
39*feddc136SMarvin LinIf using V4L2_PIX_FMT_HEXTILE format, VCD will capture frame data and then ECE
40*feddc136SMarvin Linwill compress the data into HEXTILE rectangles and store them in V4L2 video
41*feddc136SMarvin Linbuffer with the layout defined in Remote Framebuffer Protocol:
42*feddc136SMarvin Lin::
43*feddc136SMarvin Lin
44*feddc136SMarvin Lin           (RFC 6143, https://www.rfc-editor.org/rfc/rfc6143.html#section-7.6.1)
45*feddc136SMarvin Lin
46*feddc136SMarvin Lin           +--------------+--------------+-------------------+
47*feddc136SMarvin Lin           | No. of bytes | Type [Value] | Description       |
48*feddc136SMarvin Lin           +--------------+--------------+-------------------+
49*feddc136SMarvin Lin           | 2            | U16          | x-position        |
50*feddc136SMarvin Lin           | 2            | U16          | y-position        |
51*feddc136SMarvin Lin           | 2            | U16          | width             |
52*feddc136SMarvin Lin           | 2            | U16          | height            |
53*feddc136SMarvin Lin           | 4            | S32          | encoding-type (5) |
54*feddc136SMarvin Lin           +--------------+--------------+-------------------+
55*feddc136SMarvin Lin           |             HEXTILE rectangle data              |
56*feddc136SMarvin Lin           +-------------------------------------------------+
57*feddc136SMarvin Lin
58*feddc136SMarvin LinApplication can get the video buffer through VIDIOC_DQBUF, and followed by
59*feddc136SMarvin Lincalling ``V4L2_CID_NPCM_RECT_COUNT`` control to get the number of HEXTILE
60*feddc136SMarvin Linrectangles in this buffer.
61*feddc136SMarvin Lin
62*feddc136SMarvin LinReferences
63*feddc136SMarvin Lin----------
64*feddc136SMarvin Lininclude/uapi/linux/npcm-video.h
65*feddc136SMarvin Lin
66*feddc136SMarvin Lin**Copyright** |copy| 2022 Nuvoton Technologies
67