Changes

no edit summary
Line 1: Line 1:  +
= MEM =
 
{{Infobox MMIO
 
{{Infobox MMIO
 +
| title = MEM controller
 +
| ppc = Conditional
 
| arm = Full
 
| arm = Full
 
| base = 0x0d8b4000
 
| base = 0x0d8b4000
Line 8: Line 11:  
}}
 
}}
   −
The Latte hardware implements AMBA (possibly rev 2.0) compliant AHB buses for communication to/from the Starbuck's CPU and assorted on-chip hardware blocks (DMA, for example).<br>
+
MEM is the memory controller connected to the [[Hardware/AHM_controller|AHM]] bridge. It is mainly responsible for configuring and controlling DDR memory.
One of such blocks appears to be a customized memory controller that is responsible for several tasks such as DDR configuration, flushing memory to/from the AHB and employing a custom memory protection solution dubbed MEM_BLOCK.<br>
  −
This controller appears to be an extension of the one that was previously used on the Wii.
      
== Register List ==
 
== Register List ==
{{reglist|Memory Controller}}
+
{{reglist|Memory controller}}
{{rld|0x0d8b4000|16|MEM_MARR0_START|Memory Protection|drs=8}}
+
{{rld|0x0d8b4000|16|MEM_MARR0_START|Memory protection|drs=8}}
 
{{rld|0x0d8b4002|16|MEM_MARR0_END}}
 
{{rld|0x0d8b4002|16|MEM_MARR0_END}}
 
{{rld|0x0d8b4004|16|MEM_MARR1_START}}
 
{{rld|0x0d8b4004|16|MEM_MARR1_START}}
Line 71: Line 72:  
{{rld|0x0d8b4070|16|MEM_ACC_REQCOUNTH|Memory Request Count (ACC) (hi bits)}}
 
{{rld|0x0d8b4070|16|MEM_ACC_REQCOUNTH|Memory Request Count (ACC) (hi bits)}}
 
{{rld|0x0d8b4072|16|MEM_ACC_REQCOUNTL|Memory Request Count (ACC) (lo bits)}}
 
{{rld|0x0d8b4072|16|MEM_ACC_REQCOUNTL|Memory Request Count (ACC) (lo bits)}}
{{rld|0x0d8b4074|16|MEM_DDRREG_ADDR|DDR register offset}}
+
{{rld|0x0d8b4074|16|MEM_DDRREG_ADDR|DDR memory register offset}}
{{rld|0x0d8b4076|16|MEM_DDRREG_DATA|DDR register data}}
+
{{rld|0x0d8b4076|16|MEM_DDRREG_DATA|DDR memory register data}}
 
{{rld|0x0d8b4078|16|MEM_DRV_PSTRENGTH|Unknown}}
 
{{rld|0x0d8b4078|16|MEM_DRV_PSTRENGTH|Unknown}}
 
{{rld|0x0d8b4200|16|MEM_COMPAT|Unknown}}
 
{{rld|0x0d8b4200|16|MEM_COMPAT|Unknown}}
Line 150: Line 151:  
{{rld|0x0d8b42d4|16|MEM_MEM1_COMPAT_MODE|Unknown}}
 
{{rld|0x0d8b42d4|16|MEM_MEM1_COMPAT_MODE|Unknown}}
 
{{rld|0x0d8b42d6|16|MEM_CAFE_DDR_RANGE_TOP|Unknown}}
 
{{rld|0x0d8b42d6|16|MEM_CAFE_DDR_RANGE_TOP|Unknown}}
{{rld|0x0d8b42d8|16|MEM_UNK|Unknown}}
   
