1*43741396SBin Meng /*
2*43741396SBin Meng * Copyright (C) 2016, Bin Meng <bmeng.cn@gmail.com>
3*43741396SBin Meng *
4*43741396SBin Meng * SPDX-License-Identifier: GPL-2.0+
5*43741396SBin Meng */
6*43741396SBin Meng
7*43741396SBin Meng #include <common.h>
8*43741396SBin Meng #include <fdtdec.h>
9*43741396SBin Meng #include <asm/fsp/fsp_support.h>
10*43741396SBin Meng
11*43741396SBin Meng DECLARE_GLOBAL_DATA_PTR;
12*43741396SBin Meng
update_fsp_configs(struct fsp_config_data * config,struct fspinit_rtbuf * rt_buf)13*43741396SBin Meng void update_fsp_configs(struct fsp_config_data *config,
14*43741396SBin Meng struct fspinit_rtbuf *rt_buf)
15*43741396SBin Meng {
16*43741396SBin Meng struct platform_config *plat_config = &config->plat_config;
17*43741396SBin Meng struct memory_config *mem_config = &config->mem_config;
18*43741396SBin Meng const void *blob = gd->fdt_blob;
19*43741396SBin Meng int node;
20*43741396SBin Meng
21*43741396SBin Meng node = fdtdec_next_compatible(blob, 0, COMPAT_INTEL_IVYBRIDGE_FSP);
22*43741396SBin Meng if (node < 0) {
23*43741396SBin Meng debug("%s: Cannot find FSP node\n", __func__);
24*43741396SBin Meng return;
25*43741396SBin Meng }
26*43741396SBin Meng
27*43741396SBin Meng plat_config->enable_ht =
28*43741396SBin Meng fdtdec_get_bool(blob, node, "fsp,enable-ht");
29*43741396SBin Meng plat_config->enable_turbo =
30*43741396SBin Meng fdtdec_get_bool(blob, node, "fsp,enable-turbo");
31*43741396SBin Meng plat_config->enable_memory_down =
32*43741396SBin Meng fdtdec_get_bool(blob, node, "fsp,enable-memory-down");
33*43741396SBin Meng plat_config->enable_fast_boot =
34*43741396SBin Meng fdtdec_get_bool(blob, node, "fsp,enable-fast-boot");
35*43741396SBin Meng
36*43741396SBin Meng /* Initialize runtime buffer for fsp_init() */
37*43741396SBin Meng rt_buf->stack_top = config->common.stack_top - 32;
38*43741396SBin Meng rt_buf->boot_mode = config->common.boot_mode;
39*43741396SBin Meng rt_buf->plat_config = plat_config;
40*43741396SBin Meng
41*43741396SBin Meng if (plat_config->enable_memory_down)
42*43741396SBin Meng rt_buf->mem_config = mem_config;
43*43741396SBin Meng else
44*43741396SBin Meng rt_buf->mem_config = NULL;
45*43741396SBin Meng }
46