blob: 40e84be9d96ef31e7689462a6d8f46576811f56d [file] [log] [blame]
Patrick Georgiac959032020-05-05 22:49:26 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Mariusz Szafranskia4041332017-08-02 17:28:17 +02002
3#include <console/console.h>
4#include <fsp/util.h>
5#include <lib.h>
Julien Viard de Galbert2d0aaa72018-02-26 18:32:59 +01006#include <soc/hob_mem.h>
Mariusz Szafranskia4041332017-08-02 17:28:17 +02007
8static 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
13static 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
18static 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
23struct guid_name_map {
24 const void *guid;
25 const char *name;
26};
27
28static 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
37const char *soc_get_hob_type_name(
38 const struct hob_header *hob)
39{
40 return NULL;
41}
42
43const 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
55void soc_display_hob(const struct hob_header *hob)
56{
57 hexdump(hob, hob->length);
58}
Julien Viard de Galbert2d0aaa72018-02-26 18:32:59 +010059
60void 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}