SOC_SINGLE(xname, reg, shift, max, invert) 参数测试

以前在使用这个接口时遇到的这5个参数中前面4个靠字面含义可知,第5个invert就有点含糊了,它指的是谁的invert,当时没有深究,今天终于找到到了它的作用。
我在使用一颗codec时有个mix的开关需要使用SOC_SINGLE()这个宏来描述一下,看datasheet上bit15=0为power off,bit15=1为poweron。于是我还按照原来的用法把invert设置为了0,结果在使用amixer操作这个mix时,得到的回显是这样的:

[root@hello ~]#amixer cget numid=14
numid=14,iface=MIXER,name='Analog DACR1 Power Control'
  ; type=BOOLEAN,access=rw------,values=1
  : values=on
[root@hello ~]

从回显上看这个mix应该是处于power on状态的,但实际上这个通路是关闭的,于是手动设置了一下:

[root@hello ~]#amixer cset numid=14 1
numid=14,iface=MIXER,name='Analog DACR1 Power Control'
  ; type=BOOLEAN,access=rw------,values=1
  : values=off
[root@hello ~]

即将对应寄存器的bit15设置为1,则回显显示是poweroff状态,但是实际的codec通路却是打开了,因为有输出波形了。所以看到这里应该也能联想到SOC_SINGLE()中的invert的作用了。于是果断把它设置为1,之后再次测试,则回显的提示和实际的硬件状态才吻合了。现在也能想通了,你想那么多的codec厂家,每个厂家都有自己的寄存器值含义,并不一定大家都认为1是poweron状态,0是poweroff状态,所以为了兼容所有厂家,boom,invert出现了。
本来这不值得记录的,但是呢,我今天来公司加班了,总得有点成果不是。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值