xref: /openbmc/linux/drivers/media/v4l2-core/v4l2-ctrls-defs.c (revision 2612e3bbc0386368a850140a6c9b990cd496a5ec)
171c689dcSHans Verkuil // SPDX-License-Identifier: GPL-2.0-or-later
271c689dcSHans Verkuil /*
371c689dcSHans Verkuil  * V4L2 controls framework control definitions.
471c689dcSHans Verkuil  *
571c689dcSHans Verkuil  * Copyright (C) 2010-2021  Hans Verkuil <hverkuil-cisco@xs4all.nl>
671c689dcSHans Verkuil  */
771c689dcSHans Verkuil 
871c689dcSHans Verkuil #include <linux/export.h>
971c689dcSHans Verkuil #include <media/v4l2-ctrls.h>
1071c689dcSHans Verkuil 
1171c689dcSHans Verkuil /*
1271c689dcSHans Verkuil  * Returns NULL or a character pointer array containing the menu for
1371c689dcSHans Verkuil  * the given control ID. The pointer array ends with a NULL pointer.
1471c689dcSHans Verkuil  * An empty string signifies a menu entry that is invalid. This allows
1571c689dcSHans Verkuil  * drivers to disable certain options if it is not supported.
1671c689dcSHans Verkuil  */
v4l2_ctrl_get_menu(u32 id)1771c689dcSHans Verkuil const char * const *v4l2_ctrl_get_menu(u32 id)
1871c689dcSHans Verkuil {
1971c689dcSHans Verkuil 	static const char * const mpeg_audio_sampling_freq[] = {
2071c689dcSHans Verkuil 		"44.1 kHz",
2171c689dcSHans Verkuil 		"48 kHz",
2271c689dcSHans Verkuil 		"32 kHz",
2371c689dcSHans Verkuil 		NULL
2471c689dcSHans Verkuil 	};
2571c689dcSHans Verkuil 	static const char * const mpeg_audio_encoding[] = {
2671c689dcSHans Verkuil 		"MPEG-1/2 Layer I",
2771c689dcSHans Verkuil 		"MPEG-1/2 Layer II",
2871c689dcSHans Verkuil 		"MPEG-1/2 Layer III",
2971c689dcSHans Verkuil 		"MPEG-2/4 AAC",
3071c689dcSHans Verkuil 		"AC-3",
3171c689dcSHans Verkuil 		NULL
3271c689dcSHans Verkuil 	};
3371c689dcSHans Verkuil 	static const char * const mpeg_audio_l1_bitrate[] = {
3471c689dcSHans Verkuil 		"32 kbps",
3571c689dcSHans Verkuil 		"64 kbps",
3671c689dcSHans Verkuil 		"96 kbps",
3771c689dcSHans Verkuil 		"128 kbps",
3871c689dcSHans Verkuil 		"160 kbps",
3971c689dcSHans Verkuil 		"192 kbps",
4071c689dcSHans Verkuil 		"224 kbps",
4171c689dcSHans Verkuil 		"256 kbps",
4271c689dcSHans Verkuil 		"288 kbps",
4371c689dcSHans Verkuil 		"320 kbps",
4471c689dcSHans Verkuil 		"352 kbps",
4571c689dcSHans Verkuil 		"384 kbps",
4671c689dcSHans Verkuil 		"416 kbps",
4771c689dcSHans Verkuil 		"448 kbps",
4871c689dcSHans Verkuil 		NULL
4971c689dcSHans Verkuil 	};
5071c689dcSHans Verkuil 	static const char * const mpeg_audio_l2_bitrate[] = {
5171c689dcSHans Verkuil 		"32 kbps",
5271c689dcSHans Verkuil 		"48 kbps",
5371c689dcSHans Verkuil 		"56 kbps",
5471c689dcSHans Verkuil 		"64 kbps",
5571c689dcSHans Verkuil 		"80 kbps",
5671c689dcSHans Verkuil 		"96 kbps",
5771c689dcSHans Verkuil 		"112 kbps",
5871c689dcSHans Verkuil 		"128 kbps",
5971c689dcSHans Verkuil 		"160 kbps",
6071c689dcSHans Verkuil 		"192 kbps",
6171c689dcSHans Verkuil 		"224 kbps",
6271c689dcSHans Verkuil 		"256 kbps",
6371c689dcSHans Verkuil 		"320 kbps",
6471c689dcSHans Verkuil 		"384 kbps",
6571c689dcSHans Verkuil 		NULL
6671c689dcSHans Verkuil 	};
6771c689dcSHans Verkuil 	static const char * const mpeg_audio_l3_bitrate[] = {
6871c689dcSHans Verkuil 		"32 kbps",
6971c689dcSHans Verkuil 		"40 kbps",
7071c689dcSHans Verkuil 		"48 kbps",
7171c689dcSHans Verkuil 		"56 kbps",
7271c689dcSHans Verkuil 		"64 kbps",
7371c689dcSHans Verkuil 		"80 kbps",
7471c689dcSHans Verkuil 		"96 kbps",
7571c689dcSHans Verkuil 		"112 kbps",
7671c689dcSHans Verkuil 		"128 kbps",
7771c689dcSHans Verkuil 		"160 kbps",
7871c689dcSHans Verkuil 		"192 kbps",
7971c689dcSHans Verkuil 		"224 kbps",
8071c689dcSHans Verkuil 		"256 kbps",
8171c689dcSHans Verkuil 		"320 kbps",
8271c689dcSHans Verkuil 		NULL
8371c689dcSHans Verkuil 	};
8471c689dcSHans Verkuil 	static const char * const mpeg_audio_ac3_bitrate[] = {
8571c689dcSHans Verkuil 		"32 kbps",
8671c689dcSHans Verkuil 		"40 kbps",
8771c689dcSHans Verkuil 		"48 kbps",
8871c689dcSHans Verkuil 		"56 kbps",
8971c689dcSHans Verkuil 		"64 kbps",
9071c689dcSHans Verkuil 		"80 kbps",
9171c689dcSHans Verkuil 		"96 kbps",
9271c689dcSHans Verkuil 		"112 kbps",
9371c689dcSHans Verkuil 		"128 kbps",
9471c689dcSHans Verkuil 		"160 kbps",
9571c689dcSHans Verkuil 		"192 kbps",
9671c689dcSHans Verkuil 		"224 kbps",
9771c689dcSHans Verkuil 		"256 kbps",
9871c689dcSHans Verkuil 		"320 kbps",
9971c689dcSHans Verkuil 		"384 kbps",
10071c689dcSHans Verkuil 		"448 kbps",
10171c689dcSHans Verkuil 		"512 kbps",
10271c689dcSHans Verkuil 		"576 kbps",
10371c689dcSHans Verkuil 		"640 kbps",
10471c689dcSHans Verkuil 		NULL
10571c689dcSHans Verkuil 	};
10671c689dcSHans Verkuil 	static const char * const mpeg_audio_mode[] = {
10771c689dcSHans Verkuil 		"Stereo",
10871c689dcSHans Verkuil 		"Joint Stereo",
10971c689dcSHans Verkuil 		"Dual",
11071c689dcSHans Verkuil 		"Mono",
11171c689dcSHans Verkuil 		NULL
11271c689dcSHans Verkuil 	};
11371c689dcSHans Verkuil 	static const char * const mpeg_audio_mode_extension[] = {
11471c689dcSHans Verkuil 		"Bound 4",
11571c689dcSHans Verkuil 		"Bound 8",
11671c689dcSHans Verkuil 		"Bound 12",
11771c689dcSHans Verkuil 		"Bound 16",
11871c689dcSHans Verkuil 		NULL
11971c689dcSHans Verkuil 	};
12071c689dcSHans Verkuil 	static const char * const mpeg_audio_emphasis[] = {
12171c689dcSHans Verkuil 		"No Emphasis",
12271c689dcSHans Verkuil 		"50/15 us",
12371c689dcSHans Verkuil 		"CCITT J17",
12471c689dcSHans Verkuil 		NULL
12571c689dcSHans Verkuil 	};
12671c689dcSHans Verkuil 	static const char * const mpeg_audio_crc[] = {
12771c689dcSHans Verkuil 		"No CRC",
12871c689dcSHans Verkuil 		"16-bit CRC",
12971c689dcSHans Verkuil 		NULL
13071c689dcSHans Verkuil 	};
13171c689dcSHans Verkuil 	static const char * const mpeg_audio_dec_playback[] = {
13271c689dcSHans Verkuil 		"Auto",
13371c689dcSHans Verkuil 		"Stereo",
13471c689dcSHans Verkuil 		"Left",
13571c689dcSHans Verkuil 		"Right",
13671c689dcSHans Verkuil 		"Mono",
13771c689dcSHans Verkuil 		"Swapped Stereo",
13871c689dcSHans Verkuil 		NULL
13971c689dcSHans Verkuil 	};
14071c689dcSHans Verkuil 	static const char * const mpeg_video_encoding[] = {
14171c689dcSHans Verkuil 		"MPEG-1",
14271c689dcSHans Verkuil 		"MPEG-2",
14371c689dcSHans Verkuil 		"MPEG-4 AVC",
14471c689dcSHans Verkuil 		NULL
14571c689dcSHans Verkuil 	};
14671c689dcSHans Verkuil 	static const char * const mpeg_video_aspect[] = {
14771c689dcSHans Verkuil 		"1x1",
14871c689dcSHans Verkuil 		"4x3",
14971c689dcSHans Verkuil 		"16x9",
15071c689dcSHans Verkuil 		"2.21x1",
15171c689dcSHans Verkuil 		NULL
15271c689dcSHans Verkuil 	};
15371c689dcSHans Verkuil 	static const char * const mpeg_video_bitrate_mode[] = {
15471c689dcSHans Verkuil 		"Variable Bitrate",
15571c689dcSHans Verkuil 		"Constant Bitrate",
15671c689dcSHans Verkuil 		"Constant Quality",
15771c689dcSHans Verkuil 		NULL
15871c689dcSHans Verkuil 	};
15971c689dcSHans Verkuil 	static const char * const mpeg_stream_type[] = {
16071c689dcSHans Verkuil 		"MPEG-2 Program Stream",
16171c689dcSHans Verkuil 		"MPEG-2 Transport Stream",
16271c689dcSHans Verkuil 		"MPEG-1 System Stream",
16371c689dcSHans Verkuil 		"MPEG-2 DVD-compatible Stream",
16471c689dcSHans Verkuil 		"MPEG-1 VCD-compatible Stream",
16571c689dcSHans Verkuil 		"MPEG-2 SVCD-compatible Stream",
16671c689dcSHans Verkuil 		NULL
16771c689dcSHans Verkuil 	};
16871c689dcSHans Verkuil 	static const char * const mpeg_stream_vbi_fmt[] = {
16971c689dcSHans Verkuil 		"No VBI",
17071c689dcSHans Verkuil 		"Private Packet, IVTV Format",
17171c689dcSHans Verkuil 		NULL
17271c689dcSHans Verkuil 	};
17371c689dcSHans Verkuil 	static const char * const camera_power_line_frequency[] = {
17471c689dcSHans Verkuil 		"Disabled",
17571c689dcSHans Verkuil 		"50 Hz",
17671c689dcSHans Verkuil 		"60 Hz",
17771c689dcSHans Verkuil 		"Auto",
17871c689dcSHans Verkuil 		NULL
17971c689dcSHans Verkuil 	};
18071c689dcSHans Verkuil 	static const char * const camera_exposure_auto[] = {
18171c689dcSHans Verkuil 		"Auto Mode",
18271c689dcSHans Verkuil 		"Manual Mode",
18371c689dcSHans Verkuil 		"Shutter Priority Mode",
18471c689dcSHans Verkuil 		"Aperture Priority Mode",
18571c689dcSHans Verkuil 		NULL
18671c689dcSHans Verkuil 	};
18771c689dcSHans Verkuil 	static const char * const camera_exposure_metering[] = {
18871c689dcSHans Verkuil 		"Average",
18971c689dcSHans Verkuil 		"Center Weighted",
19071c689dcSHans Verkuil 		"Spot",
19171c689dcSHans Verkuil 		"Matrix",
19271c689dcSHans Verkuil 		NULL
19371c689dcSHans Verkuil 	};
19471c689dcSHans Verkuil 	static const char * const camera_auto_focus_range[] = {
19571c689dcSHans Verkuil 		"Auto",
19671c689dcSHans Verkuil 		"Normal",
19771c689dcSHans Verkuil 		"Macro",
19871c689dcSHans Verkuil 		"Infinity",
19971c689dcSHans Verkuil 		NULL
20071c689dcSHans Verkuil 	};
20171c689dcSHans Verkuil 	static const char * const colorfx[] = {
20271c689dcSHans Verkuil 		"None",
20371c689dcSHans Verkuil 		"Black & White",
20471c689dcSHans Verkuil 		"Sepia",
20571c689dcSHans Verkuil 		"Negative",
20671c689dcSHans Verkuil 		"Emboss",
20771c689dcSHans Verkuil 		"Sketch",
20871c689dcSHans Verkuil 		"Sky Blue",
20971c689dcSHans Verkuil 		"Grass Green",
21071c689dcSHans Verkuil 		"Skin Whiten",
21171c689dcSHans Verkuil 		"Vivid",
21271c689dcSHans Verkuil 		"Aqua",
21371c689dcSHans Verkuil 		"Art Freeze",
21471c689dcSHans Verkuil 		"Silhouette",
21571c689dcSHans Verkuil 		"Solarization",
21671c689dcSHans Verkuil 		"Antique",
21771c689dcSHans Verkuil 		"Set Cb/Cr",
21871c689dcSHans Verkuil 		NULL
21971c689dcSHans Verkuil 	};
22071c689dcSHans Verkuil 	static const char * const auto_n_preset_white_balance[] = {
22171c689dcSHans Verkuil 		"Manual",
22271c689dcSHans Verkuil 		"Auto",
22371c689dcSHans Verkuil 		"Incandescent",
22471c689dcSHans Verkuil 		"Fluorescent",
22571c689dcSHans Verkuil 		"Fluorescent H",
22671c689dcSHans Verkuil 		"Horizon",
22771c689dcSHans Verkuil 		"Daylight",
22871c689dcSHans Verkuil 		"Flash",
22971c689dcSHans Verkuil 		"Cloudy",
23071c689dcSHans Verkuil 		"Shade",
23171c689dcSHans Verkuil 		NULL,
23271c689dcSHans Verkuil 	};
23371c689dcSHans Verkuil 	static const char * const camera_iso_sensitivity_auto[] = {
23471c689dcSHans Verkuil 		"Manual",
23571c689dcSHans Verkuil 		"Auto",
23671c689dcSHans Verkuil 		NULL
23771c689dcSHans Verkuil 	};
23871c689dcSHans Verkuil 	static const char * const scene_mode[] = {
23971c689dcSHans Verkuil 		"None",
24071c689dcSHans Verkuil 		"Backlight",
24171c689dcSHans Verkuil 		"Beach/Snow",
24271c689dcSHans Verkuil 		"Candle Light",
24371c689dcSHans Verkuil 		"Dusk/Dawn",
24471c689dcSHans Verkuil 		"Fall Colors",
24571c689dcSHans Verkuil 		"Fireworks",
24671c689dcSHans Verkuil 		"Landscape",
24771c689dcSHans Verkuil 		"Night",
24871c689dcSHans Verkuil 		"Party/Indoor",
24971c689dcSHans Verkuil 		"Portrait",
25071c689dcSHans Verkuil 		"Sports",
25171c689dcSHans Verkuil 		"Sunset",
25271c689dcSHans Verkuil 		"Text",
25371c689dcSHans Verkuil 		NULL
25471c689dcSHans Verkuil 	};
25571c689dcSHans Verkuil 	static const char * const tune_emphasis[] = {
25671c689dcSHans Verkuil 		"None",
25771c689dcSHans Verkuil 		"50 Microseconds",
25871c689dcSHans Verkuil 		"75 Microseconds",
25971c689dcSHans Verkuil 		NULL,
26071c689dcSHans Verkuil 	};
26171c689dcSHans Verkuil 	static const char * const header_mode[] = {
26271c689dcSHans Verkuil 		"Separate Buffer",
26371c689dcSHans Verkuil 		"Joined With 1st Frame",
26471c689dcSHans Verkuil 		NULL,
26571c689dcSHans Verkuil 	};
26671c689dcSHans Verkuil 	static const char * const multi_slice[] = {
26771c689dcSHans Verkuil 		"Single",
26871c689dcSHans Verkuil 		"Max Macroblocks",
26971c689dcSHans Verkuil 		"Max Bytes",
27071c689dcSHans Verkuil 		NULL,
27171c689dcSHans Verkuil 	};
27271c689dcSHans Verkuil 	static const char * const entropy_mode[] = {
27371c689dcSHans Verkuil 		"CAVLC",
27471c689dcSHans Verkuil 		"CABAC",
27571c689dcSHans Verkuil 		NULL,
27671c689dcSHans Verkuil 	};
27771c689dcSHans Verkuil 	static const char * const mpeg_h264_level[] = {
27871c689dcSHans Verkuil 		"1",
27971c689dcSHans Verkuil 		"1b",
28071c689dcSHans Verkuil 		"1.1",
28171c689dcSHans Verkuil 		"1.2",
28271c689dcSHans Verkuil 		"1.3",
28371c689dcSHans Verkuil 		"2",
28471c689dcSHans Verkuil 		"2.1",
28571c689dcSHans Verkuil 		"2.2",
28671c689dcSHans Verkuil 		"3",
28771c689dcSHans Verkuil 		"3.1",
28871c689dcSHans Verkuil 		"3.2",
28971c689dcSHans Verkuil 		"4",
29071c689dcSHans Verkuil 		"4.1",
29171c689dcSHans Verkuil 		"4.2",
29271c689dcSHans Verkuil 		"5",
29371c689dcSHans Verkuil 		"5.1",
29471c689dcSHans Verkuil 		"5.2",
29571c689dcSHans Verkuil 		"6.0",
29671c689dcSHans Verkuil 		"6.1",
29771c689dcSHans Verkuil 		"6.2",
29871c689dcSHans Verkuil 		NULL,
29971c689dcSHans Verkuil 	};
30071c689dcSHans Verkuil 	static const char * const h264_loop_filter[] = {
30171c689dcSHans Verkuil 		"Enabled",
30271c689dcSHans Verkuil 		"Disabled",
30371c689dcSHans Verkuil 		"Disabled at Slice Boundary",
30471c689dcSHans Verkuil 		NULL,
30571c689dcSHans Verkuil 	};
30671c689dcSHans Verkuil 	static const char * const h264_profile[] = {
30771c689dcSHans Verkuil 		"Baseline",
30871c689dcSHans Verkuil 		"Constrained Baseline",
30971c689dcSHans Verkuil 		"Main",
31071c689dcSHans Verkuil 		"Extended",
31171c689dcSHans Verkuil 		"High",
31271c689dcSHans Verkuil 		"High 10",
31371c689dcSHans Verkuil 		"High 422",
31471c689dcSHans Verkuil 		"High 444 Predictive",
31571c689dcSHans Verkuil 		"High 10 Intra",
31671c689dcSHans Verkuil 		"High 422 Intra",
31771c689dcSHans Verkuil 		"High 444 Intra",
31871c689dcSHans Verkuil 		"CAVLC 444 Intra",
31971c689dcSHans Verkuil 		"Scalable Baseline",
32071c689dcSHans Verkuil 		"Scalable High",
32171c689dcSHans Verkuil 		"Scalable High Intra",
32271c689dcSHans Verkuil 		"Stereo High",
32371c689dcSHans Verkuil 		"Multiview High",
32471c689dcSHans Verkuil 		"Constrained High",
32571c689dcSHans Verkuil 		NULL,
32671c689dcSHans Verkuil 	};
32771c689dcSHans Verkuil 	static const char * const vui_sar_idc[] = {
32871c689dcSHans Verkuil 		"Unspecified",
32971c689dcSHans Verkuil 		"1:1",
33071c689dcSHans Verkuil 		"12:11",
33171c689dcSHans Verkuil 		"10:11",
33271c689dcSHans Verkuil 		"16:11",
33371c689dcSHans Verkuil 		"40:33",
33471c689dcSHans Verkuil 		"24:11",
33571c689dcSHans Verkuil 		"20:11",
33671c689dcSHans Verkuil 		"32:11",
33771c689dcSHans Verkuil 		"80:33",
33871c689dcSHans Verkuil 		"18:11",
33971c689dcSHans Verkuil 		"15:11",
34071c689dcSHans Verkuil 		"64:33",
34171c689dcSHans Verkuil 		"160:99",
34271c689dcSHans Verkuil 		"4:3",
34371c689dcSHans Verkuil 		"3:2",
34471c689dcSHans Verkuil 		"2:1",
34571c689dcSHans Verkuil 		"Extended SAR",
34671c689dcSHans Verkuil 		NULL,
34771c689dcSHans Verkuil 	};
34871c689dcSHans Verkuil 	static const char * const h264_fp_arrangement_type[] = {
34971c689dcSHans Verkuil 		"Checkerboard",
35071c689dcSHans Verkuil 		"Column",
35171c689dcSHans Verkuil 		"Row",
35271c689dcSHans Verkuil 		"Side by Side",
35371c689dcSHans Verkuil 		"Top Bottom",
35471c689dcSHans Verkuil 		"Temporal",
35571c689dcSHans Verkuil 		NULL,
35671c689dcSHans Verkuil 	};
35771c689dcSHans Verkuil 	static const char * const h264_fmo_map_type[] = {
35871c689dcSHans Verkuil 		"Interleaved Slices",
35971c689dcSHans Verkuil 		"Scattered Slices",
36071c689dcSHans Verkuil 		"Foreground with Leftover",
36171c689dcSHans Verkuil 		"Box Out",
36271c689dcSHans Verkuil 		"Raster Scan",
36371c689dcSHans Verkuil 		"Wipe Scan",
36471c689dcSHans Verkuil 		"Explicit",
36571c689dcSHans Verkuil 		NULL,
36671c689dcSHans Verkuil 	};
36771c689dcSHans Verkuil 	static const char * const h264_decode_mode[] = {
36871c689dcSHans Verkuil 		"Slice-Based",
36971c689dcSHans Verkuil 		"Frame-Based",
37071c689dcSHans Verkuil 		NULL,
37171c689dcSHans Verkuil 	};
37271c689dcSHans Verkuil 	static const char * const h264_start_code[] = {
37371c689dcSHans Verkuil 		"No Start Code",
37471c689dcSHans Verkuil 		"Annex B Start Code",
37571c689dcSHans Verkuil 		NULL,
37671c689dcSHans Verkuil 	};
37771c689dcSHans Verkuil 	static const char * const h264_hierarchical_coding_type[] = {
37871c689dcSHans Verkuil 		"Hier Coding B",
37971c689dcSHans Verkuil 		"Hier Coding P",
38071c689dcSHans Verkuil 		NULL,
38171c689dcSHans Verkuil 	};
38271c689dcSHans Verkuil 	static const char * const mpeg_mpeg2_level[] = {
38371c689dcSHans Verkuil 		"Low",
38471c689dcSHans Verkuil 		"Main",
38571c689dcSHans Verkuil 		"High 1440",
38671c689dcSHans Verkuil 		"High",
38771c689dcSHans Verkuil 		NULL,
38871c689dcSHans Verkuil 	};
38971c689dcSHans Verkuil 	static const char * const mpeg2_profile[] = {
39071c689dcSHans Verkuil 		"Simple",
39171c689dcSHans Verkuil 		"Main",
39271c689dcSHans Verkuil 		"SNR Scalable",
39371c689dcSHans Verkuil 		"Spatially Scalable",
39471c689dcSHans Verkuil 		"High",
39571c689dcSHans Verkuil 		NULL,
39671c689dcSHans Verkuil 	};
39771c689dcSHans Verkuil 	static const char * const mpeg_mpeg4_level[] = {
39871c689dcSHans Verkuil 		"0",
39971c689dcSHans Verkuil 		"0b",
40071c689dcSHans Verkuil 		"1",
40171c689dcSHans Verkuil 		"2",
40271c689dcSHans Verkuil 		"3",
40371c689dcSHans Verkuil 		"3b",
40471c689dcSHans Verkuil 		"4",
40571c689dcSHans Verkuil 		"5",
40671c689dcSHans Verkuil 		NULL,
40771c689dcSHans Verkuil 	};
40871c689dcSHans Verkuil 	static const char * const mpeg4_profile[] = {
40971c689dcSHans Verkuil 		"Simple",
41071c689dcSHans Verkuil 		"Advanced Simple",
41171c689dcSHans Verkuil 		"Core",
41271c689dcSHans Verkuil 		"Simple Scalable",
41371c689dcSHans Verkuil 		"Advanced Coding Efficiency",
41471c689dcSHans Verkuil 		NULL,
41571c689dcSHans Verkuil 	};
41671c689dcSHans Verkuil 
41771c689dcSHans Verkuil 	static const char * const vpx_golden_frame_sel[] = {
41871c689dcSHans Verkuil 		"Use Previous Frame",
41971c689dcSHans Verkuil 		"Use Previous Specific Frame",
42071c689dcSHans Verkuil 		NULL,
42171c689dcSHans Verkuil 	};
42271c689dcSHans Verkuil 	static const char * const vp8_profile[] = {
42371c689dcSHans Verkuil 		"0",
42471c689dcSHans Verkuil 		"1",
42571c689dcSHans Verkuil 		"2",
42671c689dcSHans Verkuil 		"3",
42771c689dcSHans Verkuil 		NULL,
42871c689dcSHans Verkuil 	};
42971c689dcSHans Verkuil 	static const char * const vp9_profile[] = {
43071c689dcSHans Verkuil 		"0",
43171c689dcSHans Verkuil 		"1",
43271c689dcSHans Verkuil 		"2",
43371c689dcSHans Verkuil 		"3",
43471c689dcSHans Verkuil 		NULL,
43571c689dcSHans Verkuil 	};
43671c689dcSHans Verkuil 	static const char * const vp9_level[] = {
43771c689dcSHans Verkuil 		"1",
43871c689dcSHans Verkuil 		"1.1",
43971c689dcSHans Verkuil 		"2",
44071c689dcSHans Verkuil 		"2.1",
44171c689dcSHans Verkuil 		"3",
44271c689dcSHans Verkuil 		"3.1",
44371c689dcSHans Verkuil 		"4",
44471c689dcSHans Verkuil 		"4.1",
44571c689dcSHans Verkuil 		"5",
44671c689dcSHans Verkuil 		"5.1",
44771c689dcSHans Verkuil 		"5.2",
44871c689dcSHans Verkuil 		"6",
44971c689dcSHans Verkuil 		"6.1",
45071c689dcSHans Verkuil 		"6.2",
45171c689dcSHans Verkuil 		NULL,
45271c689dcSHans Verkuil 	};
45371c689dcSHans Verkuil 
45471c689dcSHans Verkuil 	static const char * const flash_led_mode[] = {
45571c689dcSHans Verkuil 		"Off",
45671c689dcSHans Verkuil 		"Flash",
45771c689dcSHans Verkuil 		"Torch",
45871c689dcSHans Verkuil 		NULL,
45971c689dcSHans Verkuil 	};
46071c689dcSHans Verkuil 	static const char * const flash_strobe_source[] = {
46171c689dcSHans Verkuil 		"Software",
46271c689dcSHans Verkuil 		"External",
46371c689dcSHans Verkuil 		NULL,
46471c689dcSHans Verkuil 	};
46571c689dcSHans Verkuil 
46671c689dcSHans Verkuil 	static const char * const jpeg_chroma_subsampling[] = {
46771c689dcSHans Verkuil 		"4:4:4",
46871c689dcSHans Verkuil 		"4:2:2",
46971c689dcSHans Verkuil 		"4:2:0",
47071c689dcSHans Verkuil 		"4:1:1",
47171c689dcSHans Verkuil 		"4:1:0",
47271c689dcSHans Verkuil 		"Gray",
47371c689dcSHans Verkuil 		NULL,
47471c689dcSHans Verkuil 	};
47571c689dcSHans Verkuil 	static const char * const dv_tx_mode[] = {
47671c689dcSHans Verkuil 		"DVI-D",
47771c689dcSHans Verkuil 		"HDMI",
47871c689dcSHans Verkuil 		NULL,
47971c689dcSHans Verkuil 	};
48071c689dcSHans Verkuil 	static const char * const dv_rgb_range[] = {
48171c689dcSHans Verkuil 		"Automatic",
48271c689dcSHans Verkuil 		"RGB Limited Range (16-235)",
48371c689dcSHans Verkuil 		"RGB Full Range (0-255)",
48471c689dcSHans Verkuil 		NULL,
48571c689dcSHans Verkuil 	};
48671c689dcSHans Verkuil 	static const char * const dv_it_content_type[] = {
48771c689dcSHans Verkuil 		"Graphics",
48871c689dcSHans Verkuil 		"Photo",
48971c689dcSHans Verkuil 		"Cinema",
49071c689dcSHans Verkuil 		"Game",
49171c689dcSHans Verkuil 		"No IT Content",
49271c689dcSHans Verkuil 		NULL,
49371c689dcSHans Verkuil 	};
49471c689dcSHans Verkuil 	static const char * const detect_md_mode[] = {
49571c689dcSHans Verkuil 		"Disabled",
49671c689dcSHans Verkuil 		"Global",
49771c689dcSHans Verkuil 		"Threshold Grid",
49871c689dcSHans Verkuil 		"Region Grid",
49971c689dcSHans Verkuil 		NULL,
50071c689dcSHans Verkuil 	};
50171c689dcSHans Verkuil 
502*9de30f57SDaniel Almeida 	static const char * const av1_profile[] = {
503*9de30f57SDaniel Almeida 		"Main",
504*9de30f57SDaniel Almeida 		"High",
505*9de30f57SDaniel Almeida 		"Professional",
506*9de30f57SDaniel Almeida 		NULL,
507*9de30f57SDaniel Almeida 	};
508*9de30f57SDaniel Almeida 	static const char * const av1_level[] = {
509*9de30f57SDaniel Almeida 		"2.0",
510*9de30f57SDaniel Almeida 		"2.1",
511*9de30f57SDaniel Almeida 		"2.2",
512*9de30f57SDaniel Almeida 		"2.3",
513*9de30f57SDaniel Almeida 		"3.0",
514*9de30f57SDaniel Almeida 		"3.1",
515*9de30f57SDaniel Almeida 		"3.2",
516*9de30f57SDaniel Almeida 		"3.3",
517*9de30f57SDaniel Almeida 		"4.0",
518*9de30f57SDaniel Almeida 		"4.1",
519*9de30f57SDaniel Almeida 		"4.2",
520*9de30f57SDaniel Almeida 		"4.3",
521*9de30f57SDaniel Almeida 		"5.0",
522*9de30f57SDaniel Almeida 		"5.1",
523*9de30f57SDaniel Almeida 		"5.2",
524*9de30f57SDaniel Almeida 		"5.3",
525*9de30f57SDaniel Almeida 		"6.0",
526*9de30f57SDaniel Almeida 		"6.1",
527*9de30f57SDaniel Almeida 		"6.2",
528*9de30f57SDaniel Almeida 		"6.3",
529*9de30f57SDaniel Almeida 		"7.0",
530*9de30f57SDaniel Almeida 		"7.1",
531*9de30f57SDaniel Almeida 		"7.2",
532*9de30f57SDaniel Almeida 		"7.3",
533*9de30f57SDaniel Almeida 		NULL,
534*9de30f57SDaniel Almeida 	};
535*9de30f57SDaniel Almeida 
53671c689dcSHans Verkuil 	static const char * const hevc_profile[] = {
53771c689dcSHans Verkuil 		"Main",
53871c689dcSHans Verkuil 		"Main Still Picture",
53971c689dcSHans Verkuil 		"Main 10",
54071c689dcSHans Verkuil 		NULL,
54171c689dcSHans Verkuil 	};
54271c689dcSHans Verkuil 	static const char * const hevc_level[] = {
54371c689dcSHans Verkuil 		"1",
54471c689dcSHans Verkuil 		"2",
54571c689dcSHans Verkuil 		"2.1",
54671c689dcSHans Verkuil 		"3",
54771c689dcSHans Verkuil 		"3.1",
54871c689dcSHans Verkuil 		"4",
54971c689dcSHans Verkuil 		"4.1",
55071c689dcSHans Verkuil 		"5",
55171c689dcSHans Verkuil 		"5.1",
55271c689dcSHans Verkuil 		"5.2",
55371c689dcSHans Verkuil 		"6",
55471c689dcSHans Verkuil 		"6.1",
55571c689dcSHans Verkuil 		"6.2",
55671c689dcSHans Verkuil 		NULL,
55771c689dcSHans Verkuil 	};
55871c689dcSHans Verkuil 	static const char * const hevc_hierarchial_coding_type[] = {
55971c689dcSHans Verkuil 		"B",
56071c689dcSHans Verkuil 		"P",
56171c689dcSHans Verkuil 		NULL,
56271c689dcSHans Verkuil 	};
56371c689dcSHans Verkuil 	static const char * const hevc_refresh_type[] = {
56471c689dcSHans Verkuil 		"None",
56571c689dcSHans Verkuil 		"CRA",
56671c689dcSHans Verkuil 		"IDR",
56771c689dcSHans Verkuil 		NULL,
56871c689dcSHans Verkuil 	};
56971c689dcSHans Verkuil 	static const char * const hevc_size_of_length_field[] = {
57071c689dcSHans Verkuil 		"0",
57171c689dcSHans Verkuil 		"1",
57271c689dcSHans Verkuil 		"2",
57371c689dcSHans Verkuil 		"4",
57471c689dcSHans Verkuil 		NULL,
57571c689dcSHans Verkuil 	};
57671c689dcSHans Verkuil 	static const char * const hevc_tier[] = {
57771c689dcSHans Verkuil 		"Main",
57871c689dcSHans Verkuil 		"High",
57971c689dcSHans Verkuil 		NULL,
58071c689dcSHans Verkuil 	};
58171c689dcSHans Verkuil 	static const char * const hevc_loop_filter_mode[] = {
58271c689dcSHans Verkuil 		"Disabled",
58371c689dcSHans Verkuil 		"Enabled",
58471c689dcSHans Verkuil 		"Disabled at slice boundary",
58571c689dcSHans Verkuil 		"NULL",
58671c689dcSHans Verkuil 	};
58771c689dcSHans Verkuil 	static const char * const hevc_decode_mode[] = {
58871c689dcSHans Verkuil 		"Slice-Based",
58971c689dcSHans Verkuil 		"Frame-Based",
59071c689dcSHans Verkuil 		NULL,
59171c689dcSHans Verkuil 	};
59271c689dcSHans Verkuil 	static const char * const hevc_start_code[] = {
59371c689dcSHans Verkuil 		"No Start Code",
59471c689dcSHans Verkuil 		"Annex B Start Code",
59571c689dcSHans Verkuil 		NULL,
59671c689dcSHans Verkuil 	};
59771c689dcSHans Verkuil 	static const char * const camera_orientation[] = {
59871c689dcSHans Verkuil 		"Front",
59971c689dcSHans Verkuil 		"Back",
60071c689dcSHans Verkuil 		"External",
60171c689dcSHans Verkuil 		NULL,
60271c689dcSHans Verkuil 	};
60371c689dcSHans Verkuil 	static const char * const mpeg_video_frame_skip[] = {
60471c689dcSHans Verkuil 		"Disabled",
60571c689dcSHans Verkuil 		"Level Limit",
60671c689dcSHans Verkuil 		"VBV/CPB Limit",
60771c689dcSHans Verkuil 		NULL,
60871c689dcSHans Verkuil 	};
609fcbc4acfSDikshita Agarwal 	static const char * const intra_refresh_period_type[] = {
610fcbc4acfSDikshita Agarwal 		"Random",
611fcbc4acfSDikshita Agarwal 		"Cyclic",
612fcbc4acfSDikshita Agarwal 		NULL,
613fcbc4acfSDikshita Agarwal 	};
61471c689dcSHans Verkuil 
61571c689dcSHans Verkuil 	switch (id) {
61671c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
61771c689dcSHans Verkuil 		return mpeg_audio_sampling_freq;
61871c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_ENCODING:
61971c689dcSHans Verkuil 		return mpeg_audio_encoding;
62071c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_L1_BITRATE:
62171c689dcSHans Verkuil 		return mpeg_audio_l1_bitrate;
62271c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_L2_BITRATE:
62371c689dcSHans Verkuil 		return mpeg_audio_l2_bitrate;
62471c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_L3_BITRATE:
62571c689dcSHans Verkuil 		return mpeg_audio_l3_bitrate;
62671c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_AC3_BITRATE:
62771c689dcSHans Verkuil 		return mpeg_audio_ac3_bitrate;
62871c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_MODE:
62971c689dcSHans Verkuil 		return mpeg_audio_mode;
63071c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION:
63171c689dcSHans Verkuil 		return mpeg_audio_mode_extension;
63271c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_EMPHASIS:
63371c689dcSHans Verkuil 		return mpeg_audio_emphasis;
63471c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_CRC:
63571c689dcSHans Verkuil 		return mpeg_audio_crc;
63671c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK:
63771c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK:
63871c689dcSHans Verkuil 		return mpeg_audio_dec_playback;
63971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_ENCODING:
64071c689dcSHans Verkuil 		return mpeg_video_encoding;
64171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_ASPECT:
64271c689dcSHans Verkuil 		return mpeg_video_aspect;
64371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
64471c689dcSHans Verkuil 		return mpeg_video_bitrate_mode;
64571c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_TYPE:
64671c689dcSHans Verkuil 		return mpeg_stream_type;
64771c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_VBI_FMT:
64871c689dcSHans Verkuil 		return mpeg_stream_vbi_fmt;
64971c689dcSHans Verkuil 	case V4L2_CID_POWER_LINE_FREQUENCY:
65071c689dcSHans Verkuil 		return camera_power_line_frequency;
65171c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE_AUTO:
65271c689dcSHans Verkuil 		return camera_exposure_auto;
65371c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE_METERING:
65471c689dcSHans Verkuil 		return camera_exposure_metering;
65571c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_RANGE:
65671c689dcSHans Verkuil 		return camera_auto_focus_range;
65771c689dcSHans Verkuil 	case V4L2_CID_COLORFX:
65871c689dcSHans Verkuil 		return colorfx;
65971c689dcSHans Verkuil 	case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE:
66071c689dcSHans Verkuil 		return auto_n_preset_white_balance;
66171c689dcSHans Verkuil 	case V4L2_CID_ISO_SENSITIVITY_AUTO:
66271c689dcSHans Verkuil 		return camera_iso_sensitivity_auto;
66371c689dcSHans Verkuil 	case V4L2_CID_SCENE_MODE:
66471c689dcSHans Verkuil 		return scene_mode;
66571c689dcSHans Verkuil 	case V4L2_CID_TUNE_PREEMPHASIS:
66671c689dcSHans Verkuil 		return tune_emphasis;
66771c689dcSHans Verkuil 	case V4L2_CID_TUNE_DEEMPHASIS:
66871c689dcSHans Verkuil 		return tune_emphasis;
66971c689dcSHans Verkuil 	case V4L2_CID_FLASH_LED_MODE:
67071c689dcSHans Verkuil 		return flash_led_mode;
67171c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE_SOURCE:
67271c689dcSHans Verkuil 		return flash_strobe_source;
67371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEADER_MODE:
67471c689dcSHans Verkuil 		return header_mode;
67571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE:
67671c689dcSHans Verkuil 		return mpeg_video_frame_skip;
67771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE:
67871c689dcSHans Verkuil 		return multi_slice;
67971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE:
68071c689dcSHans Verkuil 		return entropy_mode;
68171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_LEVEL:
68271c689dcSHans Verkuil 		return mpeg_h264_level;
68371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE:
68471c689dcSHans Verkuil 		return h264_loop_filter;
68571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_PROFILE:
68671c689dcSHans Verkuil 		return h264_profile;
68771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC:
68871c689dcSHans Verkuil 		return vui_sar_idc;
68971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE:
69071c689dcSHans Verkuil 		return h264_fp_arrangement_type;
69171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE:
69271c689dcSHans Verkuil 		return h264_fmo_map_type;
69371c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_DECODE_MODE:
69471c689dcSHans Verkuil 		return h264_decode_mode;
69571c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_START_CODE:
69671c689dcSHans Verkuil 		return h264_start_code;
69771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE:
69871c689dcSHans Verkuil 		return h264_hierarchical_coding_type;
69971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL:
70071c689dcSHans Verkuil 		return mpeg_mpeg2_level;
70171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE:
70271c689dcSHans Verkuil 		return mpeg2_profile;
70371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL:
70471c689dcSHans Verkuil 		return mpeg_mpeg4_level;
70571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE:
70671c689dcSHans Verkuil 		return mpeg4_profile;
70771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:
70871c689dcSHans Verkuil 		return vpx_golden_frame_sel;
70971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:
71071c689dcSHans Verkuil 		return vp8_profile;
71171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VP9_PROFILE:
71271c689dcSHans Verkuil 		return vp9_profile;
71371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VP9_LEVEL:
71471c689dcSHans Verkuil 		return vp9_level;
71571c689dcSHans Verkuil 	case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:
71671c689dcSHans Verkuil 		return jpeg_chroma_subsampling;
71771c689dcSHans Verkuil 	case V4L2_CID_DV_TX_MODE:
71871c689dcSHans Verkuil 		return dv_tx_mode;
71971c689dcSHans Verkuil 	case V4L2_CID_DV_TX_RGB_RANGE:
72071c689dcSHans Verkuil 	case V4L2_CID_DV_RX_RGB_RANGE:
72171c689dcSHans Verkuil 		return dv_rgb_range;
72271c689dcSHans Verkuil 	case V4L2_CID_DV_TX_IT_CONTENT_TYPE:
72371c689dcSHans Verkuil 	case V4L2_CID_DV_RX_IT_CONTENT_TYPE:
72471c689dcSHans Verkuil 		return dv_it_content_type;
72571c689dcSHans Verkuil 	case V4L2_CID_DETECT_MD_MODE:
72671c689dcSHans Verkuil 		return detect_md_mode;
72771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE:
72871c689dcSHans Verkuil 		return hevc_profile;
72971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL:
73071c689dcSHans Verkuil 		return hevc_level;
73171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE:
73271c689dcSHans Verkuil 		return hevc_hierarchial_coding_type;
73371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE:
73471c689dcSHans Verkuil 		return hevc_refresh_type;
73571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD:
73671c689dcSHans Verkuil 		return hevc_size_of_length_field;
73771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_TIER:
73871c689dcSHans Verkuil 		return hevc_tier;
73971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE:
74071c689dcSHans Verkuil 		return hevc_loop_filter_mode;
741*9de30f57SDaniel Almeida 	case V4L2_CID_MPEG_VIDEO_AV1_PROFILE:
742*9de30f57SDaniel Almeida 		return av1_profile;
743*9de30f57SDaniel Almeida 	case V4L2_CID_MPEG_VIDEO_AV1_LEVEL:
744*9de30f57SDaniel Almeida 		return av1_level;
745b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_DECODE_MODE:
74671c689dcSHans Verkuil 		return hevc_decode_mode;
747b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_START_CODE:
74871c689dcSHans Verkuil 		return hevc_start_code;
74971c689dcSHans Verkuil 	case V4L2_CID_CAMERA_ORIENTATION:
75071c689dcSHans Verkuil 		return camera_orientation;
751fcbc4acfSDikshita Agarwal 	case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE:
752fcbc4acfSDikshita Agarwal 		return intra_refresh_period_type;
75371c689dcSHans Verkuil 	default:
75471c689dcSHans Verkuil 		return NULL;
75571c689dcSHans Verkuil 	}
75671c689dcSHans Verkuil }
75771c689dcSHans Verkuil EXPORT_SYMBOL(v4l2_ctrl_get_menu);
75871c689dcSHans Verkuil 
75971c689dcSHans Verkuil #define __v4l2_qmenu_int_len(arr, len) ({ *(len) = ARRAY_SIZE(arr); (arr); })
76071c689dcSHans Verkuil /*
76171c689dcSHans Verkuil  * Returns NULL or an s64 type array containing the menu for given
76271c689dcSHans Verkuil  * control ID. The total number of the menu items is returned in @len.
76371c689dcSHans Verkuil  */
v4l2_ctrl_get_int_menu(u32 id,u32 * len)76471c689dcSHans Verkuil const s64 *v4l2_ctrl_get_int_menu(u32 id, u32 *len)
76571c689dcSHans Verkuil {
76671c689dcSHans Verkuil 	static const s64 qmenu_int_vpx_num_partitions[] = {
76771c689dcSHans Verkuil 		1, 2, 4, 8,
76871c689dcSHans Verkuil 	};
76971c689dcSHans Verkuil 
77071c689dcSHans Verkuil 	static const s64 qmenu_int_vpx_num_ref_frames[] = {
77171c689dcSHans Verkuil 		1, 2, 3,
77271c689dcSHans Verkuil 	};
77371c689dcSHans Verkuil 
77471c689dcSHans Verkuil 	switch (id) {
77571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS:
77671c689dcSHans Verkuil 		return __v4l2_qmenu_int_len(qmenu_int_vpx_num_partitions, len);
77771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES:
77871c689dcSHans Verkuil 		return __v4l2_qmenu_int_len(qmenu_int_vpx_num_ref_frames, len);
77971c689dcSHans Verkuil 	default:
78071c689dcSHans Verkuil 		*len = 0;
78171c689dcSHans Verkuil 		return NULL;
78271c689dcSHans Verkuil 	}
78371c689dcSHans Verkuil }
78471c689dcSHans Verkuil EXPORT_SYMBOL(v4l2_ctrl_get_int_menu);
78571c689dcSHans Verkuil 
78671c689dcSHans Verkuil /* Return the control name. */
v4l2_ctrl_get_name(u32 id)78771c689dcSHans Verkuil const char *v4l2_ctrl_get_name(u32 id)
78871c689dcSHans Verkuil {
78971c689dcSHans Verkuil 	switch (id) {
79071c689dcSHans Verkuil 	/* USER controls */
79171c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
79271c689dcSHans Verkuil 	case V4L2_CID_USER_CLASS:		return "User Controls";
79371c689dcSHans Verkuil 	case V4L2_CID_BRIGHTNESS:		return "Brightness";
79471c689dcSHans Verkuil 	case V4L2_CID_CONTRAST:			return "Contrast";
79571c689dcSHans Verkuil 	case V4L2_CID_SATURATION:		return "Saturation";
79671c689dcSHans Verkuil 	case V4L2_CID_HUE:			return "Hue";
79771c689dcSHans Verkuil 	case V4L2_CID_AUDIO_VOLUME:		return "Volume";
79871c689dcSHans Verkuil 	case V4L2_CID_AUDIO_BALANCE:		return "Balance";
79971c689dcSHans Verkuil 	case V4L2_CID_AUDIO_BASS:		return "Bass";
80071c689dcSHans Verkuil 	case V4L2_CID_AUDIO_TREBLE:		return "Treble";
80171c689dcSHans Verkuil 	case V4L2_CID_AUDIO_MUTE:		return "Mute";
80271c689dcSHans Verkuil 	case V4L2_CID_AUDIO_LOUDNESS:		return "Loudness";
80371c689dcSHans Verkuil 	case V4L2_CID_BLACK_LEVEL:		return "Black Level";
80471c689dcSHans Verkuil 	case V4L2_CID_AUTO_WHITE_BALANCE:	return "White Balance, Automatic";
80571c689dcSHans Verkuil 	case V4L2_CID_DO_WHITE_BALANCE:		return "Do White Balance";
80671c689dcSHans Verkuil 	case V4L2_CID_RED_BALANCE:		return "Red Balance";
80771c689dcSHans Verkuil 	case V4L2_CID_BLUE_BALANCE:		return "Blue Balance";
80871c689dcSHans Verkuil 	case V4L2_CID_GAMMA:			return "Gamma";
80971c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE:			return "Exposure";
81071c689dcSHans Verkuil 	case V4L2_CID_AUTOGAIN:			return "Gain, Automatic";
81171c689dcSHans Verkuil 	case V4L2_CID_GAIN:			return "Gain";
81271c689dcSHans Verkuil 	case V4L2_CID_HFLIP:			return "Horizontal Flip";
81371c689dcSHans Verkuil 	case V4L2_CID_VFLIP:			return "Vertical Flip";
81471c689dcSHans Verkuil 	case V4L2_CID_POWER_LINE_FREQUENCY:	return "Power Line Frequency";
81571c689dcSHans Verkuil 	case V4L2_CID_HUE_AUTO:			return "Hue, Automatic";
81671c689dcSHans Verkuil 	case V4L2_CID_WHITE_BALANCE_TEMPERATURE: return "White Balance Temperature";
81771c689dcSHans Verkuil 	case V4L2_CID_SHARPNESS:		return "Sharpness";
81871c689dcSHans Verkuil 	case V4L2_CID_BACKLIGHT_COMPENSATION:	return "Backlight Compensation";
81971c689dcSHans Verkuil 	case V4L2_CID_CHROMA_AGC:		return "Chroma AGC";
82071c689dcSHans Verkuil 	case V4L2_CID_COLOR_KILLER:		return "Color Killer";
82171c689dcSHans Verkuil 	case V4L2_CID_COLORFX:			return "Color Effects";
82271c689dcSHans Verkuil 	case V4L2_CID_AUTOBRIGHTNESS:		return "Brightness, Automatic";
82371c689dcSHans Verkuil 	case V4L2_CID_BAND_STOP_FILTER:		return "Band-Stop Filter";
82471c689dcSHans Verkuil 	case V4L2_CID_ROTATE:			return "Rotate";
82571c689dcSHans Verkuil 	case V4L2_CID_BG_COLOR:			return "Background Color";
82671c689dcSHans Verkuil 	case V4L2_CID_CHROMA_GAIN:		return "Chroma Gain";
82771c689dcSHans Verkuil 	case V4L2_CID_ILLUMINATORS_1:		return "Illuminator 1";
82871c689dcSHans Verkuil 	case V4L2_CID_ILLUMINATORS_2:		return "Illuminator 2";
82971c689dcSHans Verkuil 	case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE:	return "Min Number of Capture Buffers";
83071c689dcSHans Verkuil 	case V4L2_CID_MIN_BUFFERS_FOR_OUTPUT:	return "Min Number of Output Buffers";
83171c689dcSHans Verkuil 	case V4L2_CID_ALPHA_COMPONENT:		return "Alpha Component";
83271c689dcSHans Verkuil 	case V4L2_CID_COLORFX_CBCR:		return "Color Effects, CbCr";
833ef9f18a9SDillon Min 	case V4L2_CID_COLORFX_RGB:              return "Color Effects, RGB";
83471c689dcSHans Verkuil 
83571c689dcSHans Verkuil 	/*
83671c689dcSHans Verkuil 	 * Codec controls
83771c689dcSHans Verkuil 	 *
83871c689dcSHans Verkuil 	 * The MPEG controls are applicable to all codec controls
83971c689dcSHans Verkuil 	 * and the 'MPEG' part of the define is historical.
84071c689dcSHans Verkuil 	 *
84171c689dcSHans Verkuil 	 * Keep the order of the 'case's the same as in videodev2.h!
84271c689dcSHans Verkuil 	 */
84371c689dcSHans Verkuil 	case V4L2_CID_CODEC_CLASS:		return "Codec Controls";
84471c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_TYPE:		return "Stream Type";
84571c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_PID_PMT:	return "Stream PMT Program ID";
84671c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_PID_AUDIO:	return "Stream Audio Program ID";
84771c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_PID_VIDEO:	return "Stream Video Program ID";
84871c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_PID_PCR:	return "Stream PCR Program ID";
84971c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_PES_ID_AUDIO: return "Stream PES Audio ID";
85071c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_PES_ID_VIDEO: return "Stream PES Video ID";
85171c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_VBI_FMT:	return "Stream VBI Format";
85271c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: return "Audio Sampling Frequency";
85371c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_ENCODING:	return "Audio Encoding";
85471c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_L1_BITRATE:	return "Audio Layer I Bitrate";
85571c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_L2_BITRATE:	return "Audio Layer II Bitrate";
85671c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_L3_BITRATE:	return "Audio Layer III Bitrate";
85771c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_MODE:		return "Audio Stereo Mode";
85871c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION: return "Audio Stereo Mode Extension";
85971c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_EMPHASIS:	return "Audio Emphasis";
86071c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_CRC:		return "Audio CRC";
86171c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_MUTE:		return "Audio Mute";
86271c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_AAC_BITRATE:	return "Audio AAC Bitrate";
86371c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_AC3_BITRATE:	return "Audio AC-3 Bitrate";
86471c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK:	return "Audio Playback";
86571c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK: return "Audio Multilingual Playback";
86671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_ENCODING:	return "Video Encoding";
86771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_ASPECT:	return "Video Aspect";
86871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_B_FRAMES:	return "Video B Frames";
86971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_GOP_SIZE:	return "Video GOP Size";
87071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE:	return "Video GOP Closure";
87171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_PULLDOWN:	return "Video Pulldown";
87271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:	return "Video Bitrate Mode";
87371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY:	return "Constant Quality";
87471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_BITRATE:	return "Video Bitrate";
87571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_BITRATE_PEAK:	return "Video Peak Bitrate";
87671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION: return "Video Temporal Decimation";
87771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MUTE:		return "Video Mute";
87871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MUTE_YUV:	return "Video Mute YUV";
87971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE:	return "Decoder Slice Interface";
88071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER:	return "MPEG4 Loop Filter Enable";
88171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB:	return "Number of Intra Refresh MBs";
882fcbc4acfSDikshita Agarwal 	case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE:	return "Intra Refresh Period Type";
8839d5adeecSStanimir Varbanov 	case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD:		return "Intra Refresh Period";
88471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE:		return "Frame Level Rate Control Enable";
88571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE:			return "H264 MB Level Rate Control";
88671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEADER_MODE:			return "Sequence Header Mode";
88771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MAX_REF_PIC:			return "Max Number of Reference Pics";
88871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE:		return "Frame Skip Mode";
88971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY:		return "Display Delay";
89071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE:	return "Display Delay Enable";
89171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_AU_DELIMITER:			return "Generate Access Unit Delimiters";
89271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP:		return "H263 I-Frame QP Value";
89371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP:		return "H263 P-Frame QP Value";
89471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP:		return "H263 B-Frame QP Value";
89571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H263_MIN_QP:			return "H263 Minimum QP Value";
89671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H263_MAX_QP:			return "H263 Maximum QP Value";
89771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP:		return "H264 I-Frame QP Value";
89871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP:		return "H264 P-Frame QP Value";
89971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP:		return "H264 B-Frame QP Value";
90071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_MAX_QP:			return "H264 Maximum QP Value";
90171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_MIN_QP:			return "H264 Minimum QP Value";
90271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM:		return "H264 8x8 Transform Enable";
90371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE:			return "H264 CPB Buffer Size";
90471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE:		return "H264 Entropy Mode";
90571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_I_PERIOD:			return "H264 I-Frame Period";
90671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_LEVEL:			return "H264 Level";
90771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA:	return "H264 Loop Filter Alpha Offset";
90871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA:		return "H264 Loop Filter Beta Offset";
90971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE:		return "H264 Loop Filter Mode";
91071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_PROFILE:			return "H264 Profile";
91171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT:	return "Vertical Size of SAR";
91271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH:	return "Horizontal Size of SAR";
91371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE:		return "Aspect Ratio VUI Enable";
91471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC:		return "VUI Aspect Ratio IDC";
91571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING:	return "H264 Enable Frame Packing SEI";
91671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0:	return "H264 Set Curr. Frame as Frame0";
91771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE:	return "H264 FP Arrangement Type";
91871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_FMO:			return "H264 Flexible MB Ordering";
91971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE:		return "H264 Map Type for FMO";
92071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP:		return "H264 FMO Number of Slice Groups";
92171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION:	return "H264 FMO Direction of Change";
92271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE:		return "H264 FMO Size of 1st Slice Grp";
92371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH:		return "H264 FMO No. of Consecutive MBs";
92471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_ASO:			return "H264 Arbitrary Slice Ordering";
92571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER:		return "H264 ASO Slice Order";
92671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING:	return "Enable H264 Hierarchical Coding";
92771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE:	return "H264 Hierarchical Coding Type";
92871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER:return "H264 Number of HC Layers";
92971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP:
93071c689dcSHans Verkuil 								return "H264 Set QP Value for HC Layers";
93171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION:
93271c689dcSHans Verkuil 								return "H264 Constrained Intra Pred";
93371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET:	return "H264 Chroma QP Index Offset";
93471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP:		return "H264 I-Frame Minimum QP Value";
93571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP:		return "H264 I-Frame Maximum QP Value";
93671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP:		return "H264 P-Frame Minimum QP Value";
93771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP:		return "H264 P-Frame Maximum QP Value";
93871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MIN_QP:		return "H264 B-Frame Minimum QP Value";
93971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_B_FRAME_MAX_QP:		return "H264 B-Frame Maximum QP Value";
94071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L0_BR:	return "H264 Hierarchical Lay 0 Bitrate";
94171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L1_BR:	return "H264 Hierarchical Lay 1 Bitrate";
94271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L2_BR:	return "H264 Hierarchical Lay 2 Bitrate";
94371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L3_BR:	return "H264 Hierarchical Lay 3 Bitrate";
94471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L4_BR:	return "H264 Hierarchical Lay 4 Bitrate";
94571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L5_BR:	return "H264 Hierarchical Lay 5 Bitrate";
94671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIER_CODING_L6_BR:	return "H264 Hierarchical Lay 6 Bitrate";
94771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL:			return "MPEG2 Level";
94871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE:			return "MPEG2 Profile";
94971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP:		return "MPEG4 I-Frame QP Value";
95071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP:		return "MPEG4 P-Frame QP Value";
95171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP:		return "MPEG4 B-Frame QP Value";
95271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP:			return "MPEG4 Minimum QP Value";
95371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP:			return "MPEG4 Maximum QP Value";
95471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL:			return "MPEG4 Level";
95571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE:			return "MPEG4 Profile";
95671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_QPEL:			return "Quarter Pixel Search Enable";
95771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES:		return "Maximum Bytes in a Slice";
95871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB:		return "Number of MBs in a Slice";
95971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE:		return "Slice Partitioning Method";
96071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VBV_SIZE:			return "VBV Buffer Size";
96171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_PTS:			return "Video Decoder PTS";
96271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_FRAME:			return "Video Decoder Frame Count";
96371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR:		return "Video Decoder Conceal Color";
96471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VBV_DELAY:			return "Initial Delay for VBV Control";
96571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE:		return "Horizontal MV Search Range";
96671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE:		return "Vertical MV Search Range";
96771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER:		return "Repeat Sequence Header";
96871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME:		return "Force Key Frame";
96971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_BASELAYER_PRIORITY_ID:		return "Base Layer Priority ID";
97071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_LTR_COUNT:			return "LTR Count";
97171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX:		return "Frame LTR Index";
97271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES:		return "Use LTR Frames";
97371c689dcSHans Verkuil 	case V4L2_CID_FWHT_I_FRAME_QP:				return "FWHT I-Frame QP Value";
97471c689dcSHans Verkuil 	case V4L2_CID_FWHT_P_FRAME_QP:				return "FWHT P-Frame QP Value";
97571c689dcSHans Verkuil 
97671c689dcSHans Verkuil 	/* VPX controls */
97771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS:		return "VPX Number of Partitions";
97871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4:		return "VPX Intra Mode Decision Disable";
97971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES:		return "VPX No. of Refs for P Frame";
98071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL:		return "VPX Loop Filter Level Range";
98171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS:		return "VPX Deblocking Effect Control";
98271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD:	return "VPX Golden Frame Refresh Period";
98371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:		return "VPX Golden Frame Indicator";
98471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_MIN_QP:			return "VPX Minimum QP Value";
98571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_MAX_QP:			return "VPX Maximum QP Value";
98671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP:		return "VPX I-Frame QP Value";
98771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP:		return "VPX P-Frame QP Value";
98871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:			return "VP8 Profile";
98971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VP9_PROFILE:			return "VP9 Profile";
99071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VP9_LEVEL:			return "VP9 Level";
99171c689dcSHans Verkuil 
99271c689dcSHans Verkuil 	/* HEVC controls */
99371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP:		return "HEVC I-Frame QP Value";
99471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP:		return "HEVC P-Frame QP Value";
99571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP:		return "HEVC B-Frame QP Value";
99671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP:			return "HEVC Minimum QP Value";
99771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP:			return "HEVC Maximum QP Value";
99871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MIN_QP:		return "HEVC I-Frame Minimum QP Value";
99971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_MAX_QP:		return "HEVC I-Frame Maximum QP Value";
100071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MIN_QP:		return "HEVC P-Frame Minimum QP Value";
100171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_MAX_QP:		return "HEVC P-Frame Maximum QP Value";
100271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MIN_QP:		return "HEVC B-Frame Minimum QP Value";
100371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_MAX_QP:		return "HEVC B-Frame Maximum QP Value";
100471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE:			return "HEVC Profile";
100571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL:			return "HEVC Level";
100671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_TIER:			return "HEVC Tier";
100771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION:	return "HEVC Frame Rate Resolution";
100871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH:	return "HEVC Maximum Coding Unit Depth";
100971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE:		return "HEVC Refresh Type";
101071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED:		return "HEVC Constant Intra Prediction";
101171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU:		return "HEVC Lossless Encoding";
101271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT:		return "HEVC Wavefront";
101371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE:		return "HEVC Loop Filter";
101471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP:			return "HEVC QP Values";
101571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE:		return "HEVC Hierarchical Coding Type";
101671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER:	return "HEVC Hierarchical Coding Layer";
101771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP:	return "HEVC Hierarchical Layer 0 QP";
101871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP:	return "HEVC Hierarchical Layer 1 QP";
101971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP:	return "HEVC Hierarchical Layer 2 QP";
102071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP:	return "HEVC Hierarchical Layer 3 QP";
102171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP:	return "HEVC Hierarchical Layer 4 QP";
102271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP:	return "HEVC Hierarchical Layer 5 QP";
102371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP:	return "HEVC Hierarchical Layer 6 QP";
102471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR:	return "HEVC Hierarchical Lay 0 BitRate";
102571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR:	return "HEVC Hierarchical Lay 1 BitRate";
102671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR:	return "HEVC Hierarchical Lay 2 BitRate";
102771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR:	return "HEVC Hierarchical Lay 3 BitRate";
102871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR:	return "HEVC Hierarchical Lay 4 BitRate";
102971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR:	return "HEVC Hierarchical Lay 5 BitRate";
103071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR:	return "HEVC Hierarchical Lay 6 BitRate";
103171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB:		return "HEVC General PB";
103271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID:		return "HEVC Temporal ID";
103371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING:		return "HEVC Strong Intra Smoothing";
103471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT:		return "HEVC Intra PU Split";
103571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION:		return "HEVC TMV Prediction";
103671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1:	return "HEVC Max Num of Candidate MVs";
103771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE:	return "HEVC ENC Without Startcode";
103871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD:		return "HEVC Num of I-Frame b/w 2 IDR";
103971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2:	return "HEVC Loop Filter Beta Offset";
104071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2:	return "HEVC Loop Filter TC Offset";
104171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD:	return "HEVC Size of Length Field";
104271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES:	return "Reference Frames for a P-Frame";
104371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR:		return "Prepend SPS and PPS to IDR";
104471c689dcSHans Verkuil 
1045*9de30f57SDaniel Almeida 	/* AV1 controls */
1046*9de30f57SDaniel Almeida 	case V4L2_CID_MPEG_VIDEO_AV1_PROFILE:			return "AV1 Profile";
1047*9de30f57SDaniel Almeida 	case V4L2_CID_MPEG_VIDEO_AV1_LEVEL:			return "AV1 Level";
1048*9de30f57SDaniel Almeida 
104971c689dcSHans Verkuil 	/* CAMERA controls */
105071c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
105171c689dcSHans Verkuil 	case V4L2_CID_CAMERA_CLASS:		return "Camera Controls";
105271c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE_AUTO:		return "Auto Exposure";
105371c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE_ABSOLUTE:	return "Exposure Time, Absolute";
105471c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE_AUTO_PRIORITY:	return "Exposure, Dynamic Framerate";
105571c689dcSHans Verkuil 	case V4L2_CID_PAN_RELATIVE:		return "Pan, Relative";
105671c689dcSHans Verkuil 	case V4L2_CID_TILT_RELATIVE:		return "Tilt, Relative";
105771c689dcSHans Verkuil 	case V4L2_CID_PAN_RESET:		return "Pan, Reset";
105871c689dcSHans Verkuil 	case V4L2_CID_TILT_RESET:		return "Tilt, Reset";
105971c689dcSHans Verkuil 	case V4L2_CID_PAN_ABSOLUTE:		return "Pan, Absolute";
106071c689dcSHans Verkuil 	case V4L2_CID_TILT_ABSOLUTE:		return "Tilt, Absolute";
106171c689dcSHans Verkuil 	case V4L2_CID_FOCUS_ABSOLUTE:		return "Focus, Absolute";
106271c689dcSHans Verkuil 	case V4L2_CID_FOCUS_RELATIVE:		return "Focus, Relative";
106371c689dcSHans Verkuil 	case V4L2_CID_FOCUS_AUTO:		return "Focus, Automatic Continuous";
106471c689dcSHans Verkuil 	case V4L2_CID_ZOOM_ABSOLUTE:		return "Zoom, Absolute";
106571c689dcSHans Verkuil 	case V4L2_CID_ZOOM_RELATIVE:		return "Zoom, Relative";
106671c689dcSHans Verkuil 	case V4L2_CID_ZOOM_CONTINUOUS:		return "Zoom, Continuous";
106771c689dcSHans Verkuil 	case V4L2_CID_PRIVACY:			return "Privacy";
106871c689dcSHans Verkuil 	case V4L2_CID_IRIS_ABSOLUTE:		return "Iris, Absolute";
106971c689dcSHans Verkuil 	case V4L2_CID_IRIS_RELATIVE:		return "Iris, Relative";
107071c689dcSHans Verkuil 	case V4L2_CID_AUTO_EXPOSURE_BIAS:	return "Auto Exposure, Bias";
107171c689dcSHans Verkuil 	case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE: return "White Balance, Auto & Preset";
107271c689dcSHans Verkuil 	case V4L2_CID_WIDE_DYNAMIC_RANGE:	return "Wide Dynamic Range";
107371c689dcSHans Verkuil 	case V4L2_CID_IMAGE_STABILIZATION:	return "Image Stabilization";
107471c689dcSHans Verkuil 	case V4L2_CID_ISO_SENSITIVITY:		return "ISO Sensitivity";
107571c689dcSHans Verkuil 	case V4L2_CID_ISO_SENSITIVITY_AUTO:	return "ISO Sensitivity, Auto";
107671c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE_METERING:	return "Exposure, Metering Mode";
107771c689dcSHans Verkuil 	case V4L2_CID_SCENE_MODE:		return "Scene Mode";
107871c689dcSHans Verkuil 	case V4L2_CID_3A_LOCK:			return "3A Lock";
107971c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_START:		return "Auto Focus, Start";
108071c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_STOP:		return "Auto Focus, Stop";
108171c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_STATUS:	return "Auto Focus, Status";
108271c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_RANGE:		return "Auto Focus, Range";
108371c689dcSHans Verkuil 	case V4L2_CID_PAN_SPEED:		return "Pan, Speed";
108471c689dcSHans Verkuil 	case V4L2_CID_TILT_SPEED:		return "Tilt, Speed";
108571c689dcSHans Verkuil 	case V4L2_CID_UNIT_CELL_SIZE:		return "Unit Cell Size";
108671c689dcSHans Verkuil 	case V4L2_CID_CAMERA_ORIENTATION:	return "Camera Orientation";
108771c689dcSHans Verkuil 	case V4L2_CID_CAMERA_SENSOR_ROTATION:	return "Camera Sensor Rotation";
10887673f305SBenjamin Mugnier 	case V4L2_CID_HDR_SENSOR_MODE:		return "HDR Sensor Mode";
108971c689dcSHans Verkuil 
109071c689dcSHans Verkuil 	/* FM Radio Modulator controls */
109171c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
109271c689dcSHans Verkuil 	case V4L2_CID_FM_TX_CLASS:		return "FM Radio Modulator Controls";
109371c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_DEVIATION:		return "RDS Signal Deviation";
109471c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_PI:		return "RDS Program ID";
109571c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_PTY:		return "RDS Program Type";
109671c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_PS_NAME:		return "RDS PS Name";
109771c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_RADIO_TEXT:	return "RDS Radio Text";
109871c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_MONO_STEREO:	return "RDS Stereo";
109971c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_ARTIFICIAL_HEAD:	return "RDS Artificial Head";
110071c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_COMPRESSED:	return "RDS Compressed";
110171c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_DYNAMIC_PTY:	return "RDS Dynamic PTY";
110271c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT: return "RDS Traffic Announcement";
110371c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_TRAFFIC_PROGRAM:	return "RDS Traffic Program";
110471c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_MUSIC_SPEECH:	return "RDS Music";
110571c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_ALT_FREQS_ENABLE:	return "RDS Enable Alt Frequencies";
110671c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_ALT_FREQS:		return "RDS Alternate Frequencies";
110771c689dcSHans Verkuil 	case V4L2_CID_AUDIO_LIMITER_ENABLED:	return "Audio Limiter Feature Enabled";
110871c689dcSHans Verkuil 	case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME: return "Audio Limiter Release Time";
110971c689dcSHans Verkuil 	case V4L2_CID_AUDIO_LIMITER_DEVIATION:	return "Audio Limiter Deviation";
111071c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_ENABLED: return "Audio Compression Enabled";
111171c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_GAIN:	return "Audio Compression Gain";
111271c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_THRESHOLD: return "Audio Compression Threshold";
111371c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME: return "Audio Compression Attack Time";
111471c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME: return "Audio Compression Release Time";
111571c689dcSHans Verkuil 	case V4L2_CID_PILOT_TONE_ENABLED:	return "Pilot Tone Feature Enabled";
111671c689dcSHans Verkuil 	case V4L2_CID_PILOT_TONE_DEVIATION:	return "Pilot Tone Deviation";
111771c689dcSHans Verkuil 	case V4L2_CID_PILOT_TONE_FREQUENCY:	return "Pilot Tone Frequency";
111871c689dcSHans Verkuil 	case V4L2_CID_TUNE_PREEMPHASIS:		return "Pre-Emphasis";
111971c689dcSHans Verkuil 	case V4L2_CID_TUNE_POWER_LEVEL:		return "Tune Power Level";
112071c689dcSHans Verkuil 	case V4L2_CID_TUNE_ANTENNA_CAPACITOR:	return "Tune Antenna Capacitor";
112171c689dcSHans Verkuil 
112271c689dcSHans Verkuil 	/* Flash controls */
112371c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
112471c689dcSHans Verkuil 	case V4L2_CID_FLASH_CLASS:		return "Flash Controls";
112571c689dcSHans Verkuil 	case V4L2_CID_FLASH_LED_MODE:		return "LED Mode";
112671c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE_SOURCE:	return "Strobe Source";
112771c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE:		return "Strobe";
112871c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE_STOP:	return "Stop Strobe";
112971c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE_STATUS:	return "Strobe Status";
113071c689dcSHans Verkuil 	case V4L2_CID_FLASH_TIMEOUT:		return "Strobe Timeout";
113171c689dcSHans Verkuil 	case V4L2_CID_FLASH_INTENSITY:		return "Intensity, Flash Mode";
113271c689dcSHans Verkuil 	case V4L2_CID_FLASH_TORCH_INTENSITY:	return "Intensity, Torch Mode";
113371c689dcSHans Verkuil 	case V4L2_CID_FLASH_INDICATOR_INTENSITY: return "Intensity, Indicator";
113471c689dcSHans Verkuil 	case V4L2_CID_FLASH_FAULT:		return "Faults";
113571c689dcSHans Verkuil 	case V4L2_CID_FLASH_CHARGE:		return "Charge";
113671c689dcSHans Verkuil 	case V4L2_CID_FLASH_READY:		return "Ready to Strobe";
113771c689dcSHans Verkuil 
113871c689dcSHans Verkuil 	/* JPEG encoder controls */
113971c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
114071c689dcSHans Verkuil 	case V4L2_CID_JPEG_CLASS:		return "JPEG Compression Controls";
114171c689dcSHans Verkuil 	case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:	return "Chroma Subsampling";
114271c689dcSHans Verkuil 	case V4L2_CID_JPEG_RESTART_INTERVAL:	return "Restart Interval";
114371c689dcSHans Verkuil 	case V4L2_CID_JPEG_COMPRESSION_QUALITY:	return "Compression Quality";
114471c689dcSHans Verkuil 	case V4L2_CID_JPEG_ACTIVE_MARKER:	return "Active Markers";
114571c689dcSHans Verkuil 
114671c689dcSHans Verkuil 	/* Image source controls */
114771c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
114871c689dcSHans Verkuil 	case V4L2_CID_IMAGE_SOURCE_CLASS:	return "Image Source Controls";
114971c689dcSHans Verkuil 	case V4L2_CID_VBLANK:			return "Vertical Blanking";
115071c689dcSHans Verkuil 	case V4L2_CID_HBLANK:			return "Horizontal Blanking";
115171c689dcSHans Verkuil 	case V4L2_CID_ANALOGUE_GAIN:		return "Analogue Gain";
115271c689dcSHans Verkuil 	case V4L2_CID_TEST_PATTERN_RED:		return "Red Pixel Value";
115371c689dcSHans Verkuil 	case V4L2_CID_TEST_PATTERN_GREENR:	return "Green (Red) Pixel Value";
115471c689dcSHans Verkuil 	case V4L2_CID_TEST_PATTERN_BLUE:	return "Blue Pixel Value";
115571c689dcSHans Verkuil 	case V4L2_CID_TEST_PATTERN_GREENB:	return "Green (Blue) Pixel Value";
1156a9c80593SDavid Plowman 	case V4L2_CID_NOTIFY_GAINS:		return "Notify Gains";
115771c689dcSHans Verkuil 
115871c689dcSHans Verkuil 	/* Image processing controls */
115971c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
116071c689dcSHans Verkuil 	case V4L2_CID_IMAGE_PROC_CLASS:		return "Image Processing Controls";
116171c689dcSHans Verkuil 	case V4L2_CID_LINK_FREQ:		return "Link Frequency";
116271c689dcSHans Verkuil 	case V4L2_CID_PIXEL_RATE:		return "Pixel Rate";
116371c689dcSHans Verkuil 	case V4L2_CID_TEST_PATTERN:		return "Test Pattern";
116471c689dcSHans Verkuil 	case V4L2_CID_DEINTERLACING_MODE:	return "Deinterlacing Mode";
116571c689dcSHans Verkuil 	case V4L2_CID_DIGITAL_GAIN:		return "Digital Gain";
116671c689dcSHans Verkuil 
116771c689dcSHans Verkuil 	/* DV controls */
116871c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
116971c689dcSHans Verkuil 	case V4L2_CID_DV_CLASS:			return "Digital Video Controls";
117071c689dcSHans Verkuil 	case V4L2_CID_DV_TX_HOTPLUG:		return "Hotplug Present";
117171c689dcSHans Verkuil 	case V4L2_CID_DV_TX_RXSENSE:		return "RxSense Present";
117271c689dcSHans Verkuil 	case V4L2_CID_DV_TX_EDID_PRESENT:	return "EDID Present";
117371c689dcSHans Verkuil 	case V4L2_CID_DV_TX_MODE:		return "Transmit Mode";
117471c689dcSHans Verkuil 	case V4L2_CID_DV_TX_RGB_RANGE:		return "Tx RGB Quantization Range";
117571c689dcSHans Verkuil 	case V4L2_CID_DV_TX_IT_CONTENT_TYPE:	return "Tx IT Content Type";
117671c689dcSHans Verkuil 	case V4L2_CID_DV_RX_POWER_PRESENT:	return "Power Present";
117771c689dcSHans Verkuil 	case V4L2_CID_DV_RX_RGB_RANGE:		return "Rx RGB Quantization Range";
117871c689dcSHans Verkuil 	case V4L2_CID_DV_RX_IT_CONTENT_TYPE:	return "Rx IT Content Type";
117971c689dcSHans Verkuil 
118071c689dcSHans Verkuil 	case V4L2_CID_FM_RX_CLASS:		return "FM Radio Receiver Controls";
118171c689dcSHans Verkuil 	case V4L2_CID_TUNE_DEEMPHASIS:		return "De-Emphasis";
118271c689dcSHans Verkuil 	case V4L2_CID_RDS_RECEPTION:		return "RDS Reception";
118371c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_CLASS:		return "RF Tuner Controls";
118471c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_RF_GAIN:		return "RF Gain";
118571c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_LNA_GAIN_AUTO:	return "LNA Gain, Auto";
118671c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_LNA_GAIN:	return "LNA Gain";
118771c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO:	return "Mixer Gain, Auto";
118871c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_MIXER_GAIN:	return "Mixer Gain";
118971c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_IF_GAIN_AUTO:	return "IF Gain, Auto";
119071c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_IF_GAIN:		return "IF Gain";
119171c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_BANDWIDTH_AUTO:	return "Bandwidth, Auto";
119271c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_BANDWIDTH:	return "Bandwidth";
119371c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_PLL_LOCK:	return "PLL Lock";
119471c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_PTY:		return "RDS Program Type";
119571c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_PS_NAME:		return "RDS PS Name";
119671c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_RADIO_TEXT:	return "RDS Radio Text";
119771c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT: return "RDS Traffic Announcement";
119871c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_TRAFFIC_PROGRAM:	return "RDS Traffic Program";
119971c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_MUSIC_SPEECH:	return "RDS Music";
120071c689dcSHans Verkuil 
120171c689dcSHans Verkuil 	/* Detection controls */
120271c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
120371c689dcSHans Verkuil 	case V4L2_CID_DETECT_CLASS:		return "Detection Controls";
120471c689dcSHans Verkuil 	case V4L2_CID_DETECT_MD_MODE:		return "Motion Detection Mode";
120571c689dcSHans Verkuil 	case V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD: return "MD Global Threshold";
120671c689dcSHans Verkuil 	case V4L2_CID_DETECT_MD_THRESHOLD_GRID:	return "MD Threshold Grid";
120771c689dcSHans Verkuil 	case V4L2_CID_DETECT_MD_REGION_GRID:	return "MD Region Grid";
120871c689dcSHans Verkuil 
120971c689dcSHans Verkuil 	/* Stateless Codec controls */
121071c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
121171c689dcSHans Verkuil 	case V4L2_CID_CODEC_STATELESS_CLASS:	return "Stateless Codec Controls";
121271c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_DECODE_MODE:		return "H264 Decode Mode";
121371c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_START_CODE:		return "H264 Start Code";
121471c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_SPS:			return "H264 Sequence Parameter Set";
121571c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_PPS:			return "H264 Picture Parameter Set";
121671c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_SCALING_MATRIX:		return "H264 Scaling Matrix";
121771c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_PRED_WEIGHTS:		return "H264 Prediction Weight Table";
121871c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_SLICE_PARAMS:		return "H264 Slice Parameters";
121971c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_DECODE_PARAMS:		return "H264 Decode Parameters";
122071c689dcSHans Verkuil 	case V4L2_CID_STATELESS_FWHT_PARAMS:			return "FWHT Stateless Parameters";
122171c689dcSHans Verkuil 	case V4L2_CID_STATELESS_VP8_FRAME:			return "VP8 Frame Parameters";
122271c689dcSHans Verkuil 	case V4L2_CID_STATELESS_MPEG2_SEQUENCE:			return "MPEG-2 Sequence Header";
122371c689dcSHans Verkuil 	case V4L2_CID_STATELESS_MPEG2_PICTURE:			return "MPEG-2 Picture Header";
122471c689dcSHans Verkuil 	case V4L2_CID_STATELESS_MPEG2_QUANTISATION:		return "MPEG-2 Quantisation Matrices";
1225b88dbe38SAndrzej Pietrasiewicz 	case V4L2_CID_STATELESS_VP9_COMPRESSED_HDR:	return "VP9 Probabilities Updates";
1226b88dbe38SAndrzej Pietrasiewicz 	case V4L2_CID_STATELESS_VP9_FRAME:			return "VP9 Frame Decode Parameters";
1227b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_SPS:			return "HEVC Sequence Parameter Set";
1228b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_PPS:			return "HEVC Picture Parameter Set";
1229b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_SLICE_PARAMS:		return "HEVC Slice Parameters";
1230b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_SCALING_MATRIX:		return "HEVC Scaling Matrix";
1231b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_DECODE_PARAMS:		return "HEVC Decode Parameters";
1232b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_DECODE_MODE:		return "HEVC Decode Mode";
1233b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_START_CODE:		return "HEVC Start Code";
1234311027bdSBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS:	return "HEVC Entry Point Offsets";
1235*9de30f57SDaniel Almeida 	case V4L2_CID_STATELESS_AV1_SEQUENCE:			return "AV1 Sequence Parameters";
1236*9de30f57SDaniel Almeida 	case V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY:		return "AV1 Tile Group Entry";
1237*9de30f57SDaniel Almeida 	case V4L2_CID_STATELESS_AV1_FRAME:			return "AV1 Frame Parameters";
1238*9de30f57SDaniel Almeida 	case V4L2_CID_STATELESS_AV1_FILM_GRAIN:			return "AV1 Film Grain";
123971c689dcSHans Verkuil 
124071c689dcSHans Verkuil 	/* Colorimetry controls */
124171c689dcSHans Verkuil 	/* Keep the order of the 'case's the same as in v4l2-controls.h! */
124271c689dcSHans Verkuil 	case V4L2_CID_COLORIMETRY_CLASS:	return "Colorimetry Controls";
124371c689dcSHans Verkuil 	case V4L2_CID_COLORIMETRY_HDR10_CLL_INFO:		return "HDR10 Content Light Info";
124471c689dcSHans Verkuil 	case V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY:	return "HDR10 Mastering Display";
124571c689dcSHans Verkuil 	default:
124671c689dcSHans Verkuil 		return NULL;
124771c689dcSHans Verkuil 	}
124871c689dcSHans Verkuil }
124971c689dcSHans Verkuil EXPORT_SYMBOL(v4l2_ctrl_get_name);
125071c689dcSHans Verkuil 
v4l2_ctrl_fill(u32 id,const char ** name,enum v4l2_ctrl_type * type,s64 * min,s64 * max,u64 * step,s64 * def,u32 * flags)125171c689dcSHans Verkuil void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
125271c689dcSHans Verkuil 		    s64 *min, s64 *max, u64 *step, s64 *def, u32 *flags)
125371c689dcSHans Verkuil {
125471c689dcSHans Verkuil 	*name = v4l2_ctrl_get_name(id);
125571c689dcSHans Verkuil 	*flags = 0;
125671c689dcSHans Verkuil 
125771c689dcSHans Verkuil 	switch (id) {
125871c689dcSHans Verkuil 	case V4L2_CID_AUDIO_MUTE:
125971c689dcSHans Verkuil 	case V4L2_CID_AUDIO_LOUDNESS:
126071c689dcSHans Verkuil 	case V4L2_CID_AUTO_WHITE_BALANCE:
126171c689dcSHans Verkuil 	case V4L2_CID_AUTOGAIN:
126271c689dcSHans Verkuil 	case V4L2_CID_HFLIP:
126371c689dcSHans Verkuil 	case V4L2_CID_VFLIP:
126471c689dcSHans Verkuil 	case V4L2_CID_HUE_AUTO:
126571c689dcSHans Verkuil 	case V4L2_CID_CHROMA_AGC:
126671c689dcSHans Verkuil 	case V4L2_CID_COLOR_KILLER:
126771c689dcSHans Verkuil 	case V4L2_CID_AUTOBRIGHTNESS:
126871c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_MUTE:
126971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MUTE:
127071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_GOP_CLOSURE:
127171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_PULLDOWN:
127271c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE_AUTO_PRIORITY:
127371c689dcSHans Verkuil 	case V4L2_CID_FOCUS_AUTO:
127471c689dcSHans Verkuil 	case V4L2_CID_PRIVACY:
127571c689dcSHans Verkuil 	case V4L2_CID_AUDIO_LIMITER_ENABLED:
127671c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_ENABLED:
127771c689dcSHans Verkuil 	case V4L2_CID_PILOT_TONE_ENABLED:
127871c689dcSHans Verkuil 	case V4L2_CID_ILLUMINATORS_1:
127971c689dcSHans Verkuil 	case V4L2_CID_ILLUMINATORS_2:
128071c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE_STATUS:
128171c689dcSHans Verkuil 	case V4L2_CID_FLASH_CHARGE:
128271c689dcSHans Verkuil 	case V4L2_CID_FLASH_READY:
128371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER:
128471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE:
128571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY_ENABLE:
128671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE:
128771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE:
128871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM:
128971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE:
129071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_QPEL:
129171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER:
129271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_AU_DELIMITER:
129371c689dcSHans Verkuil 	case V4L2_CID_WIDE_DYNAMIC_RANGE:
129471c689dcSHans Verkuil 	case V4L2_CID_IMAGE_STABILIZATION:
129571c689dcSHans Verkuil 	case V4L2_CID_RDS_RECEPTION:
129671c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_LNA_GAIN_AUTO:
129771c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO:
129871c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_IF_GAIN_AUTO:
129971c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_BANDWIDTH_AUTO:
130071c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_PLL_LOCK:
130171c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_MONO_STEREO:
130271c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_ARTIFICIAL_HEAD:
130371c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_COMPRESSED:
130471c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_DYNAMIC_PTY:
130571c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT:
130671c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_TRAFFIC_PROGRAM:
130771c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_MUSIC_SPEECH:
130871c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_ALT_FREQS_ENABLE:
130971c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT:
131071c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_TRAFFIC_PROGRAM:
131171c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_MUSIC_SPEECH:
131271c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_BOOLEAN;
131371c689dcSHans Verkuil 		*min = 0;
131471c689dcSHans Verkuil 		*max = *step = 1;
131571c689dcSHans Verkuil 		break;
131671c689dcSHans Verkuil 	case V4L2_CID_ROTATE:
131771c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER;
131871c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
131971c689dcSHans Verkuil 		break;
132071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE:
132171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE:
132271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_DISPLAY_DELAY:
13239d5adeecSStanimir Varbanov 	case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD:
132471c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER;
132571c689dcSHans Verkuil 		break;
132671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_LTR_COUNT:
132771c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER;
132871c689dcSHans Verkuil 		break;
132971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_FRAME_LTR_INDEX:
133071c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER;
133171c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_EXECUTE_ON_WRITE;
133271c689dcSHans Verkuil 		break;
133371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_USE_LTR_FRAMES:
133471c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_BITMASK;
133571c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_EXECUTE_ON_WRITE;
133671c689dcSHans Verkuil 		break;
133771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME:
133871c689dcSHans Verkuil 	case V4L2_CID_PAN_RESET:
133971c689dcSHans Verkuil 	case V4L2_CID_TILT_RESET:
134071c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE:
134171c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE_STOP:
134271c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_START:
134371c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_STOP:
134471c689dcSHans Verkuil 	case V4L2_CID_DO_WHITE_BALANCE:
134571c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_BUTTON;
134671c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_WRITE_ONLY |
134771c689dcSHans Verkuil 			  V4L2_CTRL_FLAG_EXECUTE_ON_WRITE;
134871c689dcSHans Verkuil 		*min = *max = *step = *def = 0;
134971c689dcSHans Verkuil 		break;
135071c689dcSHans Verkuil 	case V4L2_CID_POWER_LINE_FREQUENCY:
135171c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ:
135271c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_ENCODING:
135371c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_L1_BITRATE:
135471c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_L2_BITRATE:
135571c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_L3_BITRATE:
135671c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_AC3_BITRATE:
135771c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_MODE:
135871c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_MODE_EXTENSION:
135971c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_EMPHASIS:
136071c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_CRC:
136171c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK:
136271c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK:
136371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_ENCODING:
136471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_ASPECT:
136571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
136671c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_TYPE:
136771c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_VBI_FMT:
136871c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE_AUTO:
136971c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_RANGE:
137071c689dcSHans Verkuil 	case V4L2_CID_COLORFX:
137171c689dcSHans Verkuil 	case V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE:
137271c689dcSHans Verkuil 	case V4L2_CID_TUNE_PREEMPHASIS:
137371c689dcSHans Verkuil 	case V4L2_CID_FLASH_LED_MODE:
137471c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE_SOURCE:
137571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEADER_MODE:
137671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE:
137771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE:
137871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE:
137971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_LEVEL:
138071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE:
138171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_PROFILE:
138271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC:
138371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE:
138471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE:
138571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE:
138671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL:
138771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE:
138871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL:
138971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE:
139071c689dcSHans Verkuil 	case V4L2_CID_JPEG_CHROMA_SUBSAMPLING:
139171c689dcSHans Verkuil 	case V4L2_CID_ISO_SENSITIVITY_AUTO:
139271c689dcSHans Verkuil 	case V4L2_CID_EXPOSURE_METERING:
139371c689dcSHans Verkuil 	case V4L2_CID_SCENE_MODE:
139471c689dcSHans Verkuil 	case V4L2_CID_DV_TX_MODE:
139571c689dcSHans Verkuil 	case V4L2_CID_DV_TX_RGB_RANGE:
139671c689dcSHans Verkuil 	case V4L2_CID_DV_TX_IT_CONTENT_TYPE:
139771c689dcSHans Verkuil 	case V4L2_CID_DV_RX_RGB_RANGE:
139871c689dcSHans Verkuil 	case V4L2_CID_DV_RX_IT_CONTENT_TYPE:
139971c689dcSHans Verkuil 	case V4L2_CID_TEST_PATTERN:
140071c689dcSHans Verkuil 	case V4L2_CID_DEINTERLACING_MODE:
140171c689dcSHans Verkuil 	case V4L2_CID_TUNE_DEEMPHASIS:
140271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:
140371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VP8_PROFILE:
140471c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VP9_PROFILE:
140571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VP9_LEVEL:
140671c689dcSHans Verkuil 	case V4L2_CID_DETECT_MD_MODE:
140771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_PROFILE:
140871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_LEVEL:
140971c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE:
141071c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE:
141171c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD:
141271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_TIER:
141371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE:
1414*9de30f57SDaniel Almeida 	case V4L2_CID_MPEG_VIDEO_AV1_PROFILE:
1415*9de30f57SDaniel Almeida 	case V4L2_CID_MPEG_VIDEO_AV1_LEVEL:
1416b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_DECODE_MODE:
1417b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_START_CODE:
141871c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_DECODE_MODE:
141971c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_START_CODE:
142071c689dcSHans Verkuil 	case V4L2_CID_CAMERA_ORIENTATION:
1421fcbc4acfSDikshita Agarwal 	case V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE:
14227673f305SBenjamin Mugnier 	case V4L2_CID_HDR_SENSOR_MODE:
142371c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_MENU;
142471c689dcSHans Verkuil 		break;
142571c689dcSHans Verkuil 	case V4L2_CID_LINK_FREQ:
142671c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER_MENU;
142771c689dcSHans Verkuil 		break;
142871c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_PS_NAME:
142971c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_RADIO_TEXT:
143071c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_PS_NAME:
143171c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_RADIO_TEXT:
143271c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_STRING;
143371c689dcSHans Verkuil 		break;
143471c689dcSHans Verkuil 	case V4L2_CID_ISO_SENSITIVITY:
143571c689dcSHans Verkuil 	case V4L2_CID_AUTO_EXPOSURE_BIAS:
143671c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS:
143771c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES:
143871c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER_MENU;
143971c689dcSHans Verkuil 		break;
144071c689dcSHans Verkuil 	case V4L2_CID_USER_CLASS:
144171c689dcSHans Verkuil 	case V4L2_CID_CAMERA_CLASS:
144271c689dcSHans Verkuil 	case V4L2_CID_CODEC_CLASS:
144371c689dcSHans Verkuil 	case V4L2_CID_FM_TX_CLASS:
144471c689dcSHans Verkuil 	case V4L2_CID_FLASH_CLASS:
144571c689dcSHans Verkuil 	case V4L2_CID_JPEG_CLASS:
144671c689dcSHans Verkuil 	case V4L2_CID_IMAGE_SOURCE_CLASS:
144771c689dcSHans Verkuil 	case V4L2_CID_IMAGE_PROC_CLASS:
144871c689dcSHans Verkuil 	case V4L2_CID_DV_CLASS:
144971c689dcSHans Verkuil 	case V4L2_CID_FM_RX_CLASS:
145071c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_CLASS:
145171c689dcSHans Verkuil 	case V4L2_CID_DETECT_CLASS:
145271c689dcSHans Verkuil 	case V4L2_CID_CODEC_STATELESS_CLASS:
145371c689dcSHans Verkuil 	case V4L2_CID_COLORIMETRY_CLASS:
145471c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_CTRL_CLASS;
145571c689dcSHans Verkuil 		/* You can neither read nor write these */
145671c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_WRITE_ONLY;
145771c689dcSHans Verkuil 		*min = *max = *step = *def = 0;
145871c689dcSHans Verkuil 		break;
145971c689dcSHans Verkuil 	case V4L2_CID_BG_COLOR:
1460ef9f18a9SDillon Min 	case V4L2_CID_COLORFX_RGB:
146171c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER;
146271c689dcSHans Verkuil 		*step = 1;
146371c689dcSHans Verkuil 		*min = 0;
1464ef9f18a9SDillon Min 		/* Max is calculated as RGB888 that is 2^24 - 1 */
1465ef9f18a9SDillon Min 		*max = 0xffffff;
146671c689dcSHans Verkuil 		break;
1467ee4a929eSDillon Min 	case V4L2_CID_COLORFX_CBCR:
1468ee4a929eSDillon Min 		*type = V4L2_CTRL_TYPE_INTEGER;
1469ee4a929eSDillon Min 		*step = 1;
1470ee4a929eSDillon Min 		*min = 0;
1471ee4a929eSDillon Min 		*max = 0xffff;
1472ee4a929eSDillon Min 		break;
147371c689dcSHans Verkuil 	case V4L2_CID_FLASH_FAULT:
147471c689dcSHans Verkuil 	case V4L2_CID_JPEG_ACTIVE_MARKER:
147571c689dcSHans Verkuil 	case V4L2_CID_3A_LOCK:
147671c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_STATUS:
147771c689dcSHans Verkuil 	case V4L2_CID_DV_TX_HOTPLUG:
147871c689dcSHans Verkuil 	case V4L2_CID_DV_TX_RXSENSE:
147971c689dcSHans Verkuil 	case V4L2_CID_DV_TX_EDID_PRESENT:
148071c689dcSHans Verkuil 	case V4L2_CID_DV_RX_POWER_PRESENT:
148171c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_BITMASK;
148271c689dcSHans Verkuil 		break;
148371c689dcSHans Verkuil 	case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE:
148471c689dcSHans Verkuil 	case V4L2_CID_MIN_BUFFERS_FOR_OUTPUT:
148571c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER;
148671c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_READ_ONLY;
148771c689dcSHans Verkuil 		break;
148871c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_PTS:
148971c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER64;
149071c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY;
149171c689dcSHans Verkuil 		*min = *def = 0;
149271c689dcSHans Verkuil 		*max = 0x1ffffffffLL;
149371c689dcSHans Verkuil 		*step = 1;
149471c689dcSHans Verkuil 		break;
149571c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_FRAME:
149671c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER64;
149771c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_READ_ONLY;
149871c689dcSHans Verkuil 		*min = *def = 0;
149971c689dcSHans Verkuil 		*max = 0x7fffffffffffffffLL;
150071c689dcSHans Verkuil 		*step = 1;
150171c689dcSHans Verkuil 		break;
150271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_DEC_CONCEAL_COLOR:
150371c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER64;
150471c689dcSHans Verkuil 		*min = 0;
150571c689dcSHans Verkuil 		/* default for 8 bit black, luma is 16, chroma is 128 */
150671c689dcSHans Verkuil 		*def = 0x8000800010LL;
150771c689dcSHans Verkuil 		*max = 0xffffffffffffLL;
150871c689dcSHans Verkuil 		*step = 1;
150971c689dcSHans Verkuil 		break;
151071c689dcSHans Verkuil 	case V4L2_CID_PIXEL_RATE:
151171c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER64;
151271c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_READ_ONLY;
151371c689dcSHans Verkuil 		break;
151471c689dcSHans Verkuil 	case V4L2_CID_DETECT_MD_REGION_GRID:
151571c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_U8;
151671c689dcSHans Verkuil 		break;
151771c689dcSHans Verkuil 	case V4L2_CID_DETECT_MD_THRESHOLD_GRID:
151871c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_U16;
151971c689dcSHans Verkuil 		break;
152071c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_ALT_FREQS:
152171c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_U32;
152271c689dcSHans Verkuil 		break;
152371c689dcSHans Verkuil 	case V4L2_CID_STATELESS_MPEG2_SEQUENCE:
152471c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_MPEG2_SEQUENCE;
152571c689dcSHans Verkuil 		break;
152671c689dcSHans Verkuil 	case V4L2_CID_STATELESS_MPEG2_PICTURE:
152771c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_MPEG2_PICTURE;
152871c689dcSHans Verkuil 		break;
152971c689dcSHans Verkuil 	case V4L2_CID_STATELESS_MPEG2_QUANTISATION:
153071c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_MPEG2_QUANTISATION;
153171c689dcSHans Verkuil 		break;
153271c689dcSHans Verkuil 	case V4L2_CID_STATELESS_FWHT_PARAMS:
153371c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_FWHT_PARAMS;
153471c689dcSHans Verkuil 		break;
153571c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_SPS:
153671c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_H264_SPS;
153771c689dcSHans Verkuil 		break;
153871c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_PPS:
153971c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_H264_PPS;
154071c689dcSHans Verkuil 		break;
154171c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_SCALING_MATRIX:
154271c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_H264_SCALING_MATRIX;
154371c689dcSHans Verkuil 		break;
154471c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_SLICE_PARAMS:
154571c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_H264_SLICE_PARAMS;
154671c689dcSHans Verkuil 		break;
154771c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_DECODE_PARAMS:
154871c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_H264_DECODE_PARAMS;
154971c689dcSHans Verkuil 		break;
155071c689dcSHans Verkuil 	case V4L2_CID_STATELESS_H264_PRED_WEIGHTS:
155171c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_H264_PRED_WEIGHTS;
155271c689dcSHans Verkuil 		break;
155371c689dcSHans Verkuil 	case V4L2_CID_STATELESS_VP8_FRAME:
155471c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_VP8_FRAME;
155571c689dcSHans Verkuil 		break;
1556b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_SPS:
155771c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_HEVC_SPS;
155871c689dcSHans Verkuil 		break;
1559b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_PPS:
156071c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_HEVC_PPS;
156171c689dcSHans Verkuil 		break;
1562b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_SLICE_PARAMS:
156371c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS;
1564869ba3c8SBenjamin Gaignard 		*flags |= V4L2_CTRL_FLAG_DYNAMIC_ARRAY;
156571c689dcSHans Verkuil 		break;
1566b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_SCALING_MATRIX:
15677ba59fb6SBenjamin Gaignard 		*type = V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX;
15687ba59fb6SBenjamin Gaignard 		break;
1569b92de2f9SBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_DECODE_PARAMS:
1570d395a78dSBenjamin Gaignard 		*type = V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS;
1571d395a78dSBenjamin Gaignard 		break;
1572311027bdSBenjamin Gaignard 	case V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS:
1573311027bdSBenjamin Gaignard 		*type = V4L2_CTRL_TYPE_U32;
1574311027bdSBenjamin Gaignard 		*flags |= V4L2_CTRL_FLAG_DYNAMIC_ARRAY;
1575311027bdSBenjamin Gaignard 		break;
1576b88dbe38SAndrzej Pietrasiewicz 	case V4L2_CID_STATELESS_VP9_COMPRESSED_HDR:
1577b88dbe38SAndrzej Pietrasiewicz 		*type = V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR;
1578b88dbe38SAndrzej Pietrasiewicz 		break;
1579b88dbe38SAndrzej Pietrasiewicz 	case V4L2_CID_STATELESS_VP9_FRAME:
1580b88dbe38SAndrzej Pietrasiewicz 		*type = V4L2_CTRL_TYPE_VP9_FRAME;
1581b88dbe38SAndrzej Pietrasiewicz 		break;
1582*9de30f57SDaniel Almeida 	case V4L2_CID_STATELESS_AV1_SEQUENCE:
1583*9de30f57SDaniel Almeida 		*type = V4L2_CTRL_TYPE_AV1_SEQUENCE;
1584*9de30f57SDaniel Almeida 		break;
1585*9de30f57SDaniel Almeida 	case V4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY:
1586*9de30f57SDaniel Almeida 		*type = V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY;
1587*9de30f57SDaniel Almeida 		*flags |= V4L2_CTRL_FLAG_DYNAMIC_ARRAY;
1588*9de30f57SDaniel Almeida 		break;
1589*9de30f57SDaniel Almeida 	case V4L2_CID_STATELESS_AV1_FRAME:
1590*9de30f57SDaniel Almeida 		*type = V4L2_CTRL_TYPE_AV1_FRAME;
1591*9de30f57SDaniel Almeida 		break;
1592*9de30f57SDaniel Almeida 	case V4L2_CID_STATELESS_AV1_FILM_GRAIN:
1593*9de30f57SDaniel Almeida 		*type = V4L2_CTRL_TYPE_AV1_FILM_GRAIN;
1594*9de30f57SDaniel Almeida 		break;
159571c689dcSHans Verkuil 	case V4L2_CID_UNIT_CELL_SIZE:
159671c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_AREA;
159771c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_READ_ONLY;
159871c689dcSHans Verkuil 		break;
159971c689dcSHans Verkuil 	case V4L2_CID_COLORIMETRY_HDR10_CLL_INFO:
160071c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_HDR10_CLL_INFO;
160171c689dcSHans Verkuil 		break;
160271c689dcSHans Verkuil 	case V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY:
160371c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY;
160471c689dcSHans Verkuil 		break;
160571c689dcSHans Verkuil 	default:
160671c689dcSHans Verkuil 		*type = V4L2_CTRL_TYPE_INTEGER;
160771c689dcSHans Verkuil 		break;
160871c689dcSHans Verkuil 	}
160971c689dcSHans Verkuil 	switch (id) {
161071c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_ENCODING:
161171c689dcSHans Verkuil 	case V4L2_CID_MPEG_AUDIO_MODE:
161271c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_BITRATE_MODE:
161371c689dcSHans Verkuil 	case V4L2_CID_MPEG_VIDEO_B_FRAMES:
161471c689dcSHans Verkuil 	case V4L2_CID_MPEG_STREAM_TYPE:
161571c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_UPDATE;
161671c689dcSHans Verkuil 		break;
161771c689dcSHans Verkuil 	case V4L2_CID_AUDIO_VOLUME:
161871c689dcSHans Verkuil 	case V4L2_CID_AUDIO_BALANCE:
161971c689dcSHans Verkuil 	case V4L2_CID_AUDIO_BASS:
162071c689dcSHans Verkuil 	case V4L2_CID_AUDIO_TREBLE:
162171c689dcSHans Verkuil 	case V4L2_CID_BRIGHTNESS:
162271c689dcSHans Verkuil 	case V4L2_CID_CONTRAST:
162371c689dcSHans Verkuil 	case V4L2_CID_SATURATION:
162471c689dcSHans Verkuil 	case V4L2_CID_HUE:
162571c689dcSHans Verkuil 	case V4L2_CID_RED_BALANCE:
162671c689dcSHans Verkuil 	case V4L2_CID_BLUE_BALANCE:
162771c689dcSHans Verkuil 	case V4L2_CID_GAMMA:
162871c689dcSHans Verkuil 	case V4L2_CID_SHARPNESS:
162971c689dcSHans Verkuil 	case V4L2_CID_CHROMA_GAIN:
163071c689dcSHans Verkuil 	case V4L2_CID_RDS_TX_DEVIATION:
163171c689dcSHans Verkuil 	case V4L2_CID_AUDIO_LIMITER_RELEASE_TIME:
163271c689dcSHans Verkuil 	case V4L2_CID_AUDIO_LIMITER_DEVIATION:
163371c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_GAIN:
163471c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_THRESHOLD:
163571c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME:
163671c689dcSHans Verkuil 	case V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME:
163771c689dcSHans Verkuil 	case V4L2_CID_PILOT_TONE_DEVIATION:
163871c689dcSHans Verkuil 	case V4L2_CID_PILOT_TONE_FREQUENCY:
163971c689dcSHans Verkuil 	case V4L2_CID_TUNE_POWER_LEVEL:
164071c689dcSHans Verkuil 	case V4L2_CID_TUNE_ANTENNA_CAPACITOR:
164171c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_RF_GAIN:
164271c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_LNA_GAIN:
164371c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_MIXER_GAIN:
164471c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_IF_GAIN:
164571c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_BANDWIDTH:
164671c689dcSHans Verkuil 	case V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD:
164771c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_SLIDER;
164871c689dcSHans Verkuil 		break;
164971c689dcSHans Verkuil 	case V4L2_CID_PAN_RELATIVE:
165071c689dcSHans Verkuil 	case V4L2_CID_TILT_RELATIVE:
165171c689dcSHans Verkuil 	case V4L2_CID_FOCUS_RELATIVE:
165271c689dcSHans Verkuil 	case V4L2_CID_IRIS_RELATIVE:
165371c689dcSHans Verkuil 	case V4L2_CID_ZOOM_RELATIVE:
165471c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_WRITE_ONLY |
165571c689dcSHans Verkuil 			  V4L2_CTRL_FLAG_EXECUTE_ON_WRITE;
165671c689dcSHans Verkuil 		break;
165771c689dcSHans Verkuil 	case V4L2_CID_FLASH_STROBE_STATUS:
165871c689dcSHans Verkuil 	case V4L2_CID_AUTO_FOCUS_STATUS:
165971c689dcSHans Verkuil 	case V4L2_CID_FLASH_READY:
166071c689dcSHans Verkuil 	case V4L2_CID_DV_TX_HOTPLUG:
166171c689dcSHans Verkuil 	case V4L2_CID_DV_TX_RXSENSE:
166271c689dcSHans Verkuil 	case V4L2_CID_DV_TX_EDID_PRESENT:
166371c689dcSHans Verkuil 	case V4L2_CID_DV_RX_POWER_PRESENT:
166471c689dcSHans Verkuil 	case V4L2_CID_DV_RX_IT_CONTENT_TYPE:
166571c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_PTY:
166671c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_PS_NAME:
166771c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_RADIO_TEXT:
166871c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT:
166971c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_TRAFFIC_PROGRAM:
167071c689dcSHans Verkuil 	case V4L2_CID_RDS_RX_MUSIC_SPEECH:
167171c689dcSHans Verkuil 	case V4L2_CID_CAMERA_ORIENTATION:
167271c689dcSHans Verkuil 	case V4L2_CID_CAMERA_SENSOR_ROTATION:
167371c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_READ_ONLY;
167471c689dcSHans Verkuil 		break;
167571c689dcSHans Verkuil 	case V4L2_CID_RF_TUNER_PLL_LOCK:
167671c689dcSHans Verkuil 		*flags |= V4L2_CTRL_FLAG_VOLATILE;
167771c689dcSHans Verkuil 		break;
167871c689dcSHans Verkuil 	}
167971c689dcSHans Verkuil }
168071c689dcSHans Verkuil EXPORT_SYMBOL(v4l2_ctrl_fill);
1681