aboutsummaryrefslogtreecommitdiff
path: root/src/soc/mediatek/mt8183/memory.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/mediatek/mt8183/memory.c')
-rw-r--r--src/soc/mediatek/mt8183/memory.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/soc/mediatek/mt8183/memory.c b/src/soc/mediatek/mt8183/memory.c
index 643ca6bb2f..5702b14a01 100644
--- a/src/soc/mediatek/mt8183/memory.c
+++ b/src/soc/mediatek/mt8183/memory.c
@@ -13,10 +13,39 @@
* GNU General Public License for more details.
*/
+#include <assert.h>
+#include <console/console.h>
+#include <soc/dramc_pi_api.h>
#include <soc/emi.h>
+#include <symbols.h>
void mt_mem_init(const struct sdram_params *params)
{
+ u64 rank_size[RANK_MAX];
+
/* memory calibration */
mt_set_emi(params);
+
+ if (IS_ENABLED(CONFIG_MEMORY_TEST)) {
+ size_t r;
+ u8 *addr = _dram;
+
+ dramc_get_rank_size(rank_size);
+
+ for (r = RANK_0; r < RANK_MAX; r++) {
+ int i;
+
+ if (rank_size[r] == 0)
+ break;
+
+ i = complex_mem_test(addr, 0x2000);
+
+ printk(BIOS_DEBUG, "[MEM] complex R/W mem test %s : %d\n",
+ (i == 0) ? "pass" : "fail", i);
+
+ ASSERT(i == 0);
+
+ addr += rank_size[r];
+ }
+ }
}