All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio
@ 2017-02-02 10:12 Takashi Iwai
  2017-02-03 13:32 ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2017-02-02 10:12 UTC (permalink / raw)
  To: alsa-devel, ntel-gfx
  Cc: Pierre-Louis Bossart, Jani Nikula, rakesh.a.ughreja, Jerome Anand,
	Daniel Vetter, Ville Syrjälä

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.

Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 drivers/gpu/drm/i915/i915_reg.h        | 3 +++
 drivers/gpu/drm/i915/intel_lpe_audio.c | 7 +++++++
 2 files changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 4e24ba0cdbe8..4f15a3dc6d98 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2062,6 +2062,9 @@ enum skl_disp_power_wells {
 #define I915_HDMI_LPE_AUDIO_SIZE	0x1000
 
 /* DisplayPort Audio w/ LPE */
+#define VLV_AUD_CHICKEN_BIT_REG		_MMIO(VLV_DISPLAY_BASE + 0x62F38)
+#define VLV_CHICKEN_BIT_DBG_ENABLE	(1 << 0)
+
 #define _VLV_AUD_PORT_EN_B_DBG		(VLV_DISPLAY_BASE + 0x62F20)
 #define _VLV_AUD_PORT_EN_C_DBG		(VLV_DISPLAY_BASE + 0x62F30)
 #define _VLV_AUD_PORT_EN_D_DBG		(VLV_DISPLAY_BASE + 0x62F34)
diff --git a/drivers/gpu/drm/i915/intel_lpe_audio.c b/drivers/gpu/drm/i915/intel_lpe_audio.c
index d3ffe0012692..3ba2799e93bd 100644
--- a/drivers/gpu/drm/i915/intel_lpe_audio.c
+++ b/drivers/gpu/drm/i915/intel_lpe_audio.c
@@ -248,6 +248,13 @@ 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,
+		   I915_READ(VLV_AUD_CHICKEN_BIT_REG) |
+		   VLV_CHICKEN_BIT_DBG_ENABLE);
+
 	return 0;
 err_free_irq:
 	irq_free_desc(dev_priv->lpe_audio.irq);
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 6+ messages in thread
* [PATCH 00/53] Intel LPE audio driver cleanups
@ 2017-02-02 17:02 Takashi Iwai
  2017-02-02 17:02 ` [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2017-02-02 17:02 UTC (permalink / raw)
  To: alsa-devel; +Cc: Pierre-Louis Bossart, Jerome Anand

Hi,

this is a fairly largish patchset to fix and clean up Intel LPE audio
driver.  Most of the patches are to clean up and refactoring of the
codes.  As you can see in the diffstat below, quite lots of codes
(over 1600 lines) are reduced.  Now the driver structure is flattened
to a single layer, and it looks much like a normal driver.

Besides the refactoring, there are a few major fixes: e.g. the fix for
the PCM disconnection that confuses PA,. the fix for the possible
sleep-in-atomic at hotplug, the fix for racy chmap accesses.

As new features, the driver supports the runtime PM properly now, it
sets the CA bit for DP, and it exposes the ELD via ALSA control
element.

The current code is available in topic/intel-lpe-audio-cleanup branch,
and it's based on the DP-audio branch, topic/intel-lpe-audio-dp that
I'm going to merge to for-next soon.


Takashi

===

Takashi Iwai (53):
  ALSA: x86: Don't set PCM state to DISCONNECTED
  ALSA: x86: Remove v1 ops and structs
  ALSA: x86: Drop indirect calls of had_ops
  ALSA: x86: Replace indirect register ops with direct calls
  ALSA: x86: Replace indirect query_ops with direct calls
  ALSA: x86: Drop snd_intel_had_interface indirect calls
  ALSA: x86: Pass snd_intelhad object to helpers
  ALSA: x86: Handle the error from hdmi_audio_probe() properly
  ALSA: x86: Drop useless mutex at probe
  ALSA: x86: Call event callback directly
  ALSA: x86: Fix possible stale interrupt calls
  ALSA: x86: Drop unused mid_hdmi_audio_is_busy()
  ALSA: x86: Drop the global platform device reference
  ALSA: x86: Drop global hlpe_state
  ALSA: x86: Drop global ELD copy
  ALSA: x86: Move the global underrun_count to struct snd_intelhad
  ALSA: x86: Drop unused hw_silence field
  ALSA: x86: Move dma_mask debug print into intel_hdmi_lpe_audio.c
  ALSA: x86: Embed snd_intelhad into snd_card
  ALSA: x86: Drop superfluous CHT PCI ID check
  ALSA: x86: Check platform_data earlier
  ALSA: x86: Call snd_card_register() at the end
  ALSA: x86: Drop unused hdmi_audio_query()
  ALSA: x86: Flatten two abstraction layers
  ALSA: x86: Fold intel_hdmi_audio_if.c into main file
  ALSA: x86: Replace pr_xxx() with dev_xxx()
  ALSA: x86: Fix for CONFIG_PM=n
  ALSA: x86: Remove indirect call of snd_pcm_period_elapsed()
  ALSA: x86: Drop unused fields from snd_intelhad struct
  ALSA: x86: Drop superfluous PCM private_free
  ALSA: x86: Fix sleep-in-atomic via i915 notification
  ALSA: x86: Remove superfluous check at resume
  ALSA: x86: Drop had_get_hwstate()
  ALSA: x86: Tidy up codes
  ALSA: x86: Remove _v[12] suffices
  ALSA: x86: Constfy tables
  ALSA: x86: Remove superfluous irqsave flags
  ALSA: x86: Fix racy access to chmap
  ALSA: x86: Drop flag_underrun field
  ALSA: x86: Drop superfluous state field
  ALSA: x86: Drop redundant had_stream_pvt
  ALSA: x86: Drop unused fields from pcm_stream_info
  ALSA: x86: Properly manage PCM substream lifetype
  ALSA: x86: Implement runtime PM
  ALSA: x86: Move stream status into pcm_stream_info
  ALSA: x86: Use the standard ELD bytes definitions
  ALSA: x86: Reduce redundant register field names
  ALSA: x86: Clean up unused defines and inclusions
  ALSA: x86: Create ELD control element
  ALSA: x86: Set CA bits for DisplayPort too
  ALSA: x86: Simplify comments
  ALSA: x86: Yet more tidy-up and clean-ups
  ALSA: x86: Rename drv_status to connected

 sound/x86/Makefile               |    4 +-
 sound/x86/intel_hdmi_audio.c     | 1901 +++++++++++++++++++-------------------
 sound/x86/intel_hdmi_audio.h     |  117 +--
 sound/x86/intel_hdmi_audio_if.c  |  548 -----------
 sound/x86/intel_hdmi_lpe_audio.c |  665 -------------
 sound/x86/intel_hdmi_lpe_audio.h |  470 ++--------
 6 files changed, 1026 insertions(+), 2679 deletions(-)
 delete mode 100644 sound/x86/intel_hdmi_audio_if.c
 delete mode 100644 sound/x86/intel_hdmi_lpe_audio.c

-- 
2.11.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-02-03 15:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-02 10:12 [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio Takashi Iwai
2017-02-03 13:32 ` Takashi Iwai
2017-02-03 14:54   ` Ville Syrjälä
2017-02-03 15:18     ` Takashi Iwai
  -- strict thread matches above, loose matches on Subject: below --
2017-02-02 17:02 [PATCH 00/53] Intel LPE audio driver cleanups Takashi Iwai
2017-02-02 17:02 ` [PATCH] drm/i915: Enable VLV audio chicken bit for LPE audio Takashi Iwai
2017-02-02 17:07   ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.