1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 #include <commonlib/helpers.h>
4 #include <console/console.h>
5 #include <console/streams.h>
6 #include <cpu/x86/mtrr.h>
15 static void fsp_gpio_config_check(enum fsp_call_phase phase
, const char *call_str
)
19 printk(BIOS_SPEW
, "Snapshot all GPIOs before %s.\n", call_str
);
23 printk(BIOS_SPEW
, "Verify GPIO snapshot after %s...", call_str
);
24 printk(BIOS_SPEW
, "%zd changes detected!\n", gpio_verify_snapshot());
31 enum fsp_log_level
fsp_map_console_log_level(void)
33 enum fsp_log_level fsp_debug_level
;
35 switch (get_log_level()) {
40 fsp_debug_level
= FSP_LOG_LEVEL_ERR
;
43 fsp_debug_level
= FSP_LOG_LEVEL_ERR_WARN
;
46 fsp_debug_level
= FSP_LOG_LEVEL_ERR_WARN_INFO
;
49 fsp_debug_level
= FSP_LOG_LEVEL_ERR_WARN_INFO_EVENT
;
53 fsp_debug_level
= FSP_LOG_LEVEL_VERBOSE
;
56 fsp_debug_level
= FSP_LOG_LEVEL_DISABLE
;
60 if (!CONFIG(DEBUG_RAM_SETUP
))
61 fsp_debug_level
= MIN(fsp_debug_level
, FSP_LOG_LEVEL_ERR_WARN_INFO
);
63 return fsp_debug_level
;
70 void fsp_debug_before_memory_init(fsp_memory_init_fn memory_init
,
71 const FSPM_UPD
*fspm_old_upd
,
72 const FSPM_UPD
*fspm_new_upd
)
76 /* Display the UPD values */
77 if (CONFIG(DISPLAY_UPD_DATA
))
78 fspm_display_upd_values(fspm_old_upd
, fspm_new_upd
);
80 /* Display the call entry point and parameters */
81 if (!CONFIG(DISPLAY_FSP_CALLS_AND_STATUS
))
83 printk(BIOS_SPEW
, "Calling FspMemoryInit: %p\n", memory_init
);
84 printk(BIOS_SPEW
, "\t%p: raminit_upd\n", fspm_new_upd
);
85 printk(BIOS_SPEW
, "\t%p: &hob_list_ptr\n", fsp_get_hob_list_ptr());
88 void fsp_debug_after_memory_init(efi_return_status_t status
)
90 if (CONFIG(DISPLAY_FSP_CALLS_AND_STATUS
))
91 fsp_printk(status
, BIOS_SPEW
, "FspMemoryInit");
93 if (status
!= FSP_SUCCESS
)
96 /* Verify that the HOB list pointer was set */
97 if (fsp_get_hob_list() == NULL
)
98 die("ERROR - HOB list pointer was not returned!\n");
100 /* Display and verify the HOBs */
101 if (CONFIG(DISPLAY_HOBS
))
103 if (CONFIG(VERIFY_HOBS
))
104 fsp_verify_memory_init_hobs();
113 void fsp_debug_before_silicon_init(fsp_silicon_init_fn silicon_init
,
114 const FSPS_UPD
*fsps_old_upd
,
115 const FSPS_UPD
*fsps_new_upd
)
117 if (CONFIG(CHECK_GPIO_CONFIG_CHANGES
))
118 fsp_gpio_config_check(BEFORE_FSP_CALL
, "FSP Silicon Init");
122 /* Display the UPD values */
123 if (CONFIG(DISPLAY_UPD_DATA
))
124 soc_display_fsps_upd_params(fsps_old_upd
, fsps_new_upd
);
126 /* Display the call to FSP SiliconInit */
127 if (!CONFIG(DISPLAY_FSP_CALLS_AND_STATUS
))
129 printk(BIOS_SPEW
, "Calling FspSiliconInit: %p\n", silicon_init
);
130 printk(BIOS_SPEW
, "\t%p: upd\n", fsps_new_upd
);
133 void fsp_debug_after_silicon_init(efi_return_status_t status
)
135 if (CONFIG(CHECK_GPIO_CONFIG_CHANGES
))
136 fsp_gpio_config_check(AFTER_FSP_CALL
, "FSP Silicon Init");
138 if (CONFIG(DISPLAY_FSP_CALLS_AND_STATUS
))
139 fsp_printk(status
, BIOS_SPEW
, "FspSiliconInit");
141 /* Display the HOBs */
142 if (CONFIG(DISPLAY_HOBS
))
152 void fsp_before_debug_notify(fsp_notify_fn notify
,
153 const struct fsp_notify_params
*notify_params
)
155 if (CONFIG(CHECK_GPIO_CONFIG_CHANGES
))
156 fsp_gpio_config_check(BEFORE_FSP_CALL
, "FSP Notify");
158 /* Display the call to FspNotify */
159 if (!CONFIG(DISPLAY_FSP_CALLS_AND_STATUS
))
161 printk(BIOS_SPEW
, "0x%08x: notify_params->phase\n",
162 notify_params
->phase
);
163 printk(BIOS_SPEW
, "Calling FspNotify: %p\n", notify
);
164 printk(BIOS_SPEW
, "\t%p: notify_params\n", notify_params
);
167 void fsp_debug_after_notify(efi_return_status_t status
)
169 if (CONFIG(CHECK_GPIO_CONFIG_CHANGES
))
170 fsp_gpio_config_check(AFTER_FSP_CALL
, "FSP Notify");
172 if (CONFIG(DISPLAY_FSP_CALLS_AND_STATUS
))
173 fsp_printk(status
, BIOS_SPEW
, "FspNotify");
175 /* Display the HOBs */
176 if (CONFIG(DISPLAY_HOBS
))