xref: /rk3399_rockchip-uboot/arch/x86/cpu/ivybridge/fsp_configs.c (revision 437413962744cc9c80551ca253a20472856551f2)
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