From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla-daemon@freedesktop.org Subject: [Bug 101900] No HDMI HBR audio on Polaris (no TrueHD, no Atmos, no Neo:X, no HD Master audio) and static noise in sound when LPCM Date: Fri, 12 Jan 2018 11:48:02 +0000 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1164000561==" Return-path: Received: from culpepper.freedesktop.org (culpepper.freedesktop.org [131.252.210.165]) by gabe.freedesktop.org (Postfix) with ESMTP id B03EF6E853 for ; Fri, 12 Jan 2018 13:06:07 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --===============1164000561== Content-Type: multipart/alternative; boundary="15157576821.1B6C1.24230" Content-Transfer-Encoding: 7bit --15157576821.1B6C1.24230 Date: Fri, 12 Jan 2018 11:48:02 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.freedesktop.org/ Auto-Submitted: auto-generated https://bugs.freedesktop.org/show_bug.cgi?id=3D101900 --- Comment #21 from Direx --- Alex, thanks a lot for taking a look at this. I also think that everything = is already in place and just a tiny piece is missing or going wrong (with a big impact though). I'd like to help you sort that out. (In reply to Alex Deucher from comment #20) > Can you add some debugging output to dce_aud_az_configure() to see why it > may not be getting enabled in your case? Specifically see if > is_audio_format_supported() is failing for HBR formats and why and see if > set_high_bit_rate_capable() is getting enabled. OK, I've hacked my kernel (4.15-rc7) like this (sorry for the noobish print debugging): diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c index 0df9ecb2710c..1c9e5b0a3f39 100644 --- a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c @@ -291,7 +291,12 @@ static void set_high_bit_rate_capable( struct audio *audio, bool capable) { - uint32_t value =3D 0; + if (capable) + printk(KERN_WARNING "hbrlog: HBR capable is enabled"); + else + printk(KERN_WARNING "hbrlog: HBR cabable is disabled"); + + uint32_t value =3D 0; /* set high bit rate audio capable*/ value =3D AZ_REG_READ(AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR); @@ -499,6 +504,9 @@ void dce_aud_az_configure( /* check if supported */ if (is_audio_format_supported( audio_info, audio_format_code, &index)) { + + printk(KERN_WARNING "hbrlog: audio codec is supported"); + const struct audio_mode *audio_mode =3D &audio_info->modes[index]; union audio_sample_rates sample_rates =3D @@ -527,9 +535,13 @@ void dce_aud_az_configure( break; case AUDIO_FORMAT_CODE_DOLBYDIGITALPLUS: case AUDIO_FORMAT_CODE_DTS_HD: + printk(KERN_WARNING "hbrlog: DTS-HD detected"); case AUDIO_FORMAT_CODE_MAT_MLP: - case AUDIO_FORMAT_CODE_DST: + printk(KERN_WARNING "hbrlog: TrueHD/MLP detected"); + case AUDIO_FORMAT_CODE_DST: + printk(KERN_WARNING "hbrlog: DST detected"); case AUDIO_FORMAT_CODE_WMAPRO: + printk(KERN_WARNING "hbrlog: vendor_specific"); byte2 =3D audio_mode->vendor_specific; break; default: @@ -551,7 +563,35 @@ void dce_aud_az_configure( byte2, =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20 AZALIA_F0_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR0, DESCRIPTOR_BYTE_2); - } /* if */ + } else { + /* unsupported audio codec */ + switch (audio_format_code) { + case AUDIO_FORMAT_CODE_LINEARPCM: + printk(KERN_WARNING "hbrlog: PCM unsupported"); + break; + case AUDIO_FORMAT_CODE_AC3: + printk(KERN_WARNING "hbrlog: AC3 unsupported"); + break; + case AUDIO_FORMAT_CODE_DOLBYDIGITALPLUS: + printk(KERN_WARNING "hbrlog: DD+ unsupported"); + break; + case AUDIO_FORMAT_CODE_DTS_HD: + printk(KERN_WARNING "hbrlog: DTS-HD unsupported"); + break; + case AUDIO_FORMAT_CODE_MAT_MLP: + printk(KERN_WARNING "hbrlog: TrueHD/MLP unsupported"); + break; + case AUDIO_FORMAT_CODE_DST: + printk(KERN_WARNING "hbrlog: DST unsupported"); + break; + case AUDIO_FORMAT_CODE_WMAPRO: + printk(KERN_WARNING "hbrlog: WMAPRO unsupported"); + break; + default: + printk(KERN_WARNING "hbrlog: audio codec unsupported"); + break; + } + } AZ_REG_WRITE( AZALIA_F0_CODEC_PIN_CONTROL_AUDIO_DESCRIPTO= R0 + format_index, But as far as I understand this code is only run once when initializing the GPU, not when playing back audio. Below is my dmesg output, please let me k= now if this is useful or if you need additional information. I had only attached one dislplay for this capture (my AVR). It looks like TrueHD and DTS-HD are properly marked as "supported". [ 17.027288] fbcon: amdgpudrmfb (fb0) is primary device [ 17.050864] [drm] {3840x2160, 4400x2250@594000Khz} [ 17.050976] hbrlog: audio codec is supported [ 17.050977] hbrlog: audio codec is supported [ 17.050977] hbrlog: audio codec unsupported [ 17.050977] hbrlog: audio codec unsupported [ 17.050978] hbrlog: audio codec unsupported [ 17.050978] hbrlog: audio codec unsupported [ 17.050978] hbrlog: audio codec is supported [ 17.050978] hbrlog: audio codec unsupported [ 17.050979] hbrlog: audio codec is supported [ 17.050979] hbrlog: DTS-HD detected [ 17.050979] hbrlog: TrueHD/MLP detected [ 17.050979] hbrlog: DST detected [ 17.050979] hbrlog: vendor_specific [ 17.050980] hbrlog: audio codec is supported [ 17.050980] hbrlog: DTS-HD detected [ 17.050980] hbrlog: TrueHD/MLP detected [ 17.050980] hbrlog: DST detected [ 17.050980] hbrlog: vendor_specific [ 17.050980] hbrlog: audio codec is supported [ 17.050980] hbrlog: TrueHD/MLP detected [ 17.050981] hbrlog: DST detected [ 17.050981] hbrlog: vendor_specific [ 17.050981] hbrlog: WMAPRO unsupported [ 17.050981] hbrlog: HBR capable is enabled [ 17.067921] Console: switching to colour frame buffer device 480x135 [ 17.078529] amdgpu 0000:01:00.0: fb0: amdgpudrmfb frame buffer device [ 17.104099] amdgpu 0000:01:00.0: kfd not supported on this ASIC [ 17.104114] [drm] Initialized amdgpu 3.23.0 20150101 for 0000:01:00.0 on minor 0 [ 17.194239] IPv6: ADDRCONF(NETDEV_UP): enp3s0: link is not ready [ 17.302047] r8169 0000:03:00.0 enp3s0: link down [ 17.302049] r8169 0000:03:00.0 enp3s0: link down [ 17.302087] IPv6: ADDRCONF(NETDEV_UP): enp3s0: link is not ready [ 17.968392] [drm] {1920x1080, 2200x1125@148500Khz} [ 18.001320] hbrlog: audio codec is supported [ 18.001320] hbrlog: audio codec is supported [ 18.001321] hbrlog: audio codec unsupported [ 18.001321] hbrlog: audio codec unsupported [ 18.001322] hbrlog: audio codec unsupported [ 18.001322] hbrlog: audio codec unsupported [ 18.001322] hbrlog: audio codec is supported [ 18.001323] hbrlog: audio codec unsupported [ 18.001323] hbrlog: audio codec is supported [ 18.001323] hbrlog: DTS-HD detected [ 18.001324] hbrlog: TrueHD/MLP detected [ 18.001324] hbrlog: DST detected [ 18.001324] hbrlog: vendor_specific [ 18.001325] hbrlog: audio codec is supported [ 18.001325] hbrlog: DTS-HD detected [ 18.001325] hbrlog: TrueHD/MLP detected [ 18.001325] hbrlog: DST detected [ 18.001325] hbrlog: vendor_specific [ 18.001326] hbrlog: audio codec is supported [ 18.001326] hbrlog: TrueHD/MLP detected [ 18.001326] hbrlog: DST detected [ 18.001326] hbrlog: vendor_specific [ 18.001327] hbrlog: WMAPRO unsupported [ 18.001327] hbrlog: HBR capable is enabled [ 19.580261] r8169 0000:03:00.0 enp3s0: link up [ 19.580266] IPv6: ADDRCONF(NETDEV_CHANGE): enp3s0: link becomes ready --=20 You are receiving this mail because: You are the assignee for the bug.= --15157576821.1B6C1.24230 Date: Fri, 12 Jan 2018 11:48:02 +0000 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.freedesktop.org/ Auto-Submitted: auto-generated

