部件号: AM62P
TI 团队大家好、
我正在调查 AM62Px 上的 SDIO DAT1 中断问题。
■环境
器件:AM62Px
操作系统: Linux
接口:SDIO
SDIO 从器件:Kyocera Orini
主机控制器:SDHCI
■问题摘要
为 SDIO 器件重复复位/重新探测/打开序列后、AM62Px 主机控制器有时会停止检测到 SDIO DAT1 中断。
为了进行调试、我添加了以下日志:
sdhci.c
SDHCI_INT_CARD_INT 处理
SDIO_IRQ.c
SDIO_SIGNAL_IRQ ()
SDIO_CLARE_IRQ ()
■从日志中观察到
以下操作成功:
SDIO_CLARE_IRQ ()
CCCR.IENx 写入/读回
IRQ 注册
CCCR.IENx 可正确读回为 0x03。
但是、在故障情况下、不再检测到 SDHCI_INT_CARD_INT。
■正常情况
以下日志将反复继续:
“mmc2:SDIO DAT1 IRQ“
“SDIO_SIGNAL_IRQ 挂起= true “
■故障情况
出现以下情况之一:
仅检测 1-2 个 DAT1 IRQ
IRQ 注册后根本不会发生 DAT1 IRQ
■测试序列
释放从器件复位
复位从器件
sdio_open()
激活序列
关闭 SDIO 句柄
等待重新探测/重新初始化
再次打开
配置从寄存器
■观察到的模式
第一次运行:正常
第二次运行:部分失败
第三次运行:DAT1 IRQ 丢失
第四次跑步:再次正常
■电流理解
根据日志:
Linux SDIO IRQ 注册本身显示成功
但是、SDHCI 主机控制器内可能会丢失 DAT1 中断检测
另一种可能性是与以下方面有关的问题:
DAT1 线路状态
挂起中断处理
复位/重新探测期间的时序
■问题
AM62Px 上的 SDIO DAT1 中断处理是否有任何已知问题或时序要求?
是否有建议的顺序:
SDIO 复位
重新探测
中断重新使能
DAT1 中断恢复?
当 DAT1 IRQ 检测停止时、是否应检查任何 SDHCI 寄存器? (例如 INT_STATUS / SIGNAL_ENABLE / PRESIENT_STATE)
此行为是否与以下内容相关:
SDHCI 中断锁存状态
运行时 PM
时钟门控
DAT1 电平检测状态机?
如有任何关于软件端调试或建议的恢复处理的建议、将不胜感激。
谨致问候 Izawa