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