Comme= nt # 21 on bug 10190= 0 from Direx
Alex, thanks a lot for taking a look at this. I also think tha=
t everything is
already in place and just a tiny piece is missing or going wrong (with a big
impact though). I'd like to help you sort that out.

(In reply to Alex Deucher from com=
ment #20)
> Can you add some debugging output to dce_aud_az_=
configure() to see why it
> may not be getting enabled in your case?  Specifically see if
> is_audio_format_supported() is failing for HBR formats and why and see=
 if
> set_high_bit_rate_capable() is getting enabled.

OK, I've hacked my kernel (4.15-rc7) like this (sorry for the noobish print
debugging):

diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
index 0df9ecb2710c..1c9e5b0a3f39 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
@@ -291,7 +291,12 @@ static void set_high_bit_rate_capable(
        struct audio *audio,
        bool capable)
 {
-       uint32_t value =3D 0;
+    if (capable)
+        printk(KERN_WARNING "hbrlog: HBR capable is enabled");
+    else
+        printk(KERN_WARNING "hbrlog: HBR cabable is disabled");
+
+    uint32_t value =3D 0;

        /* set high bit rate audio capable*/
        value =3D AZ_REG_READ(AZALIA_F0_CODEC_PIN_CONTROL_RESPONSE_HBR);
@@ -499,6 +504,9 @@ void dce_aud_az_configure(
                /* check if supported */
                if (is_audio_format_supported(
                                audio_info, audio_format_code, &index))=
 {
+
+            printk(KERN_WARNING "hbrlog: audio codec is supported&quo=
t;);
+
                        const struct audio_mode *audio_mode =3D
                                        &audio_info->modes[index];
                        union audio_sample_rates sample_rates =3D
@@ -527,9 +535,13 @@ void dce_aud_az_configure(
                                break;
                        case AUDIO_FORMAT_CODE_DOLBYDIGITALPLUS:
                        case AUDIO_FORMAT_CODE_DTS_HD:
+                printk(KERN_WARNING "hbrlog: DTS-HD detected");
                        case AUDIO_FORMAT_CODE_MAT_MLP:
-                       case AUDIO_FORMAT_CODE_DST:
+                printk(KERN_WARNING "hbrlog: TrueHD/MLP detected"=
;);
+            case AUDIO_FORMAT_CODE_DST:
+                printk(KERN_WARNING "hbrlog: DST detected");
                        case AUDIO_FORMAT_CODE_WMAPRO:
+                printk(KERN_WARNING "hbrlog: vendor_specific");
                                byte2 =3D audio_mode->vendor_specific;
                                break;
                        default:
@@ -551,7 +563,35 @@ void dce_aud_az_configure(
                                        byte2,
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20
AZALIA_F0_CODEC_PIN_CONTROL_AUDIO_DESCRIPTOR0,
                                        DESCRIPTOR_BYTE_2);
-               } /* if */
+               } else {
+            /* unsupported audio codec */
+                       switch (audio_format_code) {
+                       case AUDIO_FORMAT_CODE_LINEARPCM:
+                printk(KERN_WARNING "hbrlog: PCM unsupported");
+                               break;
+                       case AUDIO_FORMAT_CODE_AC3:
+                printk(KERN_WARNING "hbrlog: AC3 unsupported");
+                               break;
+                       case AUDIO_FORMAT_CODE_DOLBYDIGITALPLUS:
+                printk(KERN_WARNING "hbrlog: DD+ unsupported");
+                break;
+            case AUDIO_FORMAT_CODE_DTS_HD:
+                printk(KERN_WARNING "hbrlog: DTS-HD unsupported"=
);
+                break;
+                       case AUDIO_FORMAT_CODE_MAT_MLP:
+                printk(KERN_WARNING "hbrlog: TrueHD/MLP unsupported&q=
uot;);
+                break;
+            case AUDIO_FORMAT_CODE_DST:
+                printk(KERN_WARNING "hbrlog: DST unsupported");
+                break;
+                       case AUDIO_FORMAT_CODE_WMAPRO:
+                printk(KERN_WARNING "hbrlog: WMAPRO unsupported"=
);
+                               break;
+                       default:
+                printk(KERN_WARNING "hbrlog: audio codec unsupported&=
quot;);
+                               break;
+                       }
+        }

                AZ_REG_WRITE(
                                AZALIA_F0_CODEC_PIN_CONTROL_AUDIO_DESCRIPTO=
R0 +
format_index,

But as far as I understand this code is only run once when initializing the
GPU, not when playing back audio. Below is my dmesg output, please let me k=
now
if this is useful or if you need additional information. I had only attached
one dislplay for this capture (my AVR). It looks like TrueHD and DTS-HD are
properly marked as "supported".


[   17.027288] fbcon: amdgpudrmfb (fb0) is primary device
[   17.050864] [drm] {3840x2160, 4400x2250@594000Khz}
[   17.050976] hbrlog: audio codec is supported
[   17.050977] hbrlog: audio codec is supported
[   17.050977] hbrlog: audio codec unsupported
[   17.050977] hbrlog: audio codec unsupported
[   17.050978] hbrlog: audio codec unsupported
[   17.050978] hbrlog: audio codec unsupported
[   17.050978] hbrlog: audio codec is supported
[   17.050978] hbrlog: audio codec unsupported
[   17.050979] hbrlog: audio codec is supported
[   17.050979] hbrlog: DTS-HD detected
[   17.050979] hbrlog: TrueHD/MLP detected
[   17.050979] hbrlog: DST detected
[   17.050979] hbrlog: vendor_specific
[   17.050980] hbrlog: audio codec is supported
[   17.050980] hbrlog: DTS-HD detected
[   17.050980] hbrlog: TrueHD/MLP detected
[   17.050980] hbrlog: DST detected
[   17.050980] hbrlog: vendor_specific
[   17.050980] hbrlog: audio codec is supported
[   17.050980] hbrlog: TrueHD/MLP detected
[   17.050981] hbrlog: DST detected
[   17.050981] hbrlog: vendor_specific
[   17.050981] hbrlog: WMAPRO unsupported
[   17.050981] hbrlog: HBR capable is enabled
[   17.067921] Console: switching to colour frame buffer device 480x135
[   17.078529] amdgpu 0000:01:00.0: fb0: amdgpudrmfb frame buffer device
[   17.104099] amdgpu 0000:01:00.0: kfd not supported on this ASIC
[   17.104114] [drm] Initialized amdgpu 3.23.0 20150101 for 0000:01:00.0 on
minor 0
[   17.194239] IPv6: ADDRCONF(NETDEV_UP): enp3s0: link is not ready
[   17.302047] r8169 0000:03:00.0 enp3s0: link down
[   17.302049] r8169 0000:03:00.0 enp3s0: link down
[   17.302087] IPv6: ADDRCONF(NETDEV_UP): enp3s0: link is not ready
[   17.968392] [drm] {1920x1080, 2200x1125@148500Khz}
[   18.001320] hbrlog: audio codec is supported
[   18.001320] hbrlog: audio codec is supported
[   18.001321] hbrlog: audio codec unsupported
[   18.001321] hbrlog: audio codec unsupported
[   18.001322] hbrlog: audio codec unsupported
[   18.001322] hbrlog: audio codec unsupported
[   18.001322] hbrlog: audio codec is supported
[   18.001323] hbrlog: audio codec unsupported
[   18.001323] hbrlog: audio codec is supported
[   18.001323] hbrlog: DTS-HD detected
[   18.001324] hbrlog: TrueHD/MLP detected
[   18.001324] hbrlog: DST detected
[   18.001324] hbrlog: vendor_specific
[   18.001325] hbrlog: audio codec is supported
[   18.001325] hbrlog: DTS-HD detected
[   18.001325] hbrlog: TrueHD/MLP detected
[   18.001325] hbrlog: DST detected
[   18.001325] hbrlog: vendor_specific
[   18.001326] hbrlog: audio codec is supported
[   18.001326] hbrlog: TrueHD/MLP detected
[   18.001326] hbrlog: DST detected
[   18.001326] hbrlog: vendor_specific
[   18.001327] hbrlog: WMAPRO unsupported
[   18.001327] hbrlog: HBR capable is enabled
[   19.580261] r8169 0000:03:00.0 enp3s0: link up
[   19.580266] IPv6: ADDRCONF(NETDEV_CHANGE): enp3s0: link becomes ready
        


You are receiving this mail because:
  • You are the assignee for the bug.
= --15157576821.1B6C1.24230-- --===============1164000561== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --===============1164000561==--