Problémy se zvukem HD v ovladačích AMDGPU přijímají opravu, DRM nyní dokáže zpracovat připojení za provozu

Linux-Unix / Problémy se zvukem HD v ovladačích AMDGPU přijímají opravu, DRM nyní dokáže zpracovat připojení za provozu 2 minuty čtení

AMD



Zatímco grafické karty Radeon / AMD získávají lepší podporu Linuxu s novějšími modely GPU, podpora zvuku byla žalostně opomíjena - až dosud. Opravu nedávno zaslal Takashi Iwai ze společnosti SUSE, který také udržuje zvukový subsystém v hlavním jádru Linuxu. Patch řeší některé celkové problémy se zvukovou podporou AMDGPU.

Aktuální problémy se zvukem AMDGPU se točí kolem některých grafických procesorů tak, že podpora zvuku HDMI / DP je zpožděna o AMDGPU Display Code (DC / DAL), který je třeba opravit do jádra, několik zvukových formátů není podporováno a celkové chyby v určitých částech zásobník ovladačů. Společnost SUSE’s Takashi Iwai však vydala sadu oprav pro ovladače DRM Radeon / AMDGPU.



Tyto opravy poskytují podporu zvukových komponent DRM pro ovladače Radeon a AMDGPU Direct Rendering Manager - v kostce, režim zvukových komponent DRM pro rozhraní HDMI a DisplayPort umožní čtení hot-plug a čtení ELD, bez hardwarového přístupu . To v zásadě znamená, že je možné povolit správnou manipulaci s připojením za provozu, i když je systém v režimu pozastavení za běhu. Cesty kódu AMDGPU DC však nejsou v aktuální formě opravy správně sestaveny.



V zásadě tedy patch - DC podporuje pouze Radeon a část AMDGPU ještě není zahrnuta.



Takashi vysvětlil opravy níže:

Ovladače kodeků AMD / ATI HDMI neměly vázání zvukových komponent jako i915, ale fungovalo to pouze s tradiční nevyžádanou událostí HD-audio pro detekci HDMI hotplug a následné čtení ELD. To byl problém v mnoha ohledech: nejprve projde přechodem hardwarové události (od zápisu do registru GPU, spouštění ovladače HD-audio a nakonec k zpracování nevyžádané události HD-audio), což je často nespolehlivé a může chybět nějaké příležitosti. Za druhé, každá manipulace s nevyřízenými událostmi a čtení ELD vyžadují explicitní zapnutí / vypnutí, když je kodek v době běhu. V neposlední řadě, což je nejdůležitější, může dojít ke zmeškání probuzení hotplug, když je řadič zvuku HD v režimu runtime. Zejména poslední bod je velkým problémem kvůli nedávné změně související s vga_switcheroo, která násilně umožňuje běhový PM pro řadiče AMD HDMI.

Tyto problémy jsou vyřešeny zavedením zvukové komponenty; oznámení hotplug se provádí přímým zpětným voláním funkce, které je přesnější a spolehlivější a lze jej zpracovat bez skutečného hardwarového přístupu, tzn. není potřeba žádný spouštěcí modul runtime PM a zvuk HD získá událost, i když je za běhu pozastavit. Totéž pro dotaz ELD, protože se čte přímo z mezipaměti ELD bajtů uložených v ovladači DRM, a proto lze přeskočit celý přístup k hardwaru.



Takže tady to je: tato oprava implementuje vazbu zvukové komponenty s ovladačem AMD / ATI DRM. Největší rozdíl oproti implementaci i915 spočívá v tom, že tato vazba je plně volitelná a lze ji aktivovat asynchronně za běhu. To znamená, že ovladač přejde z nevyžádané události HD-audio na zpětné zpětné volání, jakmile dojde ke svázání komponenty DRM. Podobně, když se uvolní ovladač DRM, vrátí se zpracování událostí HDMI také do staršího režimu.

Dalším rozdílem od i915 je, že AMD HDMI registruje komponentu v ovladači kodeku, zatímco kodek i915 HDMI předpokládá, že vazba komponenty již byla provedena. Proto kód AMD také zruší registraci vazby komponent na výstupu kodeku. “