Firefly开源社区

标题: 请教: 如何修改音频输入通道 [打印本页]

作者: djj1977    时间: 2015-10-27 15:15
标题: 请教: 如何修改音频输入通道
请教在RK3128上, 我想用line in 来录音, 结果全部被板载mic 抢去, 系统没有自动切换到line in。

请问Kernel需要修改什么来支持自动切换, 或者直接只支持line in 输入也可以。

还望各位大神不吝赐教
作者: gqjjqg    时间: 2015-10-27 17:00
帮顶
作者: zhansb    时间: 2015-10-27 17:51
line in有个检测脚,检测到line in插入时会切过去
可以看看:sound/soc/codecs/rk312x_codec.c里面的aux_det_isr中断接口

作者: gqjjqg    时间: 2015-10-28 09:06
zhansb 发表于 2015-10-27 17:51
line in有个检测脚,检测到line in插入时会切过去
可以看看:sound/soc/codecs/rk312x_codec.c里面的aux_d ...

这个代码我也看到了。我这边的试验结果是这样的:插入麦克 line in,说话声音直接播放到了line out。
系统log显示,的确是linein on了。 然后调节了一下音量,系统log显示,line in off再 line in on。但是说话声音不再从line out 输出。 这目测是个bug,有修复方案吗?
这个是问题一。

接着问题一,然后打开系统的录音机,开始录音,对着麦克说话,录音没有记录,对着板载mic说话,系统记录了。 也就是说板载mic处于打开状态,但是line in 没有打开,虽然系统log显示:line in on了。

另外一种情况就是,麦不插入linein 打开系统录音机,开始录音之后插入,再调节音量,这时,录音又从line in 进入了。板载不生效了。

另外,对于音频播放,最新的固件貌似也有问题。有时候调节音量,没有系统的 按键音。

请帮忙修复一下这个系统问题,谢谢。

作者: gqjjqg    时间: 2015-10-28 09:32
static struct rk312x_reg_val_typ rk312x_codec_linein_bypass[] = {
{0x18, 0x32},
{0xa0, 0x40|0x08},
{0xa0, 0x62|0x08},
{0xa4, 0x88},
{0xa4, 0xcc},
{0xa4, 0xee},
{0xa8, 0x44},
{0xb0, 0x92},
{0xb0, 0xdb},
{0xac, 0x66}, /*bypass*/
{0xa8, 0x55},
{0xa8, 0x77},
{0xa4, 0xff},
{0xb0, 0xff},
{0xa0, 0x73|0x08},
{0xb4, OUT_VOLUME},
{0xb8, OUT_VOLUME},

{0x88, 0x80},
{0x88, 0xc0},
{0x88, 0xc7},
{0x9c, 0x88},
{0x8c, 0x04},
{0x90, 0x66},
{0x9c, 0xcc},
{0x9c, 0xee},
{0x8c, 0x07},
{0x90, 0xbb},// line in
{0x94, 0x20 | CAP_VOL},
{0x98, CAP_VOL},
{0x88, 0xf7},
{0x28, 0x3c},
/* {0x124, 0x78}, /
/ {0x164, 0x78}, */
{0x10c, 0x20 | CAP_VOL},
{0x14c, 0x20 | CAP_VOL},

这组数据,貌似是写soc的,插入中断时,直接就切到了line out。
能否告知,寄存器的作用和这组数据的写法,我要控制line in 插入时不到line out。并且关闭板载mic
作者: zhansb    时间: 2015-10-28 15:40
您提到的问题我们接下来会跟进
作者: gqjjqg    时间: 2015-10-28 16:24
zhansb 发表于 2015-10-28 15:40
您提到的问题我们接下来会跟进

已经开始自立更生,寄存器文档已经找到,解决了linein直接到lineout的问题.
现在还有一个linein输入无法录音的问题.
坐等你们跟进.

作者: gqjjqg    时间: 2015-10-28 17:55
已经搞定,强行修改的,供参考。
static struct rk312x_reg_val_typ capture_power_up_list[] = {
        {0x88, 0x80},
        {0x88, 0xc0},
        {0x88, 0xc7},
        {0x9c, 0x88},
        {0x8c, 0x04},
        {0x90, 0xAA},//{0x90, 0x66},
        {0x9c, 0xcc},
        {0x9c, 0xee},
        {0x8c, 0x07},
        {0x90, 0xBB},//{0x90, 0x77},
        {0x94, 0x20 | CAP_VOL},
        {0x98, CAP_VOL},
        {0x88, 0xf7},
        {0x28, 0x3c},
        /* {0x124, 0x78}, */
        /* {0x164, 0x78}, */
        {0x10c, 0x20 | CAP_VOL},
        {0x14c, 0x20 | CAP_VOL},
        /*close left channel*/
        {0x90, 0x0B},//{0x90, 0x07},
        {0x88, 0xd7},
        {0x8c, 0x07},
        {0x9c, 0x0e},

};
作者: qingxia0702    时间: 2015-12-11 15:26
楼主,你好,请问你的问题解决了吗?我这边也在调MIC,碰到一些问题,能请教些问题吗?我Q:782506350.   
感激不尽。
作者: fish306    时间: 2016-6-20 16:05
  楼主,你这样改了以后,貌似mic就不能录音了
作者: lzwwiner    时间: 2016-9-29 11:21
gqjjqg 发表于 2015-10-28 17:55
已经搞定,强行修改的,供参考。
static struct rk312x_reg_val_typ capture_power_up_list[] = {
        {0x88 ...

你好!
你这个寄存器的修改里面涉及的0x28, 0x10c, 0x14c这几个寄存器,是如何配置的,芯片手册里面没有关于这几个寄存器的说明资料。请问你是如何配置的,是否有这几个寄存器的说明资料。




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1