天天看點

如何解決在上層按鍵操作alsa code後無法調節驅動音量的原因

http://blog.csdn.net/morixinguan/article/details/56514356

之前寫過一篇文章,是對alc5623.c codec部分進行了大緻架構的分析,現在要解決一些實際問題,關于上層的代碼我就不公布了,隻公布在驅動的代碼:

在手冊中,我們看到一個這樣的寄存器設定。

如何解決在上層按鍵操作alsa code後無法調節驅動音量的原因

先來看看說明文檔,主要是做主音量的輸出。

下面就是詳細的如何配置0x0C的寄存器

如何解決在上層按鍵操作alsa code後無法調節驅動音量的原因

我遇到的問題是,到了上層應用,無法通過按鍵調節主音量,并會提示:

can't find simple control"Master",0

如何解決?

在kcontrol中添加一個Master,用它來做主音量控制。

SOC_DOUBLE_TLV在這個宏中已經配置了info和put函數,意思就是設定音量還有擷取音量。

//set函數設定音量

//put函數擷取音量

那麼設定完後編譯通過後下到闆子裡就可以正常驅動了。

還有一個問題,當耳機插入時,調節音量,耳機在放,喇叭也在放,怎麼解決?

在耳機插入時:

隻要将喇叭關掉,将耳機開啟就可以了。

如何解決在上層按鍵操作alsa code後無法調節驅動音量的原因
如何解決在上層按鍵操作alsa code後無法調節驅動音量的原因

下面的這兩步操作最為關鍵,當耳機插入時,關閉喇叭,将音源更新到耳機裡。

繼續閱讀