aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/v4l2-core/v4l2-ctrls.c27
-rw-r--r--include/uapi/linux/v4l2-controls.h17
2 files changed, 44 insertions, 0 deletions
diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c
index 5aaf15e047c8..5c3b8de82e35 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls.c
@@ -462,6 +462,13 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
462 "RGB full range (0-255)", 462 "RGB full range (0-255)",
463 NULL, 463 NULL,
464 }; 464 };
465 static const char * const detect_md_mode[] = {
466 "Disabled",
467 "Global",
468 "Threshold Grid",
469 "Region Grid",
470 NULL,
471 };
465 472
466 473
467 switch (id) { 474 switch (id) {
@@ -553,6 +560,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
553 case V4L2_CID_DV_TX_RGB_RANGE: 560 case V4L2_CID_DV_TX_RGB_RANGE:
554 case V4L2_CID_DV_RX_RGB_RANGE: 561 case V4L2_CID_DV_RX_RGB_RANGE:
555 return dv_rgb_range; 562 return dv_rgb_range;
563 case V4L2_CID_DETECT_MD_MODE:
564 return detect_md_mode;
556 565
557 default: 566 default:
558 return NULL; 567 return NULL;
@@ -874,6 +883,15 @@ const char *v4l2_ctrl_get_name(u32 id)
874 case V4L2_CID_RF_TUNER_BANDWIDTH_AUTO: return "Bandwidth, Auto"; 883 case V4L2_CID_RF_TUNER_BANDWIDTH_AUTO: return "Bandwidth, Auto";
875 case V4L2_CID_RF_TUNER_BANDWIDTH: return "Bandwidth"; 884 case V4L2_CID_RF_TUNER_BANDWIDTH: return "Bandwidth";
876 case V4L2_CID_RF_TUNER_PLL_LOCK: return "PLL Lock"; 885 case V4L2_CID_RF_TUNER_PLL_LOCK: return "PLL Lock";
886
887 /* Detection controls */
888 /* Keep the order of the 'case's the same as in v4l2-controls.h! */
889 case V4L2_CID_DETECT_CLASS: return "Detection Controls";
890 case V4L2_CID_DETECT_MD_MODE: return "Motion Detection Mode";
891 case V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD: return "MD Global Threshold";
892 case V4L2_CID_DETECT_MD_THRESHOLD_GRID: return "MD Threshold Grid";
893 case V4L2_CID_DETECT_MD_REGION_GRID: return "MD Region Grid";
894
877 default: 895 default:
878 return NULL; 896 return NULL;
879 } 897 }
@@ -992,6 +1010,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
992 case V4L2_CID_TEST_PATTERN: 1010 case V4L2_CID_TEST_PATTERN:
993 case V4L2_CID_TUNE_DEEMPHASIS: 1011 case V4L2_CID_TUNE_DEEMPHASIS:
994 case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL: 1012 case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:
1013 case V4L2_CID_DETECT_MD_MODE:
995 *type = V4L2_CTRL_TYPE_MENU; 1014 *type = V4L2_CTRL_TYPE_MENU;
996 break; 1015 break;
997 case V4L2_CID_LINK_FREQ: 1016 case V4L2_CID_LINK_FREQ:
@@ -1018,6 +1037,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
1018 case V4L2_CID_DV_CLASS: 1037 case V4L2_CID_DV_CLASS:
1019 case V4L2_CID_FM_RX_CLASS: 1038 case V4L2_CID_FM_RX_CLASS:
1020 case V4L2_CID_RF_TUNER_CLASS: 1039 case V4L2_CID_RF_TUNER_CLASS:
1040 case V4L2_CID_DETECT_CLASS:
1021 *type = V4L2_CTRL_TYPE_CTRL_CLASS; 1041 *type = V4L2_CTRL_TYPE_CTRL_CLASS;
1022 /* You can neither read not write these */ 1042 /* You can neither read not write these */
1023 *flags |= V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_WRITE_ONLY; 1043 *flags |= V4L2_CTRL_FLAG_READ_ONLY | V4L2_CTRL_FLAG_WRITE_ONLY;
@@ -1063,6 +1083,12 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
1063 *type = V4L2_CTRL_TYPE_INTEGER64; 1083 *type = V4L2_CTRL_TYPE_INTEGER64;
1064 *flags |= V4L2_CTRL_FLAG_READ_ONLY; 1084 *flags |= V4L2_CTRL_FLAG_READ_ONLY;
1065 break; 1085 break;
1086 case V4L2_CID_DETECT_MD_REGION_GRID:
1087 *type = V4L2_CTRL_TYPE_U8;
1088 break;
1089 case V4L2_CID_DETECT_MD_THRESHOLD_GRID:
1090 *type = V4L2_CTRL_TYPE_U16;
1091 break;
1066 default: 1092 default:
1067 *type = V4L2_CTRL_TYPE_INTEGER; 1093 *type = V4L2_CTRL_TYPE_INTEGER;
1068 break; 1094 break;
@@ -1103,6 +1129,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
1103 case V4L2_CID_RF_TUNER_MIXER_GAIN: 1129 case V4L2_CID_RF_TUNER_MIXER_GAIN:
1104 case V4L2_CID_RF_TUNER_IF_GAIN: 1130 case V4L2_CID_RF_TUNER_IF_GAIN:
1105 case V4L2_CID_RF_TUNER_BANDWIDTH: 1131 case V4L2_CID_RF_TUNER_BANDWIDTH:
1132 case V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD:
1106 *flags |= V4L2_CTRL_FLAG_SLIDER; 1133 *flags |= V4L2_CTRL_FLAG_SLIDER;
1107 break; 1134 break;
1108 case V4L2_CID_PAN_RELATIVE: 1135 case V4L2_CID_PAN_RELATIVE:
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
index 2ac5597f3ee1..db526d1c8309 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -61,6 +61,7 @@
61#define V4L2_CTRL_CLASS_DV 0x00a00000 /* Digital Video controls */ 61#define V4L2_CTRL_CLASS_DV 0x00a00000 /* Digital Video controls */
62#define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* FM Receiver controls */ 62#define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* FM Receiver controls */
63#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */ 63#define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */
64#define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */
64 65
65/* User-class control IDs */ 66/* User-class control IDs */
66 67
@@ -914,4 +915,20 @@ enum v4l2_deemphasis {
914#define V4L2_CID_RF_TUNER_IF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 62) 915#define V4L2_CID_RF_TUNER_IF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 62)
915#define V4L2_CID_RF_TUNER_PLL_LOCK (V4L2_CID_RF_TUNER_CLASS_BASE + 91) 916#define V4L2_CID_RF_TUNER_PLL_LOCK (V4L2_CID_RF_TUNER_CLASS_BASE + 91)
916 917
918
919/* Detection-class control IDs defined by V4L2 */
920#define V4L2_CID_DETECT_CLASS_BASE (V4L2_CTRL_CLASS_DETECT | 0x900)
921#define V4L2_CID_DETECT_CLASS (V4L2_CTRL_CLASS_DETECT | 1)
922
923#define V4L2_CID_DETECT_MD_MODE (V4L2_CID_DETECT_CLASS_BASE + 1)
924enum v4l2_detect_md_mode {
925 V4L2_DETECT_MD_MODE_DISABLED = 0,
926 V4L2_DETECT_MD_MODE_GLOBAL = 1,
927 V4L2_DETECT_MD_MODE_THRESHOLD_GRID = 2,
928 V4L2_DETECT_MD_MODE_REGION_GRID = 3,
929};
930#define V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD (V4L2_CID_DETECT_CLASS_BASE + 2)
931#define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)
932#define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)
933
917#endif 934#endif