diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-02-21 17:23:52 -0500 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-02-22 10:56:56 -0500 |
commit | e953fd7bb32f55309a96abd5ceba9cf68d221434 (patch) | |
tree | 67110619366878f6412405ab63b7525f1c627544 /drivers/gpu/drm/i915/intel_modes.c | |
parent | ce453d81cb0397aa7d5148984f51907e14072d74 (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.c | 30 |
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 | |||
84 | static const char *broadcast_rgb_names[] = { | ||
85 | "Full", | ||
86 | "Limited 16:235", | ||
87 | }; | ||
88 | |||
89 | void | ||
90 | intel_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 | } | ||