Problemele audio HD la driverele AMDGPU primesc patch-uri, DRM poate rezolva acum conectarea la cald

Linux-Unix / Problemele audio HD la driverele AMDGPU primesc patch-uri, DRM poate rezolva acum conectarea la cald 2 minute citite

AMD



În timp ce GPU-urile Radeon / AMD au obținut un suport Linux mai bun cu modelele GPU mai noi, suportul audio a fost neglijat - până acum. Un patch a fost recent împins de Takashi Iwai de la SUSE, care întreține și subsistemul sonor în nucleul principal al Linux-ului. Plasturele abordează unele probleme generale cu ajutorul suportului audio al AMDGPU.

Problemele audio curente AMDGPU se învârt în jurul unor GPU-uri pentru a avea suport audio HDMI / DP întârziat de codul de afișare AMDGPU (DC / DAL) care trebuie să fie patch-uri în nucleu, câteva formate audio nefiind acceptate și bug-uri generale în anumite părți stiva de drivere. Cu toate acestea, Takashi Iwai de la SUSE a lansat un set de patch-uri pentru driverele Radeon / AMDGPU DRM.



Ce fac aceste patch-uri este să ofere suport pentru componentele audio DRM pentru driverele Radeon și AMDGPU Direct Rendering Manager - pe scurt, modul de componentă audio DRM pentru interfețele HDMI și DisplayPort va permite citirea audio hot-plug și ELD, fără acces hardware . Aceasta înseamnă practic că poate fi permisă pentru o manipulare corectă a hot-plug-ului, chiar dacă sistemul este într-un mod de suspendare în timp de execuție. Cu toate acestea, căile codului AMDGPU DC nu sunt bine puse împreună în formularul curent de patch-uri.



Deci, practic, doar Radeon și o parte din AMDGPU sunt abordate de patch - suport DC nu e inca inclus.



Takashi a explicat în detaliu patch-urile de mai jos:

Driverele de codec HDMI AMD / ATI nu au legat componentele audio ca i915, dar au funcționat doar cu evenimentul tradițional HD audio solicitat pentru detectarea hotplug-ului HDMI și citirea ELD ulterior. Aceasta a fost o problemă în multe feluri: în primul rând, trece prin tranziția evenimentelor hardware (de la scrierea registrului GPU, declanșator controler HD-audio și, în cele din urmă, la gestionarea evenimentelor audio nesolicitate HD), care este adesea nesigură și poate pierde câteva oportunități. În al doilea rând, fiecare gestionare a evenimentelor unsol și citirea ELD necesită pornirea / coborârea explicită atunci când codecul se află în suspendare. Nu în ultimul rând, care este cel mai important, trezirea hotplug-ului poate fi ratată atunci când controlerul audio HD este în suspendare. Mai ales ultimul punct este o mare problemă datorită schimbării recente relevante cu vga_switcheroo, care activează forțat PM în timpul rulării pentru controlerele AMD HDMI.

Aceste probleme sunt rezolvate prin introducerea componentei audio; notificarea hotplug se face printr-o apelare directă a funcției, care este mai precisă și mai fiabilă și poate fi procesată fără accesul hardware-ului real, adică nu este nevoie de niciun declanșator PM runtime, iar audio-HD primește evenimentul chiar dacă este în timp suspenda. Același lucru pentru interogarea ELD, deoarece este citit direct din octeții ELD din memoria cache stocate în driverul DRM, prin urmare, întregul acces hardware poate fi omis.



Iată-l: acest patch implementează legarea componentelor audio cu driverul AMD / ATI DRM. Cea mai mare diferență față de implementarea i915 este că această legare este complet opțională și poate fi activată asincron din mers. Adică, șoferul va trece de la evenimentul HD nesolicitat audio la notificarea de apel invers odată ce componenta DRM este legată. În mod similar, atunci când driverul DRM este descărcat, gestionarea evenimentelor HDMI revine și la modul vechi.

De asemenea, o altă diferență față de i915 este că AMD HDMI înregistrează componenta în driverul codec, în timp ce codecul i915 HDMI presupune că legarea componentei a fost deja realizată. Prin urmare, codul AMD anulează și legarea componentelor la ieșirea codecului. ”