DTS中dma详解

通用DMA控制器和DMA请求绑定


DMA控制器的DTS 文件

必要参数:
- #dma-cells:       必须至少为1。用于提供DMA控制器的特定信息。有关详细信息,请参阅下面的DMA客户机绑定。

可选参数:
- dma-channels:     控制器支持的DMA信道数。
- dma-requests:     控制器支持的DMA请求信号数量。

例子:

    dma: dma@48000000 {
        compatible = "ti,omap-sdma";
        reg = <0x48000000 0x1000>;
        interrupts = <0 12 0x4
                  0 13 0x4
                  0 14 0x4
                  0 15 0x4>;
        #dma-cells = <1>;
        dma-channels = <32>;
        dma-requests = <127>;
    };


DMA 路由

DMA路由器是透明的IP块,用于将DMA请求线从设备路由到DMA控制器。一些soc(如TI DRA7x)与DMA请求集成的外设比DMA控制器能够直接处理的外设更多。

 

必要参数:
- dma-masters: dma控制器
- #dma-cells:       最小为1. DMA特定信息的个数.查阅dma client 细节

可选参数:
- dma-requests:     路由器可以处理的传入请求行数。
- In the node pointed by the dma-masters:
    - dma-requests: 路由器驱动程序可能需要寻找这个来配置路由。

例子:
    sdma_xbar: dma-router@4a002b78 {
        compatible = "ti,dra7-dma-crossbar";
        reg = <0x4a002b78 0xfc>;
        #dma-cells = <1>;
        dma-requests = <205>;
        ti,dma-safe-map = <0>;
        dma-masters = <&sdma>;
    };

* DMA 客户端

客户端驱动程序应该使用一个phandle来指定DMA属性,然后是DMA控制器特定的数据。

必要属性:
- dmas:         一个或多个DMA描述符,每个节点有两个选项,1 dma控制器描述符,2 一个包含DMA控制器特定信息的phandle引用的节点中的属性。这通常包含DMA请求行号或通道号,但是可以包含配置通道所需的任何数据。
- dma-names:        为dmas属性中的每个DMA说明符包含一个标识符字符串。可以使用的特定字符串在DMA客户机设备的绑定中定义。可以使用多个DMA说明符来表示替代方案,在这种情况下,这些DMA说明符的DMA名称必须相同(参见示例)。

Examples:

1. 一种具有一个DMA读通道和一个DMA写通道的设备:

    i2c1: i2c@1 {
        ...
        dmas = <&dma 2      /* read channel */
            &dma 3>;    /* write channel */
        dma-names = "rx", "tx";
        ...
    };

2. 一个带有三个可选DMA控制器的单读写通道:

    dmas = <&dma1 5
        &dma2 7
        &dma3 2>;
    dma-names = "rx-tx", "rx-tx", "rx-tx";

3. 一种有三个通道的设备,其中一个有两个选择:

    dmas = <&dma1 2         /* read channel */
        &dma1 3         /* write channel */
        &dma2 0         /* error read */
        &dma3 0>;       /* alternative error read */
    dma-names = "rx", "tx", "error", "error";

你可能感兴趣的:(linux内核)