在Android智能手机项目开发过程中,我们经常会遇到GPIO漏电导致系统底电流偏高。故总结一下:

1、首先建议HW将怀疑漏电的GPIO与外围电路彻底断开

2、如果依然漏电,使用命令检查GPIO状态:


相应的实现代码:

LINUX/android/kernel/drivers/pinctrl/qcom/pinctrl-msm.c

static void msm_gpio_dbg_show_one(struct seq_file *s,struct pinctrl_dev *pctldev,struct gpio_chip *chip,unsigned                                                                       offset,unsigned gpio)

static void msm_gpio_dbg_show(struct seq_file *s, struct gpio_chip *chip)

3、如果发现GPIO状态确实异常,则使用下面的方法来确定AP侧是否可以控制该GPIO


可以使用echo  GPIO##ID  > export,创建GPIO##ID目录

cd  GPIO##ID

echo  out/in  > direction

如果配置为输出,则可以echo  1/0 > value,如果可以输出“1”或者“0”,则说明AP控制GPIO正常。

测试完成后,也可以使用echo  GPIO##ID  > unexport,删除GPIO##ID目录

4、检查该GPIO##ID的相应DTS配置,重点检查pinctrl default和sleep配置,因为有可能系统睡眠时,并没有将该GPIO##ID配置为sleep,而使用的一直都是default。

5、只要设备与驱动attach成功,就会配置相应的GPIO为default,并不是只能在设备驱动中才能配置哦,具体原因请看:https://blog.csdn.net/yxw0609131056/article/details/80662462

Logo

更多推荐