]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/compat/linux/linux_videodev2_compat.h
LinuxKPI: Stub sysfs_remove_link in linux/sysfs.h
[FreeBSD/FreeBSD.git] / sys / compat / linux / linux_videodev2_compat.h
1 /*
2  * This file defines compatibility versions of several video structures
3  * defined in the Linux videodev2.h header (linux_videodev2.h).  The
4  * structures defined in this file are the ones that have been determined
5  * to have 32- to 64-bit size dependencies.
6  */
7
8 #ifndef _LINUX_VIDEODEV2_COMPAT_H_
9 #define _LINUX_VIDEODEV2_COMPAT_H_
10
11 struct l_v4l2_buffer {
12         uint32_t                index;
13         enum v4l2_buf_type      type;
14         uint32_t                bytesused;
15         uint32_t                flags;
16         enum v4l2_field         field;
17         l_timeval               timestamp;
18         struct v4l2_timecode    timecode;
19         uint32_t                sequence;
20
21         /* memory location */
22         enum v4l2_memory        memory;
23         union {
24                 uint32_t        offset;
25                 l_ulong         userptr;
26         } m;
27         uint32_t                length;
28         uint32_t                input;
29         uint32_t                reserved;
30 };
31
32 struct l_v4l2_framebuffer {
33         uint32_t                capability;
34         uint32_t                flags;
35 /* FIXME: in theory we should pass something like PCI device + memory
36  * region + offset instead of some physical address */
37         l_uintptr_t             base;
38         struct v4l2_pix_format  fmt;
39 };
40
41 struct l_v4l2_clip {
42         struct v4l2_rect        c;
43         l_uintptr_t             next;
44 };
45
46 struct l_v4l2_window {
47         struct v4l2_rect        w;
48         enum v4l2_field         field;
49         uint32_t                chromakey;
50         l_uintptr_t             clips;
51         uint32_t                clipcount;
52         l_uintptr_t             bitmap;
53         uint8_t                 global_alpha;
54 };
55
56 struct l_v4l2_standard {
57         uint32_t                index;
58         v4l2_std_id             id;
59         uint8_t                 name[24];
60         struct v4l2_fract       frameperiod; /* Frames, not fields */
61         uint32_t                framelines;
62         uint32_t                reserved[4];
63 }
64 #ifdef COMPAT_LINUX32 /* 32bit linuxolator */
65 __attribute__ ((packed))
66 #endif
67 ;
68
69 struct l_v4l2_ext_control {
70         uint32_t id;
71         uint32_t size;
72         uint32_t reserved2[1];
73         union {
74                 int32_t value;
75                 int64_t value64;
76                 l_uintptr_t string;
77         } u;
78 } __attribute__ ((packed));
79
80 struct l_v4l2_ext_controls {
81         uint32_t ctrl_class;
82         uint32_t count;
83         uint32_t error_idx;
84         uint32_t reserved[2];
85         l_uintptr_t controls;
86 };
87
88 struct l_v4l2_format {
89         enum v4l2_buf_type type;
90         union {
91                 struct v4l2_pix_format          pix;     /* V4L2_BUF_TYPE_VIDEO_CAPTURE */
92                 struct l_v4l2_window            win;     /* V4L2_BUF_TYPE_VIDEO_OVERLAY */
93                 struct v4l2_vbi_format          vbi;     /* V4L2_BUF_TYPE_VBI_CAPTURE */
94                 struct v4l2_sliced_vbi_format   sliced;  /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */
95                 uint8_t raw_data[200];                   /* user-defined */
96         } fmt;
97 }
98 #ifdef COMPAT_LINUX32 /* 32bit linuxolator */
99 __attribute__ ((packed))
100 #endif
101 ;
102
103 #ifdef VIDIOC_DQEVENT
104 struct l_v4l2_event {
105         uint32_t                                type;
106         union {
107                 struct v4l2_event_vsync vsync;
108                 uint8_t                 data[64];
109         } u;
110         uint32_t                                pending;
111         uint32_t                                sequence;
112         struct l_timespec                       timestamp;
113         uint32_t                                reserved[9];
114 };
115 #endif
116
117 struct l_v4l2_input {
118         uint32_t             index;             /*  Which input */
119         uint8_t              name[32];          /*  Label */
120         uint32_t             type;              /*  Type of input */
121         uint32_t             audioset;          /*  Associated audios (bitfield) */
122         uint32_t             tuner;             /*  Associated tuner */
123         v4l2_std_id  std;
124         uint32_t             status;
125         uint32_t             capabilities;
126         uint32_t             reserved[3];
127 }
128 #ifdef COMPAT_LINUX32 /* 32bit linuxolator */
129 __attribute__ ((packed))
130 #endif
131 ;
132
133 #endif /* _LINUX_VIDEODEV2_COMPAT_H_ */