diff options
Diffstat (limited to 'arch/arm/include/asm/arch-sunxi')
-rw-r--r-- | arch/arm/include/asm/arch-sunxi/dram.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/arch/arm/include/asm/arch-sunxi/dram.h b/arch/arm/include/asm/arch-sunxi/dram.h index 18924f5..0bf718c 100644 --- a/arch/arm/include/asm/arch-sunxi/dram.h +++ b/arch/arm/include/asm/arch-sunxi/dram.h @@ -22,6 +22,8 @@ #include <asm/arch/dram_sun4i.h> #endif +#define MCTL_MEM_FILL_MATCH_COUNT 64 + unsigned long sunxi_dram_init(void); /* @@ -37,4 +39,31 @@ static inline void mctl_await_completion(u32 *reg, u32 mask, u32 val) } } +/* + * Fill beginning of DRAM with "random" data for mctl_mem_matches() + */ +static inline void mctl_mem_fill(void) +{ + int i; + + for (i = 0; i < MCTL_MEM_FILL_MATCH_COUNT; i++) + writel(0xaa55aa55 + i, CONFIG_SYS_SDRAM_BASE + i * 4); +} + +/* + * Test if memory at offset offset matches memory at begin of DRAM + */ +static inline bool mctl_mem_matches(u32 offset) +{ + int i, matches = 0; + + for (i = 0; i < MCTL_MEM_FILL_MATCH_COUNT; i++) { + if (readl(CONFIG_SYS_SDRAM_BASE + i * 4) == + readl(CONFIG_SYS_SDRAM_BASE + offset + i * 4)) + matches++; + } + + return matches == MCTL_MEM_FILL_MATCH_COUNT; +} + #endif /* _SUNXI_DRAM_H */ |