diff options
| author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-02-21 22:23:52 +0000 | 
|---|---|---|
| committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-02-22 15:56:56 +0000 | 
| commit | e953fd7bb32f55309a96abd5ceba9cf68d221434 (patch) | |
| tree | 67110619366878f6412405ab63b7525f1c627544 /drivers/gpu/drm/i915/intel_modes.c | |
| parent | ce453d81cb0397aa7d5148984f51907e14072d74 (diff) | |
| download | olio-linux-3.10-e953fd7bb32f55309a96abd5ceba9cf68d221434.tar.xz olio-linux-3.10-e953fd7bb32f55309a96abd5ceba9cf68d221434.zip  | |
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,  	return ret;  } + +static const char *broadcast_rgb_names[] = { +	"Full", +	"Limited 16:235", +}; + +void +intel_attach_broadcast_rgb_property(struct drm_connector *connector) +{ +	struct drm_device *dev = connector->dev; +	struct drm_i915_private *dev_priv = dev->dev_private; +	struct drm_property *prop; +	int i; + +	prop = dev_priv->broadcast_rgb_property; +	if (prop == NULL) { +		prop = drm_property_create(dev, DRM_MODE_PROP_ENUM, +					   "Broadcast RGB", +					   ARRAY_SIZE(broadcast_rgb_names)); +		if (prop == NULL) +			return; + +		for (i = 0; i < ARRAY_SIZE(broadcast_rgb_names); i++) +			drm_property_add_enum(prop, i, i, broadcast_rgb_names[i]); + +		dev_priv->broadcast_rgb_property = prop; +	} + +	drm_connector_attach_property(connector, prop, 0); +}  |