mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-11-01 17:08:10 +00:00
Merge tag 'drm-intel-fixes-2013-06-11' of git://people.freedesktop.org/~danvet/drm-intel into drm-fixes
Daniel writes: Just tiny regression fixes here: - Two fixes to fix sdvo hotplug which broke in the hpd storm detection work. - One fix to patch-up the sdvo lvds regression fixer from the last pull - we need to prefer the vbt mode over edid modes. * tag 'drm-intel-fixes-2013-06-11' of git://people.freedesktop.org/~danvet/drm-intel: drm/i915: prefer VBT modes for SVDO-LVDS over EDID drm/i915: Enable hotplug interrupts after querying hw capabilities. drm/i915: Fix hotplug interrupt enabling for SDVOC
This commit is contained in:
commit
df63d3ecbc
1 changed files with 14 additions and 10 deletions
|
@ -1777,10 +1777,13 @@ static void intel_sdvo_get_lvds_modes(struct drm_connector *connector)
|
||||||
* arranged in priority order.
|
* arranged in priority order.
|
||||||
*/
|
*/
|
||||||
intel_ddc_get_modes(connector, &intel_sdvo->ddc);
|
intel_ddc_get_modes(connector, &intel_sdvo->ddc);
|
||||||
if (list_empty(&connector->probed_modes) == false)
|
|
||||||
goto end;
|
|
||||||
|
|
||||||
/* Fetch modes from VBT */
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
if (dev_priv->sdvo_lvds_vbt_mode != NULL) {
|
if (dev_priv->sdvo_lvds_vbt_mode != NULL) {
|
||||||
newmode = drm_mode_duplicate(connector->dev,
|
newmode = drm_mode_duplicate(connector->dev,
|
||||||
dev_priv->sdvo_lvds_vbt_mode);
|
dev_priv->sdvo_lvds_vbt_mode);
|
||||||
|
@ -1792,7 +1795,6 @@ static void intel_sdvo_get_lvds_modes(struct drm_connector *connector)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
end:
|
|
||||||
list_for_each_entry(newmode, &connector->probed_modes, head) {
|
list_for_each_entry(newmode, &connector->probed_modes, head) {
|
||||||
if (newmode->type & DRM_MODE_TYPE_PREFERRED) {
|
if (newmode->type & DRM_MODE_TYPE_PREFERRED) {
|
||||||
intel_sdvo->sdvo_lvds_fixed_mode =
|
intel_sdvo->sdvo_lvds_fixed_mode =
|
||||||
|
@ -2790,12 +2792,6 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob)
|
||||||
SDVOB_HOTPLUG_INT_STATUS_I915 : SDVOC_HOTPLUG_INT_STATUS_I915;
|
SDVOB_HOTPLUG_INT_STATUS_I915 : SDVOC_HOTPLUG_INT_STATUS_I915;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only enable the hotplug irq if we need it, to work around noisy
|
|
||||||
* hotplug lines.
|
|
||||||
*/
|
|
||||||
if (intel_sdvo->hotplug_active)
|
|
||||||
intel_encoder->hpd_pin = HPD_SDVO_B ? HPD_SDVO_B : HPD_SDVO_C;
|
|
||||||
|
|
||||||
intel_encoder->compute_config = intel_sdvo_compute_config;
|
intel_encoder->compute_config = intel_sdvo_compute_config;
|
||||||
intel_encoder->disable = intel_disable_sdvo;
|
intel_encoder->disable = intel_disable_sdvo;
|
||||||
intel_encoder->mode_set = intel_sdvo_mode_set;
|
intel_encoder->mode_set = intel_sdvo_mode_set;
|
||||||
|
@ -2814,6 +2810,14 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob)
|
||||||
goto err_output;
|
goto err_output;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Only enable the hotplug irq if we need it, to work around noisy
|
||||||
|
* hotplug lines.
|
||||||
|
*/
|
||||||
|
if (intel_sdvo->hotplug_active) {
|
||||||
|
intel_encoder->hpd_pin =
|
||||||
|
intel_sdvo->is_sdvob ? HPD_SDVO_B : HPD_SDVO_C;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cloning SDVO with anything is often impossible, since the SDVO
|
* Cloning SDVO with anything is often impossible, since the SDVO
|
||||||
* encoder can request a special input timing mode. And even if that's
|
* encoder can request a special input timing mode. And even if that's
|
||||||
|
|
Loading…
Reference in a new issue