天天看点

如何解决在上层按键操作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后无法调节驱动音量的原因

下面的这两步操作最为关键,当耳机插入时,关闭喇叭,将音源更新到耳机里。

继续阅读