drm/radeon: add an output_csc property
authorAlex Deucher <alexander.deucher@amd.com>
Mon, 23 Feb 2015 15:11:49 +0000 (10:11 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 19 Mar 2015 16:26:25 +0000 (12:26 -0400)
This adds the drm property for output csc (e.g.,
transform of output display colorspace).  Currently
only common ones (TV RGB, BT.601, BT.709) are supported,
but bypass and tv rgb are really the only useful ones at
the moment.  Additionally we could expose a user adjustable
matrix in the future.

This commit just adds the property.  The hw support will
be added in subsequent patches.

bug:
https://bugs.freedesktop.org/show_bug.cgi?id=83226

Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/radeon_display.c
drivers/gpu/drm/radeon/radeon_mode.h

index 913fafa597ad210180c03e03618002a702cda441..d57dfb9542572fb031c42a376458b54602e8f0f7 100644 (file)
@@ -1382,6 +1382,13 @@ static struct drm_prop_enum_list radeon_dither_enum_list[] =
        { RADEON_FMT_DITHER_ENABLE, "on" },
 };
 
+static struct drm_prop_enum_list radeon_output_csc_enum_list[] =
+{      { RADEON_OUTPUT_CSC_BYPASS, "bypass" },
+       { RADEON_OUTPUT_CSC_TVRGB, "tvrgb" },
+       { RADEON_OUTPUT_CSC_YCBCR601, "ycbcr601" },
+       { RADEON_OUTPUT_CSC_YCBCR709, "ycbcr709" },
+};
+
 static int radeon_modeset_create_props(struct radeon_device *rdev)
 {
        int sz;
@@ -1444,6 +1451,12 @@ static int radeon_modeset_create_props(struct radeon_device *rdev)
                                         "dither",
                                         radeon_dither_enum_list, sz);
 
+       sz = ARRAY_SIZE(radeon_output_csc_enum_list);
+       rdev->mode_info.output_csc_property =
+               drm_property_create_enum(rdev->ddev, 0,
+                                        "output_csc",
+                                        radeon_output_csc_enum_list, sz);
+
        return 0;
 }
 
index 920a8be8abada71c8b1473f844e39ca3535807a8..67d4f776147dddf98e7c177f9be87d21f0378653 100644 (file)
@@ -85,6 +85,13 @@ enum radeon_hpd_id {
        RADEON_HPD_NONE = 0xff,
 };
 
+enum radeon_output_csc {
+       RADEON_OUTPUT_CSC_BYPASS = 0,
+       RADEON_OUTPUT_CSC_TVRGB = 1,
+       RADEON_OUTPUT_CSC_YCBCR601 = 2,
+       RADEON_OUTPUT_CSC_YCBCR709 = 3,
+};
+
 #define RADEON_MAX_I2C_BUS 16
 
 /* radeon gpio-based i2c
@@ -255,6 +262,8 @@ struct radeon_mode_info {
        struct drm_property *audio_property;
        /* FMT dithering */
        struct drm_property *dither_property;
+       /* Output CSC */
+       struct drm_property *output_csc_property;
        /* hardcoded DFP edid from BIOS */
        struct edid *bios_hardcoded_edid;
        int bios_hardcoded_edid_size;