[media] v4l2-ctrls: add V4L2_CID_DV_RX/TX_IT_CONTENT_TYPE controls
authorHans Verkuil <hans.verkuil@cisco.com>
Wed, 27 Jan 2016 13:31:39 +0000 (11:31 -0200)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Wed, 10 Feb 2016 11:30:56 +0000 (09:30 -0200)
HDMI and DisplayPort both support IT Content Type information that
tells the receiver what type of material the video is, graphics such
as from a PC desktop, Photo, Cinema or Game (low-latency).

This patch adds controls for receivers and transmitters to get/set
this information.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/v4l2-core/v4l2-ctrls.c
include/uapi/linux/v4l2-controls.h

index c9d5537b6af7a4cc32de8270617237450c47d207..bed04b1fdd0aed71da899842eee84ae72918035a 100644 (file)
@@ -462,6 +462,14 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
                "RGB full range (0-255)",
                NULL,
        };
+       static const char * const dv_it_content_type[] = {
+               "Graphics",
+               "Photo",
+               "Cinema",
+               "Game",
+               "No IT Content",
+               NULL,
+       };
        static const char * const detect_md_mode[] = {
                "Disabled",
                "Global",
@@ -560,6 +568,9 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
        case V4L2_CID_DV_TX_RGB_RANGE:
        case V4L2_CID_DV_RX_RGB_RANGE:
                return dv_rgb_range;
+       case V4L2_CID_DV_TX_IT_CONTENT_TYPE:
+       case V4L2_CID_DV_RX_IT_CONTENT_TYPE:
+               return dv_it_content_type;
        case V4L2_CID_DETECT_MD_MODE:
                return detect_md_mode;
 
@@ -881,8 +892,10 @@ const char *v4l2_ctrl_get_name(u32 id)
        case V4L2_CID_DV_TX_EDID_PRESENT:       return "EDID Present";
        case V4L2_CID_DV_TX_MODE:               return "Transmit Mode";
        case V4L2_CID_DV_TX_RGB_RANGE:          return "Tx RGB Quantization Range";
+       case V4L2_CID_DV_TX_IT_CONTENT_TYPE:    return "Tx IT Content Type";
        case V4L2_CID_DV_RX_POWER_PRESENT:      return "Power Present";
        case V4L2_CID_DV_RX_RGB_RANGE:          return "Rx RGB Quantization Range";
+       case V4L2_CID_DV_RX_IT_CONTENT_TYPE:    return "Rx IT Content Type";
 
        case V4L2_CID_FM_RX_CLASS:              return "FM Radio Receiver Controls";
        case V4L2_CID_TUNE_DEEMPHASIS:          return "De-Emphasis";
@@ -1038,7 +1051,9 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
        case V4L2_CID_SCENE_MODE:
        case V4L2_CID_DV_TX_MODE:
        case V4L2_CID_DV_TX_RGB_RANGE:
+       case V4L2_CID_DV_TX_IT_CONTENT_TYPE:
        case V4L2_CID_DV_RX_RGB_RANGE:
+       case V4L2_CID_DV_RX_IT_CONTENT_TYPE:
        case V4L2_CID_TEST_PATTERN:
        case V4L2_CID_TUNE_DEEMPHASIS:
        case V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL:
@@ -1185,6 +1200,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type,
        case V4L2_CID_DV_TX_RXSENSE:
        case V4L2_CID_DV_TX_EDID_PRESENT:
        case V4L2_CID_DV_RX_POWER_PRESENT:
+       case V4L2_CID_DV_RX_IT_CONTENT_TYPE:
        case V4L2_CID_RDS_RX_PTY:
        case V4L2_CID_RDS_RX_PS_NAME:
        case V4L2_CID_RDS_RX_RADIO_TEXT:
index 2d225bcdb83149aac3407b6c21777b76bcec98d8..2ae5c3ea179bc223db553e58b525237c9b4dad1c 100644 (file)
@@ -912,8 +912,18 @@ enum v4l2_dv_rgb_range {
        V4L2_DV_RGB_RANGE_FULL    = 2,
 };
 
+#define V4L2_CID_DV_TX_IT_CONTENT_TYPE         (V4L2_CID_DV_CLASS_BASE + 6)
+enum v4l2_dv_it_content_type {
+       V4L2_DV_IT_CONTENT_TYPE_GRAPHICS  = 0,
+       V4L2_DV_IT_CONTENT_TYPE_PHOTO     = 1,
+       V4L2_DV_IT_CONTENT_TYPE_CINEMA    = 2,
+       V4L2_DV_IT_CONTENT_TYPE_GAME      = 3,
+       V4L2_DV_IT_CONTENT_TYPE_NO_ITC    = 4,
+};
+
 #define        V4L2_CID_DV_RX_POWER_PRESENT            (V4L2_CID_DV_CLASS_BASE + 100)
 #define V4L2_CID_DV_RX_RGB_RANGE               (V4L2_CID_DV_CLASS_BASE + 101)
+#define V4L2_CID_DV_RX_IT_CONTENT_TYPE         (V4L2_CID_DV_CLASS_BASE + 102)
 
 #define V4L2_CID_FM_RX_CLASS_BASE              (V4L2_CTRL_CLASS_FM_RX | 0x900)
 #define V4L2_CID_FM_RX_CLASS                   (V4L2_CTRL_CLASS_FM_RX | 1)