diff options
-rw-r--r-- | drivers/media/v4l2-core/v4l2-ctrls.c | 27 | ||||
-rw-r--r-- | include/uapi/linux/v4l2-controls.h | 17 |
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) | ||
924 | enum 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 |