{{rld|0x0d8b4300|16|MEM_SEQ0_DATA|DDR SEQ0 sequential register's value to read/write}}
 
{{rld|0x0d8b4300|16|MEM_SEQ0_DATA|DDR SEQ0 sequential register's value to read/write}}
 
{{rld|0x0d8b4302|16|MEM_SEQ0_ADDR|DDR SEQ0 sequential register's address to read/write}}
 
{{rld|0x0d8b4302|16|MEM_SEQ0_ADDR|DDR SEQ0 sequential register's address to read/write}}
Line 158: Line 158:  
{{rld|0x0d8b4406|16|MEM_BLOCK_ERROR_ADDR_LOW|MEM block protection violation's address (low)}}
 
{{rld|0x0d8b4406|16|MEM_BLOCK_ERROR_ADDR_LOW|MEM block protection violation's address (low)}}
 
{{rld|0x0d8b4408|16|MEM_BLOCK_ERROR_ADDR_HIGH|MEM block protection violation's address (high)}}
 
{{rld|0x0d8b4408|16|MEM_BLOCK_ERROR_ADDR_HIGH|MEM block protection violation's address (high)}}
{{rld|0x0d8b440e|16|MEM_BLOCK_UNK|Unknown}}
  −
{{rld|0x0d8b442a|16|MEM_BLOCK_UNK|Unknown}}
  −
{{rld|0x0d8b442c|16|MEM_BLOCK_UNK|Unknown}}
  −
{{rld|0x0d8b44c4|16|MEM_BLOCK_UNK|Unknown}}
   
{{rld|0x0d8b4472|16|MEM_BLOCK_ERROR_CID|MEM block protection violation's client ID}}
 
{{rld|0x0d8b4472|16|MEM_BLOCK_ERROR_CID|MEM block protection violation's client ID}}
 
{{rld|0x0d8b4474|16|MEM_BLOCK_ERROR|MEM block protection violation's state}}
 
{{rld|0x0d8b4474|16|MEM_BLOCK_ERROR|MEM block protection violation's state}}
{{rld|0x0d8b4494|16|MEM_BLOCK_UNK|Unknown}}
  −
{{rld|0x0d8b4492|16|MEM_BLOCK_UNK|Unknown}}
   
{{rld|0x0d8b464a|16|MEM_GPU_ENDIANNESS|GPU endianness control}}
 
{{rld|0x0d8b464a|16|MEM_GPU_ENDIANNESS|GPU endianness control}}
 
|}
 
|}
Line 190: Line 184:  
|MODE|MEM1 block translation mode
 
|MODE|MEM1 block translation mode
 
}}
 
}}
 +
 +
= DDR =
 +
DDR registers. These are indirectly accessed through MEM_DDRREG_ADDR and MEM_DDRREG_DATA. For the most part, these have a direct mirror in MEM's MMIO.
 +
 +
== Register List ==
 +
{{reglist|DDR controller}}
 +
{{rld|0x00000000|16|DDR_MARR0_START|Memory protection|drs=8}}
 +
{{rld|0x00000001|16|DDR_MARR0_END}}
 +
{{rld|0x00000002|16|DDR_MARR1_START}}
 +
{{rld|0x00000003|16|DDR_MARR1_END}}
 +
{{rld|0x00000004|16|DDR_MARR2_START}}
 +
{{rld|0x00000005|16|DDR_MARR2_END}}
 +
{{rld|0x00000006|16|DDR_MARR3_START}}
 +
{{rld|0x00000007|16|DDR_MARR3_END}}
 +
{{rld|0x00000008|16|DDR_MARR_CONTROL|MARR{0-3} permissions}}
 +
{{rld|0x00000009|16|DDR_CP_BW_DIAL|Bandwidth Dial (Command Processor)}}
 +
{{rld|0x0000000a|16|DDR_TC_BW_DIAL|Bandwidth Dial (Texture Control)}}
 +
{{rld|0x0000000b|16|DDR_PE_BW_DIAL|Bandwidth Dial (Pixel Engine)}}
 +
{{rld|0x0000000c|16|DDR_CPUR_BW_DIAL|Bandwidth Dial (CPU read)}}
 +
{{rld|0x0000000d|16|DDR_CPUW_BW_DIAL|Bandwidth Dial (CPU write)}}
 +
{{rld|0x0000000e|16|DDR_INT_ENBL|MARR interrupt enable}}
 +
{{rld|0x0000000f|16|DDR_INT_STAT|MARR interrupt status}}
 +
{{rld|0x00000010|16|DDR_INT_CLR|MARR interrupt clear/mask (?)}}
 +
{{rld|0x00000011|16|DDR_INT_ADDRL|MARR interrupt address (lo bits)}}
 +
{{rld|0x00000012|16|DDR_INT_ADDRH|MARR interrupt address (hi bits)}}
 +
{{rld|0x00000013|16|DDR_REFRESH|Memory refresh}}
 +
{{rld|0x00000014|16|DDR_CONFIG|Memory configuration}}
 +
{{rld|0x00000015|16|DDR_LATENCY|Memory latency}}
 +
{{rld|0x00000016|16|DDR_RDTORD|Memory read to read}}
 +
{{rld|0x00000017|16|DDR_RDTOWR|Memory read to write}}
 +
{{rld|0x00000018|16|DDR_WRTORD|Memory write to read}}
 +
{{rld|0x00000019|16|DDR_CP_REQCOUNTH|Memory Request Count (Command Processor) (hi bits)}}
 +
{{rld|0x0000001a|16|DDR_CP_REQCOUNTL|Memory Request Count (Command Processor) (lo bits)}}
 +
{{rld|0x0000001b|16|DDR_TC_REQCOUNTH|Memory Request Count (Texture Control) (hi bits)}}
 +
{{rld|0x0000001c|16|DDR_TC_REQCOUNTL|Memory Request Count (Texture Control) (lo bits)}}
 +
{{rld|0x0000001d|16|DDR_CPUR_REQCOUNTH|Memory Request Count (CPU read) (hi bits)}}
 +
{{rld|0x0000001e|16|DDR_CPUR_REQCOUNTL|Memory Request Count (CPU read) (lo bits)}}
 +
{{rld|0x0000001f|16|DDR_CPUW_REQCOUNTH|Memory Request Count (CPU write) (hi bits)}}
 +
{{rld|0x00000020|16|DDR_CPUW_REQCOUNTL|Memory Request Count (CPU write) (lo bits)}}
 +
{{rld|0x00000021|16|DDR_DSP_REQCOUNTH|Memory Request Count (DSP) (hi bits)}}
 +
{{rld|0x00000022|16|DDR_DSP_REQCOUNTL|Memory Request Count (DSP) (lo bits)}}
 +
{{rld|0x00000023|16|DDR_IO_REQCOUNTH|Memory Request Count (I/O) (hi bits)}}
 +
{{rld|0x00000024|16|DDR_IO_REQCOUNTL|Memory Request Count (I/O) (lo bits)}}
 +
{{rld|0x00000025|16|DDR_VI_REQCOUNTH|Memory Request Count (Video Interface) (hi bits)}}
 +
{{rld|0x00000026|16|DDR_VI_REQCOUNTL|Memory Request Count (Video Interface) (lo bits)}}
 +
{{rld|0x00000027|16|DDR_PE_REQCOUNTH|Memory Request Count (Pixel Engine) (hi bits)}}
 +
{{rld|0x00000028|16|DDR_PE_REQCOUNTL|Memory Request Count (Pixel Engine) (lo bits)}}
 +
{{rld|0x00000029|16|DDR_RF_REQCOUNTH|Memory Request Count (RF) (hi bits)}}
 +
{{rld|0x0000002a|16|DDR_RF_REQCOUNTL|Memory Request Count (RF) (lo bits)}}
 +
{{rld|0x0000002b|16|DDR_FI_REQCOUNTH|Memory Request Count (FI) (hi bits)}}
 +
{{rld|0x0000002c|16|DDR_FI_REQCOUNTL|Memory Request Count (FI) (lo bits)}}
 +
{{rld|0x0000002d|16|DDR_DRV_STRENGTH|Unknown}}
 +
{{rld|0x0000002e|16|DDR_REFRSH_THHD|Unknown}}
 +
{{rld|0x00000030|16|DDR_CPUAHMR_REQCOUNTH|Memory Request Count (CPU AHM read) (hi bits)}}
 +
{{rld|0x00000031|16|DDR_CPUAHMR_REQCOUNTL|Memory Request Count (CPU AHM read) (lo bits)}}
 +
{{rld|0x00000032|16|DDR_CPUAHMW_REQCOUNTH|Memory Request Count (CPU AHM write) (hi bits)}}
 +
{{rld|0x00000033|16|DDR_CPUAHMW_REQCOUNTL|Memory Request Count (CPU AHM write) (lo bits)}}
 +
{{rld|0x00000034|16|DDR_DMAAHMR_REQCOUNTH|Memory Request Count (DMA AHM read) (hi bits)}}
 +
{{rld|0x00000035|16|DDR_DMAAHMR_REQCOUNTL|Memory Request Count (DMA AHM read) (lo bits)}}
 +
{{rld|0x00000036|16|DDR_DMAAHMW_REQCOUNTH|Memory Request Count (DMA AHM write) (hi bits)}}
 +
{{rld|0x00000037|16|DDR_DMAAHMW_REQCOUNTL|Memory Request Count (DMA AHM write) (lo bits)}}
 +
{{rld|0x00000038|16|DDR_ACC_REQCOUNTH|Memory Request Count (ACC) (hi bits)}}
 +
{{rld|0x00000039|16|DDR_ACC_REQCOUNTL|Memory Request Count (ACC) (lo bits)}}
 +
{{rld|0x00000100|16|DDR_COMPAT|Unknown}}
 +
{{rld|0x00000101|16|DDR_PROT_REG|Unknown}}
 +
{{rld|0x00000102|16|DDR_PROT_SPL|SPL protection enable/disable}}
 +
{{rld|0x00000103|16|DDR_PROT_SPL_BASE|SPL protection base address}}
 +
{{rld|0x00000104|16|DDR_PROT_SPL_END|SPL protection end address}}
 +
{{rld|0x00000105|16|DDR_PROT_DDR|DDR protection enable/disable}}
 +
{{rld|0x00000106|16|DDR_PROT_DDR_BASE|DDR protection base address}}
 +
{{rld|0x00000107|16|DDR_PROT_DDR_END|DDR protection end address}}
 +
{{rld|0x00000108|16|DDR_COLSEL|Unknown}}
 +
{{rld|0x00000109|16|DDR_ROWSEL|Unknown}}
 +
{{rld|0x0000010a|16|DDR_BANKSEL|Unknown}}
 +
{{rld|0x0000010b|16|DDR_RANKSEL|Unknown}}
 +
{{rld|0x0000010c|16|DDR_COLMSK|Unknown}}
 +
{{rld|0x0000010d|16|DDR_ROWMSK|Unknown}}
 +
{{rld|0x0000010e|16|DDR_BANKMSK|Unknown}}
 +
{{rld|0x0000010f|16|DDR_PROT_SPL_ERR|SPL protection error}}
 +
{{rld|0x00000110|16|DDR_PROT_DDR_ERR|DDR protection error}}
 +
{{rld|0x00000111|16|DDR_PROT_SPL_MSK|SPL protection mask}}
 +
{{rld|0x00000112|16|DDR_PROT_DDR_MSK|DDR protection mask}}
 +
{{rld|0x00000113|16|DDR_RFSH|Unknown}}
 +
{{rld|0x00000114|16|DDR_AHMFLUSH|AHM flush request}}
 +
{{rld|0x00000115|16|DDR_AHMFLUSH_ACK|AHM flush request acknowledgment}}
 +
{{rld|0x00000134|16|DDR_SEQRD_HWM|Unknown}}
 +
{{rld|0x00000135|16|DDR_SEQWR_HWM|Unknown}}
 +
{{rld|0x00000136|16|DDR_SEQCMD_HWM|Unknown}}
 +
{{rld|0x00000137|16|DDR_CPUAHM_WR_T|Unknown}}
 +
{{rld|0x00000138|16|DDR_DMAAHM_WR_T|Unknown}}
 +
{{rld|0x00000139|16|DDR_DMAAHM0_WR_T|Unknown}}
 +
{{rld|0x0000013a|16|DDR_DMAAHM1_WR_T|Unknown}}
 +
{{rld|0x0000013b|16|DDR_PI_WR_T|Unknown}}
 +
{{rld|0x0000013c|16|DDR_PE_WR_T|Unknown}}
 +
{{rld|0x0000013d|16|DDR_IO_WR_T|Unknown}}
 +
{{rld|0x0000013e|16|DDR_DSP_WR_T|Unknown}}
 +
{{rld|0x0000013f|16|DDR_ACC_WR_T|Unknown}}
 +
{{rld|0x00000140|16|DDR_ARB_MAXWR|Unknown}}
 +
{{rld|0x00000141|16|DDR_ARB_MINRD|Unknown}}
 +
{{rld|0x00000142|16|DDR_PROF_CPUAHM|Unknown}}
 +
{{rld|0x00000143|16|DDR_PROF_CPUAHM0|Unknown}}
 +
{{rld|0x00000144|16|DDR_PROF_DMAAHM|Unknown}}
 +
{{rld|0x00000145|16|DDR_PROF_DMAAHM0|Unknown}}
 +
{{rld|0x00000146|16|DDR_PROF_DMAAHM1|Unknown}}
 +
{{rld|0x00000147|16|DDR_PROF_PI|Unknown}}
 +
{{rld|0x00000148|16|DDR_PROF_VI|Unknown}}
 +
{{rld|0x00000149|16|DDR_PROF_IO|Unknown}}
 +
{{rld|0x0000014a|16|DDR_PROF_DSP|Unknown}}
 +
{{rld|0x0000014b|16|DDR_PROF_TC|Unknown}}
 +
{{rld|0x0000014c|16|DDR_PROF_CP|Unknown}}
 +
{{rld|0x0000014d|16|DDR_PROF_ACC|Unknown}}
 +
{{rld|0x0000014e|16|DDR_RDPR_CPUAHM|Unknown}}
 +
{{rld|0x0000014f|16|DDR_RDPR_CPUAHM0|Unknown}}
 +
{{rld|0x00000150|16|DDR_RDPR_DMAAHM|Unknown}}
 +
{{rld|0x00000151|16|DDR_RDPR_DMAAHM0|Unknown}}
 +
{{rld|0x00000152|16|DDR_RDPR_DMAAHM1|Unknown}}
 +
{{rld|0x00000153|16|DDR_RDPR_PI|Unknown}}
 +
{{rld|0x00000154|16|DDR_RDPR_VI|Unknown}}
 +
{{rld|0x00000155|16|DDR_RDPR_IO|Unknown}}
 +
{{rld|0x00000156|16|DDR_RDPR_DSP|Unknown}}
 +
{{rld|0x00000157|16|DDR_RDPR_TC|Unknown}}
 +
{{rld|0x00000158|16|DDR_RDPR_CP|Unknown}}
 +
{{rld|0x00000159|16|DDR_RDPR_ACC|Unknown}}
 +
{{rld|0x0000015a|16|DDR_ARB_MAXRD|Unknown}}
 +
{{rld|0x0000015b|16|DDR_ARB_MISC|Unknown}}
 +
{{rld|0x0000015c|16|DDR_ARAM_EMUL|Unknown}}
 +
{{rld|0x0000015d|16|DDR_WRMUX|Unknown}}
 +
{{rld|0x0000015e|16|DDR_PERF|Unknown}}
 +
{{rld|0x0000015f|16|DDR_PERF_READ|Unknown}}
 +
{{rld|0x00000160|16|DDR_ARB_EXADDR|Unknown}}
 +
{{rld|0x00000161|16|DDR_ARB_EXCMD|Unknown}}
 +
{{rld|0x00000162|16|DDR_SEQ_DATA|DDR SEQ register's value to read/write}}
 +
{{rld|0x00000163|16|DDR_SEQ_ADDR|DDR SEQ register's address to read/write}}
 +
{{rld|0x00000164|16|DDR_BIST_DATA|DDR BIST register's address to read/write}}
 +
{{rld|0x00000165|16|DDR_BIST_ADDR|DDR BIST register's address to read/write}}
 +
{{rld|0x00000166|16|DDR_EDRAM_REFRESH_CTRL|EDRAM refresh settings}}
 +
{{rld|0x00000167|16|DDR_EDRAM_REFRESH_VAL|EDRAM refresh value}}
 +
{{rld|0x0000016a|16|DDR_MEM1_COMPAT_MODE|Unknown}}
 +
{{rld|0x0000016b|16|DDR_CAFE_DDR_RANGE_TOP|Unknown}}
 +
{{rld|0x00000180|16|DDR_SEQ0_DATA|DDR SEQ0 sequential register's value to read/write}}
 +
{{rld|0x00000181|16|DDR_SEQ0_ADDR|DDR SEQ0 sequential register's address to read/write}}
 +
{{rld|0x00000200|16|DDR_BLOCK_MEM0_CFG|MEM block protection configuration for MEM0}}
 +
{{rld|0x00000201|16|DDR_BLOCK_MEM1_CFG|MEM block protection configuration for MEM1}}
 +
{{rld|0x00000202|16|DDR_BLOCK_MEM2_CFG|MEM block protection configuration for MEM2}}
 +
{{rld|0x00000203|16|DDR_BLOCK_ERROR_ADDR_LOW|MEM block protection violation's address (low)}}
 +
{{rld|0x00000204|16|DDR_BLOCK_ERROR_ADDR_HIGH|MEM block protection violation's address (high)}}
 +
{{rld|0x00000239|16|DDR_BLOCK_ERROR_CID|MEM block protection violation's client ID}}
 +
{{rld|0x0000023a|16|DDR_BLOCK_ERROR|MEM block protection violation's state}}
 +
{{rld|0x00000325|16|DDR_GPU_ENDIANNESS|GPU endianness control}}
 +
|}
 +
 +
== Register Details ==
 +
 +
= SEQ =
 +
DDR sequencer registers. These are indirectly accessed through MEM_SEQ_ADDR/DDR_SEQ_ADDR and MEM_SEQ_DATA/DDR_SEQ_DATA.
 +
 +
== Register List ==
 +
{{reglist|DDR controller}}
 +
{{rld|0x00000000|16|SEQ_BL4|Unknown}}
 +
{{rld|0x00000001|16|SEQ_TRCDR|Unknown}}
 +
{{rld|0x00000002|16|SEQ_TRCDW|Unknown}}
 +
{{rld|0x00000003|16|SEQ_TRAS|Unknown}}
 +
{{rld|0x00000004|16|SEQ_TRC|Unknown}}
 +
{{rld|0x00000005|16|SEQ_TCL|Unknown}}
 +
{{rld|0x00000006|16|SEQ_TWL|Unknown}}
 +
{{rld|0x00000007|16|SEQ_RRL|Unknown}}
 +
{{rld|0x00000008|16|SEQ_TRRD|Unknown}}
 +
{{rld|0x00000009|16|SEQ_TFAW|Unknown}}
 +
{{rld|0x0000000a|16|SEQ_TRFC|Unknown}}
 +
{{rld|0x0000000b|16|SEQ_TRDWR|Unknown}}
 +
{{rld|0x0000000c|16|SEQ_TWRRD|Unknown}}
 +
{{rld|0x0000000d|16|SEQ_TR2R|Unknown}}
 +
{{rld|0x0000000e|16|SEQ_RDPR|Unknown}}
 +
{{rld|0x0000000f|16|SEQ_WRPR|Unknown}}
 +
{{rld|0x00000010|16|SEQ_BANK4|Unknown}}
 +
{{rld|0x00000011|16|SEQ_QSOE0|Unknown}}
 +
{{rld|0x00000012|16|SEQ_QSOE1|Unknown}}
 +
{{rld|0x00000013|16|SEQ_QSOE2|Unknown}}
 +
{{rld|0x00000014|16|SEQ_QSOE3|Unknown}}
 +
{{rld|0x00000015|16|SEQ_RANK2|Unknown}}
 +
{{rld|0x00000016|16|SEQ_DDR2|Unknown}}
 +
{{rld|0x00000017|16|SEQ_RSTB|Unknown}}
 +
{{rld|0x00000018|16|SEQ_CKEEN|Unknown}}
 +
{{rld|0x00000019|16|SEQ_CKEDYN|Unknown}}
 +
{{rld|0x0000001a|16|SEQ_CKESR|Unknown}}
 +
{{rld|0x0000001b|16|SEQ_ODTON|Unknown}}
 +
{{rld|0x0000001c|16|SEQ_ODTDYN|Unknown}}
 +
{{rld|0x0000001d|16|SEQ_ODT0|Unknown}}
 +
{{rld|0x0000001e|16|SEQ_ODT1|Unknown}}
 +
{{rld|0x0000001f|16|SEQ_RECEN0|Unknown}}
 +
{{rld|0x00000020|16|SEQ_RECEN1|Unknown}}
 +
{{rld|0x00000021|16|SEQ_IDLEST|Unknown}}
 +
{{rld|0x00000022|16|SEQ_NPLRD|Unknown}}
 +
{{rld|0x00000023|16|SEQ_NPLCONF|Unknown}}
 +
{{rld|0x00000024|16|SEQ_NOOPEN|Unknown}}
 +
{{rld|0x00000025|16|SEQ_QSDEF|Unknown}}
 +
{{rld|0x00000026|16|SEQ_ODTPIN|Unknown}}
 +
{{rld|0x00000027|16|SEQ_NPLDLY|Unknown}}
 +
{{rld|0x00000028|16|SEQ_STATUS|Unknown}}
 +
{{rld|0x00000029|16|SEQ_VENDORID0|Unknown}}
 +
{{rld|0x0000002a|16|SEQ_VENDORID1|Unknown}}
 +
{{rld|0x0000002b|16|SEQ_NMOSPD|Unknown}}
 +
{{rld|0x0000002c|16|SEQ_STR0|Unknown}}
 +
{{rld|0x0000002d|16|SEQ_STR1|Unknown}}
 +
{{rld|0x0000002e|16|SEQ_STR2|Unknown}}
 +
{{rld|0x0000002f|16|SEQ_STR3|Unknown}}
 +
{{rld|0x00000030|16|SEQ_APAD0|Unknown}}
 +
{{rld|0x00000031|16|SEQ_APAD1|Unknown}}
 +
{{rld|0x00000032|16|SEQ_CKPAD0|Unknown}}
 +
{{rld|0x00000033|16|SEQ_CKPAD1|Unknown}}
 +
{{rld|0x00000034|16|SEQ_CMDPAD0|Unknown}}
 +
{{rld|0x00000035|16|SEQ_CMDPAD1|Unknown}}
 +
{{rld|0x00000036|16|SEQ_DQPAD0|Unknown}}
 +
{{rld|0x00000037|16|SEQ_DQPAD1|Unknown}}
 +
{{rld|0x00000038|16|SEQ_QSPAD0|Unknown}}
 +
{{rld|0x00000039|16|SEQ_QSPAD1|Unknown}}
 +
{{rld|0x0000003a|16|SEQ_WRDQ0|Unknown}}
 +
{{rld|0x0000003b|16|SEQ_WRDQ1|Unknown}}
 +
{{rld|0x0000003c|16|SEQ_WRQS0|Unknown}}
 +
{{rld|0x0000003d|16|SEQ_WRQS1|Unknown}}
 +
{{rld|0x0000003e|16|SEQ_MADJL|Unknown}}
 +
{{rld|0x0000003f|16|SEQ_MADJH|Unknown}}
 +
{{rld|0x00000040|16|SEQ_SADJ0L|Unknown}}
 +
{{rld|0x00000041|16|SEQ_SADJ0H|Unknown}}
 +
{{rld|0x00000042|16|SEQ_SADJ1L|Unknown}}
 +
{{rld|0x00000043|16|SEQ_SADJ1H|Unknown}}
 +
{{rld|0x00000044|16|SEQ_RDDQ1|Unknown}}
 +
{{rld|0x00000045|16|SEQ_WR|Unknown}}
 +
{{rld|0x00000046|16|SEQ_PADA|Unknown}}
 +
{{rld|0x00000047|16|SEQ_PAD0|Unknown}}
 +
{{rld|0x00000048|16|SEQ_PAD1|Unknown}}
 +
{{rld|0x00000049|16|SEQ_ARAM|Unknown}}
 +
{{rld|0x0000004a|16|SEQ_WR2PR|Unknown}}
 +
{{rld|0x0000004b|16|SEQ_SYNC|Unknown}}
 +
{{rld|0x0000004c|16|SEQ_RECVON|Unknown}}
 +
|}
 +
 +
== Register Details ==
 +
 +
= BIST =
 +
DDR built-in self-test registers. These are indirectly accessed through MEM_BIST_ADDR/DDR_BIST_ADDR and MEM_BIST_DATA/DDR_BIST_DATA.
 +
 +
== Register List ==
 +
{{reglist|DDR controller}}
 +
{{rld|0x00000000|16|BIST_EN|Unknown}}
 +
{{rld|0x00000001|16|BIST_WRGO|Unknown}}
 +
{{rld|0x00000002|16|BIST_WRRPT|Unknown}}
 +
{{rld|0x00000003|16|BIST_WRCNTH|Unknown}}
 +
{{rld|0x00000004|16|BIST_WRCNTL|Unknown}}
 +
{{rld|0x00000005|16|BIST_RDGO|Unknown}}
 +
{{rld|0x00000006|16|BIST_RDRPT|Unknown}}
 +
{{rld|0x00000007|16|BIST_RDCNTH|Unknown}}
 +
{{rld|0x00000008|16|BIST_RDCNTL|Unknown}}
 +
{{rld|0x00000009|16|BIST_WA_CH|Unknown}}
 +
{{rld|0x0000000a|16|BIST_WA_CL|Unknown}}
 +
{{rld|0x0000000b|16|BIST_WA_SCNTH|Unknown}}
 +
{{rld|0x0000000c|16|BIST_WA_SCNTL|Unknown}}
 +
{{rld|0x0000000d|16|BIST_WA_SCONH|Unknown}}
 +
{{rld|0x0000000e|16|BIST_WA_SCONL|Unknown}}
 +
{{rld|0x0000000f|16|BIST_RA_CH|Unknown}}
 +
{{rld|0x00000010|16|BIST_RA_CL|Unknown}}
 +
{{rld|0x00000011|16|BIST_RA_SCNTH|Unknown}}
 +
{{rld|0x00000012|16|BIST_RA_SCNTL|Unknown}}
 +
{{rld|0x00000013|16|BIST_RA_SCONH|Unknown}}
 +
{{rld|0x00000014|16|BIST_RA_SCONL|Unknown}}
 +
{{rld|0x00000015|16|BIST_WD_C0H|Unknown}}
 +
{{rld|0x00000016|16|BIST_WD_C0L|Unknown}}
 +
{{rld|0x00000017|16|BIST_WD_C1H|Unknown}}
 +
{{rld|0x00000018|16|BIST_WD_C1L|Unknown}}
 +
{{rld|0x00000019|16|BIST_WD_C2H|Unknown}}
 +
{{rld|0x0000001a|16|BIST_WD_C2L|Unknown}}
 +
{{rld|0x0000001b|16|BIST_WD_C3H|Unknown}}
 +
{{rld|0x0000001c|16|BIST_WD_C3L|Unknown}}
 +
{{rld|0x0000001d|16|BIST_WD_C4H|Unknown}}
 +
{{rld|0x0000001e|16|BIST_WD_C4L|Unknown}}
 +
{{rld|0x0000001f|16|BIST_WD_C5H|Unknown}}
 +
{{rld|0x00000020|16|BIST_WD_C5L|Unknown}}
 +
{{rld|0x00000021|16|BIST_WD_C6H|Unknown}}
 +
{{rld|0x00000022|16|BIST_WD_C6L|Unknown}}
 +
{{rld|0x00000023|16|BIST_WD_C7H|Unknown}}
 +
{{rld|0x00000024|16|BIST_WD_C7L|Unknown}}
 +
{{rld|0x00000025|16|BIST_WD_SCNTH|Unknown}}
 +
{{rld|0x00000026|16|BIST_WD_SCNTL|Unknown}}
 +
{{rld|0x00000027|16|BIST_WD_SCONH|Unknown}}
 +
{{rld|0x00000028|16|BIST_WD_SCONL|Unknown}}
 +
{{rld|0x00000029|16|BIST_RD_C0H|Unknown}}
 +
{{rld|0x0000002a|16|BIST_RD_C0L|Unknown}}
 +
{{rld|0x0000002b|16|BIST_RD_C1H|Unknown}}
 +
{{rld|0x0000002c|16|BIST_RD_C1L|Unknown}}
 +
{{rld|0x0000002d|16|BIST_RD_C2H|Unknown}}
 +
{{rld|0x0000002e|16|BIST_RD_C2L|Unknown}}
 +
{{rld|0x0000002f|16|BIST_RD_C3H|Unknown}}
 +
{{rld|0x00000030|16|BIST_RD_C3L|Unknown}}
 +
{{rld|0x00000031|16|BIST_RD_C4H|Unknown}}
 +
{{rld|0x00000032|16|BIST_RD_C4L|Unknown}}
 +
{{rld|0x00000033|16|BIST_RD_C5H|Unknown}}
 +
{{rld|0x00000034|16|BIST_RD_C5L|Unknown}}
 +
{{rld|0x00000035|16|BIST_RD_C6H|Unknown}}
 +
{{rld|0x00000036|16|BIST_RD_C6L|Unknown}}
 +
{{rld|0x00000037|16|BIST_RD_C7H|Unknown}}
 +
{{rld|0x00000038|16|BIST_RD_C7L|Unknown}}
 +
{{rld|0x00000039|16|BIST_RD_SCNTH|Unknown}}
 +
{{rld|0x0000003a|16|BIST_RD_SCNTL|Unknown}}
 +
{{rld|0x0000003b|16|BIST_RD_SCONH|Unknown}}
 +
{{rld|0x0000003c|16|BIST_RD_SCONL|Unknown}}
 +
{{rld|0x0000003d|16|BIST_RD_MSKH|Unknown}}
 +
{{rld|0x0000003e|16|BIST_RD_MSKL|Unknown}}
 +
{{rld|0x0000003f|16|BIST_WRIDLE|Unknown}}
 +
{{rld|0x00000040|16|BIST_RDIDLE|Unknown}}
 +
{{rld|0x00000041|16|BIST_ERRCNT|Unknown}}
 +
|}
 +
 +
== Register Details ==
 +
 +
= DPERF =
 +
DDR performance registers. These are indirectly accessed through MEM_PERF/DDR_PERF and MEM_PERF_READ/DDR_PERF_READ.
 +
 +
== Register List ==
 +
{{reglist|DDR controller}}
 +
{{rld|0x00000000|16|DPERF_TIME_H|Unknown}}
 +
{{rld|0x00000001|16|DPERF_TIME_L|Unknown}}
 +
{{rld|0x00000002|16|DPERF_SEQCMD_H|Unknown}}
 +
{{rld|0x00000003|16|DPERF_SEQCMD_L|Unknown}}
 +
{{rld|0x00000004|16|DPERF_SEQDATA_H|Unknown}}
 +
{{rld|0x00000005|16|DPERF_SEQDATA_L|Unknown}}
 +
{{rld|0x00000006|16|DPERF_RF_CNT_PI_H|Unknown}}
 +
{{rld|0x00000007|16|DPERF_RF_CNT_PI_L|Unknown}}
 +
{{rld|0x00000008|16|DPERF_NREQ_DDR_PI_H|Unknown}}
 +
{{rld|0x00000009|16|DPERF_NREQ_DDR_PI_L|Unknown}}
 +
{{rld|0x0000000a|16|DPERF_TREQ_DDR_PI_H|Unknown}}
 +
{{rld|0x0000000b|16|DPERF_TREQ_DDR_PI_L|Unknown}}
 +
{{rld|0x0000000c|16|DPERF_TACK_DDR_PI_H|Unknown}}
 +
{{rld|0x0000000d|16|DPERF_TACK_DDR_PI_L|Unknown}}
 +
{{rld|0x0000000e|16|DPERF_NREQ_SPL_PI_H|Unknown}}
 +
{{rld|0x0000000f|16|DPERF_NREQ_SPL_PI_L|Unknown}}
 +
{{rld|0x00000010|16|DPERF_TREQ_SPL_PI_H|Unknown}}
 +
{{rld|0x00000011|16|DPERF_TREQ_SPL_PI_L|Unknown}}
 +
{{rld|0x00000012|16|DPERF_TACK_SPL_PI_H|Unknown}}
 +
{{rld|0x00000013|16|DPERF_TACK_SPL_PI_L|Unknown}}
 +
{{rld|0x00000014|16|DPERF_RF_CNT_CPUAHM_H|Unknown}}
 +
{{rld|0x00000015|16|DPERF_RF_CNT_CPUAHM_L|Unknown}}
 +
{{rld|0x00000016|16|DPERF_NREQ_DDR_CPUAHM_H|Unknown}}
 +
{{rld|0x00000017|16|DPERF_NREQ_DDR_CPUAHM_L|Unknown}}
 +
{{rld|0x00000018|16|DPERF_TREQ_DDR_CPUAHM_H|Unknown}}
 +
{{rld|0x00000019|16|DPERF_TREQ_DDR_CPUAHM_L|Unknown}}
 +
{{rld|0x0000001a|16|DPERF_TACK_DDR_CPUAHM_H|Unknown}}
 +
{{rld|0x0000001b|16|DPERF_TACK_DDR_CPUAHM_L|Unknown}}
 +
{{rld|0x0000001c|16|DPERF_NREQ_SPL_CPUAHM_H|Unknown}}
 +
{{rld|0x0000001d|16|DPERF_NREQ_SPL_CPUAHM_L|Unknown}}
 +
{{rld|0x0000001e|16|DPERF_TREQ_SPL_CPUAHM_H|Unknown}}
 +
{{rld|0x0000001f|16|DPERF_TREQ_SPL_CPUAHM_L|Unknown}}
 +
{{rld|0x00000020|16|DPERF_TACK_SPL_CPUAHM_H|Unknown}}
 +
{{rld|0x00000021|16|DPERF_TACK_SPL_CPUAHM_L|Unknown}}
 +
{{rld|0x00000022|16|DPERF_RF_CNT_DMAAHM_H|Unknown}}
 +
{{rld|0x00000023|16|DPERF_RF_CNT_DMAAHM_L|Unknown}}
 +
{{rld|0x00000024|16|DPERF_NREQ_DDR_DMAAHM_H|Unknown}}
 +
{{rld|0x00000025|16|DPERF_NREQ_DDR_DMAAHM_L|Unknown}}
 +
{{rld|0x00000026|16|DPERF_TREQ_DDR_DMAAHM_H|Unknown}}
 +
{{rld|0x00000027|16|DPERF_TREQ_DDR_DMAAHM_L|Unknown}}
 +
{{rld|0x00000028|16|DPERF_TACK_DDR_DMAAHM_H|Unknown}}
 +
{{rld|0x00000029|16|DPERF_TACK_DDR_DMAAHM_L|Unknown}}
 +
{{rld|0x0000002a|16|DPERF_NREQ_SPL_DMAAHM_H|Unknown}}
 +
{{rld|0x0000002b|16|DPERF_NREQ_SPL_DMAAHM_L|Unknown}}
 +
{{rld|0x0000002c|16|DPERF_TREQ_SPL_DMAAHM_H|Unknown}}
 +
{{rld|0x0000002d|16|DPERF_TREQ_SPL_DMAAHM_L|Unknown}}
 +
{{rld|0x0000002e|16|DPERF_TACK_SPL_DMAAHM_H|Unknown}}
 +
{{rld|0x0000002f|16|DPERF_TACK_SPL_DMAAHM_L|Unknown}}
 +
{{rld|0x00000030|16|DPERF_RF_CNT_VI_H|Unknown}}
 +
{{rld|0x00000031|16|DPERF_RF_CNT_VI_L|Unknown}}
 +
{{rld|0x00000032|16|DPERF_NREQ_DDR_VI_H|Unknown}}
 +
{{rld|0x00000033|16|DPERF_NREQ_DDR_VI_L|Unknown}}
 +
{{rld|0x00000034|16|DPERF_TREQ_DDR_VI_H|Unknown}}
 +
{{rld|0x00000035|16|DPERF_TREQ_DDR_VI_L|Unknown}}
 +
{{rld|0x00000036|16|DPERF_TACK_DDR_VI_H|Unknown}}
 +
{{rld|0x00000037|16|DPERF_TACK_DDR_VI_L|Unknown}}
 +
{{rld|0x00000038|16|DPERF_NREQ_SPL_VI_H|Unknown}}
 +
{{rld|0x00000039|16|DPERF_NREQ_SPL_VI_L|Unknown}}
 +
{{rld|0x0000003a|16|DPERF_TREQ_SPL_VI_H|Unknown}}
 +
{{rld|0x0000003b|16|DPERF_TREQ_SPL_VI_L|Unknown}}
 +
{{rld|0x0000003c|16|DPERF_TACK_SPL_VI_H|Unknown}}
 +
{{rld|0x0000003d|16|DPERF_TACK_SPL_VI_L|Unknown}}
 +
{{rld|0x0000003e|16|DPERF_RF_CNT_IO_H|Unknown}}
 +
{{rld|0x0000003f|16|DPERF_RF_CNT_IO_L|Unknown}}
 +
{{rld|0x00000040|16|DPERF_NREQ_DDR_IO_H|Unknown}}
 +
{{rld|0x00000041|16|DPERF_NREQ_DDR_IO_L|Unknown}}
 +
{{rld|0x00000042|16|DPERF_TREQ_DDR_IO_H|Unknown}}
 +
{{rld|0x00000043|16|DPERF_TREQ_DDR_IO_L|Unknown}}
 +
{{rld|0x00000044|16|DPERF_TACK_DDR_IO_H|Unknown}}
 +
{{rld|0x00000045|16|DPERF_TACK_DDR_IO_L|Unknown}}
 +
{{rld|0x00000046|16|DPERF_NREQ_SPL_IO_H|Unknown}}
 +
{{rld|0x00000047|16|DPERF_NREQ_SPL_IO_L|Unknown}}
 +
{{rld|0x00000048|16|DPERF_TREQ_SPL_IO_H|Unknown}}
 +
{{rld|0x00000049|16|DPERF_TREQ_SPL_IO_L|Unknown}}
 +
{{rld|0x0000004a|16|DPERF_TACK_SPL_IO_H|Unknown}}
 +
{{rld|0x0000004b|16|DPERF_TACK_SPL_IO_L|Unknown}}
 +
{{rld|0x0000004c|16|DPERF_RF_CNT_DSP_H|Unknown}}
 +
{{rld|0x0000004d|16|DPERF_RF_CNT_DSP_L|Unknown}}
 +
{{rld|0x0000004e|16|DPERF_NREQ_DDR_DSP_H|Unknown}}
 +
{{rld|0x0000004f|16|DPERF_NREQ_DDR_DSP_L|Unknown}}
 +
{{rld|0x00000050|16|DPERF_TREQ_DDR_DSP_H|Unknown}}
 +
{{rld|0x00000051|16|DPERF_TREQ_DDR_DSP_L|Unknown}}
 +
{{rld|0x00000052|16|DPERF_TACK_DDR_DSP_H|Unknown}}
 +
{{rld|0x00000053|16|DPERF_TACK_DDR_DSP_L|Unknown}}
 +
{{rld|0x00000054|16|DPERF_NREQ_SPL_DSP_H|Unknown}}
 +
{{rld|0x00000055|16|DPERF_NREQ_SPL_DSP_L|Unknown}}
 +
{{rld|0x00000056|16|DPERF_TREQ_SPL_DSP_H|Unknown}}
 +
{{rld|0x00000057|16|DPERF_TREQ_SPL_DSP_L|Unknown}}
 +
{{rld|0x00000058|16|DPERF_TACK_SPL_DSP_H|Unknown}}
 +
{{rld|0x00000059|16|DPERF_TACK_SPL_DSP_L|Unknown}}
 +
{{rld|0x0000005a|16|DPERF_RF_CNT_TC_H|Unknown}}
 +
{{rld|0x0000005b|16|DPERF_RF_CNT_TC_L|Unknown}}
 +
{{rld|0x0000005c|16|DPERF_NREQ_DDR_TC_H|Unknown}}
 +
{{rld|0x0000005d|16|DPERF_NREQ_DDR_TC_L|Unknown}}
 +
{{rld|0x0000005e|16|DPERF_TREQ_DDR_TC_H|Unknown}}
 +
{{rld|0x0000005f|16|DPERF_TREQ_DDR_TC_L|Unknown}}
 +
{{rld|0x00000060|16|DPERF_TACK_DDR_TC_H|Unknown}}
 +
{{rld|0x00000061|16|DPERF_TACK_DDR_TC_L|Unknown}}
 +
{{rld|0x00000062|16|DPERF_NREQ_SPL_TC_H|Unknown}}
 +
{{rld|0x00000063|16|DPERF_NREQ_SPL_TC_L|Unknown}}
 +
{{rld|0x00000064|16|DPERF_TREQ_SPL_TC_H|Unknown}}
 +
{{rld|0x00000065|16|DPERF_TREQ_SPL_TC_L|Unknown}}
 +
{{rld|0x00000066|16|DPERF_TACK_SPL_TC_H|Unknown}}
 +
{{rld|0x00000067|16|DPERF_TACK_SPL_TC_L|Unknown}}
 +
{{rld|0x00000068|16|DPERF_RF_CNT_CP_H|Unknown}}
 +
{{rld|0x00000069|16|DPERF_RF_CNT_CP_L|Unknown}}
 +
{{rld|0x0000006a|16|DPERF_NREQ_DDR_CP_H|Unknown}}
 +
{{rld|0x0000006b|16|DPERF_NREQ_DDR_CP_L|Unknown}}
 +
{{rld|0x0000006c|16|DPERF_TREQ_DDR_CP_H|Unknown}}
 +
{{rld|0x0000006d|16|DPERF_TREQ_DDR_CP_L|Unknown}}
 +
{{rld|0x0000006e|16|DPERF_TACK_DDR_CP_H|Unknown}}
 +
{{rld|0x0000006f|16|DPERF_TACK_DDR_CP_L|Unknown}}
 +
{{rld|0x00000070|16|DPERF_NREQ_SPL_CP_H|Unknown}}
 +
{{rld|0x00000071|16|DPERF_NREQ_SPL_CP_L|Unknown}}
 +
{{rld|0x00000072|16|DPERF_TREQ_SPL_CP_H|Unknown}}
 +
{{rld|0x00000073|16|DPERF_TREQ_SPL_CP_L|Unknown}}
 +
{{rld|0x00000074|16|DPERF_TACK_SPL_CP_H|Unknown}}
 +
{{rld|0x00000075|16|DPERF_TACK_SPL_CP_L|Unknown}}
 +
{{rld|0x00000076|16|DPERF_RF_CNT_ACC_H|Unknown}}
 +
{{rld|0x00000077|16|DPERF_RF_CNT_ACC_L|Unknown}}
 +
{{rld|0x00000078|16|DPERF_NREQ_DDR_ACC_H|Unknown}}
 +
{{rld|0x00000079|16|DPERF_NREQ_DDR_ACC_L|Unknown}}
 +
{{rld|0x0000007a|16|DPERF_TREQ_DDR_ACC_H|Unknown}}
 +
{{rld|0x0000007b|16|DPERF_TREQ_DDR_ACC_L|Unknown}}
 +
{{rld|0x0000007c|16|DPERF_TACK_DDR_ACC_H|Unknown}}
 +
{{rld|0x0000007d|16|DPERF_TACK_DDR_ACC_L|Unknown}}
 +
{{rld|0x0000007e|16|DPERF_NREQ_SPL_ACC_H|Unknown}}
 +
{{rld|0x0000007f|16|DPERF_NREQ_SPL_ACC_L|Unknown}}
 +
{{rld|0x00000080|16|DPERF_TREQ_SPL_ACC_H|Unknown}}
 +
{{rld|0x00000081|16|DPERF_TREQ_SPL_ACC_L|Unknown}}
 +
{{rld|0x00000082|16|DPERF_TACK_SPL_ACC_H|Unknown}}
 +
{{rld|0x00000083|16|DPERF_TACK_SPL_ACC_L|Unknown}}
 +
|}
 +
 +
== Register Details ==