// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com>
 *
 * Modified from arch/mips/pnx833x/common/prom.c.
 */

#include <linux/io.h>
#include <linux/init.h>
#include <linux/memblock.h>
#include <linux/serial_reg.h>
#include <asm/fw/fw.h>

#include <loongson1.h>

unsigned long memsize;

void __init prom_init(void)
{
	void __iomem *uart_base;

	fw_init_cmdline();

	memsize = fw_getenvl("memsize");
	if(!memsize)
		memsize = DEFAULT_MEMSIZE;

	if (strstr(arcs_cmdline, "console=ttyS3"))
		uart_base = ioremap(LS1X_UART3_BASE, 0x0f);
	else if (strstr(arcs_cmdline, "console=ttyS2"))
		uart_base = ioremap(LS1X_UART2_BASE, 0x0f);
	else if (strstr(arcs_cmdline, "console=ttyS1"))
		uart_base = ioremap(LS1X_UART1_BASE, 0x0f);
	else
		uart_base = ioremap(LS1X_UART0_BASE, 0x0f);
	setup_8250_early_printk_port((unsigned long)uart_base, 0, 0);
}

void __init plat_mem_setup(void)
{
	memblock_add(0x0, (memsize << 20));
}
