Thanks for your input.
The BSP you deliver only configures the ATU outbound as seen in the devicetree and there is no inbound configuration as far as I can tell.
This is the device tree configuration:
ranges = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000 /* downstream I/O */
0x82000000 0x0 0x40000000 0x40 0x40000000 0x0 0x40000000>; /*non-prefetchable memory */
Outbound Region BASE Target Type
Region 1 | 0x40 0001 0000 | 0x0000 0000 | Downstream I/O |
|---|
Region 2 | 0x40 4000 0000 | 0x4000 0000 | Non-prefetchable memory |
|---|
We tried a memory read command from the FPGA to SoC DRAM by using the physical address of the DRAM in the 0x80000000 to 0xC0000000 range and that works fine.
I have dumped the ATU inbound registers and all values are 0x0.
So looks like your first answer "Transaction is pass through" is applicable:
"The default behaviour of the ATU when there is no TLP attribute match in the inbound direction, is to pass the transaction through."
However, this is only for DRAM access. I am not sure about accessing areas outside the DRAM like OCRAM and CCSR.
Do you think the ATU inbound is configured in your BSP to access DRAM?
Can you please give me a pointer to the code that does this configuration so I can add the OCRAM and CCSR to it?
Thanks