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.

[参考译文] Linux/AM3352:从 GPIO2触发 DMA 传输

Guru**** 2587365 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/634845/linux-am3352-triggering-dma-transfers-from-gpio2

器件型号:AM3352

工具/软件:Linux

我遇到来自 GPIO2的 DMA 触发器问题。 传输通过 GPIO0引脚触发、但在配置交叉开关后:

DMA =<0x34 20 0 32>;

其中0x34是对器件树中交叉开关的引用

我得到:

DMA 路由器:无效 XBAR 事件编号:32

尽管32是 TRM 中的 GPIOEVT2。 应如何为 GPIO2事件配置纵横制?

此致、

Jacek

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jacek:

    您是否验证 Linux 内核中的其他模块是否未使用此 DMA 事件?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    此事件未配置纵横制、因此我假设没有人在使用它。 或者、您是说 GPIO2上的 IRQ 处理可能干扰 DMA 触发器? 它们是否同时提供给(INTC 和 DMA)?

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

    我打算检查 am33xx.dtsi 以查看其他模块是否使用此 DMA 配置、但您似乎没有修改此文件、因此这不是问题所在。

    您能否提供整个 DTS 节点? 您是否尝试过使用直接映射 EDMA 事件?
    DMA =<&EDMA 8 2>、
    < EDMA 9 2>;
    dma-names ="TX"、"Rx";
    以上只是一个示例、您应该更改 DMA 事件编号。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我在 dtsi 中没有发现冲突条目。 我的配置适用于直接映射事件。 它还可以处理 XINTR1事件(我用交叉开关配置的29号事件)、但在尝试重新映射间接事件32 (GPIOEVT2)后、驱动程序抱怨"无效 XBAR 事件编号:32"。

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

    错误来自 drivers/dma/ti-dma-crossbar.c:
    if (dma_spec->args[0]>=Xbar->dma_requests){
    DEV_ERR(&pdev->dev,“无效的 DMA 请求行号:%d\n",
    dma_spec->args[0]);
    返回 ERR_PTR (-EINVAL);


    您能否开始跟踪 dma_spec->args[0]从何处获取其值,并了解它与修改的冲突情况?
    您是否还可以附加修改后的 DTS 文件进行检查?

    此致、
    Yordan