191785f70SSimon Glass /* 291785f70SSimon Glass * Copyright (C) 2014, Bin Meng <bmeng.cn@gmail.com> 391785f70SSimon Glass * 491785f70SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 591785f70SSimon Glass */ 691785f70SSimon Glass 791785f70SSimon Glass #include <common.h> 891785f70SSimon Glass #include <errno.h> 991785f70SSimon Glass #include <asm/io.h> 1091785f70SSimon Glass #include <asm/post.h> 1191785f70SSimon Glass #include <asm/processor.h> 1291785f70SSimon Glass #include <asm/fsp/fsp_support.h> 1391785f70SSimon Glass 14*8b097916SSimon Glass DECLARE_GLOBAL_DATA_PTR; 15*8b097916SSimon Glass 1691785f70SSimon Glass int print_cpuinfo(void) 1791785f70SSimon Glass { 1891785f70SSimon Glass post_code(POST_CPU_INFO); 1991785f70SSimon Glass return default_print_cpuinfo(); 2091785f70SSimon Glass } 2191785f70SSimon Glass 2291785f70SSimon Glass int board_pci_post_scan(struct pci_controller *hose) 2391785f70SSimon Glass { 2491785f70SSimon Glass u32 status; 2591785f70SSimon Glass 2691785f70SSimon Glass /* call into FspNotify */ 2791785f70SSimon Glass debug("Calling into FSP (notify phase INIT_PHASE_PCI): "); 2891785f70SSimon Glass status = fsp_notify(NULL, INIT_PHASE_PCI); 2991785f70SSimon Glass if (status != FSP_SUCCESS) 3091785f70SSimon Glass debug("fail, error code %x\n", status); 3191785f70SSimon Glass else 3291785f70SSimon Glass debug("OK\n"); 3391785f70SSimon Glass 3491785f70SSimon Glass return 0; 3591785f70SSimon Glass } 3691785f70SSimon Glass 3791785f70SSimon Glass void board_final_cleanup(void) 3891785f70SSimon Glass { 3991785f70SSimon Glass u32 status; 4091785f70SSimon Glass 4191785f70SSimon Glass /* call into FspNotify */ 4291785f70SSimon Glass debug("Calling into FSP (notify phase INIT_PHASE_BOOT): "); 4391785f70SSimon Glass status = fsp_notify(NULL, INIT_PHASE_BOOT); 4491785f70SSimon Glass if (status != FSP_SUCCESS) 4591785f70SSimon Glass debug("fail, error code %x\n", status); 4691785f70SSimon Glass else 4791785f70SSimon Glass debug("OK\n"); 4891785f70SSimon Glass 4991785f70SSimon Glass return; 5091785f70SSimon Glass } 51aefaff8eSBin Meng 52aefaff8eSBin Meng int x86_fsp_init(void) 53aefaff8eSBin Meng { 54aefaff8eSBin Meng if (!gd->arch.hob_list) 55aefaff8eSBin Meng fsp_init(CONFIG_FSP_TEMP_RAM_ADDR, BOOT_FULL_CONFIG, NULL); 56aefaff8eSBin Meng 57aefaff8eSBin Meng return 0; 58aefaff8eSBin Meng } 59