2017-09-25 2 views
0

amlogic 장치에서 사운드 시스템을 디버깅하려고합니다. amixer 및 alsamixer가 예상대로 작동하지 않으며 amixer가 시스템을 중단시킬 수 있습니다. 내가 고민하는 것은 드라이버가 ALSA 웹 사이트에서 ALSA 드라이버 작성에 설명 된대로 snd_kcontrol 객체를 구성하여 하드웨어 레지스터에 액세스하는 방법을 전달한다는 것입니다. 그러나 amixer cset은 snd_ctl_t 객체의 element_write를 참조하는 control.c의 snd_ctl_elem_write를 호출합니다.alsa 드라이버를 이해하는 데 도움이 필요합니다

정의 된 snd_kcontrol과 모든 snd_ctl_t 객체 사이에 링크가 보이지 않으므로 amixer가 하드웨어에 쓰는 방법을 볼 수 없습니다. 정상적으로 어떻게 이루어 집니까?

+0

해당 링크는'cnd_ctl_add()'에 의해 설정됩니다. –

+0

고맙지 만 afaict snd_ctl_add()는 snd_card 및 snd_kcontrol 구조체 만 사용합니다. snd_ctl_t와는 아무 관련이 없습니다. 내가 두꺼운다면 미안해. – graham

답변

0

사용자 공간에서 제어 장치는 장치 노드의 파일 핸들을 포함하는 snd_ctl_t으로 표시됩니다. element_writesnd_ctl_hw_elem_write()을 가리키며 시스템 호출을 발행합니다.

커널에서 열린 장치 파일은 에 연결된 struct snd_ctl_file으로 표시됩니다.

+0

다시 한번 감사드립니다. 저를 혼란스럽게하는 것은 snd_kcontrols가 많이있을 수 있지만 카드 당 단지 하나의 snd_ctl_t가 있다는 것입니다. 그래서 그들은 정말로 별개의 엔티티이고 레지스터로의 다른 경로입니다. – graham

관련 문제