Other Parts Discussed in Thread: AM69
器件型号: SK-AM69
Thread 中讨论的其他器件: AM69
从以下位置继续:
对延迟的响应表示歉意、现在再看一下。
现在我可以看到您提到的更新内核中包含的补丁、AM69 现在可以支持需要大 32 位不可预取 BAR(接近 4GB)的器件:
ranges = <0x01000000 0x00 0x00001000 0x40 0x00001000 0x00 0x00100000>, /* IO (1 MB) */
<0x02000000 0x00 0x00101000 0x40 0x00101000 0x00 0xffeff000>; /* 32-bit Non-Prefetchable MEM (4 GB - 1 MB - 4 KB) */
这是伟大的,但什么设备的 64 位可预取条?
如果我将此地址区域分为 3 个区域:
I/O 1MB
32 位非预取 2GB - 1MB - 4KB
64 位预取 2GB
硬件是否支持此功能?
我认为 Cadence IP 和上游 Linux 驱动程序应该支持这一点、我可以在使用 Cadence IP(但不是 TI 器件)的另一个 SoC 中看到更标准的设置。下面是来自器件树 PCIe 节点的“范围“条目:
ranges = <0x01000000 0x0 0x00000000 0x48 0x10000000 0x0 0x00200000>, /* IO */ <0x42000000 0x0 0x10000000 0x0 0x10000000 0x0 0x04000000>, /* 32bit Prefetchable */ <0x02000000 0x0 0x14000000 0x0 0x14000000 0x0 0x04000000>, /* 32bit */ <0x43000000 0x4a 0x00000000 0x4a 0x00000000 0x2 0x00000000>, /* 64bit */ <0x03000000 0x49 0x00000000 0x49 0x00000000 0x1 0x00000000>; /* 64bit Prefetchable */
所有基底都已覆盖、因此所有设备都应枚举它们是否适合分配的大小。