30. accdet调试日志

这篇博客详细介绍了MTK平台中耳机检测的三种模式:EINT+AuxADC、ACCDET(DCC模式)和EINT_ACCDET。通过adb调试方法查看中断计数和日志,分析了耳机插入、拔出时的中断处理流程。内容包括不同模式下的硬件原理和软件配置,并展示了全插入和半插入耳机时的中断日志,以及在快速按键操作下可能出现的误报问题。文章还提及了一个实际的误报问题案例,涉及MT6737平台,但尚未得到MTK的回复。
摘要由CSDN通过智能技术生成
一、常用调试方法:
	1. adb
	
	DCC模式:查看中断计数
		magc6737t_65_n:/ $ cat /proc/interrupts | grep "pmic"
		494:          6   mt-eint 206  pmic-eint
		magc6737t_65_n:/ $ cat /proc/interrupts | grep "pmic"
		494:          7   mt-eint 206  pmic-eint				// 耳机拔出触发1次pmic中断
		magc6737t_65_n:/ $ cat /proc/interrupts | grep "pmic"
		494:          9   mt-eint 206  pmic-eint				// 耳机插入触发2次pmic中断

		magc6737t_65_n:/ $ cat /proc/interrupts | grep "pmic"
		494:         10   mt-eint 206  pmic-eint
		magc6737t_65_n:/ $ cat /proc/interrupts | grep "pmic"
		494:         12   mt-eint 206  pmic-eint				// 耳机按下音量+触发2次pmic中断
		magc6737t_65_n:/ $ cat /proc/interrupts | grep "pmic"
		494:         14   mt-eint 206  pmic-eint				// 耳机按下音量-触发2次pmic中断
		magc6737t_65_n:/ $ cat /proc/interrupts | grep "pmic"
		494:         16   mt-eint 206  pmic-eint				// 耳机按下暂停键触发2次pmic中断
	
	2. 查看log
	
	3. 
	4. 
	
	
	
二、根据mtk-online介绍,耳机检测有三种模式:
	Feature Phone主要有三种耳机检测方式:
	1. EINT+AuxADC
	   【检测原理】 
	(1)耳机检测方式为EINT+AuxADC。
	(2)EINT HISR为AUX_EINT_HISR,在aux_task_main中注册中断。插入耳机,若是高电平触发中断,需要保证AUX_EINT_STATE为1,否则为0。
	(3)hook key的检测采用ADC。当耳机plug in,trigger AUX_EINT_HISR,此时turn on micbias, double check plug in state后,再发送msg AUX_ID_EARPHONE给UEM。
		   然后turn off micbias。当aux收到来电消息,也会turn on micbias,检测SENDKEY ADC,直到挂断电话,才turn off micbias。
	   
	   【软件配置】ACCDET_SUPPORT=FALSE
	   【典型平台】MT6236,MT6252
	 
	2. ACCDET【即DCC模式】
	   【检测原理】  
	(1)耳机检测方式为ACCDET only。
	(2)HISR为ACCDET_HISR,在ACCDET_INIT注册。
	(3)hook key的检测采用ACCDET。
	(4)耳机状态与accdet处的电压对应关系如下表:
			   表(一)
		Earphone state		Accdet voltage	Comparator AB state
		Plug out			1.9V			A=1,B=1
		Plug in				0.4V~1.7V		A=0,B=1
		Hook key pressed	0V				A=0,B=0	//【可用万用表量mic脚电压,按键按住不松开即可】
		
		【软件配置】ACCDET_SUPPORT=TRUE
		【典型平台】MT6276,MT6250D/MT6250
	 
	3. EINT_ACCDET【即ACC模式】
		   【检测原理】
	(1)耳机检测方式为EINT+ACCDET。
	(2)EINT HISR为AUX_EINT2_HISR,在ACCDET_INIT注册。插入耳机,若是高电平触发中断,需要将AUX_EINT_STATE置为1,否则置为0。
	(3)hook key的检测采用accdet。
	(4)耳机状态与accdet处的电压对应关系同表(一)。
	(5)耳机插入,触发eint之后,enable ACCDET,耳机拔出之后会disable ACCDET。

		【软件配置】ACCDET_SUPPORT=EINT_ACCDET
		【典型平台】MT6255,MT6250/MT6250D
	
三、如何分辨是【ACC】还是【DCC】
	根据查看硬件原理图,对照BOM
	ACC: R11+R12
	DCC: R13
								VIO18_PMU
									|
	ACCDET -------R13(47K)---|		R11(470K)
							 |		|
	EINT_EAR -----R12(47K)-----------------HP_EINT
	
四、
ACC : 还需要而配置dws,dts中断脚accdet
	magc6737m_65_n_debug_defconfig:
		CONFIG_ACCDET_EINT=y
		# CONFIG_ACCDET_EINT_IRQ is not set

DCC : 无需而配置中断脚
	magc6737m_65_n_debug_defconfig:	
		# CONFIG_ACCDET_EINT is not set
		CONFIG_ACCDET_EINT_IRQ=y
	
	
	
	
	
		
二、全插入: 耳机+mic
插入log: 
// 第一次中断
[ 1294.690140] -(2)[0:swapper/2][name:irq_mt_eic&]EINT Module - expires:4295066764, jiffies:4295066763, deb_in_jiffies:1, 
[ 1294.690180] -(2)[0:swapper/2][name:irq_mt_eic&]deb:1000, in mt_eint_set_timer_event
[ 1294.697499]  (1)[54:pmic_thread][name:pmic&][PMIC] [PMIC_INT] addr[0x2c4]=0x2000
[ 1294.697542]  (1)[54:pmic_thread][name:accdet&][accdet_eint_int_handler]....
[ 1294.697581]  (1)[54:pmic_thread][name:accdet&][Accdet accdet_irq_handler]clear_accdet_eint_interrupt: ACCDE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值