Bug 97258

Summary: Polaris: no sound over HDMI
Product: DRI Reporter: Marius Orcsik <marius>
Component: DRM/AMDgpuAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED WORKSFORME QA Contact:
Severity: normal    
Priority: medium CC: mabo
Version: DRI git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Removing some unused structures from DAL related files
none
Won't boot none

Description Marius Orcsik 2016-08-09 12:38:59 UTC
Using mainline kernel version (4.8) I have no sound output on the TV connected to an AMD RX 480 card over the HDMI port compiled for Archlinux.

I'm using mesa-git version.

The HDMI outputs are detected by pulseaudio, but on the TV no sound gets output.

What kind of specific information do you guys need for debugging this?

Thank you.
Comment 1 Alex Deucher 2016-08-09 12:55:04 UTC
Audio is only supported with the new DAL display code which is not upstream yet.  You can use this branch in the interim:
https://cgit.freedesktop.org/~agd5f/linux/log/?h=amd-staging-4.6
Comment 2 Marius Orcsik 2016-08-09 14:06:53 UTC
Thank you Alex, I'll try it.

I've already tried the branches "drm-next-4.8-wip-dal" and "drm-next-4.6-wip-dal" from the same tree - the latter being suggested in another bug - and the compile was failing.
Comment 3 Marius Orcsik 2016-08-09 14:32:42 UTC
Well, the compile of amd-staging-4.6 failed too:


  CC [M]  drivers/gpu/drm/amd/amdgpu/../dal/dc/i2caux/dce80/i2c_sw_engine_dce80.o
