Messages in this thread Patch in this message | | | Date | Wed, 11 May 2016 10:48:20 +0200 | From | Takashi Iwai <> | Subject | Re: Regression: Kernel 4.6 DisplayPort Audio |
| |
On Wed, 11 May 2016 10:32:07 +0200, Daniel Exner wrote: > > Hi, > > (Please keep me CC as I am currently not subscribed to LKML or any other > Linux Kernel Dev ML, thanks) > > Since very first 4.6 rc1 the speakers integrated in my monitor (Dell > U3415W) stopped working. It is connected via DisplayPort from a ATI R7 270X. > > Same setup works just fine in 4.5.3. > > The bug report about this is: > > https://bugzilla.kernel.org/show_bug.cgi?id=114981 > > I managed to bisect this down to: > > commit 739ffee97ed550a2899a925ed3f260fa1e8fa955 > Author: Subhransu S. Prusty <subhransu.s.prusty@intel.com> > Date: Fri Mar 4 19:59:49 2016 +0530 > > ALSA: hda - Add hdmi chmap verb programming ops to chmap object > > But I cannot easily revert this from current rc7. > Please make me a happy DP Audio User again :) > > I can provide further informations or test possible patches.
If the commit above alone breaks, does the patch below change the behavior? Through a quick look at it, some ops are overridden only conditionally while the older code always overwrote them.
thanks,
Takashi
--- diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c index d2e57c72ba94..d0d5ad8beac5 100644 --- a/sound/pci/hda/patch_hdmi.c +++ b/sound/pci/hda/patch_hdmi.c @@ -3549,6 +3549,9 @@ static int patch_atihdmi(struct hda_codec *codec) spec->ops.pin_hbr_setup = atihdmi_pin_hbr_setup; spec->ops.setup_stream = atihdmi_setup_stream; + spec->chmap.ops.pin_get_slot_channel = atihdmi_pin_get_slot_channel; + spec->chmap.ops.pin_set_slot_channel = atihdmi_pin_set_slot_channel; + if (!has_amd_full_remap_support(codec)) { /* override to ATI/AMD-specific versions with pairwise mapping */ spec->chmap.ops.chmap_cea_alloc_validate_get_type = @@ -3556,10 +3559,6 @@ static int patch_atihdmi(struct hda_codec *codec) spec->chmap.ops.cea_alloc_to_tlv_chmap = atihdmi_paired_cea_alloc_to_tlv_chmap; spec->chmap.ops.chmap_validate = atihdmi_paired_chmap_validate; - spec->chmap.ops.pin_get_slot_channel = - atihdmi_pin_get_slot_channel; - spec->chmap.ops.pin_set_slot_channel = - atihdmi_pin_set_slot_channel; } /* ATI/AMD converters do not advertise all of their capabilities */
| |