SIM Hot Swap Plugin/out HISR fail while touch in touch panel
2016-06-08 14:31
776 查看
SIM Hot Swap Plugin/out HISR fail while touch in touch panel
[Description]
1, Touch and hold Touch Panel, or Press and holdkeys(used EINT)
2, Plug in or Plug out SIM card.
3, SIM card hot swap failure.
[Solution]
MT65*5/MT65*7 platform, AP & Modem share EINT module.
Touch and hold Touch Panel, or Press and hold keys(used EINT), Touch/keys EINT pin
trigger by AP, AP EINT ownermask EINT_MD. So modem EINT failure.
Patch: ALPS00420157
OR
modify AP side mt_eint.c/mt6577/5_eint.c as flow
alps\mediatek\platform\$(mt6577 or mt6575)\kernel\core\mt6577/5_eint.c(ICS2)
alps\mediatek\platform\$(mt6577 or mt6575)\kernel\core\mt_eint.c(JB)
/*
* mt65xx_eint_isr: EINT interrupt service routine.
* @irq: EINT IRQ number
* @dev_id:
* Return IRQ returned code.
*/
static irqreturn_t mt65xx_eint_isr(int irq, void *dev_id)
{
unsigned int index;
unsigned int status;
unsigned int domain;
/*
* NoteXXX: Need to get the wake up for 0.5 seconds when an EINT intr tirggers.
* This is used to prevent system from suspend such that other drivers
* or applications can have enough time to obtain their own wake lock.
* (This information is gotten from the power management owner.)
*/
tasklet_schedule(&eint_tasklet);
status = readl(EINT_STA);
domain = readl(EINT_D0EN);
dbgmsg("EINT Module - %s ISR Start\n", __func__);
dbgmsg("EINT Module - EINT_STA = 0x%x\n", status);
for (index = 0; index < EINT_MAX_CHANNEL; index++) {
if ((status & (1 << (index))) && (domain & (1 << (index)))) {
mt65xx_eint_mask(index);
if (EINT_FUNC.eint_func[index]) {
EINT_FUNC.eint_func[index]();
}
mt65xx_reg_sync_writel(1 << index, EINT_INTACK);
#if(EINT_DEBUG == 1)
status = readl(EINT_STA);
printk("EINT Module - EINT_STA after ack = 0x%x\n", status);
#endif
if (EINT_FUNC.eint_auto_umask[index]) {
mt65xx_eint_unmask(index);
}
}
}
dbgmsg("EINT Module - %s ISR END\n", __func__);
return IRQ_HANDLED;
}
[Description]
1, Touch and hold Touch Panel, or Press and holdkeys(used EINT)
2, Plug in or Plug out SIM card.
3, SIM card hot swap failure.
[Solution]
MT65*5/MT65*7 platform, AP & Modem share EINT module.
Touch and hold Touch Panel, or Press and hold keys(used EINT), Touch/keys EINT pin
trigger by AP, AP EINT ownermask EINT_MD. So modem EINT failure.
Patch: ALPS00420157
OR
modify AP side mt_eint.c/mt6577/5_eint.c as flow
alps\mediatek\platform\$(mt6577 or mt6575)\kernel\core\mt6577/5_eint.c(ICS2)
alps\mediatek\platform\$(mt6577 or mt6575)\kernel\core\mt_eint.c(JB)
/*
* mt65xx_eint_isr: EINT interrupt service routine.
* @irq: EINT IRQ number
* @dev_id:
* Return IRQ returned code.
*/
static irqreturn_t mt65xx_eint_isr(int irq, void *dev_id)
{
unsigned int index;
unsigned int status;
unsigned int domain;
/*
* NoteXXX: Need to get the wake up for 0.5 seconds when an EINT intr tirggers.
* This is used to prevent system from suspend such that other drivers
* or applications can have enough time to obtain their own wake lock.
* (This information is gotten from the power management owner.)
*/
tasklet_schedule(&eint_tasklet);
status = readl(EINT_STA);
domain = readl(EINT_D0EN);
dbgmsg("EINT Module - %s ISR Start\n", __func__);
dbgmsg("EINT Module - EINT_STA = 0x%x\n", status);
for (index = 0; index < EINT_MAX_CHANNEL; index++) {
if ((status & (1 << (index))) && (domain & (1 << (index)))) {
mt65xx_eint_mask(index);
if (EINT_FUNC.eint_func[index]) {
EINT_FUNC.eint_func[index]();
}
mt65xx_reg_sync_writel(1 << index, EINT_INTACK);
#if(EINT_DEBUG == 1)
status = readl(EINT_STA);
printk("EINT Module - EINT_STA after ack = 0x%x\n", status);
#endif
if (EINT_FUNC.eint_auto_umask[index]) {
mt65xx_eint_unmask(index);
}
}
}
dbgmsg("EINT Module - %s ISR END\n", __func__);
return IRQ_HANDLED;
}
相关文章推荐
- Android获取手机SIM卡运营商信息的方法
- 浅析Android手机卫士sim卡绑定
- WATM与Tivoli、SIM同获2007网络技术大会网管系统选择奖
- Sim 卡认识
- maillist of Hacking USB@LINUX
- MTK驱动笔记
- (zt)MTK编译过程
- 解析MTK获取系统时间函数大全
- MTK中关于存储系统应用教程
- 如何在MTK上使用RVCT
- 手机开发平台指南
- MTK相关
- Java数字签名步骤
- 手机MTK芯片组格式化
- MTK 如何生成lib
- 在大容量数据集中查找前N个数的算法
- MTK中history机制小结
- MTK手机平台添加资源和菜单的方式(转)
- 国笔手机输入法MTK支持的语言
- mtk modis 菜单功能紊乱