This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM5708:升级到 TI SDK 08.02.01.00 后定制 AM5708 板上的 GPIO 中断问题

Guru**** 2424970 points
Other Parts Discussed in Thread: AM5708

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1542623/am5708-issue-with-gpio-interrupt-on-custom-am5708-board-after-upgrading-to-ti-sdk-08-02-01-00

部件号:AM5708


工具/软件:

您好、

我们有一个基于 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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Mahesh、

    我很抱歉耽误你的时间,我想这个问题是这个主题的延续: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1524119/am5708-sdk-upgrade-to-08-02-01-00-kernel-crash-at-l3?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Josue、

    此问题可能与以前的线程有关、通过更改以下内容解决了该问题:

    DTS:

    IDK-LED{
    状态=“正常“;        =>状态将移至“已禁用“改为“正常“。 尽管我们没有任何 LED
    兼容=“GPIO-LED";“;
    red0-led{
    标签=“idk:red0";“;
    GPIO =<&GPIO6 19 GPIO_ACTIVE_HIGH>;
    default-state =“关闭“;
    };

    绿色 0- LED{
    标签=“idk:green0";“;
    GPIOs =<&GPIO4 0 GPIO_ACTIVE_HIGH>;
    default-state =“关闭“;
    };

    ...

    ...


    在当前情况下、它不会崩溃、我们能够成功访问 GPIO 控制寄存器、但即使 GPIO 配置正确、也没有触发中断。

    谢谢、

    Mahesh R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mahesh、

    GPIO 已正确配置为输入、显示 IRQ 功能。 在器件树中、我们已将引脚配置为 GPIO:

    您是否可以尝试通过 u-boot 文件 mux-data.h 设置该器件的 pinmux? DTS 中的引脚多路复用并不总是正常工作、可能存在不可靠的行为。

    以下应用手册:AM57xx SitaraTM IO 配置要求中提到了其原因以及有关如何执行此操作的说明

    -Josue

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Josue、

    它已在 mux-data.h 中配置  

    const struct pad_conf_entry core_padconf_array_Essential_x15[]={

    {VIN2A_D7、(M14 | PIN_INPUT)}、/* vin2a_D7.GPIO4_8 */

    … };

    谢谢、

    Mahesh R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Mahesh、  

    您能解释一下上面的绿色框中的“这解决了我的问题“、这是意外完成的吗?

    -Josue

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Josue、

    是、在将 GPIO 传统接口移到消费者接口方法后其已解决。