mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-03 17:40:04 +00:00
V4L/DVB (12549): v4l2: video device: Add FM TX controls default configurations
This patch adds basic configurations for FM TX extended controls. That includes controls names, menu strings, pointer identification, type classification and flags configuration. Signed-off-by: Eduardo Valentin <eduardo.valentin@nokia.com> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
6b4249413a
commit
fdf82dc2e2
2 changed files with 58 additions and 6 deletions
|
@ -342,6 +342,12 @@ const char **v4l2_ctrl_get_menu(u32 id)
|
|||
"Sepia",
|
||||
NULL
|
||||
};
|
||||
static const char *tune_preemphasis[] = {
|
||||
"No preemphasis",
|
||||
"50 useconds",
|
||||
"75 useconds",
|
||||
NULL,
|
||||
};
|
||||
|
||||
switch (id) {
|
||||
case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
|
||||
|
@ -380,6 +386,8 @@ const char **v4l2_ctrl_get_menu(u32 id)
|
|||
return camera_exposure_auto;
|
||||
case V4L2_CID_COLORFX:
|
||||
return colorfx;
|
||||
case V4L2_CID_TUNE_PREEMPHASIS:
|
||||
return tune_preemphasis;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
@ -478,6 +486,28 @@ const char *v4l2_ctrl_get_name(u32 id)
|
|||
case V4L2_CID_ZOOM_CONTINUOUS: return "Zoom, Continuous";
|
||||
case V4L2_CID_PRIVACY: return "Privacy";
|
||||
|
||||
/* FM Radio Modulator control */
|
||||
case V4L2_CID_FM_TX_CLASS: return "FM Radio Modulator Controls";
|
||||
case V4L2_CID_RDS_TX_DEVIATION: return "RDS Signal Deviation";
|
||||
case V4L2_CID_RDS_TX_PI: return "RDS Program ID";
|
||||
case V4L2_CID_RDS_TX_PTY: return "RDS Program Type";
|
||||
case V4L2_CID_RDS_TX_PS_NAME: return "RDS PS Name";
|
||||
case V4L2_CID_RDS_TX_RADIO_TEXT: return "RDS Radio Text";
|
||||
case V4L2_CID_AUDIO_LIMITER_ENABLED: return "Audio Limiter Feature Enabled";
|
||||
case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME: return "Audio Limiter Release Time";
|
||||
case V4L2_CID_AUDIO_LIMITER_DEVIATION: return "Audio Limiter Deviation";
|
||||
case V4L2_CID_AUDIO_COMPRESSION_ENABLED: return "Audio Compression Feature Enabled";
|
||||
case V4L2_CID_AUDIO_COMPRESSION_GAIN: return "Audio Compression Gain";
|
||||
case V4L2_CID_AUDIO_COMPRESSION_THRESHOLD: return "Audio Compression Threshold";
|
||||
case V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME: return "Audio Compression Attack Time";
|
||||
case V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME: return "Audio Compression Release Time";
|
||||
case V4L2_CID_PILOT_TONE_ENABLED: return "Pilot Tone Feature Enabled";
|
||||
case V4L2_CID_PILOT_TONE_DEVIATION: return "Pilot Tone Deviation";
|
||||
case V4L2_CID_PILOT_TONE_FREQUENCY: return "Pilot Tone Frequency";
|
||||
case V4L2_CID_TUNE_PREEMPHASIS: return "Pre-emphasis settings";
|
||||
case V4L2_CID_TUNE_POWER_LEVEL: return "Tune Power Level";
|
||||
case V4L2_CID_TUNE_ANTENNA_CAPACITOR: return "Tune Antenna Capacitor";
|
||||
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
@ -510,6 +540,9 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste
|
|||
case V4L2_CID_EXPOSURE_AUTO_PRIORITY:
|
||||
case V4L2_CID_FOCUS_AUTO:
|
||||
case V4L2_CID_PRIVACY:
|
||||
case V4L2_CID_AUDIO_LIMITER_ENABLED:
|
||||
case V4L2_CID_AUDIO_COMPRESSION_ENABLED:
|
||||
case V4L2_CID_PILOT_TONE_ENABLED:
|
||||
qctrl->type = V4L2_CTRL_TYPE_BOOLEAN;
|
||||
min = 0;
|
||||
max = step = 1;
|
||||
|
@ -538,12 +571,18 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste
|
|||
case V4L2_CID_MPEG_STREAM_VBI_FMT:
|
||||
case V4L2_CID_EXPOSURE_AUTO:
|
||||
case V4L2_CID_COLORFX:
|
||||
case V4L2_CID_TUNE_PREEMPHASIS:
|
||||
qctrl->type = V4L2_CTRL_TYPE_MENU;
|
||||
step = 1;
|
||||
break;
|
||||
case V4L2_CID_RDS_TX_PS_NAME:
|
||||
case V4L2_CID_RDS_TX_RADIO_TEXT:
|
||||
qctrl->type = V4L2_CTRL_TYPE_STRING;
|
||||
break;
|
||||
case V4L2_CID_USER_CLASS:
|
||||
case V4L2_CID_CAMERA_CLASS:
|
||||
case V4L2_CID_MPEG_CLASS:
|
||||
case V4L2_CID_FM_TX_CLASS:
|
||||
qctrl->type = V4L2_CTRL_TYPE_CTRL_CLASS;
|
||||
qctrl->flags |= V4L2_CTRL_FLAG_READ_ONLY;
|
||||
min = max = step = def = 0;
|
||||
|
@ -572,6 +611,17 @@ int v4l2_ctrl_query_fill(struct v4l2_queryctrl *qctrl, s32 min, s32 max, s32 ste
|
|||
case V4L2_CID_BLUE_BALANCE:
|
||||
case V4L2_CID_GAMMA:
|
||||
case V4L2_CID_SHARPNESS:
|
||||
case V4L2_CID_RDS_TX_DEVIATION:
|
||||
case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME:
|
||||
case V4L2_CID_AUDIO_LIMITER_DEVIATION:
|
||||
case V4L2_CID_AUDIO_COMPRESSION_GAIN:
|
||||
case V4L2_CID_AUDIO_COMPRESSION_THRESHOLD:
|
||||
case V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME:
|
||||
case V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME:
|
||||
case V4L2_CID_PILOT_TONE_DEVIATION:
|
||||
case V4L2_CID_PILOT_TONE_FREQUENCY:
|
||||
case V4L2_CID_TUNE_POWER_LEVEL:
|
||||
case V4L2_CID_TUNE_ANTENNA_CAPACITOR:
|
||||
qctrl->flags |= V4L2_CTRL_FLAG_SLIDER;
|
||||
break;
|
||||
case V4L2_CID_PAN_RELATIVE:
|
||||
|
|
|
@ -616,14 +616,16 @@ struct v4l2_ext_control32 {
|
|||
for now this will do. */
|
||||
|
||||
/* Return non-zero if this control is a pointer type. Currently only
|
||||
* type STRING is a pointer type.
|
||||
*
|
||||
* Note that there are currently no controls of this type, but at least the
|
||||
* compat32 code is in place to properly handle such controls. Please
|
||||
* remove this note once the first pointer controls are added. */
|
||||
type STRING is a pointer type. */
|
||||
static inline int ctrl_is_pointer(u32 id)
|
||||
{
|
||||
return 0;
|
||||
switch (id) {
|
||||
case V4L2_CID_RDS_TX_PS_NAME:
|
||||
case V4L2_CID_RDS_TX_RADIO_TEXT:
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static int get_v4l2_ext_controls32(struct v4l2_ext_controls *kp, struct v4l2_ext_controls32 __user *up)
|
||||
|
|
Loading…
Reference in a new issue