Hello Everyone:
目前使用的环境是安卓9,
仿照wm8524,在/android_build/vendor/nxp-opensource/imx/alsa目录下添加了
config_aw8838.h,然后在tinyplay_hal.c添加了
#include "config_aw8838.h"
#define SUPPORT_CARD_NUM 20
/*"null_card" must be in the end of this array*/
struct audio_card *audio_card_list[SUPPORT_CARD_NUM] = {
&wm8958_card,
&wm8962_card,
&hdmi_card,
/* &usbaudio_card, */
&spdif_card,
&cs42888_card,
&wm8960_card,
&sii902x_card,
&rpmsg_card,
&wm8524_card,
&cdnhdmi_card,
&xtor_card,
&ak4458_card,
&ak5558_card,
&ak4497_card,
&sgtl5000_card,
&xtor_pico_card,
&rt5645_card,
&micfil_card,
&aw8838_card,
&null_card,
};
发现这样添加并没有作用
目前的codec芯片有三个Kcontrol
evk_8mm:/ # tinymix
Mixer name: 'aw8838-audio'
Number of controls: 3
ctl type num name value
0 ENUM 1 aw8838_speaker_switch On
1 ENUM 1 aw8838_receiver_switch Off
2 INT 1 aw8838_rx_volume 0
是否还要修改tinyplay_hal.c别的地方来调用Kcontrol,还是要修改别的文件,如果有大佬做过类似的
请教一下移植的方法?应该怎么正确的将带Kcontrol的codec芯片跟Android的hal层联系在一起。
Best Wishes
CheLL
那你的driver name和name,都填:aw8838-audio 就行。
Hi~
多谢解答,我看了下wm8524,tinymix下没有Kcontrol的列表,看来用的aw8838还是和wm8524有区别的,
关于这点区别,
是否需要tinyplay_hal.c添加aw8838相关的Kcontrol的代码,如果需要的话,添加的示例及函数说明能大概说下吗?
因为现在看了下tinyplay_hal.c的代码有点复杂,驱动应该是被动方,被控制Kcontrol的。这部分逻辑有点复杂。
拜托
Best Wishes
CheLL
Hi CheLL,
你可以看到在tinyalsa_hal.c中的特点,这里不会直接起控制codec内部的各个路径开关(这些是driver负责的,而不是hal 层)。HAL层关注的就是,你声卡的输入设备和输出设备是什么,你看着2个函数及其函数体:
static void select_output_device(struct imx_audio_device *adev)
static void select_input_device(struct imx_audio_device *adev)
根据你的tinymix得到的结果,就是一个speaker输出,这和wm8524是一样的。所以,除了上面你修改的部分,tinyalsa_hal.c里不用再修改其他地方了。
没有找到aw8838的资料,但是看tinymix结果,应该接口上和wm8524基本一样。所以,config_aw8838.h的内容也差不多,至于里面的name和driver name,你可以这样查看一下:
# cat /proc/asound/cards
Hope above information is helpful to you.
Have a nice day!
B.R,
Weidong
Hi weidong_sun:
非常感谢您的回答,cat的结果如下。
evk_8mm:/ # cat /proc/asound/cards
0 [aw8838audio ]: aw8838-audio - aw8838-audio
aw8838-audio
evk_8mm:/ #
需要怎么修改请教您一下,name和driver name是什么?
Best Wishes
CheLL