RK系列开发板音频驱动适配指南(一)
RK系列开发板音频驱动适配指南(二)
RK系列开发板音频驱动适配指南(三)
RK系列开发板音频驱动适配指南(四)
背景:
经过DAI、DMA、Codec文章对RK系列开发板音频驱动适配指南已经阐述了,本次主要介绍音频驱动适配中的HCS适配。
RK系列开发板 HCS适配:
配置HCS的主要作用是完成各设备节点、服务的参数与私有数据配置,一般在设备驱动注册与初始化时加载到系统中,在音频处理场景中的各阶段使用。HDF框架提供了2组配置文件 ,分别是公用参数配置文件和设备私有数据配置的,公有参数须按HCS规范配置,私有数据配置既遵守HCS规范,开发者还可自定义配置项,并提供配置解析方法即可。
公有参数配置
- 配置文件路径:
vendor\xxxx\RK系列开发板\hdf
- DAI模块:
device_dai0 :: device {device0 :: deviceNode \{ policy =1;priority =50;preload =0;permission =0666;moduleName ="DAI\_RK系列开发板";serviceName ="dai\_service";deviceMatchAttr ="hdf\_dai\_driver";\} }
device_dma:: device {device0 :: deviceNode \{policy=1;priority=50;preload=0;permission=0666;moduleName="DMA\_RK系列开发板"; // 模块名,与g\_platformDriverEntry中的模块名一致serviceName="dma\_service\_0";deviceMatchAttr="hdf\_dma\_driver";\}}
device_codec_ex:: device {device0 :: deviceNode \{policy=1;priority=50;preload=0;permission=0666;moduleName="CODEC\_ES8316"; // 模块名,与g\_es8388DriverEntry中的模块名一致serviceName="codec\_service\_1";deviceMatchAttr="hdf\_codec\_driver\_ex";\}}
私有参数配置
- 配置文件路径:
vendor\xxxx\RK系列开发板\hdf_config\khdf\audio
- audio_config.hcs:audio声卡配置信息,配置选择运行时的codec、dai、dma、dsp具体芯片:
__controller_0x120c1000 :: card_controller __{ match_attr ="hdf_audio_driver_0"; //私有配置关键字,通过此与 device_info.hcs中的各个模块的私有属性进行匹配 serviceName ="hdf_audio_codec_dev0"; //此声卡对外提供的服务名称 codecName ="codec_service_0"; //此声卡使用的codec服务名称 platformName ="dma_service_0"; //此声卡使用的dma服务名称 cpuDaiName ="dai_service"; //此声卡使用的cpu dai服务名称 codecDaiName ="codec_dai"; //此声卡使用的codec dai服务名称 dspName ="dsp_service_0"; //此声卡使用的dsp服务名称 dspDaiName ="dsp_dai"; //此声卡使用的dsp dai服务名称 } __controller_0x120c1001 :: card_controller { __ match_attr ="hdf_audio_driver_1"; serviceName ="hdf_audio_smartpa_dev0"; accessoryName ="codec_service_1"; platformName ="dma_service_0"; cpuDaiName ="dai_service"; accessoryDaiName ="accessory_dai"; dspName ="dsp_service_0"; dspDaiName ="dsp_dai"; }
- dai_config.hcs:dai的私有配置信息:
__controller_0x120c1020 :: dai_controller { __ match_attr ="hdf_dai_driver";serviceName ="dai_service";idInfo { chipName ="RK系列开发板"; chipIdRegister =0xff880000; chipIdSize =0x1000; } regConfig { ctrlParamsSeqConfig = \[0xffffff,0xffffff,0,0,0x0,0x2,0x3,0,0,0xffffff,0xffffff,0,0,0x0,0x2,0x3,0,0\]; controlsConfig = \[6,4,0,7,4,0\]; daiStartupSeqConfig = \[0x0000,0x0000,0,0,0,0xF,0xF,0,0xf,0x0004,0x0004,0,0,0,0xF,0xF,0,0xf,0x0008,0x0008,0,0,0,0xFFFFF,0xFFFFF,0,0x00071f1f,0x00100x0010,16,16,0,0xFFFFFFFF,0xFFFFFFFF,0,0x1f0100 \]; daiParamsSeqConfig = \[0x0008,0x0008,16,16,0x0,0xFF,0xFF,0,0x0,0x0008,0x0008,0,0,0x1E,0xFF,0xFF,0,0x0,0x0000,0x0000,0,0,0x0,0xF,0xF,0,0x0,0x0000,0x0000,15,15,0x0,0x3,0x3,0,0x0,0x0008,0x0008,16,16,0x0,0xFF,0xFF,0,0x0,0x0008,0x0008,8,8,0x1E,0xFF,0xFF,0,0x0,0x0004,0x0004,0,0,0x0,0xF,0xF,0,0x0,0x0004,0x0004,15,15,0x0,0x3,0x3,0,0x0\]; \} }
总结:
加上前三篇RK系列开发板音频驱动的适配介绍,以及本次介绍HCS的适配步骤以及核心代码,音频驱动的适配,基本就完成了。接下来一篇会讲解Audio模块的驱动编译。