ปัญหาเสียง HD ในไดรเวอร์ AMDGPU ได้รับแพทช์ DRM สามารถจัดการ Hot-Plugging ได้แล้ว

ลินุกซ์ - ยูนิกซ์ / ปัญหาเสียง HD ในไดรเวอร์ AMDGPU ได้รับแพทช์ DRM สามารถจัดการ Hot-Plugging ได้แล้ว อ่าน 2 นาที

AMD



ในขณะที่ GPU Radeon / AMD ได้รับการสนับสนุน Linux ที่ดีขึ้นด้วย GPU รุ่นใหม่ ๆ แต่การสนับสนุนด้านเสียงก็ถูกละเลยอย่างมากจนถึงตอนนี้ เพิ่งมีการผลักดันแพตช์โดย Takashi Iwai ของ SUSE ซึ่งดูแลระบบย่อยเสียงในเคอร์เนลหลักของ Linux แพทช์ แก้ไขปัญหาโดยรวมบางประการเกี่ยวกับการรองรับเสียงของ AMDGPU

ปัญหาเกี่ยวกับเสียง AMDGPU ในปัจจุบันวนเวียนอยู่กับ GPU บางตัวเพื่อรองรับเสียง HDMI / DP ซึ่งล่าช้าเนื่องจากรหัสแสดงผล AMDGPU (DC / DAL) ซึ่งจำเป็นต้องได้รับการแก้ไขลงในเคอร์เนลรูปแบบเสียงบางส่วนที่ไม่ได้รับการสนับสนุนและข้อบกพร่องโดยรวมในบางส่วนของ สแต็คไดรเวอร์ อย่างไรก็ตาม Takashi Iwai ของ SUSE ได้เปิดตัวชุดแพทช์สำหรับไดรเวอร์ Radeon / AMDGPU DRM



สิ่งที่แพตช์เหล่านี้ทำคือให้การสนับสนุนส่วนประกอบเสียง DRM สำหรับไดรเวอร์ Radeon และ AMDGPU Direct Rendering Manager โดยสรุปคือโหมดส่วนประกอบเสียง DRM สำหรับอินเทอร์เฟซ HDMI และ DisplayPort จะช่วยให้ hot-plug และการอ่าน ELD เกิดขึ้น โดยไม่ต้องเข้าถึงฮาร์ดแวร์ . ซึ่งโดยพื้นฐานแล้วหมายความว่าสามารถอนุญาตให้จัดการกับ hot-plug ได้อย่างถูกต้องแม้ว่าระบบจะอยู่ในโหมดหยุดทำงานชั่วคราวก็ตาม อย่างไรก็ตามรหัสพา ธ AMDGPU DC ไม่ได้รวมเข้าด้วยกันอย่างถูกต้องในรูปแบบโปรแกรมแก้ไขปัจจุบัน



โดยพื้นฐานแล้วมีเพียง Radeon และส่วนหนึ่งของ AMDGPU เท่านั้นที่ได้รับการแก้ไขโดยการสนับสนุน DC ยังไม่ได้ รวม.



Takashi อธิบายแพตช์เชิงลึกด้านล่าง:

ไดรเวอร์ตัวแปลงสัญญาณ AMD / ATI HDMI ไม่มีการเชื่อมต่อส่วนประกอบเสียงเช่น i915 แต่จะทำงานได้เฉพาะกับเหตุการณ์ที่ไม่ได้รับการร้องขอเสียง HD แบบดั้งเดิมสำหรับการตรวจจับฮอตปลั๊ก HDMI และหลังจากนั้นการอ่าน ELD นี่เป็นปัญหาในหลาย ๆ ด้าน: ประการแรกจะต้องผ่านการเปลี่ยนเหตุการณ์ฮาร์ดแวร์ (จากการเขียนทะเบียน GPU ทริกเกอร์ตัวควบคุมเสียง HD และสุดท้ายไปสู่การจัดการเหตุการณ์ที่ไม่พึงประสงค์เสียง HD) ซึ่งมักไม่น่าเชื่อถือและอาจพลาด บางโอกาส ประการที่สองการจัดการเหตุการณ์ unsol แต่ละครั้งและการอ่าน ELD จำเป็นต้องมีการเปิด / ปิดเครื่องอย่างชัดเจนเมื่อตัวแปลงสัญญาณอยู่ในการระงับรันไทม์ ประการสุดท้าย แต่ไม่ท้ายสุดซึ่งสำคัญที่สุดอาจพลาดการปลุกแบบ hotplug เมื่อตัวควบคุมเสียง HD อยู่ในการระงับรันไทม์ โดยเฉพาะอย่างยิ่งประเด็นสุดท้ายเป็นปัญหาใหญ่เนื่องจากการเปลี่ยนแปลงล่าสุดที่เกี่ยวข้องกับ vga_switcheroo ที่บังคับให้เปิดใช้งาน runtime PM สำหรับคอนโทรลเลอร์ AMD HDMI

ปัญหาเหล่านี้แก้ไขได้โดยการแนะนำส่วนประกอบเสียง การแจ้งเตือน hotplug ทำได้โดยการเรียกกลับของฟังก์ชันโดยตรงซึ่งมีความแม่นยำและเชื่อถือได้มากกว่าและสามารถประมวลผลได้โดยไม่ต้องเข้าถึงฮาร์ดแวร์จริงกล่าวคือไม่จำเป็นต้องใช้ทริกเกอร์ PM รันไทม์และ HD-audio จะรับเหตุการณ์แม้ว่าจะอยู่ในรันไทม์ ระงับ เช่นเดียวกับแบบสอบถาม ELD เนื่องจากอ่านโดยตรงจากไบต์ ELD แคชที่เก็บไว้ในไดรเวอร์ DRM ดังนั้นจึงสามารถข้ามการเข้าถึงฮาร์ดแวร์ทั้งหมดได้



ดังนั้นนี่คือ: แพทช์นี้ใช้ส่วนประกอบเสียงที่เชื่อมโยงกับไดรเวอร์ AMD / ATI DRM ข้อแตกต่างที่ใหญ่ที่สุดจากการใช้งาน i915 คือการผูกนี้เป็นทางเลือกโดยสมบูรณ์และสามารถเปิดใช้งานแบบอะซิงโครนัสได้ทันที นั่นคือไดรเวอร์จะเปลี่ยนจากเหตุการณ์ที่ไม่พึงประสงค์ของเสียง HD เป็นการแจ้งให้โทรกลับหนึ่งครั้งเมื่อคอมโพเนนต์ DRM ถูกผูกไว้ ในทำนองเดียวกันเมื่อไดรเวอร์ DRM ถูกยกเลิกการโหลดการจัดการเหตุการณ์ HDMI จะกลับสู่โหมดเดิมด้วย

นอกจากนี้ความแตกต่างอีกประการหนึ่งจาก i915 คือ AMD HDMI จะลงทะเบียนส่วนประกอบในไดรเวอร์ตัวแปลงสัญญาณในขณะที่ตัวแปลงสัญญาณ HDMI i915 ถือว่าการเชื่อมต่อส่วนประกอบเสร็จสิ้นแล้ว ดังนั้นโค้ด AMD จึงยกเลิกการลงทะเบียนการเชื่อมต่อคอมโพเนนต์ที่ทางออกของตัวแปลงสัญญาณด้วย”