I am trying to understand how the outbound PCI address translation is configured in the device tree for the LS1043A-RDB, and how I can modify it to suit our needs.
In the device tree file fsl-ls1043a.dtsi in SDK 2, I found this:
compatible = "fsl,ls1043a-pcie", "snps,dw-pcie";
ranges = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000 /* downstream I/O */
0x82000000 0x0 0x40000000 0x40 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
As far as I can tell, this allocates 1 GB worth of address space space for memory.
However, the system memory map shows that a 32 GB address section is set aside for each of the three PCI Express controllers in this device.
Is there a particular reason why so little address space is allocated? Can we increase it from 1 GB?
Also, it is not clear to me why the address ranges are also offset by 1 GB:
- PCI base address: 0x40000000
- System memory base address: 0x40 0x40000000
Is there any reason not to start the address ranges at zero, like below?
- PCI base address: 0x00000000
- System memory base address: 0x40 0x00000000
In our application, we need at least twice as much memory address space, i.e., 2 GB.
I expect to simply have to change the last line in ranges to:
0x82000000 0x0 0x00000000 0x40 0x00000000 0x0 0x80000000>; /* non-prefetchable memory */
This would start the addressing at 0, and doubles the size to 2 GB.
Is this safe to do?
Thank you in advance for any help and insight in this issue!