coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
ramstage.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <console/console.h>
4 #include <fsp/api.h>
5 #include <soc/ramstage.h>
6 #include "emmc.h"
7 
8 static int get_emmc_dll_info(uint16_t signature, size_t num_of_entry,
9  BL_EMMC_INFORMATION **config)
10 {
11  uint8_t entry;
12 
13  if ((signature == 0) || (num_of_entry == 0) || (*config == NULL))
14  return 1;
15 
16  for (entry = 0; entry < num_of_entry; entry++) {
17  if ((*config)[entry].Signature == signature) {
18  *config = &(*config)[entry];
19  return 0;
20  }
21  }
22 
23  return 1;
24 }
25 
27 {
28  size_t num;
29  uint16_t emmc_dll_sign;
30  BL_EMMC_INFORMATION *emmc_config;
31 
32  /* Configure eMMC DLL PCD */
33  emmc_dll_sign = DEFAULT_EMMC_DLL_SIGN;
35  emmc_config = harcuvar_emmc_config;
36 
37  if (get_emmc_dll_info(emmc_dll_sign, num, &emmc_config))
38  die("eMMC DLL Configuration is invalid, please correct it!");
39 
40  params->FspsConfig.PcdEMMCDLLConfigPtr =
41  (uint32_t)&emmc_config->eMMCDLLConfig;
42 }
static struct sdram_info params
Definition: sdram_configs.c:83
#define ARRAY_SIZE(a)
Definition: helpers.h:12
void __noreturn die(const char *fmt,...)
Definition: die.c:17
__weak void mainboard_silicon_init_params(SILICON_INIT_UPD *params)
Definition: ramstage.c:162
BL_EMMC_INFORMATION harcuvar_emmc_config[]
Definition: emmc.h:11
#define DEFAULT_EMMC_DLL_SIGN
Definition: emmc.h:8
enum board_config config
Definition: memory.c:448
static int get_emmc_dll_info(uint16_t signature, size_t num_of_entry, BL_EMMC_INFORMATION **config)
Definition: ramstage.c:8
#define NULL
Definition: stddef.h:19
unsigned short uint16_t
Definition: stdint.h:11
unsigned int uint32_t
Definition: stdint.h:14
unsigned char uint8_t
Definition: stdint.h:8