Merge branch 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel into drm-fixes
Daniel writes: Essentially just flush my -fixes queue before I head off to xdc. - gen2 regression fixer, we've enabled the lvds stuff too late. Not causing any known issues, but this restores the sequence before a refactor that landed in 3.5, and lvds is a fickle beast. And seriously, who runs gen2 still ... - downgrade a BUG to a WARN - we haven't root-caused/fixed the underlying issue yet, but this should help bug reporters quite a bit. - properly disable hdmi audio - we've lost track of this, which resulted in the alsa driver again losing track of the unplug event. * 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel: drm/i915: HDMI - Clear Audio Enable bit for Hot Plug drm/i915: Reduce a pin-leak BUG into a WARN drm/i915: enable lvds pin pairs before dpll on gen2
This commit is contained in:
Коммит
017a27e7f5
|
@ -3242,7 +3242,8 @@ i915_gem_object_pin(struct drm_i915_gem_object *obj,
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
BUG_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT);
|
if (WARN_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT))
|
||||||
|
return -EBUSY;
|
||||||
|
|
||||||
if (obj->gtt_space != NULL) {
|
if (obj->gtt_space != NULL) {
|
||||||
if ((alignment && obj->gtt_offset & (alignment - 1)) ||
|
if ((alignment && obj->gtt_offset & (alignment - 1)) ||
|
||||||
|
|
|
@ -4191,12 +4191,6 @@ static void i8xx_update_pll(struct drm_crtc *crtc,
|
||||||
POSTING_READ(DPLL(pipe));
|
POSTING_READ(DPLL(pipe));
|
||||||
udelay(150);
|
udelay(150);
|
||||||
|
|
||||||
I915_WRITE(DPLL(pipe), dpll);
|
|
||||||
|
|
||||||
/* Wait for the clocks to stabilize. */
|
|
||||||
POSTING_READ(DPLL(pipe));
|
|
||||||
udelay(150);
|
|
||||||
|
|
||||||
/* The LVDS pin pair needs to be on before the DPLLs are enabled.
|
/* The LVDS pin pair needs to be on before the DPLLs are enabled.
|
||||||
* This is an exception to the general rule that mode_set doesn't turn
|
* This is an exception to the general rule that mode_set doesn't turn
|
||||||
* things on.
|
* things on.
|
||||||
|
@ -4204,6 +4198,12 @@ static void i8xx_update_pll(struct drm_crtc *crtc,
|
||||||
if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS))
|
if (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS))
|
||||||
intel_update_lvds(crtc, clock, adjusted_mode);
|
intel_update_lvds(crtc, clock, adjusted_mode);
|
||||||
|
|
||||||
|
I915_WRITE(DPLL(pipe), dpll);
|
||||||
|
|
||||||
|
/* Wait for the clocks to stabilize. */
|
||||||
|
POSTING_READ(DPLL(pipe));
|
||||||
|
udelay(150);
|
||||||
|
|
||||||
/* The pixel multiplier can only be updated once the
|
/* The pixel multiplier can only be updated once the
|
||||||
* DPLL is enabled and the clocks are stable.
|
* DPLL is enabled and the clocks are stable.
|
||||||
*
|
*
|
||||||
|
|
|
@ -609,7 +609,7 @@ static void intel_hdmi_dpms(struct drm_encoder *encoder, int mode)
|
||||||
u32 temp;
|
u32 temp;
|
||||||
u32 enable_bits = SDVO_ENABLE;
|
u32 enable_bits = SDVO_ENABLE;
|
||||||
|
|
||||||
if (intel_hdmi->has_audio)
|
if (intel_hdmi->has_audio || mode != DRM_MODE_DPMS_ON)
|
||||||
enable_bits |= SDVO_AUDIO_ENABLE;
|
enable_bits |= SDVO_AUDIO_ENABLE;
|
||||||
|
|
||||||
temp = I915_READ(intel_hdmi->sdvox_reg);
|
temp = I915_READ(intel_hdmi->sdvox_reg);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче