drm/i915: Add HDMI aspect ratio property for SDVO
Handle the HDMI aspect ratio property the same way in the SDVO code as we handle it in the HDMI code. v2: Remove stray whitespace change Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
7c5f93b05e
commit
7949dd47ba
|
@ -1300,6 +1300,7 @@ int intel_connector_update_modes(struct drm_connector *connector,
|
||||||
int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
|
int intel_ddc_get_modes(struct drm_connector *c, struct i2c_adapter *adapter);
|
||||||
void intel_attach_force_audio_property(struct drm_connector *connector);
|
void intel_attach_force_audio_property(struct drm_connector *connector);
|
||||||
void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
|
void intel_attach_broadcast_rgb_property(struct drm_connector *connector);
|
||||||
|
void intel_attach_aspect_ratio_property(struct drm_connector *connector);
|
||||||
|
|
||||||
|
|
||||||
/* intel_overlay.c */
|
/* intel_overlay.c */
|
||||||
|
|
|
@ -2003,15 +2003,6 @@ static const struct drm_encoder_funcs intel_hdmi_enc_funcs = {
|
||||||
.destroy = intel_encoder_destroy,
|
.destroy = intel_encoder_destroy,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
|
||||||
intel_attach_aspect_ratio_property(struct drm_connector *connector)
|
|
||||||
{
|
|
||||||
if (!drm_mode_create_aspect_ratio_property(connector->dev))
|
|
||||||
drm_object_attach_property(&connector->base,
|
|
||||||
connector->dev->mode_config.aspect_ratio_property,
|
|
||||||
DRM_MODE_PICTURE_ASPECT_NONE);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
|
intel_hdmi_add_properties(struct intel_hdmi *intel_hdmi, struct drm_connector *connector)
|
||||||
{
|
{
|
||||||
|
|
|
@ -126,3 +126,12 @@ intel_attach_broadcast_rgb_property(struct drm_connector *connector)
|
||||||
|
|
||||||
drm_object_attach_property(&connector->base, prop, 0);
|
drm_object_attach_property(&connector->base, prop, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
intel_attach_aspect_ratio_property(struct drm_connector *connector)
|
||||||
|
{
|
||||||
|
if (!drm_mode_create_aspect_ratio_property(connector->dev))
|
||||||
|
drm_object_attach_property(&connector->base,
|
||||||
|
connector->dev->mode_config.aspect_ratio_property,
|
||||||
|
DRM_MODE_PICTURE_ASPECT_NONE);
|
||||||
|
}
|
||||||
|
|
|
@ -106,6 +106,11 @@ struct intel_sdvo {
|
||||||
uint32_t color_range;
|
uint32_t color_range;
|
||||||
bool color_range_auto;
|
bool color_range_auto;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HDMI user specified aspect ratio
|
||||||
|
*/
|
||||||
|
enum hdmi_picture_aspect aspect_ratio;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is set if we're going to treat the device as TV-out.
|
* This is set if we're going to treat the device as TV-out.
|
||||||
*
|
*
|
||||||
|
@ -1181,6 +1186,10 @@ static bool intel_sdvo_compute_config(struct intel_encoder *encoder,
|
||||||
if (intel_sdvo->is_tv)
|
if (intel_sdvo->is_tv)
|
||||||
i9xx_adjust_sdvo_tv_clock(pipe_config);
|
i9xx_adjust_sdvo_tv_clock(pipe_config);
|
||||||
|
|
||||||
|
/* Set user selected PAR to incoming mode's member */
|
||||||
|
if (intel_sdvo->is_hdmi)
|
||||||
|
adjusted_mode->picture_aspect_ratio = intel_sdvo->aspect_ratio;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2043,6 +2052,23 @@ intel_sdvo_set_property(struct drm_connector *connector,
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (property == connector->dev->mode_config.aspect_ratio_property) {
|
||||||
|
switch (val) {
|
||||||
|
case DRM_MODE_PICTURE_ASPECT_NONE:
|
||||||
|
intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
|
||||||
|
break;
|
||||||
|
case DRM_MODE_PICTURE_ASPECT_4_3:
|
||||||
|
intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_4_3;
|
||||||
|
break;
|
||||||
|
case DRM_MODE_PICTURE_ASPECT_16_9:
|
||||||
|
intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_16_9;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
#define CHECK_PROPERTY(name, NAME) \
|
#define CHECK_PROPERTY(name, NAME) \
|
||||||
if (intel_sdvo_connector->name == property) { \
|
if (intel_sdvo_connector->name == property) { \
|
||||||
if (intel_sdvo_connector->cur_##name == temp_value) return 0; \
|
if (intel_sdvo_connector->cur_##name == temp_value) return 0; \
|
||||||
|
@ -2382,6 +2408,8 @@ intel_sdvo_add_hdmi_properties(struct intel_sdvo *intel_sdvo,
|
||||||
intel_attach_broadcast_rgb_property(&connector->base.base);
|
intel_attach_broadcast_rgb_property(&connector->base.base);
|
||||||
intel_sdvo->color_range_auto = true;
|
intel_sdvo->color_range_auto = true;
|
||||||
}
|
}
|
||||||
|
intel_attach_aspect_ratio_property(&connector->base.base);
|
||||||
|
intel_sdvo->aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
|
static struct intel_sdvo_connector *intel_sdvo_connector_alloc(void)
|
||||||
|
|
Loading…
Reference in New Issue