Skip to content

Commit

Permalink
drm/i915/dp: allow configuring eDP panel fitting scaling mode
Browse files Browse the repository at this point in the history
LVDS allowed changing panel fitting scaling mode, while eDP didn't. Copied
relevant code from LVDS to eDP.

Signed-off-by: Yuly Novikov <ynovikov@chromium.org>
[Jani: use fitting mode in intel_panel, remove default mode change]
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Tested-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
  • Loading branch information
Yuly Novikov authored and Daniel Vetter committed Oct 26, 2012
1 parent 4d89152 commit 53b4183
Showing 1 changed file with 30 additions and 1 deletion.
31 changes: 30 additions & 1 deletion drivers/gpu/drm/i915/intel_dp.c
Original file line number Diff line number Diff line change
Expand Up @@ -693,7 +693,8 @@ intel_dp_mode_fixup(struct drm_encoder *encoder,
if (is_edp(intel_dp) && intel_connector->panel.fixed_mode) {
intel_fixed_panel_mode(intel_connector->panel.fixed_mode,
adjusted_mode);
intel_pch_panel_fitting(dev, DRM_MODE_SCALE_FULLSCREEN,
intel_pch_panel_fitting(dev,
intel_connector->panel.fitting_mode,
mode, adjusted_mode);
}

Expand Down Expand Up @@ -2359,6 +2360,7 @@ intel_dp_set_property(struct drm_connector *connector,
uint64_t val)
{
struct drm_i915_private *dev_priv = connector->dev->dev_private;
struct intel_connector *intel_connector = to_intel_connector(connector);
struct intel_dp *intel_dp = intel_attached_dp(connector);
int ret;

Expand Down Expand Up @@ -2395,6 +2397,22 @@ intel_dp_set_property(struct drm_connector *connector,
goto done;
}

if (is_edp(intel_dp) &&
property == connector->dev->mode_config.scaling_mode_property) {
if (val == DRM_MODE_SCALE_NONE) {
DRM_DEBUG_KMS("no scaling not supported\n");
return -EINVAL;
}

if (intel_connector->panel.fitting_mode == val) {
/* the eDP scaling property is not changed */
return 0;
}
intel_connector->panel.fitting_mode = val;

goto done;
}

return -EINVAL;

done:
Expand Down Expand Up @@ -2519,8 +2537,19 @@ bool intel_dpd_is_edp(struct drm_device *dev)
static void
intel_dp_add_properties(struct intel_dp *intel_dp, struct drm_connector *connector)
{
struct intel_connector *intel_connector = to_intel_connector(connector);

intel_attach_force_audio_property(connector);
intel_attach_broadcast_rgb_property(connector);

if (is_edp(intel_dp)) {
drm_mode_create_scaling_mode_property(connector->dev);
drm_connector_attach_property(
connector,
connector->dev->mode_config.scaling_mode_property,
DRM_MODE_SCALE_FULLSCREEN);
intel_connector->panel.fitting_mode = DRM_MODE_SCALE_FULLSCREEN;
}
}

static void
Expand Down

0 comments on commit 53b4183

Please sign in to comment.