工具/软件:
您好、
我们有一个基于 TI AM5708 SoC 的定制电路板、运行 TI Processor SDK Linux。 我们正在升级:
SDK Linux-am57xx-EVM-05.03.00.07 更改为 SDK-LINUX-am57xx-EVM-08.02.01.00。
我们使用 GPIO4_8(引脚 vin2a_D7、GPIO 编号 104)作为处理器的中断输入。 我们的驱动程序成功请求 IRQ 并收到 IRQ 编号:
GPIO GPIO4_8 (GPIO 104) 请求 IRQ→获取的 IRQ# 180
但是、该中断绝不会在驱动器中触发。 中断似乎未按预期运行。
调试输出:
root@am57xx-EVM:~# cat /proc/interrupts | grep 180
180:0 48055000.GPIO 8 Edge ControlDriv
Root@am57xx-EVM:~#
Root@am57xx-EVM:~#
root@am57xx-EVM:~# cat /sys/kernel/debug/gpio | grep 104.
GPIO-104 (|ControlDriv ) 在 LO IRQ 中
Root@am57xx-EVM:~#
root@am57xx-EVM:~# cat /sys/class/gpio/gpio104/value
0
root@am57xx-EVM:~# cat /sys/class/gpio/gpio104/direction
指定
Root@am57xx-EVM:~#
GPIO 已正确配置为输入、并显示 IRQ 功能。 在器件树中、我们将此引脚配置为 GPIO:
root# cat dra72x-mc-iodelay.dtsi | grep GPIO4
GPIO4_PINS_DEFAULT:GPIO4_PINS_DEFAULT{
DRA7XX_CORE_IOPAD (0x3578、MUX_MODE14 | PIN_INPUT)/* vin2a_D4.GPIO4_5 */
DRA7XX_CORE_IOPAD (0x357C、MUX_MODE14 | PIN_INPUT)/* vin2a_D5.GPIO4_6 */
DRA7XX_core_IOPAD (0x3580、MUX_MODE14 | PIN_INPUT)/* vin2a_d6.GPIO4_7 */
DRA7XX_CORE_IOPAD (0x3584、MUX_MODE14 | PIN_INPUT)/* vin2a_D7.GPIO4_8 */
根号
但在 dmesg 中、我们观察到意外的 IRQ 活动:
[403.391892] IRQ 0、描述:fdabb967、深度:1、计数:0、未处理:0
[ 403.398203]-> handle_irq():c84c70d9、handle_bad_irq+0x0/0x280
[ 403.404156]-> irq_data.chip(): 0e83c332、NO_IRQ_CHIP+0x0/0x90
[403.409924]->操作 (): 00000000
[ 403.413164] IRQ_noprobe set
[ 403.416228] IRQ_NOREQUEST 设置
[403.419292]向量 00 处出现意外的 IRQ 陷阱
还使用 omapconf 转储 IRQ 交叉开关和时钟树:
omapconf --force dra72x 转储交叉开关 IRQ MPU > irq-decode.txt
omapconf export ctt am57xx-clocks.txt
从配置的角度来看、一切似乎都正确。 较旧的 SDK (05.03.00.07) 中相同的硬件和配置工作正常。 在 SDK 08.02.01.00 中、中断根本不会到达驱动程序。
IRQ/GPIO 处理中是否有需要在 Linux 5.10(用于 SDK 08.02)中解决的新内容?
感谢任何建议或指导。
谢谢
e2e.ti.com/.../am57xx_2D00_clocks.txte2e.ti.com/.../6661.irq_2D00_decode.txt