1 .. SPDX-License-Identifier: GPL-2.0 2 3 Introduction 4 ------------ 5 6 The V4L2 drivers tend to be very complex due t 7 hardware: most devices have multiple ICs, expo 8 /dev, and create also non-V4L2 devices such as 9 (IR) devices. 10 11 Especially the fact that V4L2 drivers have to 12 do audio/video muxing/encoding/decoding makes 13 Usually these ICs are connected to the main br 14 more I2C buses, but other buses can also be us 15 called 'sub-devices'. 16 17 For a long time the framework was limited to t 18 creating V4L device nodes and video_buf for ha 19 (note that this document does not discuss the 20 21 This meant that all drivers had to do the setu 22 connecting to sub-devices themselves. Some of 23 to do right and many drivers never did do it c 24 25 There is also a lot of common code that could 26 the lack of a framework. 27 28 So this framework sets up the basic building b 29 need and this same framework should make it mu 30 common code into utility functions shared by a 31 32 A good example to look at as a reference is th 33 source that is available in samples/v4l/. It i 34 a PCI capture card, and demonstrates how to us 35 framework. It can be used as a template for re 36 37 Structure of a V4L driver 38 ------------------------- 39 40 All drivers have the following structure: 41 42 1) A struct for each device instance containin 43 44 2) A way of initializing and commanding sub-de 45 46 3) Creating V4L2 device nodes (/dev/videoX, /d 47 and keeping track of device-node specific d 48 49 4) Filehandle-specific structs containing per- 50 51 5) video buffer handling. 52 53 This is a rough schematic of how it all relate 54 55 .. code-block:: none 56 57 device instances 58 | 59 +-sub-device instances 60 | 61 \-V4L2 device nodes 62 | 63 \-filehandle instances 64 65 66 Structure of the V4L2 framework 67 ------------------------------- 68 69 The framework closely resembles the driver str 70 struct for the device instance data, a v4l2_su 71 sub-device instances, the video_device struct 72 and the v4l2_fh struct keeps track of filehand 73 74 The V4L2 framework also optionally integrates 75 driver sets the struct v4l2_device mdev field, 76 will automatically appear in the media framewo
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.