summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_lpe_audio.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2017-02-02 11:03:48 +0100
committerTakashi Iwai <tiwai@suse.de>2017-02-03 16:19:08 +0100
commit9db13e5f2d6dc85150cb8a69ab220b84d9b9fbe7 (patch)
tree0e71ac361334cc24d292fb2cd5d42ac80e7c0eb0 /drivers/gpu/drm/i915/intel_lpe_audio.c
parentdrm/i915: Pass platform device to LPE audio notifier (diff)
downloadlinux-9db13e5f2d6dc85150cb8a69ab220b84d9b9fbe7.tar.xz
linux-9db13e5f2d6dc85150cb8a69ab220b84d9b9fbe7.zip
drm/i915: Enable VLV audio chicken bit for LPE audio
The audio chicken bit (register offset 0x62f38) seems required to make DP audio working on some machines. At least, on Dell Wyse 3040, I failed to get the audio unless this bit is set once. Strangely, the bit seems necessary only once, and it persists after that, even some power-off cycles. The register is supposedly write-only, so it's no evidence whether the bit keeps effect persistently. But, judging from the experiment, it looks enough to set it up once at the device initialization. The patch is basically a cut from the original patch by Pierre-Louis Bossart. v1->v2: drop read since it's a write-only reg. Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_lpe_audio.c')
-rw-r--r--drivers/gpu/drm/i915/intel_lpe_audio.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_lpe_audio.c b/drivers/gpu/drm/i915/intel_lpe_audio.c
index d3ffe0012692..7a5b41b1c024 100644
--- a/drivers/gpu/drm/i915/intel_lpe_audio.c
+++ b/drivers/gpu/drm/i915/intel_lpe_audio.c
@@ -248,6 +248,11 @@ static int lpe_audio_setup(struct drm_i915_private *dev_priv)
goto err_free_irq;
}
+ /* enable chicken bit; at least this is required for Dell Wyse 3040
+ * with DP outputs (but only sometimes by some reason!)
+ */
+ I915_WRITE(VLV_AUD_CHICKEN_BIT_REG, VLV_CHICKEN_BIT_DBG_ENABLE);
+
return 0;
err_free_irq:
irq_free_desc(dev_priv->lpe_audio.irq);