Problémy so zvukom HD v ovládačoch AMDGPU prijímajú opravu, DRM teraz zvládne pripojenie za chodu

Linux-Unix / Problémy so zvukom HD v ovládačoch AMDGPU prijímajú opravu, DRM teraz zvládne pripojenie za chodu 2 minúty prečítané

AMD



Zatiaľ čo GPU Radeon / AMD získavajú lepšiu podporu systému Linux s novšími modelmi GPU, podpora zvuku bola žalostne zanedbávaná - až doteraz. Opravu nedávno zaslal Takashi Iwai zo spoločnosti SUSE, ktorý taktiež udržuje zvukový subsystém v hlavnom jadre Linuxu. Náplasť rieši niektoré celkové problémy so zvukovou podporou AMDGPU.

Aktuálne problémy so zvukom AMDGPU sa točia okolo niektorých grafických procesorov tak, že podpora zvuku HDMI / DP sa oneskoruje kvôli AMDGPU Display Code (DC / DAL), ktorý je potrebné opraviť do jadra, niekoľko zvukových formátov nie je podporovaných, a celkovo chýb v určitých častiach zásobník vodičov. Spoločnosť SUSE’s Takashi Iwai však vydala sadu opráv pre ovládače DRM Radeon / AMDGPU.



To, čo tieto opravy robia, je podpora zvukových komponentov DRM pre ovládače Radeon a AMDGPU Direct Rendering Manager - v skratke, režim zvukových komponentov DRM pro rozhraní HDMI a DisplayPort umožní odečítání zvuku za provozu a čtení ELD, bez prístupu k hardvéru . To v podstate znamená, že je možné povoliť správnu manipuláciu s hot-plug, aj keď je systém v režime pozastavenia za chodu. Cesty kódov AMDGPU DC však nie sú správne zostavené v súčasnej podobe opravy.



Takže v podstate patch - podpora DC oslovuje iba Radeon a časť AMDGPU ešte nie je v cene.



Takashi vysvetlil opravy podrobne nižšie:

Ovládače kodeku AMD / ATI HDMI nemali viazanie zvukových komponentov ako i915, ale fungovalo to iba pri tradičnej nevyžiadanej udalosti HD-audio pre detekciu HDMI hotplug a následnom načítaní ELD. To bol problém v mnohých ohľadoch: v prvom rade prechádza prechodom hardvérových udalostí (od zápisu do registra GPU, spúšťača ovládača HD-audio a nakoniec po spracovanie nevyžiadaných udalostí HD-audio), ktorý je často nespoľahlivý a môže chýbať nejaké príležitosti. Po druhé, každá manipulácia s nevyriešenou udalosťou a načítanie ELD vyžaduje výslovné zapnutie / vypnutie, keď je kodek v režime runtime. V neposlednom rade, čo je najdôležitejšie, môže byť prebudenie hotplug zmeškané, keď je HD-audio radič v režime runtime. Hlavne posledný bod je veľkým problémom kvôli nedávnej zmene súvisiacej s vga_switcheroo, ktorá násilne umožňuje runtime PM pre radiče AMD HDMI.

Tieto problémy sa riešia zavedením zvukovej zložky; upozornenie na hotplug sa vykonáva priamym spätným volaním funkcie, ktoré je presnejšie a spoľahlivejšie a dá sa spracovať bez skutočného prístupu k hardvéru, tj. nie je potrebný runtime spúšťač PM a zvuk HD dostane udalosť, aj keď je za behu pozastaviť. To isté pre dopyt ELD, pretože sa číta priamo z bajtov ELD uložených v pamäti DRM ovládača, a preto je možné preskočiť celý prístup k hardvéru.



Takže tu to je: táto oprava implementuje väzbu zvukových komponentov s ovládačom AMD / ATI DRM. Najväčší rozdiel oproti implementácii i915 je v tom, že táto väzba je úplne voliteľná a je možné ju povoliť asynchrónne za behu. To znamená, že ovládač raz prepne z nevyžiadanej udalosti HD-audio na spätné volanie, keď sa DRM komponent spojí. Podobne, keď sa uvoľní ovládač DRM, vráti sa tiež spracovanie udalostí HDMI do staršieho režimu.

Ďalším rozdielom od i915 je, že AMD HDMI registruje komponent v ovládači kodeku, zatiaľ čo kodek i915 HDMI predpokladá, že väzba komponentu už bola vykonaná. Preto kód AMD neregistruje väzbu komponentu aj na výstupe z kodeku. “