drivers/gpu/drm/amd/amdgpu/../dal/dc/i2caux/dce80/i2c_sw_engine_dce80.c:53:23: error: 'ddc_hw_status_addr' defined but not used [-Werror=unused-const-variable=]
 static const uint32_t ddc_hw_status_addr[] = {
                       ^~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[4]: *** [scripts/Makefile.build:292: drivers/gpu/drm/amd/amdgpu/../dal/dc/i2caux/dce80/i2c_sw_engine_dce80.o] Error 1
make[3]: *** [scripts/Makefile.build:440: drivers/gpu/drm/amd/amdgpu] Error 2
make[2]: *** [scripts/Makefile.build:440: drivers/gpu/drm] Error 2
make[1]: *** [scripts/Makefile.build:440: drivers/gpu] Error 2
make: *** [Makefile:962: drivers] Error 2


The (I assume relevant) .config settings: 

$ grep AMD_DAL .config
CONFIG_DRM_AMD_DAL=y
CONFIG_DRM_AMD_DAL_VBIOS_PRESENT=y
CONFIG_DRM_AMD_DAL_DCE8_0=y
CONFIG_DRM_AMD_DAL_DCE10_0=y
CONFIG_DRM_AMD_DAL_DCE11_0=y
CONFIG_DRM_AMD_DAL_DCE11_2=y
Comment 4 Alex Deucher 2016-08-09 14:50:00 UTC
(In reply to Marius Orcsik from comment #3)
> Well, the compile of amd-staging-4.6 failed too:
> 
> 
>   CC [M] 
> drivers/gpu/drm/amd/amdgpu/../dal/dc/i2caux/dce80/i2c_sw_engine_dce80.o
> drivers/gpu/drm/amd/amdgpu/../dal/dc/i2caux/dce80/i2c_sw_engine_dce80.c:53:
> 23: error: 'ddc_hw_status_addr' defined but not used
> [-Werror=unused-const-variable=]
>  static const uint32_t ddc_hw_status_addr[] = {
>                        ^~~~~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
> make[4]: *** [scripts/Makefile.build:292:
> drivers/gpu/drm/amd/amdgpu/../dal/dc/i2caux/dce80/i2c_sw_engine_dce80.o]
> Error 1
> make[3]: *** [scripts/Makefile.build:440: drivers/gpu/drm/amd/amdgpu] Error 2
> make[2]: *** [scripts/Makefile.build:440: drivers/gpu/drm] Error 2
> make[1]: *** [scripts/Makefile.build:440: drivers/gpu] Error 2
> make: *** [Makefile:962: drivers] Error 2
> 

Your version of gcc seems to warn on different things than mine.  Try removing -Werror from the Makefile:

diff --git a/drivers/gpu/drm/amd/dal/Makefile b/drivers/gpu/drm/amd/dal/Makefile
index b84a2db..2ef2128 100644
--- a/drivers/gpu/drm/amd/dal/Makefile
+++ b/drivers/gpu/drm/amd/dal/Makefile
@@ -5,8 +5,6 @@
 
 AMDDALPATH = $(RELATIVE_AMD_DAL_PATH)
 
-subdir-ccflags-y += -Werror
-
 subdir-ccflags-y += -I$(AMDDALPATH)/ -I$(AMDDALPATH)/include
 
 subdir-ccflags-y += -I$(FULL_AMD_DAL_PATH)/dc/inc/
Comment 5 Marius Orcsik 2016-08-09 14:53:57 UTC
Created attachment 125641 [details] [review]
Removing some unused structures from DAL related files

OK, there were a few other issues in getting this branch to compile, but I managed in the end.

I suppose most of them were related to too restrictive compile options (as they were triggered by -Werror=unused-const-variable), but I attached a patch removing the offending structs.
Comment 6 Marius Orcsik 2016-08-09 14:55:09 UTC
Thank you Alex. I'll compile again without -Werror.

Sorry for all the spam and thank you (again) for your replies.
Comment 7 Marius Orcsik 2016-08-09 18:32:45 UTC
Hi again, sound works fine with the amd-staging-4.6 branch. 

May I ask about an estimation of when will the DAL changes be accepted to main tree?
Comment 8 Maximilian Böhm 2016-08-10 10:19:06 UTC
I get only to:

  CC      drivers/gpu/drm/amd/amdgpu/../dal/dc/audio/audio_base.o
drivers/gpu/drm/amd/amdgpu/../dal/dc/adapter/adapter_service.c: In Funktion »create_hw_ctx«:
drivers/gpu/drm/amd/amdgpu/../dal/dc/adapter/adapter_service.c:677:10: Fehler: Implizite Deklaration der Funktion »dal_adapter_service_create_hw_ctx_dce110« [-Werror=implicit-function-declaration]
   return dal_adapter_service_create_hw_ctx_dce110(ctx);
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../dal/dc/adapter/adapter_service.c:677:10: Warnung: return erzeugt Zeiger von Ganzzahl ohne Typkonvertierung [-Wint-conversion]
   return dal_adapter_service_create_hw_ctx_dce110(ctx);
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  CC      drivers/gpu/drm/amd/amdgpu/../dal/dc/audio/hw_ctx_audio.o
  CC      drivers/gpu/drm/amd/amdgpu/../dal/dc/basics/conversion.o
  CC      drivers/gpu/drm/amd/amdgpu/../dal/dc/basics/fixpt31_32.o
  CC      drivers/gpu/drm/amd/amdgpu/../dal/dc/basics/fixpt32_32.o
cc1: Einige Warnungen werden als Fehler behandelt
make[4]: *** [scripts/Makefile.build:291: drivers/gpu/drm/amd/amdgpu/../dal/dc/adapter/adapter_service.o] Fehler 1
make[4]: *** Es wird auf noch nicht beendete Prozesse gewartet....
drivers/gpu/drm/amd/amdgpu/../dal/dc/audio/audio_base.c: In Funktion »dal_audio_create«:
drivers/gpu/drm/amd/amdgpu/../dal/dc/audio/audio_base.c:279:10: Fehler: Implizite Deklaration der Funktion »dal_audio_create_dce110« [-Werror=implicit-function-declaration]
   return dal_audio_create_dce110(init_data);
          ^~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/amd/amdgpu/../dal/dc/audio/audio_base.c:279:10: Warnung: return erzeugt Zeiger von Ganzzahl ohne Typkonvertierung [-Wint-conversion]
   return dal_audio_create_dce110(init_data);
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: Einige Warnungen werden als Fehler behandelt
make[4]: *** [scripts/Makefile.build:291: drivers/gpu/drm/amd/amdgpu/../dal/dc/audio/audio_base.o] Fehler 1
make[3]: *** [scripts/Makefile.build:440: drivers/gpu/drm/amd/amdgpu] Fehler 2
make[2]: *** [scripts/Makefile.build:440: drivers/gpu/drm] Fehler 2
make[1]: *** [scripts/Makefile.build:440: drivers/gpu] Fehler 2
make: *** [Makefile:962: drivers] Fehler 2

Manjaro, GCC 6.1.1. Sorry for the German, I hope it's OK for Alex.
Comment 9 Alex Deucher 2016-08-10 18:03:27 UTC
(In reply to Maximilian Böhm from comment #8)
> I get only to:

What DAL config items did you select?  You have to select all of them as there are some inter-dependencies that have slipped in.

CONFIG_DRM_AMD_DAL=y
CONFIG_DRM_AMD_DAL_VBIOS_PRESENT=y
CONFIG_DRM_AMD_DAL_DCE8_0=y
CONFIG_DRM_AMD_DAL_DCE10_0=y
CONFIG_DRM_AMD_DAL_DCE11_0=y
CONFIG_DRM_AMD_DAL_DCE11_2=y
Comment 10 Maximilian Böhm 2016-08-10 20:38:51 UTC
Created attachment 125687 [details]
Won't boot

OK, thank you, got it compiled!
But: First, mkinitcpio was telling me:

==> ERROR: module not found: `crc32c'
==> Generating module dependencies
==> Creating xz-compressed initcpio image: /boot/initramfs-4.6-amd-staging.img
==> WARNING: errors were encountered during the build. The image may not be complete.

And now the kernel won't boot. See the photo in the attachment. I see eight Tuxes and and a couple lines output but it won't go further. :/
Comment 11 Maximilian Böhm 2016-08-11 18:00:03 UTC
The last line "fb: switching to amdgpudrmfb from EFI VGA" is the same as in this bug report: https://community.amd.com/thread/197176
So maybe something is wrong with the PowerPlay code? I have a R9 380.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.