[Linux Audio Driver] Android7 外部PA Speaker代码结构

本文详细解析了MSM8953平台上的音频驱动实现,重点介绍了enable_spk_ext_pa函数如何控制外部功率放大器(GPIO),以及msm_audrx_init函数在音频初始化过程中的作用。

0. 背景

平台:MSM8953
kernel version: msm-3.18。

1. enable_spk_ext_pa

代码路径:LA.UM.5.6\kernel\msm-3.18\sound\soc\msm\msm8952.c

然后我们在SI里面检索enable,然后用F4跳转几下,就找到这个函数了。

static int enable_spk_ext_pa(struct snd_soc_codec *codec, int enable)
{
   
   
	struct snd_soc_card *card = codec->component.card;
	struct msm8916_asoc_mach_data *pdata = snd_soc_card_get_drvdata(card);

	if (!gpio_is_valid(pdata->spk_ext_pa_gpio)) {
   
   
		pr_err("%s: Invalid gpio: %d\n", __func__, pdata->spk_ext_pa_gpio);
		return false;
	}

	if(enable){
   
   
		AW87XX_MODE4(pdata->spk_ext_pa_gpio);
		pr_err("@@@@@@@@ AW87XX_MODE2 @@@@@@@@@@@\n");
	} else {
   
   
		AW87XX_SHTDOWN(pdata->spk_ext_pa_gpio);
		pr_err("@@@@@@@@ AW87XX_SHTDOWN @@@@@@@@@\n");
	}

	return 0;
}

这里大概就是说,enable为true那么外部PA就拉高,反之就拉低。

在这里插入图片描述
(可能引起困惑的两个宏定义如上,就是用来拉高、拉低GPIO的)

2. msm_audrx_init

接下来看谁调用了这个函数enable_spk_ext_pa:

~/android7/LA.UM.5.6$ grep -nr 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值