aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/v4l2-common.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/v4l2-common.c')
-rw-r--r--drivers/media/video/v4l2-common.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/drivers/media/video/v4l2-common.c b/drivers/media/video/v4l2-common.c
index b91d66a767d7..3a0c64935b0e 100644
--- a/drivers/media/video/v4l2-common.c
+++ b/drivers/media/video/v4l2-common.c
@@ -156,6 +156,8 @@ int v4l2_ctrl_check(struct v4l2_ext_control *ctrl, struct v4l2_queryctrl *qctrl,
156 return -EINVAL; 156 return -EINVAL;
157 if (qctrl->flags & V4L2_CTRL_FLAG_GRABBED) 157 if (qctrl->flags & V4L2_CTRL_FLAG_GRABBED)
158 return -EBUSY; 158 return -EBUSY;
159 if (qctrl->type == V4L2_CTRL_TYPE_STRING)
160 return 0;
159 if (qctrl->type == V4L2_CTRL_TYPE_BUTTON || 161 if (qctrl->type == V4L2_CTRL_TYPE_BUTTON ||
160 qctrl->type == V4L2_CTRL_TYPE_INTEGER64 || 162 qctrl->type == V4L2_CTRL_TYPE_INTEGER64 ||
161 qctrl->type == V4L2_CTRL_TYPE_CTRL_CLASS) 163 qctrl->type == V4L2_CTRL_TYPE_CTRL_CLASS)
@@ -340,6 +342,12 @@ const char **v4l2_ctrl_get_menu(u32 id)
340 "Sepia", 342 "Sepia",
341 NULL 343 NULL
342 }; 344 };
345 static const char *tune_preemphasis[] = {
346 "No preemphasis",
347 "50 useconds",
348 "75 useconds",
349 NULL,
350 };
343 351
344 switch (id) { 352 switch (id) {
345 case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: 353 case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
@@ -378,6 +386,8 @@ const char **v4l2_ctrl_get_menu(u32 id)
378 return camera_exposure_auto; 386 return camera_exposure_auto;
379 case V4L2_CID_COLORFX: 387 case V4L2_CID_COLORFX:
380 return colorfx; 388 return colorfx;
389 case V4L2_CID_TUNE_PREEMPHASIS:
390 return tune_preemphasis;
381 default: 391 default:
382 return NULL; 392 return NULL;
383 } 393 }
@@ -476,6 +486,28 @@ const char *v4l2_ctrl_get_name(u32 id)
476 case V4L2_CID_ZOOM_CONTINUOUS: return "Zoom, Continuous"; 486 case V4L2_CID_ZOOM_CONTINUOUS: return "Zoom, Continuous";
477 case V4L2_CID_PRIVACY: return "Privacy"; 487 case V4L2_CID_PRIVACY: return "Privacy";
478 488
489 /* FM Radio Modulator control */
490 case V4L2_CID_FM_TX_CLASS: return "FM Radio Modulator Controls";
491 case V4L2_CID_RDS_TX_DEVIATION: return "RDS Signal Deviation";
492 case V4L2_CID_RDS_TX_PI: return "RDS Program ID";
493 case V4L2_CID_RDS_TX_PTY: return "RDS Program Type";
494 case V4L2_CID_RDS_TX_PS_NAME: return "RDS PS Name";
495 case V4L2_CID_RDS_TX_RADIO_TEXT: return "RDS Radio Text";
496 case V4L2_CID_AUDIO_LIMITER_ENABLED: return "Audio Limiter Feature Enabled";
497 case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME: return "Audio Limiter Release Time";
498 case V4L2_CID_AUDIO_LIMITER_DEVIATION: return "Audio Limiter Deviation";
499 case V4L2_CID_AUDIO_COMPRESSION_ENABLED: return "Audio Compression Feature Enabled";
500 case V4L2_CID_AUDIO_COMPRESSION_GAIN: return "Audio Compression Gain";
501 case V4L2_CID_AUDIO_COMPRESSION_THRESHOLD: return "Audio Compression Threshold";
502 case V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME: return "Audio Compression Attack Time";
503 case V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME: return "Audio Compression Release Time";
504 case V4L2_CID_PILOT_TONE_ENABLED: return "Pilot Tone Feature Enabled";
505 case V4L2_CID_PILOT_TONE_DEVIATION: return "Pilot Tone Deviation";
506 case V4L2_CID_PILOT_TONE_FREQUENCY: return "Pilot Tone Frequency";
507 case V4L2_CID_TUNE_PREEMPHASIS: return "Pre-emphasis settings";
508 case V4L2_CID_TUNE_POWER_LEVEL: return "Tune Power Level";
509 case V4L2_CID_TUNE_ANTENNA_CAPACITOR: return "Tune Antenna Capacitor";
510
479 default: 511 default:
480 return NULL; 512 return NULL;
481 } 513 }
@@ -508,6 +540,9 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste
508 case V4L2_CID_EXPOSURE_AUTO_PRIORITY: 540 case V4L2_CID_EXPOSURE_AUTO_PRIORITY:
509 case V4L2_CID_FOCUS_AUTO: 541 case V4L2_CID_FOCUS_AUTO:
510 case V4L2_CID_PRIVACY: 542 case V4L2_CID_PRIVACY:
543 case V4L2_CID_AUDIO_LIMITER_ENABLED:
544 case V4L2_CID_AUDIO_COMPRESSION_ENABLED:
545 case V4L2_CID_PILOT_TONE_ENABLED:
511 qctrl->type = V4L2_CTRL_TYPE_BOOLEAN; 546 qctrl->type = V4L2_CTRL_TYPE_BOOLEAN;
512 min = 0; 547 min = 0;
513 max = step = 1; 548 max = step = 1;
@@ -536,12 +571,18 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste
536 case V4L2_CID_MPEG_STREAM_VBI_FMT: 571 case V4L2_CID_MPEG_STREAM_VBI_FMT:
537 case V4L2_CID_EXPOSURE_AUTO: 572 case V4L2_CID_EXPOSURE_AUTO:
538 case V4L2_CID_COLORFX: 573 case V4L2_CID_COLORFX:
574 case V4L2_CID_TUNE_PREEMPHASIS:
539 qctrl->type = V4L2_CTRL_TYPE_MENU; 575 qctrl->type = V4L2_CTRL_TYPE_MENU;
540 step = 1; 576 step = 1;
541 break; 577 break;
578 case V4L2_CID_RDS_TX_PS_NAME:
579 case V4L2_CID_RDS_TX_RADIO_TEXT:
580 qctrl->type = V4L2_CTRL_TYPE_STRING;
581 break;
542 case V4L2_CID_USER_CLASS: 582 case V4L2_CID_USER_CLASS:
543 case V4L2_CID_CAMERA_CLASS: 583 case V4L2_CID_CAMERA_CLASS:
544 case V4L2_CID_MPEG_CLASS: 584 case V4L2_CID_MPEG_CLASS:
585 case V4L2_CID_FM_TX_CLASS:
545 qctrl->type = V4L2_CTRL_TYPE_CTRL_CLASS; 586 qctrl->type = V4L2_CTRL_TYPE_CTRL_CLASS;
546 qctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY; 587 qctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
547 min = max = step = def = 0; 588 min = max = step = def = 0;
@@ -570,6 +611,17 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste
570 case V4L2_CID_BLUE_BALANCE: 611 case V4L2_CID_BLUE_BALANCE:
571 case V4L2_CID_GAMMA: 612 case V4L2_CID_GAMMA:
572 case V4L2_CID_SHARPNESS: 613 case V4L2_CID_SHARPNESS:
614 case V4L2_CID_RDS_TX_DEVIATION:
615 case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME:
616 case V4L2_CID_AUDIO_LIMITER_DEVIATION:
617 case V4L2_CID_AUDIO_COMPRESSION_GAIN:
618 case V4L2_CID_AUDIO_COMPRESSION_THRESHOLD:
619 case V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME:
620 case V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME:
621 case V4L2_CID_PILOT_TONE_DEVIATION:
622 case V4L2_CID_PILOT_TONE_FREQUENCY:
623 case V4L2_CID_TUNE_POWER_LEVEL:
624 case V4L2_CID_TUNE_ANTENNA_CAPACITOR:
573 qctrl->flags |= V4L2_CTRL_FLAG_SLIDER; 625 qctrl->flags |= V4L2_CTRL_FLAG_SLIDER;
574 break; 626 break;
575 case V4L2_CID_PAN_RELATIVE: 627 case V4L2_CID_PAN_RELATIVE: