xref: /aosp_15_r20/external/coreboot/src/soc/intel/denverton_ns/hob_display.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #include <console/console.h>
4 #include <fsp/util.h>
5 #include <lib.h>
6 #include <soc/hob_mem.h>
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 
soc_get_hob_type_name(const struct hob_header * hob)37 const char *soc_get_hob_type_name(
38 	const struct hob_header *hob)
39 {
40 	return NULL;
41 }
42 
soc_get_guid_name(const uint8_t * guid)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 
soc_display_hob(const struct hob_header * hob)55 void soc_display_hob(const struct hob_header *hob)
56 {
57 	hexdump(hob, hob->length);
58 }
59 
soc_display_fsp_smbios_memory_info_hob(const FSP_SMBIOS_MEMORY_INFO * memory_info_hob)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 }
106