aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_modes.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-02-21 17:23:52 -0500
committerChris Wilson <chris@chris-wilson.co.uk>2011-02-22 10:56:56 -0500
commite953fd7bb32f55309a96abd5ceba9cf68d221434 (patch)
tree67110619366878f6412405ab63b7525f1c627544 /drivers/gpu/drm/i915/intel_modes.c
parentce453d81cb0397aa7d5148984f51907e14072d74 (diff)
drm/i915: Add support for limited color range of broadcast outputs
In order to prevent "crushed blacks" on TVs, the range of the RGB output may be limited to 16-235. This used to be available through Xorg under the "Broadcast RGB" option, so reintroduce support for KMS. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=34543 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_modes.c')
-rw-r--r--drivers/gpu/drm/i915/intel_modes.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
index f70b7cf32bf..9034dd8f33c 100644
--- a/drivers/gpu/drm/i915/intel_modes.c
+++ b/drivers/gpu/drm/i915/intel_modes.c
@@ -80,3 +80,33 @@ int intel_ddc_get_modes(struct drm_connector *connector,
80 80
81 return ret; 81 return ret;
82} 82}
83
84static const char *broadcast_rgb_names[] = {
85 "Full",
86 "Limited 16:235",
87};
88
89void
90intel_attach_broadcast_rgb_property(struct drm_connector *connector)
91{
92 struct drm_device *dev = connector->dev;
93 struct drm_i915_private *dev_priv = dev->dev_private;
94 struct drm_property *prop;
95 int i;
96
97 prop = dev_priv->broadcast_rgb_property;
98 if (prop == NULL) {
99 prop = drm_property_create(dev, DRM_MODE_PROP_ENUM,
100 "Broadcast RGB",
101 ARRAY_SIZE(broadcast_rgb_names));
102 if (prop == NULL)
103 return;
104
105 for (i = 0; i < ARRAY_SIZE(broadcast_rgb_names); i++)
106 drm_property_add_enum(prop, i, i, broadcast_rgb_names[i]);
107
108 dev_priv->broadcast_rgb_property = prop;
109 }
110
111 drm_connector_attach_property(connector, prop, 0);
112}