- dts的解释
- 通路的调试
- 参考高通的bring up的方法
MIC_IN1_M
MIC_IN1_P
MIC_IN2_M 耳机的GND
MIC_IN2_P 耳机的MIC
mic分为硅MIC和柱体MIC
MIC_BIAS1 主mic
MIC_BIAS2 耳机MIC
偏置就是为放大电路提供适合的静态工作点。
由于mic产生的模拟电压是很小的,所以codec需要将信号放大,
由三极管组成的放大电路能够放大一定范围的交流信号,但前提是需要设置放大电路的静态工作点,即为保证放大电路正常工作而为放大电路提供偏置电压。这样,才能保证放大电路的正常工作。
CDC_HPH_L
CDC_HPH_R 左右声音信号输出
msm-audio.dtsi
soc 是8952平台 也就是machine
msm8952-audio-codec
codec驱动:负责音频解码。这部分代码完全无平台无关,设备原厂提供,我们只需要把它加进内核编译就好了。
platform驱动:与处理器芯片相关,这部分代码在该芯片商用之前方案产商提供的demo板已完全确定了,也就是说我们只需要使用就可以了。
machine驱动:好了,到了最关键的地方了,machine驱动是耦合platform和codec驱动,同时与上层交互的代码。由于上层是标准的alsa架构,所以下层接口肯定要做了统一,所以我很负责的告诉你,这部分由machine本身的platform驱动和platform设备组成(请跟asoc的platform驱动区别),platform驱动内核帮我们完成了,所以你无须过多的关心你的驱动怎么跟上层alsa怎么衍接的问题,我们只需要注册一个machine的platform设备以及完成platform和codec耦合就ok
static const struct of_device_id msm8952_asoc_machine_of_match[] = {
{ .compatible = "qcom,msm8952-audio-codec", },
{},
};
static struct platform_driver msm8952_asoc_machine_driver = {
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
.pm = &snd_soc_pm_ops,
.of_match_table = msm8952_asoc_machine_of_match,
},
.probe = msm8952_asoc_machine_probe,
.remove = msm8952_asoc_machine_remove,
};
static int __init msm8952_machine_init(void)
{
return platform_driver_register(&msm8952_asoc_machine_driver);
}
late_initcall(msm8952_machine_init);
static void __exit msm8952_machine_exit(void)
{
return platform_driver_unregister(&msm8952_asoc_machine_driver);
}
module_exit(msm8952_machine_exit);
MODULE_DESCRIPTION("ALSA SoC msm");
MODULE_LICENSE("GPL v2");
MODULE_ALIAS("platform:" DRV_NAME);
MODULE_DEVICE_TABLE(of, msm8952_asoc_machine_of_match);