• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <arch/cpu.h>
4 #include <console/console.h>
5 #include <fsp/util.h>
6 
use_fsp_v1(void)7 static bool use_fsp_v1(void)
8 {
9 	/*
10 	 * Per the Comet Lake FSP documentation, differentiate Comet Lake v1/v2
11 	 * by CPUID.  CML v1 has eax 0x000A0660 or 0x000806EC, CML v2 has
12 	 * 0x000A0661.
13 	 */
14 	uint32_t cpuid = cpu_get_cpuid();
15 	switch (cpuid) {
16 	case 0x000A0660:
17 	case 0x000806EC:
18 		printk(BIOS_INFO, "CPUID %08X is Comet Lake v1\n", cpuid);
19 		return true;
20 	case 0x000A0661:
21 		printk(BIOS_INFO, "CPUID %08X is Comet Lake v2\n", cpuid);
22 		return false;
23 	default:
24 		/*
25 		 * It's unlikely any new Comet Lake SKUs would be added
26 		 * at this point, but guess CML v2 rather than failing
27 		 * to boot entirely.
28 		 */
29 		printk(BIOS_ERR, "CPUID %08X is unknown, guessing Comet Lake v2\n",
30 			cpuid);
31 		return false;
32 	}
33 }
34 
soc_select_fsp_m_cbfs(void)35 const char *soc_select_fsp_m_cbfs(void)
36 {
37 	return use_fsp_v1() ? CONFIG_FSP_M_CBFS : CONFIG_FSP_M_CBFS_2;
38 }
39 
soc_select_fsp_s_cbfs(void)40 const char *soc_select_fsp_s_cbfs(void)
41 {
42 	return use_fsp_v1() ? CONFIG_FSP_S_CBFS : CONFIG_FSP_S_CBFS_2;
43 }
44