| /* SPDX-License-Identifier: GPL-2.0-only */ |
| |
| #include <arch/cpu.h> |
| #include <console/console.h> |
| #include <fsp/util.h> |
| |
| static bool use_fsp_v1(void) |
| { |
| /* |
| * Per the Comet Lake FSP documentation, differentiate Comet Lake v1/v2 |
| * by CPUID. CML v1 has eax 0x000A0660 or 0x000806EC, CML v2 has |
| * 0x000A0661. |
| */ |
| uint32_t cpuid = cpu_get_cpuid(); |
| switch (cpuid) { |
| case 0x000A0660: |
| case 0x000806EC: |
| printk(BIOS_INFO, "CPUID %08X is Comet Lake v1\n", cpuid); |
| return true; |
| case 0x000A0661: |
| printk(BIOS_INFO, "CPUID %08X is Comet Lake v2\n", cpuid); |
| return false; |
| default: |
| /* |
| * It's unlikely any new Comet Lake SKUs would be added |
| * at this point, but guess CML v2 rather than failing |
| * to boot entirely. |
| */ |
| printk(BIOS_ERR, "CPUID %08X is unknown, guessing Comet Lake v2\n", |
| cpuid); |
| return false; |
| } |
| } |
| |
| const char *soc_select_fsp_m_cbfs(void) |
| { |
| return use_fsp_v1() ? CONFIG_FSP_M_CBFS : CONFIG_FSP_M_CBFS_2; |
| } |
| |
| const char *soc_select_fsp_s_cbfs(void) |
| { |
| return use_fsp_v1() ? CONFIG_FSP_S_CBFS : CONFIG_FSP_S_CBFS_2; |
| } |