(부족) GNU/Linux에서 ZED 보드 사운드 카드 지원

(부족) GNU/Linux에서 ZED 보드 사운드 카드 지원

저는 사운드 카드가 Avnet ZED 보드와 유사한 맞춤형 하드웨어에서 작동하도록 설득하려고 합니다.

원본 드라이버 예제는 zed_adau1761이라는 크게 수정된(일반 패치 ~180,000라인) 3.14.12 커널을 기반으로 합니다. "사운드 카드"는 하나의 드라이버 내에서 처리되지 않으며 세 가지 논리적 부분으로 나뉩니다.

  1. 코덱 드라이버 adau1761-i2c.c,
  2. 스트리밍 데이터 처리를 담당하는 드라이버 axi-i2s.c,
  3. 위의 두 가지를 함께 작동하는 드라이버로 설정합니다(zed_adau1761.c).

처음 두 드라이버와 달리 세 번째 드라이버는 주류화되지 않았으며 커널의 Analog Devices Github 포크 중 현재는 없어진 부분의 포크에만 존재합니다.

에브넷 홈페이지에 따르면 해당 보드는 아직 판매중이라 일부 해커들이 이를 사용하고 있을 가능성이 있다.

내 문제는 오늘날의 도구가 약 7년 전처럼 이전 커널에서 작동하지 않는다는 것입니다. 이전 커널은 다른 문제로 가득 차 있지만 이전 드라이버는 새 커널에 포함되지 않으며 둘 다 작동하지 않습니다. 최신 커널.

3. 드라이버가 다른 이름으로 메인라인에 있습니까? 아니면 사운드 카드를 작동시키려는 잘못된 방법을 시도하고 있는 걸까요?

이 문제에 대해 더 많은 통찰력을 갖고 있는 모든 분들께 감사드립니다!

답변1

SoC 드라이버에 대한 태도는 수년에 걸쳐 다소 바뀌었습니다.

OF(개방형 펌웨어 - 즉, 장치 트리의 구성)에 대한 지원이 사운드 카드 드라이버 영역에서 재설계, 개선 및 확장되었습니다.

여러 머신 드라이버(내 질문의 "접착제" 드라이버 - 3.)를 작성하는 것보다 범용 솔루션을 사용하는 것이 더 좋습니다. 이 경우에는 "간단한 오디오 카드" 시스템 드라이버와 장치 트리의 적절한 구성입니다.

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가 사용되었습니다.

관련 정보