Linux

(缺乏)GNU/Linux 中的 ZED 板音效卡支持

  • May 7, 2021

我試圖說服音效卡在類似於 Avnet ZED 板的自定義硬體上工作。

最初的驅動程序範例基於一個經過大量修改的 3.14.12 核心(原版更新檔大約有 180k 行),名為 zed_adau1761。“音效卡”不是在一個驅動程序中處理的,它分為三個邏輯部分:

  1. 編解碼器驅動程序 adau1761-i2c.c,
  2. 負責處理流數據 axi-i2s.c 的驅動程序,
  3. 將上述兩者設置為一起工作的驅動程序zed_adau1761.c。

與前兩個驅動程序不同,第三個驅動程序可能從未主線,並且僅存在於 ADI 公司 Github 核心分支的一個分支中,該分支現在可能已不存在。

該開發板仍然根據 Avnet 網頁出售,因此可能有一些黑客在使用它。

我的問題是今天的工具無法像大約 7 年前那樣使用舊核心,同時舊核心充滿了其他問題,但舊驅動程序不包含在較新的核心中並且兩者都不適用於較新的核心。

  1. 驅動程序是否以不同的名稱進行主線?還是我嘗試了錯誤的方法來使音效卡工作?

感謝任何對問題有更好洞察力的人!

多年來,對 SoC 驅動程序的態度在某種程度上發生了變化。

在音效卡驅動程序領域對 OF(開放韌體 - 即設備樹中的配置)的支持已經過重新設計、改進和擴展。

最好使用通用解決方案,而不是編寫許多機器驅動程序(“膠水”驅動程序 - 3. 在我的問題中)。在這種情況下,它是一個“simple-audio-card”機器驅動程序和設備樹中的適當配置:

zed_sound {
       compatible = "simple-audio-card";
       simple-audio-card,format = "i2s";
       simple-audio-card,name = "ZED ADAU1761";
       simple-audio-card,dai-link@0 {
               format = "i2s";
               cpu {
                       sound-dai = <&axi_i2s_0>;
               };
               codec {
                       sound-dai = <&adau1761>;
               };
       };
};

此解決方案適用於最新核心。經長期穩定測試 - 測試時為 5.10.x。

引用自:https://unix.stackexchange.com/questions/640529