[PATCH] drm/i915/cnl: Enable Audio Pin Buffer.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Starting on CNL, we need to enable Audio Pin Buffer.

v4: Throw the exclusive hook and everything else away
    and add set/unset bit along with codec awake.

Based on few spec links that I was checking recently
I now believe that on CNL we also need to keep the codec
awake chicken bit along with PG2 enable and also add
this extra pin buffer enable.

BSpec: 18057
BSpec: 21352
BSpec: 19621

Cc: Jani Nikula <jani.nikula@xxxxxxxxx>
Cc: Sanyog Kale <sanyog.r.kale@xxxxxxxxx>
Cc: Guneshwor Singh <guneshwor.o.singh@xxxxxxxxx>
Cc: Abhay Kumar <abhay.kumar@xxxxxxxxx>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
---
 drivers/gpu/drm/i915/i915_reg.h    |  3 +++
 drivers/gpu/drm/i915/intel_audio.c | 11 ++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 65ba10ad1fe5..768e784ea241 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -8424,6 +8424,9 @@ enum {
 #define HSW_AUD_CHICKENBIT			_MMIO(0x65f10)
 #define   SKL_AUD_CODEC_WAKE_SIGNAL		(1 << 15)
 
+#define AUDIO_PIN_BUF_CTL			_MMIO(0x48414)
+#define  AUDIO_PIN_BUF_ENABLE			(1 << 31)
+
 /* HSW Power Wells */
 #define _HSW_PWR_WELL_CTL1			0x45400
 #define _HSW_PWR_WELL_CTL2			0x45404
diff --git a/drivers/gpu/drm/i915/intel_audio.c b/drivers/gpu/drm/i915/intel_audio.c
index 522d54fecb53..34f18322c9bd 100644
--- a/drivers/gpu/drm/i915/intel_audio.c
+++ b/drivers/gpu/drm/i915/intel_audio.c
@@ -729,11 +729,20 @@ static void i915_audio_component_codec_wake_override(struct device *kdev,
 	struct drm_i915_private *dev_priv = kdev_to_i915(kdev);
 	u32 tmp;
 
-	if (!IS_GEN9_BC(dev_priv))
+	if (!IS_GEN9_BC(dev_priv) && !IS_CANNONLAKE(dev_priv))
 		return;
 
 	i915_audio_component_get_power(kdev);
 
+	if (IS_CANNONLAKE(dev_priv)) {
+		tmp = I915_READ(AUDIO_PIN_BUF_CTL);
+		if (enable)
+			tmp |= AUDIO_PIN_BUF_ENABLE;
+		else
+			tmp &= ~AUDIO_PIN_BUF_ENABLE;
+		I915_WRITE(AUDIO_PIN_BUF_CTL, tmp);
+	}
+
 	/*
 	 * Enable/disable generating the codec wake signal, overriding the
 	 * internal logic to generate the codec wake to controller.
-- 
2.13.6

_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux