- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
怎样解决多次插拔耳机有KEY_PLAYPAUSE事件产生的问题
录入:edatop.com 点击:
[DESCRIPTION]
在拨打电话过程中,拔插耳机如果有KEY_PLAYPAUSE事件会导致MIC静音功能触发。
插拔过程中由于受到耳机插槽结构的影响,正常速度拔出耳机会概率存在检测到三段式耳机的情况,这样就误认为检测到了按键。
[SOLUTION]
修改文件:
alps\kernel-
3.10\drivers\misc\mediatek\mach\$platform\$project\accdet\accdet_custom.c
#if defined ACCDET_EINT || defined ACCDET_EINT_IRQ
static struct heADSet_mode_settings cust_headset_settings = {
0x900, 0X200, 1, 0x1f0, 0x800, 0x800, 0x20
};
#else
0x20表示耳机拔出的accdet PMIC中断延迟时间,accdet的时钟为32K,这样0x20表示
时间为(0x20/32K)=1ms
可以把0x20修改为0x4000,这样debounce时间为(0x4000/32K)=512ms
调大该数值的目的是,拔出耳机的时候让accdet pmic中断延迟,让耳机插拔的
EINT先产生,
这样在拔出耳机的EINT里面会把accdet关闭掉,这样accdet就不会检测耳机按键了
,就不会有按键上报。
在拨打电话过程中,拔插耳机如果有KEY_PLAYPAUSE事件会导致MIC静音功能触发。
插拔过程中由于受到耳机插槽结构的影响,正常速度拔出耳机会概率存在检测到三段式耳机的情况,这样就误认为检测到了按键。
[SOLUTION]
修改文件:
alps\kernel-
3.10\drivers\misc\mediatek\mach\$platform\$project\accdet\accdet_custom.c
#if defined ACCDET_EINT || defined ACCDET_EINT_IRQ
static struct heADSet_mode_settings cust_headset_settings = {
0x900, 0X200, 1, 0x1f0, 0x800, 0x800, 0x20
};
#else
0x20表示耳机拔出的accdet PMIC中断延迟时间,accdet的时钟为32K,这样0x20表示
时间为(0x20/32K)=1ms
可以把0x20修改为0x4000,这样debounce时间为(0x4000/32K)=512ms
调大该数值的目的是,拔出耳机的时候让accdet pmic中断延迟,让耳机插拔的
EINT先产生,
这样在拔出耳机的EINT里面会把accdet关闭掉,这样accdet就不会检测耳机按键了
,就不会有按键上报。
mark一下
申明:网友回复良莠不齐,仅供参考。如需专业帮助,请学习易迪拓培训专家讲授的ADS视频培训课程。
上一篇:code如何集成Biquads参数功能
下一篇:求 ADS工艺库在哪下载
ADS培训课程推荐详情>>
国内最全面、最专业的Agilent ADS培训课程,可以帮助您从零开始,全面系统学习ADS设计应用【More..】
- Agilent ADS教学培训课程套装
- 两周学会ADS2011、ADS2013视频教程
- ADS2012、ADS2013射频电路设计详解
- ADS高低阻抗线微带滤波器设计培训教程
- ADS混频器仿真分析实例视频培训课程
- ADS Momentum电磁仿真设计视频课程
- ADS射频电路与通信系统设计高级培训
- ADS Layout和电磁仿真设计培训视频
- ADS Workspace and Simulators Training Course
- ADS Circuit Simulation Training Course
- ADS Layout and EM Simulation Training Course
- Agilent ADS 内部原版培训教材合集