| /* Copyright (c) 2015, The Linux Foundation. All rights reserved. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 and |
| * only version 2 as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| */ |
| |
| #include <bootblock_common.h> |
| #include <console/console.h> |
| #include <symbols.h> |
| |
| #include "mmu.h" |
| #include <soc/usbl_if.h> |
| |
| static void dump_usbl_report(int section, sbl_ro_info *info) |
| { |
| int i, num_log_entries; |
| |
| num_log_entries = info->num_log_entries; |
| if (!num_log_entries) |
| return; |
| |
| printk(BIOS_INFO, " Section %d log:\n", section); |
| for (i = 0; i < num_log_entries; i++) |
| printk(BIOS_INFO, " %-5d:%2.2x:%.*s\n", |
| info->log[i].time_stamp, |
| info->log[i].type, |
| sizeof(info->log[i].msg), |
| info->log[i].msg); |
| } |
| |
| void bootblock_mainboard_init(void) |
| { |
| int i; |
| |
| setup_mmu(DRAM_NOT_INITIALIZED); |
| |
| if (((uintptr_t)maskrom_param < (uintptr_t)&_sram) || |
| ((uintptr_t)maskrom_param > (uintptr_t)&_esram)) { |
| printk(BIOS_INFO, "No uber-sbl parameter detected\n"); |
| return; |
| } |
| |
| /* Is maskrom parameter address set to a sensible value? */ |
| if ((maskrom_param->start_magic != UBER_SBL_SHARED_INFO_START_MAGIC) || |
| (maskrom_param->end_magic != UBER_SBL_SHARED_INFO_END_MAGIC)) { |
| |
| printk(BIOS_INFO, "Uber-sbl: invalid magic!\n"); |
| } else { |
| printk(BIOS_INFO, "Uber-sbl version: %s\n", |
| maskrom_param->version); |
| |
| for (i = 0; i < maskrom_param->num; i++) |
| dump_usbl_report(i, &maskrom_param->info[i]); |
| } |
| } |