1、高通msm8996平台的ASOC音频路径分析:
【转载】高通msm8996平台的ASOC音频路径分析(基于androidN及linux3.1x)_qianxuedegushi的博客-CSDN博客
转载: 高通音频架构(三)
转载:Android Qcom Audio入门学习_上电失败的博客-CSDN博客
转载: SM8150 Audio驱动分析_村里小码农的博客-CSDN博客
转载:Q平台Audio集成开发 高通Audio术语缩写_valine江的博客-CSDN博客
转载:qcom 音频相关的dsp driver笔记(基于msm8996平台)_whshiyun的博客-CSDN博客
转载:linux 核间通讯rpmsg架构分析_kunkliu的博客-CSDN博客
2、soundwire接口:
转载:Mipi SoundWire Spec 学习笔记(欢迎交流,持续更新)_soundwire接口_DistentJoker的博客-CSDN博客
3、SLIMbus:
转载:一.音频驱动-音频基础知识_slimbus_期望99的博客-CSDN博客
4、 no_pcm = 1,不会注册pcm设备,代码跟踪:
soc_new_pcm
if (rtd->dai_link->no_pcm)
ret = snd_pcm_new_internal(rtd->card->snd_card, new_name, num,playback,
capture, &pcm);
_snd_pcm_new(card, id, device, playback_count, capture_count,
true, rpcm); //注意:形参internal=true
_snd_pcm_new函数:
static int _snd_pcm_new(struct snd_card *card, const char *id, int device,
int playback_count, int capture_count, bool internal,struct snd_pcm **rpcm)
{
struct snd_pcm *pcm;
int err;
static struct snd_device_ops ops = {
.dev_register = snd_pcm_dev_register,
......
};
pcm = kzalloc(sizeof(*pcm), GFP_KERNEL);
......
pcm->internal = internal; //注意:pcm->internal=true
......
}
snd_pcm_dev_register函数:
static int snd_pcm_dev_register(struct snd_device *device)
{
struct snd_pcm *pcm;
pcm = device->device_data;
if (pcm->internal) //注意:no_pcm=1,pcm->internal=true,返回,不会继续往下注册pcm设备
return 0;
.......
/* register pcm */
snd_register_device(devtype, pcm->card, pcm->device, &snd_pcm_f_ops[cidx],
pcm, &pcm->streams[cidx].dev);
......
}
5、小知识记录:
5.1、device/qcom/trinket/trinket.mk
# Kernel modules install path
KERNEL_MODULES_INSTALL := dlkm
KERNEL_MODULES_OUT := out/target/product/$(PRODUCT_NAME)/$(KERNEL_MODULES_INSTALL)/lib/modules
5.2、srctree: 顶级内核目录
5.3、LPASS:low power audio sub system,低功耗音频子系统,是一块DSP芯片。