ALSA로 구현된 wm8993 드라이버를 보던 중 궁금한 사항이 있어서 문의드립니다.
아래 질문과 관련된 wm8993.c 드라이버 코드입니다.
static const struct snd_kcontrol_new left_speaker_mixer[] = {
SOC_DAPM_SINGLE("Input Switch", WM8993_SPEAKER_MIXER, 7, 1, 0),
SOC_DAPM_SINGLE("IN1LP Switch", WM8993_SPEAKER_MIXER, 5, 1, 0),
SOC_DAPM_SINGLE("Output Switch", WM8993_SPEAKER_MIXER, 3, 1, 0),
SOC_DAPM_SINGLE("
DAC Switch", WM8993_SPEAKER_MIXER, 6, 1, 0),
};
SND_SOC_DAPM_MIXER("SPKL",
WM8993_POWER_MANAGEMENT_3, 8, 0,
left_speaker_mixer, ARRAY_SIZE(left_speaker_mixer)),
alsa-utility 안에 있는 amixer를 이용해서 "DAC Switch"를 mute/un-mute 제어가 가능한데,
궁금한 점은 "DAC Switch"가 mute/unmute 하기전에 WM8993_POWER_MANAGEMENT_3 레지스터
의 8번 비트 SPKLVOL_ENA가 enable이 되는 동작이 될꺼라고 생각했는데,
실제 "DAC Switch"를 mute/unmute를 하면
"DAC Switch"에 관게된 WM8993_SPEAKER_MIXER의 6번 비트만 변하고,
WM8993_ POWER_MANAGEMENT_3 레지스터의 8번 비트는 변하지 않습니다.
이게 정상인건지 아니면 다른 방법이 있는지 답변 주시면 감사하겠습니다.