|
@@ -92,6 +92,12 @@ struct intel_sdvo {
|
|
|
*/
|
|
|
uint16_t attached_output;
|
|
|
|
|
|
+ /**
|
|
|
+ * This is used to select the color range of RBG outputs in HDMI mode.
|
|
|
+ * It is only valid when using TMDS encoding and 8 bit per color mode.
|
|
|
+ */
|
|
|
+ uint32_t color_range;
|
|
|
+
|
|
|
/**
|
|
|
* This is set if we're going to treat the device as TV-out.
|
|
|
*
|
|
@@ -1056,6 +1062,8 @@ static void intel_sdvo_mode_set(struct drm_encoder *encoder,
|
|
|
/* Set the SDVO control regs. */
|
|
|
if (INTEL_INFO(dev)->gen >= 4) {
|
|
|
sdvox = 0;
|
|
|
+ if (intel_sdvo->is_hdmi)
|
|
|
+ sdvox |= intel_sdvo->color_range;
|
|
|
if (INTEL_INFO(dev)->gen < 5)
|
|
|
sdvox |= SDVO_BORDER_ENABLE;
|
|
|
if (adjusted_mode->flags & DRM_MODE_FLAG_PVSYNC)
|
|
@@ -1695,6 +1703,7 @@ intel_sdvo_set_property(struct drm_connector *connector,
|
|
|
{
|
|
|
struct intel_sdvo *intel_sdvo = intel_attached_sdvo(connector);
|
|
|
struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector);
|
|
|
+ struct drm_i915_private *dev_priv = connector->dev->dev_private;
|
|
|
uint16_t temp_value;
|
|
|
uint8_t cmd;
|
|
|
int ret;
|
|
@@ -1724,6 +1733,14 @@ intel_sdvo_set_property(struct drm_connector *connector,
|
|
|
goto done;
|
|
|
}
|
|
|
|
|
|
+ if (property == dev_priv->broadcast_rgb_property) {
|
|
|
+ if (val == !!intel_sdvo->color_range)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ intel_sdvo->color_range = val ? SDVO_COLOR_RANGE_16_235 : 0;
|
|
|
+ goto done;
|
|
|
+ }
|
|
|
+
|
|
|
#define CHECK_PROPERTY(name, NAME) \
|
|
|
if (intel_sdvo_connector->name == property) { \
|
|
|
if (intel_sdvo_connector->cur_##name == temp_value) return 0; \
|
|
@@ -2028,6 +2045,9 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo_connector *connector)
|
|
|
drm_connector_attach_property(&connector->base.base,
|
|
|
connector->force_audio_property, 0);
|
|
|
}
|
|
|
+
|
|
|
+ if (INTEL_INFO(dev)->gen >= 4 && IS_MOBILE(dev))
|
|
|
+ intel_attach_broadcast_rgb_property(&connector->base.base);
|
|
|
}
|
|
|
|
|
|
static bool
|