(42条消息) MTK6797 Accdet驱动分析总结_kerson的专栏-CSDN博客
(42条消息) 3. MTK 底层耳机中断上报流程_zhigouliu的博客-CSDN博客
这里分享一下本人再耳机调试的心的,理论有不懂的可以参考上面博客。
耳机硬件配置采用Accdet+EINT 方式进行触发,使用TypeC接口,硬件原理如下:
1. 软件中需要对以下两个宏进行配置;
CONFIG_ACCDET_EINT_IRQ = n
CONFIG_ACCDET_EINT = y
2.配置accdet触发中断;
查看原理图,找一个空闲的中断作为accdet中断触发
gpio设置中断使能,设置上拉模式,引脚配方向为输入,默认为低电平;
eint开启消抖,时间256毫秒,默认极性为低
//xx.dws配置文件
<gpio2>
<eint_mode>true</eint_mode>//中断模式
<def_mode>0</def_mode>
<inpull_en>true</inpull_en>//上下拉电阻模式使能
<inpull_selhigh>true</inpull_selhigh>//上拉还是下拉
<def_dir>IN</def_dir>//管脚方向
<out_high>false</out_high>//默认极性
<varName0>GPIO_EARPHONE_DETECT_PIN</varName0>
<smt>false</smt>
<ies>true</ies>
</gpio2>
<eint2>
<varName>ACCDET</varName>
<debounce_time>256</debounce_time>//消抖时间
<polarity>Low</polarity>
<sensitive_level>Level</sensitive_level>
<debounce_en>Enable</debounce_en>//消抖使能
</eint2>
或者使用Drvgern Tool工具进行gpio配置:
3.配置麦克gpio管脚-MICGND_SEL
<gpio7>
<eint_mode>false</eint_mode>
<def_mode>2</def_mode>
<inpull_en>false</inpull_en>
<inpull_selhigh>false</inpull_selhigh>
<def_dir>OUT</def_dir>
<out_high>false</out_high>
<smt>false</smt>
<ies>true</ies>
</gpio7>
4.配置usb管脚-USBLR_SEL
<gpio22>
<eint_mode>false</eint_mode>
<def_mode>0</def_mode>
<inpull_en>false</inpull_en>
<inpull_selhigh>false</inpull_selhigh>
<def_dir>OUT</def_dir>
<out_high>false</out_high>
<smt>false</smt>
<ies>true</ies>
</gpio22>
5.设备树中配置引脚模式
&pio {
accdet_pins_default: accdetdefault {
};
accdet_pins_eint_as_int: accdeteint@0 {
pins_cmd_dat {
pinmux = <PINMUX_GPIO2__FUNC_GPIO2>;//accdet中断引脚
slew-rate = <0>;
bias-disable;
};
};
/*accdet模式配置*/
accdet_audio_mode: accdetaudio@0 {
pins_cmd_dat {
pinmux = <PINMUX_GPIO22__FUNC_GPIO22>;//usb引脚audio模式
slew-rate = <1>;
output-high;
};
};
accdet_usb_mode: accdetusb@0 {
pins_cmd_dat {
pinmux = <PINMUX_GPIO22__FUNC_GPIO22>;//usb引脚usb模式
slew-rate = <1>;
output-low;
};
};
/*耳机正反面插接配置,配置出错可能倒置耳机正反插效果差异*/
accdet_micswitch_high: micswitchhigh@0 {
pins_cmd_dat {
pinmux = <PINMUX_GPIO7__FUNC_GPIO7>;//麦克TypeC正面接口
slew-rate = <1>;
output-high;
};
};
accdet_micswitch_low: micswitchlow@0 {
pins_cmd_dat {
pinmux = <PINMUX_GPIO7__FUNC_GPIO7>;麦克TypeC反面接口
slew-rate = <1>;
output-low;
};
};
};
/* accdet end */
6.其他相关引脚按照硬件原理图进行配置