18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (c) 2011 Zhang, Keguang <keguang.zhang@gmail.com> 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Modified from arch/mips/pnx833x/common/prom.c. 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#include <linux/io.h> 98c2ecf20Sopenharmony_ci#include <linux/init.h> 108c2ecf20Sopenharmony_ci#include <linux/memblock.h> 118c2ecf20Sopenharmony_ci#include <linux/serial_reg.h> 128c2ecf20Sopenharmony_ci#include <asm/fw/fw.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#include <loongson1.h> 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ciunsigned long memsize; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_civoid __init prom_init(void) 198c2ecf20Sopenharmony_ci{ 208c2ecf20Sopenharmony_ci void __iomem *uart_base; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci fw_init_cmdline(); 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci memsize = fw_getenvl("memsize"); 258c2ecf20Sopenharmony_ci if(!memsize) 268c2ecf20Sopenharmony_ci memsize = DEFAULT_MEMSIZE; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci if (strstr(arcs_cmdline, "console=ttyS3")) 298c2ecf20Sopenharmony_ci uart_base = ioremap(LS1X_UART3_BASE, 0x0f); 308c2ecf20Sopenharmony_ci else if (strstr(arcs_cmdline, "console=ttyS2")) 318c2ecf20Sopenharmony_ci uart_base = ioremap(LS1X_UART2_BASE, 0x0f); 328c2ecf20Sopenharmony_ci else if (strstr(arcs_cmdline, "console=ttyS1")) 338c2ecf20Sopenharmony_ci uart_base = ioremap(LS1X_UART1_BASE, 0x0f); 348c2ecf20Sopenharmony_ci else 358c2ecf20Sopenharmony_ci uart_base = ioremap(LS1X_UART0_BASE, 0x0f); 368c2ecf20Sopenharmony_ci setup_8250_early_printk_port((unsigned long)uart_base, 0, 0); 378c2ecf20Sopenharmony_ci} 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_civoid __init prom_free_prom_memory(void) 408c2ecf20Sopenharmony_ci{ 418c2ecf20Sopenharmony_ci} 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_civoid __init plat_mem_setup(void) 448c2ecf20Sopenharmony_ci{ 458c2ecf20Sopenharmony_ci memblock_add(0x0, (memsize << 20)); 468c2ecf20Sopenharmony_ci} 47