Linux GPIO口配置冲突导致问题

问题背景

在设备进行休眠时,休眠成功后被唤醒,查看休眠GPIO口被拉高,排除单片机拉高的可能,打印如下:

suspend: set mcu wakeup(pin2) to high level 休眠下去
Detect USB Vbus is:0(off) 关vbus
msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_DISCONNECT_EVENT received
android_work: android_work: did not send uevent (0 0   (null))
mmc1: card 0001 removed
blk_update_request: I/O error, dev mmcblk0, sector 0
sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
mmc1: error -110 whilst initialising SDIO card
sdhci_msm 7864900.sdhci: card claims to support voltages below defined range
blk_update_request: I/O error, dev mmcblk0, sector 0
mmc1: mmc_init_card: mmc_send_op_cond() fails -110
mmc1: error -110 whilst initialising MMC card

	这里电平被拉进行异常唤醒

Detect USB Vbus is:1(On)
msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_RESET_EVENT received
msm_hsusb msm_hsusb: CI13XXX_CONTROLLER_CONNECT_EVENT received

suspend: set mcu wakeup(pin2) to low level 唤醒上来
mmc1: Out-of-interrupt timeout is 100[ms]
mmc1: BKOPS_EN equals 0x2
mmc1: eMMC FW version: 0x37
mmc1: CMDQ supported: depth: 32
mmc1: cache barrier support 1 flush policy 1
mmc1: new HS200 MMC card at address 0001
mmc1: -524: cmdq: unable to set-up
mmcblk0: mmc1:0001 DG4008 7.28 GiB 
 mmcblk0: p1
mdm9607-asoc-snd soc:sound: ASoC: CODEC DAI quec-stub-rx Name: quec-stub-codec.2-0001, not registered
QCMAP:bringup v6
EXT4-fs (mmcblk0p1): recovery complete
EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Opts: nodelalloc,barrier=1,journal_checksum,noauto_da_alloc

问题分析

1、怀疑是wifi在polling时进行异常唤醒,验证:

echo 0 > /sys/devices/7864900.sdhci/polling 无改善

2、怀疑是加了gbtest影响休眠,验证:

cat /sys/module/usb_storage/parameters/gbtest N 默认关闭无影响

3、回退git版本验证:

+# CONFIG_LEDS_ANDROMEDA is not set 有影响,查看代码编译进andromeda_leds,继续代码与dtsi中查看GPIO冲突管脚:

查看andromeda-leds.c源码
	.name			= "CODEC_PWR",
	.gpio			= 11, 【冲突】
查看dtsi
	sleep_ind_active: sleep_ind_active {
		mux {
			pins = "gpio11";
			function = "gpio";
		};			
明显冲突,需要加宏控制不编译

问题原因

andromeda-leds中的CODEC_PWR GPIO口与sleep口11冲突,导致codec有信号时会影响休眠成功后被马上唤醒。

总结

熟悉休眠唤醒流程,找到问题原因,杜绝不规范配置GPIO口导致的冲突难排查问题。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值