无论插入usb接口还是充电器接口,act8937都不能响应中断,而act8937程序曾经在android2.3中验证
过的,先查硬件,排除硬件错误。
确定是软件问题,只有打印寄存器查看了。
在drivers/power/s5pv210_battery.c 中:
#include <plat/gpio-cfg.h> //jeff.
#include <mach/gpio.h>
#include <mach/gpio-bank.h>
#include <mach/regs-gpio.h>
#include <asm/mach/map.h>
#include <linux/irq.h>
打开调试选项,在
static void battery_work(struct work_struct *work)
中增加
PRINTK("S5PV210_GPH0CON=0x%08x,S5PV210_GPH0DAT=0x%08x\n",readl(S5PV210_GPH0CON),readl(S5PV210_GPH0DAT));
发现打印出来的是
S5PV210_GPH0CON=0x00100010,S5PV210_GPH0DAT=0x00000010
理论上
S5PV210_GPH0CON应该第二个4bit为f(EXT_INT),现在却是1(OUTPUT),搜索整个kernel的tree,
发现是rt5621中有对S5PV210_GPH0CON进行操作,屏蔽掉后,打印就正常了。
S5PV210_GPH0CON=0x001000f0,S5PV210_GPH0DAT=0x00000023
然后就可以从界面里看到充电状态变化。
本文解决了一个特定的充电管理IC act8937 在 Android 系统中无法响应USB插入和充电器连接中断的问题。通过调试发现 S5PV210_GPH0CON 寄存器配置不正确导致了这一问题,并最终通过调整该寄存器的设置解决了问题。
1万+

被折叠的 条评论
为什么被折叠?



