aboutsummaryrefslogtreecommitdiffstats
path: root/include/media/v4l2-subdev.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/media/v4l2-subdev.h')
-rw-r--r--include/media/v4l2-subdev.h34
1 files changed, 29 insertions, 5 deletions
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index 1562c4ff3a65..257da1a30f66 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -173,16 +173,20 @@ struct v4l2_subdev_core_ops {
173 struct v4l2_event_subscription *sub); 173 struct v4l2_event_subscription *sub);
174}; 174};
175 175
176/* s_mode: switch the tuner to a specific tuner mode. Replacement of s_radio. 176/* s_radio: v4l device was opened in radio mode.
177 177
178 s_radio: v4l device was opened in Radio mode, to be replaced by s_mode. 178 g_frequency: freq->type must be filled in. Normally done by video_ioctl2
179 or the bridge driver.
180
181 g_tuner:
182 s_tuner: vt->type must be filled in. Normally done by video_ioctl2 or the
183 bridge driver.
179 184
180 s_type_addr: sets tuner type and its I2C addr. 185 s_type_addr: sets tuner type and its I2C addr.
181 186
182 s_config: sets tda9887 specific stuff, like port1, port2 and qss 187 s_config: sets tda9887 specific stuff, like port1, port2 and qss
183 */ 188 */
184struct v4l2_subdev_tuner_ops { 189struct v4l2_subdev_tuner_ops {
185 int (*s_mode)(struct v4l2_subdev *sd, enum v4l2_tuner_type);
186 int (*s_radio)(struct v4l2_subdev *sd); 190 int (*s_radio)(struct v4l2_subdev *sd);
187 int (*s_frequency)(struct v4l2_subdev *sd, struct v4l2_frequency *freq); 191 int (*s_frequency)(struct v4l2_subdev *sd, struct v4l2_frequency *freq);
188 int (*g_frequency)(struct v4l2_subdev *sd, struct v4l2_frequency *freq); 192 int (*g_frequency)(struct v4l2_subdev *sd, struct v4l2_frequency *freq);
@@ -225,6 +229,12 @@ struct v4l2_subdev_audio_ops {
225 s_std_output: set v4l2_std_id for video OUTPUT devices. This is ignored by 229 s_std_output: set v4l2_std_id for video OUTPUT devices. This is ignored by
226 video input devices. 230 video input devices.
227 231
232 g_std_output: get current standard for video OUTPUT devices. This is ignored
233 by video input devices.
234
235 g_tvnorms_output: get v4l2_std_id with all standards supported by video
236 OUTPUT device. This is ignored by video input devices.
237
228 s_crystal_freq: sets the frequency of the crystal used to generate the 238 s_crystal_freq: sets the frequency of the crystal used to generate the
229 clocks in Hz. An extra flags field allows device specific configuration 239 clocks in Hz. An extra flags field allows device specific configuration
230 regarding clock frequency dividers, etc. If not used, then set flags 240 regarding clock frequency dividers, etc. If not used, then set flags
@@ -239,6 +249,8 @@ struct v4l2_subdev_audio_ops {
239 s_dv_preset: set dv (Digital Video) preset in the sub device. Similar to 249 s_dv_preset: set dv (Digital Video) preset in the sub device. Similar to
240 s_std() 250 s_std()
241 251
252 g_dv_preset: get current dv (Digital Video) preset in the sub device.
253
242 query_dv_preset: query dv preset in the sub device. This is similar to 254 query_dv_preset: query dv preset in the sub device. This is similar to
243 querystd() 255 querystd()
244 256
@@ -255,12 +267,20 @@ struct v4l2_subdev_audio_ops {
255 try_mbus_fmt: try to set a pixel format on a video data source 267 try_mbus_fmt: try to set a pixel format on a video data source
256 268
257 s_mbus_fmt: set a pixel format on a video data source 269 s_mbus_fmt: set a pixel format on a video data source
270
271 g_mbus_config: get supported mediabus configurations
272
273 s_mbus_config: set a certain mediabus configuration. This operation is added
274 for compatibility with soc-camera drivers and should not be used by new
275 software.
258 */ 276 */
259struct v4l2_subdev_video_ops { 277struct v4l2_subdev_video_ops {
260 int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32 config); 278 int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32 config);
261 int (*s_crystal_freq)(struct v4l2_subdev *sd, u32 freq, u32 flags); 279 int (*s_crystal_freq)(struct v4l2_subdev *sd, u32 freq, u32 flags);
262 int (*s_std_output)(struct v4l2_subdev *sd, v4l2_std_id std); 280 int (*s_std_output)(struct v4l2_subdev *sd, v4l2_std_id std);
281 int (*g_std_output)(struct v4l2_subdev *sd, v4l2_std_id *std);
263 int (*querystd)(struct v4l2_subdev *sd, v4l2_std_id *std); 282 int (*querystd)(struct v4l2_subdev *sd, v4l2_std_id *std);
283 int (*g_tvnorms_output)(struct v4l2_subdev *sd, v4l2_std_id *std);
264 int (*g_input_status)(struct v4l2_subdev *sd, u32 *status); 284 int (*g_input_status)(struct v4l2_subdev *sd, u32 *status);
265 int (*s_stream)(struct v4l2_subdev *sd, int enable); 285 int (*s_stream)(struct v4l2_subdev *sd, int enable);
266 int (*cropcap)(struct v4l2_subdev *sd, struct v4l2_cropcap *cc); 286 int (*cropcap)(struct v4l2_subdev *sd, struct v4l2_cropcap *cc);
@@ -278,6 +298,8 @@ struct v4l2_subdev_video_ops {
278 struct v4l2_dv_enum_preset *preset); 298 struct v4l2_dv_enum_preset *preset);
279 int (*s_dv_preset)(struct v4l2_subdev *sd, 299 int (*s_dv_preset)(struct v4l2_subdev *sd,
280 struct v4l2_dv_preset *preset); 300 struct v4l2_dv_preset *preset);
301 int (*g_dv_preset)(struct v4l2_subdev *sd,
302 struct v4l2_dv_preset *preset);
281 int (*query_dv_preset)(struct v4l2_subdev *sd, 303 int (*query_dv_preset)(struct v4l2_subdev *sd,
282 struct v4l2_dv_preset *preset); 304 struct v4l2_dv_preset *preset);
283 int (*s_dv_timings)(struct v4l2_subdev *sd, 305 int (*s_dv_timings)(struct v4l2_subdev *sd,
@@ -294,6 +316,10 @@ struct v4l2_subdev_video_ops {
294 struct v4l2_mbus_framefmt *fmt); 316 struct v4l2_mbus_framefmt *fmt);
295 int (*s_mbus_fmt)(struct v4l2_subdev *sd, 317 int (*s_mbus_fmt)(struct v4l2_subdev *sd,
296 struct v4l2_mbus_framefmt *fmt); 318 struct v4l2_mbus_framefmt *fmt);
319 int (*g_mbus_config)(struct v4l2_subdev *sd,
320 struct v4l2_mbus_config *cfg);
321 int (*s_mbus_config)(struct v4l2_subdev *sd,
322 const struct v4l2_mbus_config *cfg);
297}; 323};
298 324
299/* 325/*
@@ -509,8 +535,6 @@ struct v4l2_subdev {
509 void *host_priv; 535 void *host_priv;
510 /* subdev device node */ 536 /* subdev device node */
511 struct video_device devnode; 537 struct video_device devnode;
512 /* number of events to be allocated on open */
513 unsigned int nevents;
514}; 538};
515 539
516#define media_entity_to_v4l2_subdev(ent) \ 540#define media_entity_to_v4l2_subdev(ent) \