Blame view

include/linux/v4l2-subdev.h 4.09 KB
333c8b977   Laurent Pinchart   [media] v4l: v4l2...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  /*
   * V4L2 subdev userspace API
   *
   * Copyright (C) 2010 Nokia Corporation
   *
   * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
   *	     Sakari Ailus <sakari.ailus@iki.fi>
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with this program; if not, write to the Free Software
   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
  #ifndef __LINUX_V4L2_SUBDEV_H
  #define __LINUX_V4L2_SUBDEV_H
  
  #include <linux/ioctl.h>
  #include <linux/types.h>
  #include <linux/v4l2-mediabus.h>
  
  /**
   * enum v4l2_subdev_format_whence - Media bus format type
   * @V4L2_SUBDEV_FORMAT_TRY: try format, for negotiation only
   * @V4L2_SUBDEV_FORMAT_ACTIVE: active format, applied to the device
   */
  enum v4l2_subdev_format_whence {
  	V4L2_SUBDEV_FORMAT_TRY = 0,
  	V4L2_SUBDEV_FORMAT_ACTIVE = 1,
  };
  
  /**
   * struct v4l2_subdev_format - Pad-level media bus format
   * @which: format type (from enum v4l2_subdev_format_whence)
   * @pad: pad number, as reported by the media API
   * @format: media bus format (format code and frame size)
   */
  struct v4l2_subdev_format {
  	__u32 which;
  	__u32 pad;
  	struct v4l2_mbus_framefmt format;
  	__u32 reserved[8];
  };
  
  /**
f6a5cb1be   Antti Koskipaa   [media] v4l: v4l2...
54
55
56
57
58
59
60
61
62
63
64
65
66
   * struct v4l2_subdev_crop - Pad-level crop settings
   * @which: format type (from enum v4l2_subdev_format_whence)
   * @pad: pad number, as reported by the media API
   * @rect: pad crop rectangle boundaries
   */
  struct v4l2_subdev_crop {
  	__u32 which;
  	__u32 pad;
  	struct v4l2_rect rect;
  	__u32 reserved[8];
  };
  
  /**
333c8b977   Laurent Pinchart   [media] v4l: v4l2...
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
   * struct v4l2_subdev_mbus_code_enum - Media bus format enumeration
   * @pad: pad number, as reported by the media API
   * @index: format index during enumeration
   * @code: format code (from enum v4l2_mbus_pixelcode)
   */
  struct v4l2_subdev_mbus_code_enum {
  	__u32 pad;
  	__u32 index;
  	__u32 code;
  	__u32 reserved[9];
  };
  
  /**
   * struct v4l2_subdev_frame_size_enum - Media bus format enumeration
   * @pad: pad number, as reported by the media API
   * @index: format index during enumeration
   * @code: format code (from enum v4l2_mbus_pixelcode)
   */
  struct v4l2_subdev_frame_size_enum {
  	__u32 index;
  	__u32 pad;
  	__u32 code;
  	__u32 min_width;
  	__u32 max_width;
  	__u32 min_height;
  	__u32 max_height;
  	__u32 reserved[9];
  };
35c3017a2   Laurent Pinchart   [media] v4l: v4l2...
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
  /**
   * struct v4l2_subdev_frame_interval - Pad-level frame rate
   * @pad: pad number, as reported by the media API
   * @interval: frame interval in seconds
   */
  struct v4l2_subdev_frame_interval {
  	__u32 pad;
  	struct v4l2_fract interval;
  	__u32 reserved[9];
  };
  
  /**
   * struct v4l2_subdev_frame_interval_enum - Frame interval enumeration
   * @pad: pad number, as reported by the media API
   * @index: frame interval index during enumeration
   * @code: format code (from enum v4l2_mbus_pixelcode)
   * @width: frame width in pixels
   * @height: frame height in pixels
   * @interval: frame interval in seconds
   */
  struct v4l2_subdev_frame_interval_enum {
  	__u32 index;
  	__u32 pad;
  	__u32 code;
  	__u32 width;
  	__u32 height;
  	struct v4l2_fract interval;
  	__u32 reserved[9];
  };
333c8b977   Laurent Pinchart   [media] v4l: v4l2...
124
125
  #define VIDIOC_SUBDEV_G_FMT	_IOWR('V',  4, struct v4l2_subdev_format)
  #define VIDIOC_SUBDEV_S_FMT	_IOWR('V',  5, struct v4l2_subdev_format)
35c3017a2   Laurent Pinchart   [media] v4l: v4l2...
126
127
128
129
  #define VIDIOC_SUBDEV_G_FRAME_INTERVAL \
  			_IOWR('V', 21, struct v4l2_subdev_frame_interval)
  #define VIDIOC_SUBDEV_S_FRAME_INTERVAL \
  			_IOWR('V', 22, struct v4l2_subdev_frame_interval)
333c8b977   Laurent Pinchart   [media] v4l: v4l2...
130
131
132
133
  #define VIDIOC_SUBDEV_ENUM_MBUS_CODE \
  			_IOWR('V',  2, struct v4l2_subdev_mbus_code_enum)
  #define VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
  			_IOWR('V', 74, struct v4l2_subdev_frame_size_enum)
35c3017a2   Laurent Pinchart   [media] v4l: v4l2...
134
135
  #define VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
  			_IOWR('V', 75, struct v4l2_subdev_frame_interval_enum)
f6a5cb1be   Antti Koskipaa   [media] v4l: v4l2...
136
137
  #define VIDIOC_SUBDEV_G_CROP	_IOWR('V', 59, struct v4l2_subdev_crop)
  #define VIDIOC_SUBDEV_S_CROP	_IOWR('V', 60, struct v4l2_subdev_crop)
333c8b977   Laurent Pinchart   [media] v4l: v4l2...
138
139
  
  #endif