Move the dram helper functions to a separate C file, rather then having them as inline helpers in dram.h. This saves 144 bytes in the .text segment for sun6i builds. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Simon Glass <sjg@chromium.org>master
parent
20779ec3a5
commit
51637afe98
@ -0,0 +1,37 @@ |
||||
/*
|
||||
* DRAM init helper functions |
||||
* |
||||
* (C) Copyright 2015 Hans de Goede <hdegoede@redhat.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
*/ |
||||
|
||||
#include <common.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 |
||||
*/ |
||||
bool mctl_mem_matches(u32 offset) |
||||
{ |
||||
/* Try to write different values to RAM at two addresses */ |
||||
writel(0, CONFIG_SYS_SDRAM_BASE); |
||||
writel(0xaa55aa55, CONFIG_SYS_SDRAM_BASE + offset); |
||||
/* Check if the same value is actually observed when reading back */ |
||||
return readl(CONFIG_SYS_SDRAM_BASE) == |
||||
readl(CONFIG_SYS_SDRAM_BASE + offset); |
||||
} |
Loading…
Reference in new issue