首页 > 解决方案 > 设备树 dma-ranges 示例中的“ss 类型”是什么?(用于 PCIe 主机控制器)

问题描述

这是来自网页:https ://elinux.org/Device_Tree_Usage

扩展上面的例子:

    pci@0x10180000 {
        compatible = "arm,versatile-pci-hostbridge", "pci";
        reg = <0x10180000 0x1000>;
        interrupts = <8 0>;
        bus-range = <0 0>;

        #address-cells = <3>
        #size-cells = <2>;
        ranges = <0x42000000 0 0x80000000 0x80000000 0 0x20000000
                  0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
                  0x01000000 0 0x00000000 0xb0000000 0 0x01000000
        dma-ranges = <0x02000000 0 0x00000000 0x80000000 0 0x20000000>;
    }; 

这个 dma-ranges 条目表明,从 PCI 主机控制器的角度来看,位于 PCI
地址 0x00000000 的 512 MB 将出现在地址 0x80000000 的主核心内存中。
如您所见,我们只是将 ss 地址类型设置为 0x02,表示这是一些 32 位内存。

在网页中,dma-ranges 中的数字以颜色表示,因此很容易将数字与解释相匹配。它说它设置ss address type为0x02。它是什么?我在设备树规范中找不到它。在我可以在第 2.2.4 节路由和寻址规则中找到的 PCIe 规范Translated中,TLP(事务层数据包?)格式中有 AT(地址转换)位(0x2 表示)。但是位置不同。这是什么ss位?

标签: linux-device-driverdevice-driver

解决方案


推荐阅读