Problemer med HD-lyd i AMDGPU-drivere mottar oppdatering, DRM kan nå håndtere hot-plugging

Linux-Unix / Problemer med HD-lyd i AMDGPU-drivere mottar oppdatering, DRM kan nå håndtere hot-plugging 2 minutter lest

AMD



Mens Radeon / AMD GPU-er har fått bedre Linux-støtte med nyere GPU-modeller, har lydstøtten blitt forsømt - til nå. En patch ble nylig presset av SUSEs Takashi Iwai, som også vedlikeholder lydundersystemet i Linuxs hovedlinjekjerne. Plasteret løser noen overordnede problemer med AMDGPUs lydstøtte.

Nåværende AMDGPU-lydproblemer dreier seg om at noen GPUer har HDMI / DP-lydstøtte som blir forsinket av AMDGPU Display Code (DC / DAL) som trenger å lappes i kjernen, noen få lydformater støttes ikke, og generelle feil i visse deler av driverstabel. Imidlertid har SUSEs Takashi Iwai gitt ut et sett med oppdateringer for Radeon / AMDGPU DRM-drivere.



Hva disse oppdateringene gjør er å gi DRM-lydkomponentstøtte for Radeon- og AMDGPU Direct Rendering Manager-driverne - i et nøtteskall vil DRM-lydkomponentmodus for HDMI- og DisplayPort-grensesnitt muliggjøre lyd-hot-plug og ELD-avlesninger, uten maskinvaretilgang . Dette betyr i utgangspunktet at det er tillatt for riktig hot-plug-håndtering, selv om systemet er i en kjøretidsavstengingsmodus. Imidlertid er AMDGPU DC-kodebaner ikke riktig satt sammen i den nåværende oppdateringsformen.



Så i utgangspunktet er det bare Radeon og en del av AMDGPU som er adressert av oppdateringen - DC-støtte er ikke ennå inkludert.



Takashi forklarte oppdateringene i dybden nedenfor:

AMD / ATI HDMI codec-drivere hadde ikke lydkomponentbinding som i915, men det fungerte bare med den tradisjonelle HD-lyd uønskede hendelsen for HDMI hotplug-deteksjon og ELD-opplesning deretter. Dette har vært et problem på mange måter: først og fremst går det gjennom overgangen til maskinvarehendelsen (fra GPU-registerskriving, utløser av HD-lydkontroller og til slutt til uønsket håndtering av HD-lydhendelse), som ofte er upålitelig og kan gå glipp av noen muligheter. For det andre trenger hver uløs hendelseshåndtering og ELD-opplesning eksplisitt strøm opp / ned når kodeken er i driftstiden. Sist, men ikke minst, som er det viktigste, kan oppvåkningen av hotplug bli savnet når HD-lydkontrolleren er i driftstid. Spesielt det siste punktet er et stort problem på grunn av den nylige endringen som er relevant med vga_switcheroo som tvangsmessig muliggjør kjøretid PM for AMD HDMI-kontrollere.

Disse problemene løses ved å introdusere lydkomponenten; hotplug-varslingen gjøres ved en direkte tilbakeringing av funksjonen, som er mer nøyaktig og pålitelig, og den kan behandles uten den faktiske maskinvaretilgangen, dvs. ingen PM-utløser er nødvendig, og HD-lyden får hendelsen selv om den er i kjøretid utsette. Det samme for ELD-spørring, da det leses direkte fra bufrede ELD-byte som er lagret i DRM-driveren, og dermed kan hele maskinvaretilgangen hoppes over.



Så her er det: denne oppdateringen implementerer lydkomponentbinding med AMD / ATI DRM-driver. Den største forskjellen fra i915-implementeringen er at denne bindingen er helt valgfri og at den kan aktiveres asynkront på farten. Det vil si at sjåføren bytter fra uønsket hendelse fra HD-lyd til varsling om tilbakeringing en gang når DRM-komponenten blir bundet. Tilsvarende, når DRM-driveren blir lastet tilbake, returnerer HDMI-hendelsen også til eldre modus.

Dessuten er en annen forskjell fra i915 at AMD HDMI registrerer komponenten i codec-driveren, mens i915 HDMI-codec antar at komponentbinding allerede var gjort. Derfor avregistrerer AMD-kode også komponentbinding ved codec-utgangen. ”