mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-26 04:53:42 +00:00
aa6e94deab
The rest of the unmigrated CONFIG symbols in the CONFIG_SYS_SDRAM namespace do not easily transition to Kconfig. In many cases they likely should come from the device tree instead. Move these out of CONFIG namespace and in to CFG namespace. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
43 lines
1 KiB
C
43 lines
1 KiB
C
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* DRAM init helper functions
|
|
*
|
|
* (C) Copyright 2015 Hans de Goede <hdegoede@redhat.com>
|
|
*/
|
|
|
|
#include <common.h>
|
|
#include <time.h>
|
|
#include <asm/barriers.h>
|
|
#include <asm/io.h>
|
|
#include <asm/arch/dram.h>
|
|
|
|
/*
|
|
* Wait up to 1s for value to be set in given part of reg.
|
|
*/
|
|
void mctl_await_completion(u32 *reg, u32 mask, u32 val)
|
|
{
|
|
unsigned long tmo = timer_get_us() + 1000000;
|
|
|
|
while ((readl(reg) & mask) != val) {
|
|
if (timer_get_us() > tmo)
|
|
panic("Timeout initialising DRAM\n");
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Test if memory at offset offset matches memory at begin of DRAM
|
|
*
|
|
* Note: dsb() is not available on ARMv5 in Thumb mode
|
|
*/
|
|
#ifndef CONFIG_MACH_SUNIV
|
|
bool mctl_mem_matches(u32 offset)
|
|
{
|
|
/* Try to write different values to RAM at two addresses */
|
|
writel(0, CFG_SYS_SDRAM_BASE);
|
|
writel(0xaa55aa55, (ulong)CFG_SYS_SDRAM_BASE + offset);
|
|
dsb();
|
|
/* Check if the same value is actually observed when reading back */
|
|
return readl(CFG_SYS_SDRAM_BASE) ==
|
|
readl((ulong)CFG_SYS_SDRAM_BASE + offset);
|
|
}
|
|
#endif
|