blob: 4b9a7cbf2e2ca6b8dae8e1ce07d99458674d45c2 [file] [log] [blame]
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +05301/* SPDX-License-Identifier: GPL-2.0-or-later */
2
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +05303#include <intelbasecode/debug_feature.h>
4#include <console/console.h>
Sridhar Siricilla574f3c82022-04-21 10:33:51 +05305#include <spi_flash.h>
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +05306
7#define SI_DESC_OEM_SECTION_OFFSET 0xF00
Sridhar Siricilla04481772022-06-15 22:44:06 +05308#define DEBUG_FEATURE_CTRL_OFFSET SI_DESC_OEM_SECTION_OFFSET
9#define DEBUG_FEATURE_CTRL_SZ 64
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +053010#define SI_DESC_REGION_SZ 4096
11
Sridhar Siricilla04481772022-06-15 22:44:06 +053012struct debug_feature_cntrl {
Sridhar Siricilla0aa1ac42022-03-09 20:35:32 +053013 uint8_t cse_fw_update_disable; /* Byte location: 0xF00 */
14 uint8_t reserved[63];
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +053015};
16
Sridhar Siricilla04481772022-06-15 22:44:06 +053017static struct debug_feature_cntrl dbg_feature_cntrl;
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +053018
Sridhar Siricilla04481772022-06-15 22:44:06 +053019_Static_assert(sizeof(struct debug_feature_cntrl) % 64 == 0
20 && sizeof(struct debug_feature_cntrl) <= 256,
21 "sizeof(struct debug_feature_cntrl) must be a multiple of 64 bytes and up to 256 bytes");
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +053022
Sridhar Siricilla0aa1ac42022-03-09 20:35:32 +053023bool is_debug_cse_fw_update_disable(void)
24{
Sridhar Siricilla04481772022-06-15 22:44:06 +053025 printk(BIOS_DEBUG, "rt_debug: dbg_feature_cntrl.cse_fw_update_disable=%d\n",
26 dbg_feature_cntrl.cse_fw_update_disable);
Sridhar Siricilla0aa1ac42022-03-09 20:35:32 +053027
Sridhar Siricilla04481772022-06-15 22:44:06 +053028 return dbg_feature_cntrl.cse_fw_update_disable == 1;
Sridhar Siricilla0aa1ac42022-03-09 20:35:32 +053029}
30
Sridhar Siricilla04481772022-06-15 22:44:06 +053031enum cb_err dbg_feature_cntrl_init(void)
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +053032{
Sridhar Siricilla04481772022-06-15 22:44:06 +053033 if (spi_flash_read(boot_device_spi_flash(), DEBUG_FEATURE_CTRL_OFFSET,
34 DEBUG_FEATURE_CTRL_SZ, &dbg_feature_cntrl)) {
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +053035 printk(BIOS_ERR, "Failed to read Descriptor Region from SPI Flash\n");
Sridhar Siricillab4de2612022-04-28 14:36:38 +053036 return CB_ERR;
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +053037 }
Sridhar Siricillab4de2612022-04-28 14:36:38 +053038 return CB_SUCCESS;
Sridhar Siricilla2c2706c2022-01-25 00:15:17 +053039}