static int __init ram_console_early_init(void) { struct ram_console_buffer *bufp = NULL; size_t buffer_size = 0; #if defined(CONFIG_MTK_RAM_CONSOLE_USING_SRAM) #ifdef CONFIG_OF mem_desc_t sram = {0}; if (of_scan_flat_dt(dt_get_ram_console, &sram)) { if (sram.start == 0) { sram.start = CONFIG_MTK_RAM_CONSOLE_ADDR; sram.size = CONFIG_MTK_RAM_CONSOLE_SIZE; } bufp = ioremap(sram.start, sram.size); ram_console_buffer_pa = sram.start; if (bufp) buffer_size = sram.size; else { pr_err("ram_console: ioremap failed, [0x%x, 0x%x]\n", sram.start, sram.size); return 0; } /*check if pl/lk use dram*/ struct ram_console_buffer *bufp_dram = NULL; bufp_dram = remap_lowmem(CONFIG_MTK_RAM_CONSOLE_DRAM_ADDR, CONFIG_MTK_RAM_CONSOLE_DRAM_SIZE); if (bufp_dram->sig == REBOOT_REASON_SIG) { pr_err("ram_console: kernel use sram, but pl/lk use dram.\n"); memcpy(bufp, bufp_dram, sizeof(struct ram_console_buffer)); bufp_dram->sig = 0; } } else { return 0; } #else bufp = (struct ram_console_buffer *)CONFIG_MTK_RAM_CONSOLE_ADDR; buffer_size = CONFIG_MTK_RAM_CONSOLE_SIZE; /*check if pl/lk use dram*/ struct ram_console_buffer *bufp_dram = NULL; bufp_dram = remap_lowmem(CONFIG_MTK_RAM_CONSOLE_DRAM_ADDR, CONFIG_MTK_RAM_CONSOLE_DRAM_SIZE); if (bufp_dram->sig == REBOOT_REASON_SIG) { pr_err("ram_console: kernel use sram, but pl/lk use dram.\n"); memcpy(bufp, bufp_dram, sizeof(struct ram_console_buffer)); bufp_dram->sig = 0; } #endif #elif defined(CONFIG_MTK_RAM_CONSOLE_USING_DRAM) bufp = remap_lowmem(CONFIG_MTK_RAM_CONSOLE_DRAM_ADDR, CONFIG_MTK_RAM_CONSOLE_DRAM_SIZE); ram_console_buffer_pa = CONFIG_MTK_RAM_CONSOLE_DRAM_ADDR; if (bufp == NULL) { pr_err("ram_console: ioremap failed\n"); return 0; } buffer_size = CONFIG_MTK_RAM_CONSOLE_DRAM_SIZE; #else return 0; #endif pr_err("ram_console: buffer start: 0x%p, size: 0x%zx\n", bufp, buffer_size); mtk_cpu_num = num_present_cpus(); return ram_console_init(bufp, buffer_size); }
static int __init ram_console_early_init(void) { struct ram_console_buffer *bufp = NULL; size_t buffer_size = 0; #if defined(CONFIG_MTK_RAM_CONSOLE_USING_SRAM) bufp = (struct ram_console_buffer *)CONFIG_MTK_RAM_CONSOLE_ADDR; buffer_size = CONFIG_MTK_RAM_CONSOLE_SIZE; #elif defined(CONFIG_MTK_RAM_CONSOLE_USING_DRAM) bufp = remap_lowmem(CONFIG_MTK_RAM_CONSOLE_DRAM_ADDR, CONFIG_MTK_RAM_CONSOLE_DRAM_SIZE); if (bufp == NULL) { pr_err("ioremap failed, no ram console available\n"); return 0; } buffer_size = CONFIG_MTK_RAM_CONSOLE_DRAM_SIZE; #else return 0; #endif pr_err("%s: start: 0x%p, size: %d\n", __func__, bufp, buffer_size); mtk_cpu_num = num_present_cpus(); return ram_console_init(bufp, buffer_size); }