Hardware/Memory Controller
This is an old revision of this page, as edited by Metaconstruct (talk | contribs) at 04:00, 29 March 2020. It may differ significantly from the current revision. |
These registers contain various settings relevant to configuring system memory (and perhaps some aspects of the AHB).
boot1 seems responsible for initially configuring a lot of these registers during the boot process - most likely for setting the DDR memory timings.
In general, IOS (including BC/MIOS) seem to interact with these early when booting.
The IOS[58] kernel also exposes syscall 0x57 for writing to this register space, which only appears to be used by the STM module.
Memory Controller | |
Access | |
---|---|
Broadway | ??? |
Starlet | Full |
Registers | |
Base | 0x0d8b4200 |
Length | 0xcc (?) |
Access size | 16 bits |
Byte order | Big Endian |
Some of these register banks (SEQ/BIST/PERF) are not directly mapped into memory, but are instead accessed using a corresponding pair of registers:
- For the DDR SEQ registers, MEM_SEQ_ADDR and MEM_SEQ_DATA
- For the DDR BIST, MEM_BIST_ADDR and MEM_BIST_DATA
Although the memory controller registers are actually mapped and available to ARM starting at 0x0d8b4200, some [all?] of the indirect accesses are performed starting with another pair in the Memory Interface registers.
Note: MEM_ARB_EXADDR and MEM_ARB_EXCMD at the end of the register space may also indicate an additional set of indirectly-accessible registers.
Memory Controller Base Registers | |||
---|---|---|---|
Address | Bits | Name | Description |
0x0d8b4200 | 16 | MEM_COMPAT | |
0x0d8b4202 | 16 | MEM_PROT_REG | |
0x0d8b4204 | 16 | MEM_PROT_SPL | SPL (?) protection enabled/disable |
0x0d8b4206 | 16 | MEM_PROT_SPL_BASE | SPL (?) protection base address |
0x0d8b4208 | 16 | MEM_PROT_SPL_END | SPL (?) protection end address |
0x0d8b420a | 16 | MEM_PROT_DDR | DDR protection enable/disable |
0x0d8b420c | 16 | MEM_PROT_DDR_BASE | DDR protection base address |
0x0d8b420e | 16 | MEM_PROT_DDR_END | DDR protection end address |
0x0d8b4210 | 16 | MEM_COLSEL | |
0x0d8b4212 | 16 | MEM_ROWSEL | |
0x0d8b4214 | 16 | MEM_BANKSEL | |
0x0d8b4216 | 16 | MEM_RANKSEL | |
0x0d8b4218 | 16 | MEM_COLMSK | |
0x0d8b421a | 16 | MEM_ROWMSK | |
0x0d8b421c | 16 | MEM_BANKMSK | |
0x0d8b421e | 16 | MEM_PROT_SPL_ERR | |
0x0d8b4220 | 16 | MEM_PROT_DDR_ERR | |
0x0d8b4222 | 16 | MEM_PROT_SPL_MSK | |
0x0d8b4224 | 16 | MEM_PROT_DDR_MSK | |
0x0d8b4226 | 16 | MEM_RFSH | |
0x0d8b4228 | 16 | MEM_AHMFLUSH | AHB flush request |
0x0d8b422a | 16 | MEM_AHMFLUSH_ACK | AHB flush request acknowledgment |
0x0d8b4268 | 16 | MEM_SEQRD_HWM | |
0x0d8b426a | 16 | MEM_SEQWR_HWM | |
0x0d8b426c | 16 | MEM_SEQCMD_HWM | |
0x0d8b426e | 16 | MEM_CPUAHM_WR_T | |
0x0d8b4270 | 16 | MEM_DMAAHM_WR_T | |
0x0d8b4272 | 16 | MEM_DMAAHM0_WR_T | |
0x0d8b4274 | 16 | MEM_DMAAHM1_WR_T | |
0x0d8b4276 | 16 | MEM_PI_WR_T | |
0x0d8b4278 | 16 | MEM_PE_WR_T | |
0x0d8b427a | 16 | MEM_IO_WR_T | |
0x0d8b427c | 16 | MEM_DSP_WR_T | |
0x0d8b427e | 16 | MEM_ACC_WR_T | |
0x0d8b4280 | 16 | MEM_ARB_MAXWR | |
0x0d8b4282 | 16 | MEM_ARB_MINRD | |
0x0d8b4284 | 16 | MEM_PROF_CPUAHM | |
0x0d8b4286 | 16 | MEM_PROF_CPUAHM0 | |
0x0d8b4288 | 16 | MEM_PROF_DMAAHM | |
0x0d8b428a | 16 | MEM_PROF_DMAAHM0 | |
0x0d8b428c | 16 | MEM_PROF_DMAAHM1 | |
0x0d8b428e | 16 | MEM_PROF_PI | |
0x0d8b4290 | 16 | MEM_PROF_VI | |
0x0d8b4292 | 16 | MEM_PROF_IO | |
0x0d8b4294 | 16 | MEM_PROF_DSP | |
0x0d8b4296 | 16 | MEM_PROF_TC | |
0x0d8b4298 | 16 | MEM_PROF_CP | |
0x0d8b429a | 16 | MEM_PROF_ACC | |
0x0d8b429c | 16 | MEM_RDPR_CPUAHM | |
0x0d8b429e | 16 | MEM_RDPR_CPUAHM0 | |
0x0d8b42a0 | 16 | MEM_RDPR_DMAAHM | |
0x0d8b42a2 | 16 | MEM_RDPR_DMAAHM0 | |
0x0d8b42a4 | 16 | MEM_RDPR_DMAAHM1 | |
0x0d8b42a6 | 16 | MEM_RDPR_PI | |
0x0d8b42a8 | 16 | MEM_RDPR_VI | |
0x0d8b42aa | 16 | MEM_RDPR_IO | |
0x0d8b42ac | 16 | MEM_RDPR_DSP | |
0x0d8b42ae | 16 | MEM_RDPR_TC | |
0x0d8b42b0 | 16 | MEM_RDPR_CP | |
0x0d8b42b2 | 16 | MEM_RDPR_ACC | |
0x0d8b42b4 | 16 | MEM_ARB_MAXRD | |
0x0d8b42b6 | 16 | MEM_ARB_MISC | |
0x0d8b42b8 | 16 | MEM_ARAM_EMUL | "ARAM Emulation" (?) |
0x0d8b42ba | 16 | MEM_WRMUX | |
0x0d8b42bc | 16 | MEM_PERF | |
0x0d8b42be | 16 | MEM_PERF_READ | |
0x0d8b42c0 | 16 | MEM_ARB_EXADDR | |
0x0d8b42c2 | 16 | MEM_ARB_EXCMD | |
0x0d8b42c4 | 16 | MEM_SEQ_DATA | Data from read (or for pending write) on DDR SEQ |
0x0d8b42c6 | 16 | MEM_SEQ_ADDR | Offset for access on DDR SEQ register space |
0x0d8b42c8 | 16 | MEM_BIST_DATA | Data from read (or for pending write) on DDR BIST |
0x0d8b42ca | 16 | MEM_BIST_ADDR | Offset for access on DDR BIST register space |
DDR SEQ Register Space
SEQ | |
Access | |
---|---|
Broadway | ??? |
Starlet | Full |
Registers | |
Base | N/A |
Length | ??? |
Access size | 16 bits |
Byte order | Big Endian |
Note: These registers are NOT mapped into memory.
DDR SEQ Registers | |||
---|---|---|---|
Address | Bits | Name | Description |
DDR BIST Register Space
BIST | |
Access | |
---|---|
Broadway | ??? |
Starlet | Full |
Registers | |
Base | N/A |
Length | ??? |
Access size | 16 bits |
Byte order | Big Endian |
Note: These registers are NOT mapped into memory.
DDR BIST Registers | |||
---|---|---|---|
Address | Bits | Name | Description |
DDR PERF Register Space
PERF | |
Access | |
---|---|
Broadway | ??? |
Starlet | Full |
Registers | |
Base | N/A |
Length | ??? |
Access size | 16 bits |
Byte order | Big Endian |
Note: These registers are NOT mapped into memory.
DDR PERF Registers | |||
---|---|---|---|
Address | Bits | Name | Description |