SPRUIM2H May 2020 – October 2023 AM2431 , AM2432 , AM2434 , AM6411 , AM6412 , AM6421 , AM6422 , AM6441 , AM6442
WR_ID0 = 0x62
WR_ID1 = 0x63
PRU Register | BS ID | Access Type | Register | Notes |
---|---|---|---|---|
64 Byte Mode (Implied if R17.b3 enable is true) | ||||
R17-R2 | WR_ID0/1 | XOUT | WR_DATA | Write Data Only 1 XOUT is allowed per transfer including the address/data Must be atomic XOUT R19-R2 |
R19-R18 | WR_ID0/1 | XOUT | WR_ADDR | Write address 48-bits 2 options: Write the full 48-bits with one XOUT or Write the lower 32-bits with one XOUT Note, the one XOUT can set the address and data at the same time, but in this case data needs to be the full 64 bytes. The address can be the full 48-bits or just the lower 32-bits of the address, it will use the current state of the upper 16-bits. Address must be aligned |
32 Byte Mode (Implied if R17.b3 enable is false) | ||||
R9-R2 | WR_ID0/1 | XOUT | WR_DATA | Write Data Size restrictions 1 byte 4 bytes aligned with address, no holes 32 bytes aligned with address, no holes Only 1 XOUT is allowed per transfer including the address/data Only 1 byte and 4 bytes allow not aligned access if MII_G_RT_ICSS_G_CFG[2] RX_L2_G_EN is set. |
R11-R10 | WR_ID0/1 | XOUT | WR_ADDR | Write address 48-bits 2 options: Write the full 48-bits with one XOUT or Write the lower 32-bits with one XOUT Note, the one XOUT can set the address and data at the same time, but in this case data needs to be the full 32 bytes. The address can be the full 48-bits or just the lower 32-bits of the address, it will use the current state of the upper 16-bits. |
ALL modes | ||||
R20[0] | WR_ID0/1 | XIN | WR_BUSY | Write Busy Status 0h: Idle 1h: Active (WR CMD FIFO LEVEL !=0) or (WR DATA FIFO LEVEL !=0) |
RD_ID0 = 0x60
RD_ID1 = 0x61
PRU Register | BS ID | Access Type | Register | Notes |
---|---|---|---|---|
R17-R2 | RD_ID1/0 | XIN | RD_DATA | Read Data |
R18[0] | RD_ID1/0 | XOUT | RD_AUTO | Read Auto Mode If 0 -> 1, must write RD_ADDR If 1 -> 0, must not write RD_ADDR, must drain RD_DATA/RD_CMD If 0 -> 0, must write RD_ADDR When set, every RD_DATA pop will cause a new read command and read address to increment by 0x20 for the next read command if size is set to 32 Bytes 0x40 for the next read command if size is set to 64 Bytes In this case, user must set the address to be ether mod 0x20 or 0x40. 4 Byte mode is not supported. |
R18[2-1] | RD_ID1/0 | XOUT | RD_SIZE | Read Size 0h: 4 Bytes 1h: Reserved 2h: 32 Bytes 3h: 64 Bytes |
R18[0] | RD_ID1/0 | XIN | RD_BUSY | Read Busy Status 0h: Idle 1h: Active (RD CMD FIFO LEVEL !=0) or (RD DATA FIFO LEVEL !=0) |
R18[1] | RD_ID1/0 | XIN | RD_CMD_FL | Read command FIFO Level 0h: Empty 1h: Occupied Note: It only pop the read command FIFO after the read data has arrived |
R18[2] | RD_ID1/0 | XIN | RD_DATA_FL | Read data FIFO Level 0h: Empty 1h: Occupied 32 byte or 64 byte Note: In 64 byte mode, the user must wait for RD_MST_REQ = 0h before reading the FIFO. |
R18[3] | RD_ID1/0 | XIN | RD_MST_REQ | RD MST RED 0h = Last data has been latched 1h = Last data is still in flight Note: In Auto mode, the user must insure that this bit is 0h and wait an additional NOP before user disables Auto mode to prevent a race condition. |
R20:R19 | RD_ID1/0 | XOUT | RD_ADDR | Read address 48-bits 0x20 for the next read command if size is set to 32 Bytes 0x40 for the next read command if size is set to 64 Bytes The address can be the full 48-bits or just the lower 32-bits of the address, it will use the current state of the upper 16-bits |