HD-ljudproblem i AMDGPU-drivrutiner får Patch, DRM kan nu hantera hot-plugging

Linux-Unix / HD-ljudproblem i AMDGPU-drivrutiner får Patch, DRM kan nu hantera hot-plugging 2 minuter läst

AMD



Medan Radeon / AMD GPU: er har fått bättre Linux-stöd med nyare GPU-modeller har ljudstödet försummats - tills nu. Ett plåster pressades nyligen av SUSE: s Takashi Iwai, som också underhåller ljudundersystemet i Linuxs huvudlinjekärna. Plåstret hanterar några övergripande problem med AMDGPUs ljudstöd.

Nuvarande AMDGPU-ljudproblem kretsar kring att vissa grafikprocessorer har HDMI / DP-ljudstöd som försenas av AMDGPU Display Code (DC / DAL) som behöver lappas i kärnan, några ljudformat stöds inte och övergripande fel i vissa delar av förarstack. SUSE: s Takashi Iwai har dock släppt en uppsättning patchar för Radeon / AMDGPU DRM-drivrutiner.



Vad dessa korrigeringsfiler gör är att ge DRM-ljudkomponentstöd för Radeon- och AMDGPU Direct Rendering Manager-drivrutiner - i ett nötskal kommer DRM-ljudkomponentläget för HDMI- och DisplayPort-gränssnitt att möjliggöra ljud-hot-plug och ELD-avläsningar att hända, utan maskinvaruåtkomst . Detta innebär i princip att det kan tillåtas för korrekt hot-plug-hantering, även om systemet är i driftläge för körning. AMDGPU DC-kodvägarna är dock inte ordentligt sammanställda i den aktuella patchformen.



Så i grund och botten adresseras endast Radeon och en del av AMDGPU av patch-DC-stödet är inte ännu ingår.



Takashi förklarade fläckarna djupare nedan:

AMD / ATI HDMI-codec-drivrutiner hade inte ljudkomponentbindning som i915, men det fungerade bara med den traditionella HD-ljud-oönskade händelsen för detektering av HDMI-kontakt och ELD-läsningen därefter. Detta har varit ett problem på många sätt: först och främst går det genom maskinvaruhändelseövergången (från GPU-registerskrivning, HD-ljudkontrollutlösare och slutligen till HD-ljud oönskad händelsehantering), vilket ofta är opålitligt och kan missa några möjligheter. För det andra behöver varje osol händelsehantering och ELD-uppläsning den explicita strömmen upp / ner när codec är i driftstopp. Sist men inte minst, vilket är det viktigaste, kan uppkopplingen av hotplug missas när HD-ljudkontrollen är i driftstopp. Speciellt den sista punkten är ett stort problem på grund av den senaste ändringen som är relevant med vga_switcheroo som med våld möjliggör runtime PM för AMD HDMI-kontroller.

Dessa problem löses genom att introducera ljudkomponenten; hotplug-meddelandet görs genom en direkt återuppringning av funktionen, vilket är mer exakt och tillförlitligt, och det kan bearbetas utan den egentliga hårdvaruåtkomsten, dvs ingen runtime PM-trigger behövs, och HD-ljudet får evenemanget även om det är i runtime uppskjuta. Samma sak för ELD-fråga, eftersom den läses direkt från cachade ELD-byte som är lagrade i DRM-drivrutinen, varför hela maskinvaruåtkomsten kan hoppas över.



Så här är det: denna patch implementerar ljudkomponentbindningen med AMD / ATI DRM-drivrutin. Den största skillnaden från i915-implementeringen är att den här bindningen är helt valfri och att den kan aktiveras asynkront direkt. Det vill säga, föraren kommer att byta från HD-ljud oönskad händelse till meddelande återuppringning en gång när DRM-komponenten blir bunden. På samma sätt, när DRM-drivrutinen lossas, återgår HDMI-händelseshantering också till det äldre läget.

En annan skillnad från i915 är också att AMD HDMI registrerar komponenten i codec-drivrutinen, medan i915 HDMI-codec antar att komponentbindningen redan var klar. Därför avregistrerar AMD-kod också komponentbindningen vid codec-utgången. ”