我需要为 INTEGRITY 操作系统优化我们的 uSDHC 驱动程序。在这项工作中,我观察到,在繁忙状态下发送命令时," Transfer complete " (TC) 中断不会被触发。处理器参考手册(Rev.3)对于 TC 中断说:
"对于带 busy 的命令,当 busy 取消时,该字段将被置位。"
我看到 Linux 驱动程序使用 VEND_SPEC2 寄存器中一个未注明的位来激活此类命令的 TC 中断。
它位于"sdhci-esdhc-imx.c。"锉刀
104 #define ESDHC_VEND_SPEC2_EN_BUSY_IRQ (1)<<
当我使用我们的驱动程序在 VEND_SPEC2 寄存器中设置第 8 位时,TC 中断也会被触发。
是否建议使用这个未注明的位呢?
你好
没错,这个功能虽然没有文档说明,但你可以参考以下补丁:https://patchwork.kernel.org/project/linux-mmc/patch/[email protected]/如果该命令包含忙状态阶段,Linux 会在执行该命令之前将 VEND_SPEC2 的第 8 位(EN_BUSY_IRQ)设置为 1。这会导致控制器在“忙”信号失效时触发 TC 中断,如有需要,您可以实现该功能。