/* SPDX-License-Identifier: GPL-2.0-only */ #include #include #include #include #if CONFIG(VENDORCODE_ELTAN_MBOOT) #include #endif #include #include #include #include #include #include "cpld.h" void mainboard_memory_init_params(struct romstage_params *params, MEMORY_INIT_UPD *memory_params) { u8 spd_index; switch (cpld_read_pcb_version()) { case 0: /* intentional fallthrough */ case 1: /* intentional fallthrough */ case 2: /* intentional fallthrough */ case 3: /* intentional fallthrough */ case 4: /* intentional fallthrough */ case 5: spd_index = 0; break; case 6: /* intentional fallthrough */ case 7: spd_index = 1; break; default: spd_index = 2; break; } memory_params->PcdMemoryTypeEnable = MEM_DDR3; memory_params->PcdMemorySpdPtr = spd_cbfs_map(spd_index); if (!memory_params->PcdMemorySpdPtr) die("spd.bin not found\n"); memory_params->PcdMemChannel0Config = 1; /* Memory down */ memory_params->PcdMemChannel1Config = 2; /* Disabled */ } void mainboard_after_memory_init(void) { printk(BIOS_DEBUG, "%s/%s called\n", __FILE__, __func__); /* Disable the Braswell UART hardware for COM1. */ pci_write_config32(PCI_DEV(0, LPC_DEV, 0), UART_CONT, 0); } #if CONFIG(VENDORCODE_ELTAN_MBOOT) /** * mb_crtm * * Measures the crtm version. This consists of a string than can be defined * using make menuconfig and automatically generated version information. * * @param[in] activePcr bitmap of the support * * @retval TPM_SUCCESS Operation completed successfully. * @retval TPM_E_IOERROR Unexpected device behavior. */ static const uint8_t crtm_version[] = CONFIG_VENDORCODE_ELTAN_CRTM_VERSION_STRING COREBOOT_VERSION COREBOOT_EXTRA_VERSION " " COREBOOT_BUILD; int mb_crtm(void) { int status = TPM_E_IOERROR; TCG_PCR_EVENT2_HDR tcgEventHdr; /* Use FirmwareVersion string to represent CRTM version. */ printk(BIOS_DEBUG, "%s: Measure CRTM Version\n", __func__); memset(&tcgEventHdr, 0, sizeof(tcgEventHdr)); tcgEventHdr.pcrIndex = MBOOT_PCR_INDEX_0; tcgEventHdr.eventType = EV_S_CRTM_VERSION; tcgEventHdr.eventSize = sizeof(crtm_version); printk(BIOS_DEBUG, "%s: EventSize - %u\n", __func__, tcgEventHdr.eventSize); status = mboot_hash_extend_log(0, (uint8_t *)crtm_version, tcgEventHdr.eventSize, &tcgEventHdr, (uint8_t *)crtm_version); if (status) { printk(BIOS_DEBUG, "Measure CRTM Version returned 0x%x\n", status); } return status; } #endif