162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com> 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Modified from arch/mips/pnx833x/common/prom.c. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#include <linux/io.h> 962306a36Sopenharmony_ci#include <linux/init.h> 1062306a36Sopenharmony_ci#include <linux/memblock.h> 1162306a36Sopenharmony_ci#include <linux/serial_reg.h> 1262306a36Sopenharmony_ci#include <asm/fw/fw.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#include <loongson1.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ciunsigned long memsize; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_civoid __init prom_init(void) 1962306a36Sopenharmony_ci{ 2062306a36Sopenharmony_ci void __iomem *uart_base; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci fw_init_cmdline(); 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci memsize = fw_getenvl("memsize"); 2562306a36Sopenharmony_ci if(!memsize) 2662306a36Sopenharmony_ci memsize = DEFAULT_MEMSIZE; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci if (strstr(arcs_cmdline, "console=ttyS3")) 2962306a36Sopenharmony_ci uart_base = ioremap(LS1X_UART3_BASE, 0x0f); 3062306a36Sopenharmony_ci else if (strstr(arcs_cmdline, "console=ttyS2")) 3162306a36Sopenharmony_ci uart_base = ioremap(LS1X_UART2_BASE, 0x0f); 3262306a36Sopenharmony_ci else if (strstr(arcs_cmdline, "console=ttyS1")) 3362306a36Sopenharmony_ci uart_base = ioremap(LS1X_UART1_BASE, 0x0f); 3462306a36Sopenharmony_ci else 3562306a36Sopenharmony_ci uart_base = ioremap(LS1X_UART0_BASE, 0x0f); 3662306a36Sopenharmony_ci setup_8250_early_printk_port((unsigned long)uart_base, 0, 0); 3762306a36Sopenharmony_ci} 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_civoid __init plat_mem_setup(void) 4062306a36Sopenharmony_ci{ 4162306a36Sopenharmony_ci memblock_add(0x0, (memsize << 20)); 4262306a36Sopenharmony_ci} 43