工具/软件:Linux
大家好、
我希望向连接到 GPMC 总线的器件执行散聚 DMA 传输。 GPMC 总线在非 NAND 模式下运行。 我们的驱动器使用 dmaEngine 接口。
我可以通过将 dma_memcpy 传递到 dma_request_channel 来执行单次传输、然后使用 dmaenginer_prep_memcpy、这样就可以... 问题是每次传输后(通过 WAIT_for_Completion + DMA 描述符上的回调)、我需要进行上下文切换。 这在进行几次小规模传输时似乎效率低下、而按照"设备"的工作方式、我们需要进行大量小规模传输。
我无法在从模式下(即 dmaenginer_prep_slave_sg、dmaenginer_prep_slave_single)操作 DMA 至 GPMC、并且根据我的理解、从模式仅在 GPMC 配置为 NAND 模式时工作。
dmaengineer_prep_dma_sg()看起来正是我所需要的。 Linux 4.4中的 EDMA 驱动程序无法实现这一点。 我简要地扫描了 TI 的 Linux 树并进行了编辑、但在4.4或4.9分支中找不到任何此类实现。
是否还有其他类似的接口可用于进行散聚传输? 是否计划在 EDMA 驱动程序中实现 DMA_SG 接口?
感谢您提供的任何信息!
-Amanda

