diff options
Diffstat (limited to 'drivers/media/video/v4l2-common.c')
-rw-r--r-- | drivers/media/video/v4l2-common.c | 479 |
1 files changed, 5 insertions, 474 deletions
diff --git a/drivers/media/video/v4l2-common.c b/drivers/media/video/v4l2-common.c index 4e53b0b3339c..3ce7c64e5789 100644 --- a/drivers/media/video/v4l2-common.c +++ b/drivers/media/video/v4l2-common.c | |||
@@ -62,6 +62,7 @@ | |||
62 | #define __OLD_VIDIOC_ /* To allow fixing old calls*/ | 62 | #define __OLD_VIDIOC_ /* To allow fixing old calls*/ |
63 | #include <media/v4l2-common.h> | 63 | #include <media/v4l2-common.h> |
64 | #include <media/v4l2-device.h> | 64 | #include <media/v4l2-device.h> |
65 | #include <media/v4l2-ctrls.h> | ||
65 | #include <media/v4l2-chip-ident.h> | 66 | #include <media/v4l2-chip-ident.h> |
66 | 67 | ||
67 | #include <linux/videodev2.h> | 68 | #include <linux/videodev2.h> |
@@ -172,487 +173,17 @@ int v4l2_ctrl_check(struct v4l2_ext_control *ctrl, struct v4l2_queryctrl *qctrl, | |||
172 | } | 173 | } |
173 | EXPORT_SYMBOL(v4l2_ctrl_check); | 174 | EXPORT_SYMBOL(v4l2_ctrl_check); |
174 | 175 | ||
175 | /* Returns NULL or a character pointer array containing the menu for | ||
176 | the given control ID. The pointer array ends with a NULL pointer. | ||
177 | An empty string signifies a menu entry that is invalid. This allows | ||
178 | drivers to disable certain options if it is not supported. */ | ||
179 | const char **v4l2_ctrl_get_menu(u32 id) | ||
180 | { | ||
181 | static const char *mpeg_audio_sampling_freq[] = { | ||
182 | "44.1 kHz", | ||
183 | "48 kHz", | ||
184 | "32 kHz", | ||
185 | NULL | ||
186 | }; | ||
187 | static const char *mpeg_audio_encoding[] = { | ||
188 | "MPEG-1/2 Layer I", | ||
189 | "MPEG-1/2 Layer II", | ||
190 | "MPEG-1/2 Layer III", | ||
191 | "MPEG-2/4 AAC", | ||
192 | "AC-3", | ||
193 | NULL | ||
194 | }; | ||
195 | static const char *mpeg_audio_l1_bitrate[] = { | ||
196 | "32 kbps", | ||
197 | "64 kbps", | ||
198 | "96 kbps", | ||
199 | "128 kbps", | ||
200 | "160 kbps", | ||
201 | "192 kbps", | ||
202 | "224 kbps", | ||
203 | "256 kbps", | ||
204 | "288 kbps", | ||
205 | "320 kbps", | ||
206 | "352 kbps", | ||
207 | "384 kbps", | ||
208 | "416 kbps", | ||
209 | "448 kbps", | ||
210 | NULL | ||
211 | }; | ||
212 | static const char *mpeg_audio_l2_bitrate[] = { | ||
213 | "32 kbps", | ||
214 | "48 kbps", | ||
215 | "56 kbps", | ||
216 | "64 kbps", | ||
217 | "80 kbps", | ||
218 | "96 kbps", | ||
219 | "112 kbps", | ||
220 | "128 kbps", | ||
221 | "160 kbps", | ||
222 | "192 kbps", | ||
223 | "224 kbps", | ||
224 | "256 kbps", | ||
225 | "320 kbps", | ||
226 | "384 kbps", | ||
227 | NULL | ||
228 | }; | ||
229 | static const char *mpeg_audio_l3_bitrate[] = { | ||
230 | "32 kbps", | ||
231 | "40 kbps", | ||
232 | "48 kbps", | ||
233 | "56 kbps", | ||
234 | "64 kbps", | ||
235 | "80 kbps", | ||
236 | "96 kbps", | ||
237 | "112 kbps", | ||
238 | "128 kbps", | ||
239 | "160 kbps", | ||
240 | "192 kbps", | ||
241 | "224 kbps", | ||
242 | "256 kbps", | ||
243 | "320 kbps", | ||
244 | NULL | ||
245 | }; | ||
246 | static const char *mpeg_audio_ac3_bitrate[] = { | ||
247 | "32 kbps", | ||
248 | "40 kbps", | ||
249 | "48 kbps", | ||
250 | "56 kbps", | ||
251 | "64 kbps", | ||
252 | "80 kbps", | ||
253 | "96 kbps", | ||
254 | "112 kbps", | ||
255 | "128 kbps", | ||
256 | "160 kbps", | ||
257 | "192 kbps", | ||
258 | "224 kbps", | ||
259 | "256 kbps", | ||
260 | "320 kbps", | ||
261 | "384 kbps", | ||
262 | "448 kbps", | ||
263 | "512 kbps", | ||
264 | "576 kbps", | ||
265 | "640 kbps", | ||
266 | NULL | ||
267 | }; | ||
268 | static const char *mpeg_audio_mode[] = { | ||
269 | "Stereo", | ||
270 | "Joint Stereo", | ||
271 | "Dual", | ||
272 | "Mono", | ||
273 | NULL | ||
274 | }; | ||
275 | static const char *mpeg_audio_mode_extension[] = { | ||
276 | "Bound 4", | ||
277 | "Bound 8", | ||
278 | "Bound 12", | ||
279 | "Bound 16", | ||
280 | NULL | ||
281 | }; | ||
282 | static const char *mpeg_audio_emphasis[] = { | ||
283 | "No Emphasis", | ||
284 | "50/15 us", | ||
285 | "CCITT J17", | ||
286 | NULL | ||
287 | }; | ||
288 | static const char *mpeg_audio_crc[] = { | ||
289 | "No CRC", | ||
290 | "16-bit CRC", | ||
291 | NULL | ||
292 | }; | ||
293 | static const char *mpeg_video_encoding[] = { | ||
294 | "MPEG-1", | ||
295 | "MPEG-2", | ||
296 | "MPEG-4 AVC", | ||
297 | NULL | ||
298 | }; | ||
299 | static const char *mpeg_video_aspect[] = { | ||
300 | "1x1", | ||
301 | "4x3", | ||
302 | "16x9", | ||
303 | "2.21x1", | ||
304 | NULL | ||
305 | }; | ||
306 | static const char *mpeg_video_bitrate_mode[] = { | ||
307 | "Variable Bitrate", | ||
308 | "Constant Bitrate", | ||
309 | NULL | ||
310 | }; | ||
311 | static const char *mpeg_stream_type[] = { | ||
312 | "MPEG-2 Program Stream", | ||
313 | "MPEG-2 Transport Stream", | ||
314 | "MPEG-1 System Stream", | ||
315 | "MPEG-2 DVD-compatible Stream", | ||
316 | "MPEG-1 VCD-compatible Stream", | ||
317 | "MPEG-2 SVCD-compatible Stream", | ||
318 | NULL | ||
319 | }; | ||
320 | static const char *mpeg_stream_vbi_fmt[] = { | ||
321 | "No VBI", | ||
322 | "Private packet, IVTV format", | ||
323 | NULL | ||
324 | }; | ||
325 | static const char *camera_power_line_frequency[] = { | ||
326 | "Disabled", | ||
327 | "50 Hz", | ||
328 | "60 Hz", | ||
329 | NULL | ||
330 | }; | ||
331 | static const char *camera_exposure_auto[] = { | ||
332 | "Auto Mode", | ||
333 | "Manual Mode", | ||
334 | "Shutter Priority Mode", | ||
335 | "Aperture Priority Mode", | ||
336 | NULL | ||
337 | }; | ||
338 | static const char *colorfx[] = { | ||
339 | "None", | ||
340 | "Black & White", | ||
341 | "Sepia", | ||
342 | "Negative", | ||
343 | "Emboss", | ||
344 | "Sketch", | ||
345 | "Sky blue", | ||
346 | "Grass green", | ||
347 | "Skin whiten", | ||
348 | "Vivid", | ||
349 | NULL | ||
350 | }; | ||
351 | static const char *tune_preemphasis[] = { | ||
352 | "No preemphasis", | ||
353 | "50 useconds", | ||
354 | "75 useconds", | ||
355 | NULL, | ||
356 | }; | ||
357 | |||
358 | switch (id) { | ||
359 | case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: | ||
360 | return mpeg_audio_sampling_freq; | ||
361 | case V4L2_CID_MPEG_AUDIO_ENCODING: | ||
362 | return mpeg_audio_encoding; | ||
363 | case V4L2_CID_MPEG_AUDIO_L1_BITRATE: | ||
364 | return mpeg_audio_l1_bitrate; | ||
365 | case V4L2_CID_MPEG_AUDIO_L2_BITRATE: | ||
366 | return mpeg_audio_l2_bitrate; | ||
367 | case V4L2_CID_MPEG_AUDIO_L3_BITRATE: | ||
368 | return mpeg_audio_l3_bitrate; | ||
369 | case V4L2_CID_MPEG_AUDIO_AC3_BITRATE: | ||
370 | return mpeg_audio_ac3_bitrate; | ||
371 | case V4L2_CID_MPEG_AUDIO_MODE: | ||
372 | return mpeg_audio_mode; | ||
373 | case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION: | ||
374 | return mpeg_audio_mode_extension; | ||
375 | case V4L2_CID_MPEG_AUDIO_EMPHASIS: | ||
376 | return mpeg_audio_emphasis; | ||
377 | case V4L2_CID_MPEG_AUDIO_CRC: | ||
378 | return mpeg_audio_crc; | ||
379 | case V4L2_CID_MPEG_VIDEO_ENCODING: | ||
380 | return mpeg_video_encoding; | ||
381 | case V4L2_CID_MPEG_VIDEO_ASPECT: | ||
382 | return mpeg_video_aspect; | ||
383 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: | ||
384 | return mpeg_video_bitrate_mode; | ||
385 | case V4L2_CID_MPEG_STREAM_TYPE: | ||
386 | return mpeg_stream_type; | ||
387 | case V4L2_CID_MPEG_STREAM_VBI_FMT: | ||
388 | return mpeg_stream_vbi_fmt; | ||
389 | case V4L2_CID_POWER_LINE_FREQUENCY: | ||
390 | return camera_power_line_frequency; | ||
391 | case V4L2_CID_EXPOSURE_AUTO: | ||
392 | return camera_exposure_auto; | ||
393 | case V4L2_CID_COLORFX: | ||
394 | return colorfx; | ||
395 | case V4L2_CID_TUNE_PREEMPHASIS: | ||
396 | return tune_preemphasis; | ||
397 | default: | ||
398 | return NULL; | ||
399 | } | ||
400 | } | ||
401 | EXPORT_SYMBOL(v4l2_ctrl_get_menu); | ||
402 | |||
403 | /* Return the control name. */ | ||
404 | const char *v4l2_ctrl_get_name(u32 id) | ||
405 | { | ||
406 | switch (id) { | ||
407 | /* USER controls */ | ||
408 | case V4L2_CID_USER_CLASS: return "User Controls"; | ||
409 | case V4L2_CID_BRIGHTNESS: return "Brightness"; | ||
410 | case V4L2_CID_CONTRAST: return "Contrast"; | ||
411 | case V4L2_CID_SATURATION: return "Saturation"; | ||
412 | case V4L2_CID_HUE: return "Hue"; | ||
413 | case V4L2_CID_AUDIO_VOLUME: return "Volume"; | ||
414 | case V4L2_CID_AUDIO_BALANCE: return "Balance"; | ||
415 | case V4L2_CID_AUDIO_BASS: return "Bass"; | ||
416 | case V4L2_CID_AUDIO_TREBLE: return "Treble"; | ||
417 | case V4L2_CID_AUDIO_MUTE: return "Mute"; | ||
418 | case V4L2_CID_AUDIO_LOUDNESS: return "Loudness"; | ||
419 | case V4L2_CID_BLACK_LEVEL: return "Black Level"; | ||
420 | case V4L2_CID_AUTO_WHITE_BALANCE: return "White Balance, Automatic"; | ||
421 | case V4L2_CID_DO_WHITE_BALANCE: return "Do White Balance"; | ||
422 | case V4L2_CID_RED_BALANCE: return "Red Balance"; | ||
423 | case V4L2_CID_BLUE_BALANCE: return "Blue Balance"; | ||
424 | case V4L2_CID_GAMMA: return "Gamma"; | ||
425 | case V4L2_CID_EXPOSURE: return "Exposure"; | ||
426 | case V4L2_CID_AUTOGAIN: return "Gain, Automatic"; | ||
427 | case V4L2_CID_GAIN: return "Gain"; | ||
428 | case V4L2_CID_HFLIP: return "Horizontal Flip"; | ||
429 | case V4L2_CID_VFLIP: return "Vertical Flip"; | ||
430 | case V4L2_CID_HCENTER: return "Horizontal Center"; | ||
431 | case V4L2_CID_VCENTER: return "Vertical Center"; | ||
432 | case V4L2_CID_POWER_LINE_FREQUENCY: return "Power Line Frequency"; | ||
433 | case V4L2_CID_HUE_AUTO: return "Hue, Automatic"; | ||
434 | case V4L2_CID_WHITE_BALANCE_TEMPERATURE: return "White Balance Temperature"; | ||
435 | case V4L2_CID_SHARPNESS: return "Sharpness"; | ||
436 | case V4L2_CID_BACKLIGHT_COMPENSATION: return "Backlight Compensation"; | ||
437 | case V4L2_CID_CHROMA_AGC: return "Chroma AGC"; | ||
438 | case V4L2_CID_CHROMA_GAIN: return "Chroma Gain"; | ||
439 | case V4L2_CID_COLOR_KILLER: return "Color Killer"; | ||
440 | case V4L2_CID_COLORFX: return "Color Effects"; | ||
441 | case V4L2_CID_AUTOBRIGHTNESS: return "Brightness, Automatic"; | ||
442 | case V4L2_CID_BAND_STOP_FILTER: return "Band-Stop Filter"; | ||
443 | case V4L2_CID_ROTATE: return "Rotate"; | ||
444 | case V4L2_CID_BG_COLOR: return "Background Color"; | ||
445 | |||
446 | /* MPEG controls */ | ||
447 | case V4L2_CID_MPEG_CLASS: return "MPEG Encoder Controls"; | ||
448 | case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: return "Audio Sampling Frequency"; | ||
449 | case V4L2_CID_MPEG_AUDIO_ENCODING: return "Audio Encoding"; | ||
450 | case V4L2_CID_MPEG_AUDIO_L1_BITRATE: return "Audio Layer I Bitrate"; | ||
451 | case V4L2_CID_MPEG_AUDIO_L2_BITRATE: return "Audio Layer II Bitrate"; | ||
452 | case V4L2_CID_MPEG_AUDIO_L3_BITRATE: return "Audio Layer III Bitrate"; | ||
453 | case V4L2_CID_MPEG_AUDIO_AAC_BITRATE: return "Audio AAC Bitrate"; | ||
454 | case V4L2_CID_MPEG_AUDIO_AC3_BITRATE: return "Audio AC-3 Bitrate"; | ||
455 | case V4L2_CID_MPEG_AUDIO_MODE: return "Audio Stereo Mode"; | ||
456 | case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION: return "Audio Stereo Mode Extension"; | ||
457 | case V4L2_CID_MPEG_AUDIO_EMPHASIS: return "Audio Emphasis"; | ||
458 | case V4L2_CID_MPEG_AUDIO_CRC: return "Audio CRC"; | ||
459 | case V4L2_CID_MPEG_AUDIO_MUTE: return "Audio Mute"; | ||
460 | case V4L2_CID_MPEG_VIDEO_ENCODING: return "Video Encoding"; | ||
461 | case V4L2_CID_MPEG_VIDEO_ASPECT: return "Video Aspect"; | ||
462 | case V4L2_CID_MPEG_VIDEO_B_FRAMES: return "Video B Frames"; | ||
463 | case V4L2_CID_MPEG_VIDEO_GOP_SIZE: return "Video GOP Size"; | ||
464 | case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE: return "Video GOP Closure"; | ||
465 | case V4L2_CID_MPEG_VIDEO_PULLDOWN: return "Video Pulldown"; | ||
466 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: return "Video Bitrate Mode"; | ||
467 | case V4L2_CID_MPEG_VIDEO_BITRATE: return "Video Bitrate"; | ||
468 | case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK: return "Video Peak Bitrate"; | ||
469 | case V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION: return "Video Temporal Decimation"; | ||
470 | case V4L2_CID_MPEG_VIDEO_MUTE: return "Video Mute"; | ||
471 | case V4L2_CID_MPEG_VIDEO_MUTE_YUV: return "Video Mute YUV"; | ||
472 | case V4L2_CID_MPEG_STREAM_TYPE: return "Stream Type"; | ||
473 | case V4L2_CID_MPEG_STREAM_PID_PMT: return "Stream PMT Program ID"; | ||
474 | case V4L2_CID_MPEG_STREAM_PID_AUDIO: return "Stream Audio Program ID"; | ||
475 | case V4L2_CID_MPEG_STREAM_PID_VIDEO: return "Stream Video Program ID"; | ||
476 | case V4L2_CID_MPEG_STREAM_PID_PCR: return "Stream PCR Program ID"; | ||
477 | case V4L2_CID_MPEG_STREAM_PES_ID_AUDIO: return "Stream PES Audio ID"; | ||
478 | case V4L2_CID_MPEG_STREAM_PES_ID_VIDEO: return "Stream PES Video ID"; | ||
479 | case V4L2_CID_MPEG_STREAM_VBI_FMT: return "Stream VBI Format"; | ||
480 | |||
481 | /* CAMERA controls */ | ||
482 | case V4L2_CID_CAMERA_CLASS: return "Camera Controls"; | ||
483 | case V4L2_CID_EXPOSURE_AUTO: return "Auto Exposure"; | ||
484 | case V4L2_CID_EXPOSURE_ABSOLUTE: return "Exposure Time, Absolute"; | ||
485 | case V4L2_CID_EXPOSURE_AUTO_PRIORITY: return "Exposure, Dynamic Framerate"; | ||
486 | case V4L2_CID_PAN_RELATIVE: return "Pan, Relative"; | ||
487 | case V4L2_CID_TILT_RELATIVE: return "Tilt, Relative"; | ||
488 | case V4L2_CID_PAN_RESET: return "Pan, Reset"; | ||
489 | case V4L2_CID_TILT_RESET: return "Tilt, Reset"; | ||
490 | case V4L2_CID_PAN_ABSOLUTE: return "Pan, Absolute"; | ||
491 | case V4L2_CID_TILT_ABSOLUTE: return "Tilt, Absolute"; | ||
492 | case V4L2_CID_FOCUS_ABSOLUTE: return "Focus, Absolute"; | ||
493 | case V4L2_CID_FOCUS_RELATIVE: return "Focus, Relative"; | ||
494 | case V4L2_CID_FOCUS_AUTO: return "Focus, Automatic"; | ||
495 | case V4L2_CID_IRIS_ABSOLUTE: return "Iris, Absolute"; | ||
496 | case V4L2_CID_IRIS_RELATIVE: return "Iris, Relative"; | ||
497 | case V4L2_CID_ZOOM_ABSOLUTE: return "Zoom, Absolute"; | ||
498 | case V4L2_CID_ZOOM_RELATIVE: return "Zoom, Relative"; | ||
499 | case V4L2_CID_ZOOM_CONTINUOUS: return "Zoom, Continuous"; | ||
500 | case V4L2_CID_PRIVACY: return "Privacy"; | ||
501 | |||
502 | /* FM Radio Modulator control */ | ||
503 | case V4L2_CID_FM_TX_CLASS: return "FM Radio Modulator Controls"; | ||
504 | case V4L2_CID_RDS_TX_DEVIATION: return "RDS Signal Deviation"; | ||
505 | case V4L2_CID_RDS_TX_PI: return "RDS Program ID"; | ||
506 | case V4L2_CID_RDS_TX_PTY: return "RDS Program Type"; | ||
507 | case V4L2_CID_RDS_TX_PS_NAME: return "RDS PS Name"; | ||
508 | case V4L2_CID_RDS_TX_RADIO_TEXT: return "RDS Radio Text"; | ||
509 | case V4L2_CID_AUDIO_LIMITER_ENABLED: return "Audio Limiter Feature Enabled"; | ||
510 | case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME: return "Audio Limiter Release Time"; | ||
511 | case V4L2_CID_AUDIO_LIMITER_DEVIATION: return "Audio Limiter Deviation"; | ||
512 | case V4L2_CID_AUDIO_COMPRESSION_ENABLED: return "Audio Compression Feature Enabled"; | ||
513 | case V4L2_CID_AUDIO_COMPRESSION_GAIN: return "Audio Compression Gain"; | ||
514 | case V4L2_CID_AUDIO_COMPRESSION_THRESHOLD: return "Audio Compression Threshold"; | ||
515 | case V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME: return "Audio Compression Attack Time"; | ||
516 | case V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME: return "Audio Compression Release Time"; | ||
517 | case V4L2_CID_PILOT_TONE_ENABLED: return "Pilot Tone Feature Enabled"; | ||
518 | case V4L2_CID_PILOT_TONE_DEVIATION: return "Pilot Tone Deviation"; | ||
519 | case V4L2_CID_PILOT_TONE_FREQUENCY: return "Pilot Tone Frequency"; | ||
520 | case V4L2_CID_TUNE_PREEMPHASIS: return "Pre-emphasis settings"; | ||
521 | case V4L2_CID_TUNE_POWER_LEVEL: return "Tune Power Level"; | ||
522 | case V4L2_CID_TUNE_ANTENNA_CAPACITOR: return "Tune Antenna Capacitor"; | ||
523 | |||
524 | default: | ||
525 | return NULL; | ||
526 | } | ||
527 | } | ||
528 | EXPORT_SYMBOL(v4l2_ctrl_get_name); | ||
529 | |||
530 | /* Fill in a struct v4l2_queryctrl */ | 176 | /* Fill in a struct v4l2_queryctrl */ |
531 | int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 step, s32 def) | 177 | int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 step, s32 def) |
532 | { | 178 | { |
533 | const char *name = v4l2_ctrl_get_name(qctrl->id); | 179 | const char *name; |
180 | |||
181 | v4l2_ctrl_fill(qctrl->id, &name, &qctrl->type, | ||
182 | &min, &max, &step, &def, &qctrl->flags); | ||
534 | 183 | ||
535 | qctrl->flags = 0; | ||
536 | if (name == NULL) | 184 | if (name == NULL) |
537 | return -EINVAL; | 185 | return -EINVAL; |
538 | 186 | ||
539 | switch (qctrl->id) { | ||
540 | case V4L2_CID_AUDIO_MUTE: | ||
541 | case V4L2_CID_AUDIO_LOUDNESS: | ||
542 | case V4L2_CID_AUTO_WHITE_BALANCE: | ||
543 | case V4L2_CID_AUTOGAIN: | ||
544 | case V4L2_CID_HFLIP: | ||
545 | case V4L2_CID_VFLIP: | ||
546 | case V4L2_CID_HUE_AUTO: | ||
547 | case V4L2_CID_CHROMA_AGC: | ||
548 | case V4L2_CID_COLOR_KILLER: | ||
549 | case V4L2_CID_MPEG_AUDIO_MUTE: | ||
550 | case V4L2_CID_MPEG_VIDEO_MUTE: | ||
551 | case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE: | ||
552 | case V4L2_CID_MPEG_VIDEO_PULLDOWN: | ||
553 | case V4L2_CID_EXPOSURE_AUTO_PRIORITY: | ||
554 | case V4L2_CID_FOCUS_AUTO: | ||
555 | case V4L2_CID_PRIVACY: | ||
556 | case V4L2_CID_AUDIO_LIMITER_ENABLED: | ||
557 | case V4L2_CID_AUDIO_COMPRESSION_ENABLED: | ||
558 | case V4L2_CID_PILOT_TONE_ENABLED: | ||
559 | qctrl->type = V4L2_CTRL_TYPE_BOOLEAN; | ||
560 | min = 0; | ||
561 | max = step = 1; | ||
562 | break; | ||
563 | case V4L2_CID_PAN_RESET: | ||
564 | case V4L2_CID_TILT_RESET: | ||
565 | qctrl->type = V4L2_CTRL_TYPE_BUTTON; | ||
566 | qctrl->flags |= V4L2_CTRL_FLAG_WRITE_ONLY; | ||
567 | min = max = step = def = 0; | ||
568 | break; | ||
569 | case V4L2_CID_POWER_LINE_FREQUENCY: | ||
570 | case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: | ||
571 | case V4L2_CID_MPEG_AUDIO_ENCODING: | ||
572 | case V4L2_CID_MPEG_AUDIO_L1_BITRATE: | ||
573 | case V4L2_CID_MPEG_AUDIO_L2_BITRATE: | ||
574 | case V4L2_CID_MPEG_AUDIO_L3_BITRATE: | ||
575 | case V4L2_CID_MPEG_AUDIO_AC3_BITRATE: | ||
576 | case V4L2_CID_MPEG_AUDIO_MODE: | ||
577 | case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION: | ||
578 | case V4L2_CID_MPEG_AUDIO_EMPHASIS: | ||
579 | case V4L2_CID_MPEG_AUDIO_CRC: | ||
580 | case V4L2_CID_MPEG_VIDEO_ENCODING: | ||
581 | case V4L2_CID_MPEG_VIDEO_ASPECT: | ||
582 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: | ||
583 | case V4L2_CID_MPEG_STREAM_TYPE: | ||
584 | case V4L2_CID_MPEG_STREAM_VBI_FMT: | ||
585 | case V4L2_CID_EXPOSURE_AUTO: | ||
586 | case V4L2_CID_COLORFX: | ||
587 | case V4L2_CID_TUNE_PREEMPHASIS: | ||
588 | qctrl->type = V4L2_CTRL_TYPE_MENU; | ||
589 | step = 1; | ||
590 | break; | ||
591 | case V4L2_CID_RDS_TX_PS_NAME: | ||
592 | case V4L2_CID_RDS_TX_RADIO_TEXT: | ||
593 | qctrl->type = V4L2_CTRL_TYPE_STRING; | ||
594 | break; | ||
595 | case V4L2_CID_USER_CLASS: | ||
596 | case V4L2_CID_CAMERA_CLASS: | ||
597 | case V4L2_CID_MPEG_CLASS: | ||
598 | case V4L2_CID_FM_TX_CLASS: | ||
599 | qctrl->type = V4L2_CTRL_TYPE_CTRL_CLASS; | ||
600 | qctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY; | ||
601 | min = max = step = def = 0; | ||
602 | break; | ||
603 | case V4L2_CID_BG_COLOR: | ||
604 | qctrl->type = V4L2_CTRL_TYPE_INTEGER; | ||
605 | step = 1; | ||
606 | min = 0; | ||
607 | /* Max is calculated as RGB888 that is 2^24 */ | ||
608 | max = 0xFFFFFF; | ||
609 | break; | ||
610 | default: | ||
611 | qctrl->type = V4L2_CTRL_TYPE_INTEGER; | ||
612 | break; | ||
613 | } | ||
614 | switch (qctrl->id) { | ||
615 | case V4L2_CID_MPEG_AUDIO_ENCODING: | ||
616 | case V4L2_CID_MPEG_AUDIO_MODE: | ||
617 | case V4L2_CID_MPEG_VIDEO_BITRATE_MODE: | ||
618 | case V4L2_CID_MPEG_VIDEO_B_FRAMES: | ||
619 | case V4L2_CID_MPEG_STREAM_TYPE: | ||
620 | qctrl->flags |= V4L2_CTRL_FLAG_UPDATE; | ||
621 | break; | ||
622 | case V4L2_CID_AUDIO_VOLUME: | ||
623 | case V4L2_CID_AUDIO_BALANCE: | ||
624 | case V4L2_CID_AUDIO_BASS: | ||
625 | case V4L2_CID_AUDIO_TREBLE: | ||
626 | case V4L2_CID_BRIGHTNESS: | ||
627 | case V4L2_CID_CONTRAST: | ||
628 | case V4L2_CID_SATURATION: | ||
629 | case V4L2_CID_HUE: | ||
630 | case V4L2_CID_RED_BALANCE: | ||
631 | case V4L2_CID_BLUE_BALANCE: | ||
632 | case V4L2_CID_GAMMA: | ||
633 | case V4L2_CID_SHARPNESS: | ||
634 | case V4L2_CID_CHROMA_GAIN: | ||
635 | case V4L2_CID_RDS_TX_DEVIATION: | ||
636 | case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME: | ||
637 | case V4L2_CID_AUDIO_LIMITER_DEVIATION: | ||
638 | case V4L2_CID_AUDIO_COMPRESSION_GAIN: | ||
639 | case V4L2_CID_AUDIO_COMPRESSION_THRESHOLD: | ||
640 | case V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME: | ||
641 | case V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME: | ||
642 | case V4L2_CID_PILOT_TONE_DEVIATION: | ||
643 | case V4L2_CID_PILOT_TONE_FREQUENCY: | ||
644 | case V4L2_CID_TUNE_POWER_LEVEL: | ||
645 | case V4L2_CID_TUNE_ANTENNA_CAPACITOR: | ||
646 | qctrl->flags |= V4L2_CTRL_FLAG_SLIDER; | ||
647 | break; | ||
648 | case V4L2_CID_PAN_RELATIVE: | ||
649 | case V4L2_CID_TILT_RELATIVE: | ||
650 | case V4L2_CID_FOCUS_RELATIVE: | ||
651 | case V4L2_CID_IRIS_RELATIVE: | ||
652 | case V4L2_CID_ZOOM_RELATIVE: | ||
653 | qctrl->flags |= V4L2_CTRL_FLAG_WRITE_ONLY; | ||
654 | break; | ||
655 | } | ||
656 | qctrl->minimum = min; | 187 | qctrl->minimum = min; |
657 | qctrl->maximum = max; | 188 | qctrl->maximum = max; |
658 | qctrl->step = step; | 189 | qctrl->step = step; |