From: Dave Airlie Date: Thu, 27 Jun 2013 10:40:44 +0000 (+1000) Subject: Merge tag 'v3.10-rc7' into drm-next X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=4300a0f8bdcce5a03b88bfa16fc9827e15c52dc4;p=linux-beck.git Merge tag 'v3.10-rc7' into drm-next Linux 3.10-rc7 The sdvo lvds fix in this -fixes pull commit c3456fb3e4712d0448592af3c5d644c9472cd3c1 Author: Daniel Vetter Date: Mon Jun 10 09:47:58 2013 +0200 drm/i915: prefer VBT modes for SVDO-LVDS over EDID has a silent functional conflict with commit 990256aec2f10800595dddf4d1c3441fcd6b2616 Author: Ville Syrjälä Date: Fri May 31 12:17:07 2013 +0000 drm: Add probed modes in probe order in drm-next. W simply need to add the vbt modes before edid modes, i.e. the other way round than now. Conflicts: drivers/gpu/drm/drm_prime.c drivers/gpu/drm/i915/intel_sdvo.c --- 4300a0f8bdcce5a03b88bfa16fc9827e15c52dc4 diff --cc drivers/gpu/drm/drm_prime.c index d92853e06dbb,5b7b9110254b..e57c675db840 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c @@@ -210,8 -185,12 +210,7 @@@ static const struct dma_buf_ops drm_gem struct dma_buf *drm_gem_prime_export(struct drm_device *dev, struct drm_gem_object *obj, int flags) { - return dma_buf_export(obj, &drm_gem_prime_dmabuf_ops, obj->size, - 0600); - if (dev->driver->gem_prime_pin) { - int ret = dev->driver->gem_prime_pin(obj); - if (ret) - return ERR_PTR(ret); - } + return dma_buf_export(obj, &drm_gem_prime_dmabuf_ops, obj->size, flags); } EXPORT_SYMBOL(drm_gem_prime_export); diff --cc drivers/gpu/drm/i915/intel_display.c index dff9d4e5b92b,56746dcac40f..6eb99e13c37d --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@@ -8175,8 -7934,14 +8175,13 @@@ intel_modeset_check_state(struct drm_de "crtc's computed enabled state doesn't match tracked enabled state " "(expected %i, found %i)\n", enabled, crtc->base.enabled); - memset(&pipe_config, 0, sizeof(pipe_config)); active = dev_priv->display.get_pipe_config(crtc, &pipe_config); + + /* hw state is inconsistent with the pipe A quirk */ + if (crtc->pipe == PIPE_A && dev_priv->quirks & QUIRK_PIPEA_FORCE) + active = crtc->active; + WARN(crtc->active != active, "crtc active state doesn't match with hw state " "(expected %i, found %i)\n", crtc->active, active); diff --cc drivers/gpu/drm/i915/intel_sdvo.c index 7068195376ef,d4ea6c265ce1..c55841937705 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c @@@ -1843,19 -1771,22 +1843,13 @@@ static void intel_sdvo_get_lvds_modes(s struct drm_i915_private *dev_priv = connector->dev->dev_private; struct drm_display_mode *newmode; - /* - * Attempt to get the mode list from DDC. - * Assume that the preferred modes are - * arranged in priority order. - */ - intel_ddc_get_modes(connector, &intel_sdvo->ddc); - /* - * Attempt to get the mode list from DDC. - * Assume that the preferred modes are - * arranged in priority order. + * Fetch modes from VBT. For SDVO prefer the VBT mode since some - * SDVO->LVDS transcoders can't cope with the EDID mode. Since - * drm_mode_probed_add adds the mode at the head of the list we add it - * last. ++ * SDVO->LVDS transcoders can't cope with the EDID mode. */ - intel_ddc_get_modes(connector, intel_sdvo->i2c); - if (list_empty(&connector->probed_modes) == false) - goto end; - - /* Fetch modes from VBT */ - if (dev_priv->sdvo_lvds_vbt_mode != NULL) { + if (dev_priv->vbt.sdvo_lvds_vbt_mode != NULL) { newmode = drm_mode_duplicate(connector->dev, - dev_priv->sdvo_lvds_vbt_mode); + dev_priv->vbt.sdvo_lvds_vbt_mode); if (newmode != NULL) { /* Guarantee the mode is preferred */ newmode->type = (DRM_MODE_TYPE_PREFERRED | @@@ -1864,7 -1795,6 +1858,13 @@@ } } - end: ++ /* ++ * Attempt to get the mode list from DDC. ++ * Assume that the preferred modes are ++ * arranged in priority order. ++ */ ++ intel_ddc_get_modes(connector, &intel_sdvo->ddc); ++ list_for_each_entry(newmode, &connector->probed_modes, head) { if (newmode->type & DRM_MODE_TYPE_PREFERRED) { intel_sdvo->sdvo_lvds_fixed_mode =