media: uvcvideo: Support UVC_CROSXU_CONTROL_IQ_PROFILE
The ChromeOS XU provides a control to change the IQ profile for a camera. It can be switched from VIVID (a.k.a. standard) to NONE (a.k.a. natural). Wire it up to the standard v4l2 control. Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Reviewed-by: Hans de Goede <hansg@kernel.org> Signed-off-by: Hans de Goede <hansg@kernel.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>pull/1354/merge
parent
04ddfcdb71
commit
0f99b8bed4
|
|
@ -376,6 +376,15 @@ static const struct uvc_control_info uvc_ctrls[] = {
|
|||
| UVC_CTRL_FLAG_GET_DEF
|
||||
| UVC_CTRL_FLAG_AUTO_UPDATE,
|
||||
},
|
||||
{
|
||||
.entity = UVC_GUID_CHROMEOS_XU,
|
||||
.selector = UVC_CROSXU_CONTROL_IQ_PROFILE,
|
||||
.index = 3,
|
||||
.size = 1,
|
||||
.flags = UVC_CTRL_FLAG_SET_CUR
|
||||
| UVC_CTRL_FLAG_GET_RANGE
|
||||
| UVC_CTRL_FLAG_RESTORE,
|
||||
},
|
||||
};
|
||||
|
||||
static const u32 uvc_control_classes[] = {
|
||||
|
|
@ -384,6 +393,19 @@ static const u32 uvc_control_classes[] = {
|
|||
};
|
||||
|
||||
static const int exposure_auto_mapping[] = { 2, 1, 4, 8 };
|
||||
static const int cros_colorfx_mapping[] = {
|
||||
1, /* V4L2_COLORFX_NONE */
|
||||
-1, /* V4L2_COLORFX_BW */
|
||||
-1, /* V4L2_COLORFX_SEPIA */
|
||||
-1, /* V4L2_COLORFX_NEGATIVE */
|
||||
-1, /* V4L2_COLORFX_EMBOSS */
|
||||
-1, /* V4L2_COLORFX_SKETCH */
|
||||
-1, /* V4L2_COLORFX_SKY_BLUE */
|
||||
-1, /* V4L2_COLORFX_GRASS_GREEN */
|
||||
-1, /* V4L2_COLORFX_SKIN_WHITEN */
|
||||
0, /* V4L2_COLORFX_VIVID */
|
||||
};
|
||||
|
||||
|
||||
static bool uvc_ctrl_mapping_is_compound(struct uvc_control_mapping *mapping)
|
||||
{
|
||||
|
|
@ -975,6 +997,18 @@ static const struct uvc_control_mapping uvc_ctrl_mappings[] = {
|
|||
.data_type = UVC_CTRL_DATA_TYPE_BITMASK,
|
||||
.name = "Region of Interest Auto Ctrls",
|
||||
},
|
||||
{
|
||||
.id = V4L2_CID_COLORFX,
|
||||
.entity = UVC_GUID_CHROMEOS_XU,
|
||||
.selector = UVC_CROSXU_CONTROL_IQ_PROFILE,
|
||||
.size = 8,
|
||||
.offset = 0,
|
||||
.v4l2_type = V4L2_CTRL_TYPE_MENU,
|
||||
.data_type = UVC_CTRL_DATA_TYPE_ENUM,
|
||||
.menu_mapping = cros_colorfx_mapping,
|
||||
.menu_mask = BIT(V4L2_COLORFX_VIVID) |
|
||||
BIT(V4L2_COLORFX_NONE),
|
||||
},
|
||||
};
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -29,6 +29,9 @@
|
|||
#define UVC_GUID_EXT_GPIO_CONTROLLER \
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03}
|
||||
#define UVC_GUID_CHROMEOS_XU \
|
||||
{0x24, 0xe9, 0xd7, 0x74, 0xc9, 0x49, 0x45, 0x4a, \
|
||||
0x98, 0xa3, 0xc8, 0x07, 0x7e, 0x05, 0x1c, 0xa3}
|
||||
#define UVC_GUID_MSXU_1_5 \
|
||||
{0xdc, 0x95, 0x3f, 0x0f, 0x32, 0x26, 0x4e, 0x4c, \
|
||||
0x92, 0xc9, 0xa0, 0x47, 0x82, 0xf4, 0x3b, 0xc8}
|
||||
|
|
@ -50,6 +53,8 @@
|
|||
#define UVC_MSXU_CONTROL_FIELDOFVIEW2_CONFIG 0x0f
|
||||
#define UVC_MSXU_CONTROL_FIELDOFVIEW2 0x10
|
||||
|
||||
#define UVC_CROSXU_CONTROL_IQ_PROFILE 0x04
|
||||
|
||||
#define UVC_GUID_FORMAT_MJPEG \
|
||||
{ 'M', 'J', 'P', 'G', 0x00, 0x00, 0x10, 0x00, \
|
||||
0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71}
|
||||
|
|
|
|||
Loading…
Reference in New Issue