OpenHarmony官方音频驱动介绍文档路径:
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/driver/driver-peripherals-audio-des.md
OpenHarmony 音频驱动框架ADM(Audio Driver Model)音频驱动框架模型,,向上服务于多媒体音频子系统,便于系统开发者能够更便捷的根据场景来开发应用。向下服务于具体的设备厂商,对于Codec和DSP设备厂商来说,可根据ADM模块提供的向下统一接口适配各自的驱动代码,就可以实现快速开发和适配OpenHarmony系统。
ADM驱动框架向下,提供了codec驱动,DMA驱动,IIS驱动的统一调用接口方便驱动的适配。
音频驱动分为三大模块:codec模块, soc模块, dai模块;
codec模块,负责数模转换。
SOC模块,实现dma的驱动,负责数据搬运。
dai模块,实现IIS驱动,负责数据传输。
codec驱动入口:
/* HdfDriverEntry definitions */
struct HdfDriverEntry g_codecDriverEntry = {
.moduleVersion = 1,
.moduleName = "CODEC_HI3516",
.Bind = CodecDriverBind,
.Init = CodecDriverInit,
.Release = CodecDriverRelease,
};
HDF_INIT(g_codecDriverEntry);
DMA驱动入口:
/* HdfDriverEntry definitions */
struct HdfDriverEntry g_platformDriverEntry = {
.moduleVersion = 1,
.moduleName = "DMA_HI3516",
.Bind = Hi3516DmaDriverBind,
.Init = Hi3516DmaDriverInit,
.Release = Hi3516DmaDriverRelease,
};
HDF_INIT(g_platformDriverEntry);
IIS驱动入口:
/* HdfDriverEntry definitions */
struct HdfDriverEntry g_daiDriverEntry = {
.moduleVersion = 1,
.moduleName = "DAI_HI3516",
.Bind = DaiDriverBind,
.Init = DaiDriverInit,
.Release = DaiDriverRelease,
};
HDF_INIT(g_daiDriverEntry);
系统启动后着三个模块分别调用各自的注册接口将自己注册到声卡中:
codec模块调用:AudioRegisterCodec注册接口。
dam 模块调用:AudioSocRegisterPlatform注册接口。
dai模块调用:AudioSocRegisterDai注册接口。
后续不断更新。。。