Patrick Georgi | ac95903 | 2020-05-05 22:49:26 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
Mariusz Szafranski | a404133 | 2017-08-02 17:28:17 +0200 | [diff] [blame] | 2 | |
| 3 | #include <console/console.h> |
| 4 | #include <fsp/util.h> |
| 5 | #include <lib.h> |
Julien Viard de Galbert | 2d0aaa7 | 2018-02-26 18:32:59 +0100 | [diff] [blame] | 6 | #include <soc/hob_mem.h> |
Mariusz Szafranski | a404133 | 2017-08-02 17:28:17 +0200 | [diff] [blame] | 7 | |
| 8 | static const uint8_t fsp_hob_resource_owner_graphics_guid[16] = { |
| 9 | 0xa7, 0x3a, 0x7c, 0x9c, 0x32, 0x55, 0x17, 0x49, |
| 10 | 0x82, 0xb9, 0x56, 0xa5, 0xf3, 0xe6, 0x2a, 0x07 |
| 11 | }; |
| 12 | |
| 13 | static const uint8_t fsp_hob_resource_owner_fiamux_guid[16] = { |
| 14 | 0x2e, 0x49, 0xad, 0x26, 0x51, 0xf9, 0x43, 0x4e, |
| 15 | 0xbc, 0x72, 0x22, 0x76, 0x58, 0xb1, 0xf6, 0x23 |
| 16 | }; |
| 17 | |
| 18 | static const uint8_t fsp_hob_fast_boot_checker_guid[16] = { |
| 19 | 0x7b, 0xf0, 0x97, 0x78, 0xda, 0x0c, 0xe3, 0x40, |
| 20 | 0xb4, 0xe4, 0x51, 0x5f, 0x47, 0x3b, 0x04, 0xb6 |
| 21 | }; |
| 22 | |
| 23 | struct guid_name_map { |
| 24 | const void *guid; |
| 25 | const char *name; |
| 26 | }; |
| 27 | |
| 28 | static const struct guid_name_map guid_names[] = { |
| 29 | { fsp_hob_resource_owner_graphics_guid, |
| 30 | "FSP_HOB_RESOURCE_OWNER_GRAPHICS_GUID" }, |
| 31 | { fsp_hob_resource_owner_fiamux_guid, |
| 32 | "FSP_HOB_RESOURCE_OWNER_FIAMUX_GUID" }, |
| 33 | { fsp_hob_fast_boot_checker_guid, |
| 34 | "FSP_HOB_FAST_BOOT_CHECKER_GUID" }, |
| 35 | }; |
| 36 | |
| 37 | const char *soc_get_hob_type_name( |
| 38 | const struct hob_header *hob) |
| 39 | { |
| 40 | return NULL; |
| 41 | } |
| 42 | |
| 43 | const char *soc_get_guid_name(const uint8_t *guid) |
| 44 | { |
| 45 | size_t index; |
| 46 | |
| 47 | /* Compare the GUID values in this module */ |
| 48 | for (index = 0; index < ARRAY_SIZE(guid_names); index++) |
| 49 | if (fsp_guid_compare(guid, guid_names[index].guid)) |
| 50 | return guid_names[index].name; |
| 51 | |
| 52 | return NULL; |
| 53 | } |
| 54 | |
| 55 | void soc_display_hob(const struct hob_header *hob) |
| 56 | { |
| 57 | hexdump(hob, hob->length); |
| 58 | } |
Julien Viard de Galbert | 2d0aaa7 | 2018-02-26 18:32:59 +0100 | [diff] [blame] | 59 | |
| 60 | void soc_display_fsp_smbios_memory_info_hob( |
| 61 | const FSP_SMBIOS_MEMORY_INFO *memory_info_hob) |
| 62 | { |
| 63 | int channel, dimm; |
| 64 | const DIMM_INFO *dimm_info; |
| 65 | const CHANNEL_INFO *channel_info; |
| 66 | |
| 67 | /* Display the data in the FSP_SMBIOS_MEMORY_INFO HOB */ |
| 68 | printk(BIOS_DEBUG, "FSP_SMBIOS_MEMORY_INFO HOB\n"); |
| 69 | printk(BIOS_DEBUG, " 0x%02x: Revision\n", |
| 70 | memory_info_hob->Revision); |
| 71 | printk(BIOS_DEBUG, " 0x%02x: MemoryType\n", |
| 72 | memory_info_hob->MemoryType); |
| 73 | printk(BIOS_DEBUG, " %d: MemoryFrequencyInMHz\n", |
| 74 | memory_info_hob->MemoryFrequencyInMHz); |
| 75 | printk(BIOS_DEBUG, " %d: DataWidth in bits\n", |
| 76 | memory_info_hob->DataWidth); |
| 77 | printk(BIOS_DEBUG, " 0x%02x: ErrorCorrectionType\n", |
| 78 | memory_info_hob->ErrorCorrectionType); |
| 79 | printk(BIOS_DEBUG, " 0x%02x: ChannelCount\n", |
| 80 | memory_info_hob->ChannelCount); |
| 81 | for (channel = 0; channel < memory_info_hob->ChannelCount; |
| 82 | channel++) { |
| 83 | channel_info = &memory_info_hob->ChannelInfo[channel]; |
| 84 | printk(BIOS_DEBUG, " Channel %d\n", channel); |
| 85 | printk(BIOS_DEBUG, " 0x%02x: ChannelId\n", |
| 86 | channel_info->ChannelId); |
| 87 | printk(BIOS_DEBUG, " 0x%02x: DimmCount\n", |
| 88 | channel_info->DimmCount); |
| 89 | for (dimm = 0; dimm < channel_info->DimmCount; |
| 90 | dimm++) { |
| 91 | dimm_info = &channel_info->DimmInfo[dimm]; |
| 92 | printk(BIOS_DEBUG, " DIMM %d\n", dimm); |
| 93 | printk(BIOS_DEBUG, " 0x%02x: DimmId\n", |
| 94 | dimm_info->DimmId); |
| 95 | printk(BIOS_DEBUG, " %d: SizeInMb\n", |
| 96 | dimm_info->SizeInMb); |
| 97 | printk(BIOS_DEBUG, " 0x%04x: MfgId\n", |
| 98 | dimm_info->MfgId); |
| 99 | printk(BIOS_DEBUG, "%*.*s: ModulePartNum\n", |
| 100 | (int)sizeof(dimm_info->ModulePartNum), |
| 101 | (int)sizeof(dimm_info->ModulePartNum), |
| 102 | dimm_info->ModulePartNum); |
| 103 | } |
| 104 | } |
| 105 | } |