// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2014 Google, Inc
 *
 * From Coreboot src/lib/ramtest.c
 */

#include <asm/io.h>
#include <asm/post.h>
#include <vsprintf.h>

static void write_phys(unsigned long addr, u32 value)
{
#if CONFIG_SSE2
	asm volatile(
		"movnti %1, (%0)"
		: /* outputs */
		: "r" (addr), "r" (value) /* inputs */
		: /* clobbers */
		);
#else
	writel(value, addr);
#endif
}

static u32 read_phys(unsigned long addr)
{
	return readl(addr);
}

static void phys_memory_barrier(void)
{
#if CONFIG_SSE2
	/* Needed for movnti */
	asm volatile(
		"sfence"
		:
		:
		: "memory"
	);
#else
	asm volatile(""
		:
		:
		: "memory");
#endif
}

void quick_ram_check(void)
{
	int fail = 0;
	u32 backup;

	backup = read_phys(CONFIG_RAMBASE);
	write_phys(CONFIG_RAMBASE, 0x55555555);
	phys_memory_barrier();
	if (read_phys(CONFIG_RAMBASE) != 0x55555555)
		fail = 1;
	write_phys(CONFIG_RAMBASE, 0xaaaaaaaa);
	phys_memory_barrier();
	if (read_phys(CONFIG_RAMBASE) != 0xaaaaaaaa)
		fail = 1;
	write_phys(CONFIG_RAMBASE, 0x00000000);
	phys_memory_barrier();
	if (read_phys(CONFIG_RAMBASE) != 0x00000000)
		fail = 1;
	write_phys(CONFIG_RAMBASE, 0xffffffff);
	phys_memory_barrier();
	if (read_phys(CONFIG_RAMBASE) != 0xffffffff)
		fail = 1;

	write_phys(CONFIG_RAMBASE, backup);
	if (fail) {
		post_code(POST_RAM_FAILURE);
		panic("RAM INIT FAILURE!\n");
	}
	phys_memory_barrier();
}
