aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/security/vboot/vbnv.c7
-rw-r--r--src/security/vboot/vbnv.h4
-rw-r--r--src/security/vboot/vbnv_layout.h1
3 files changed, 12 insertions, 0 deletions
diff --git a/src/security/vboot/vbnv.c b/src/security/vboot/vbnv.c
index 0fecacd4d2..636e5e3806 100644
--- a/src/security/vboot/vbnv.c
+++ b/src/security/vboot/vbnv.c
@@ -147,6 +147,13 @@ int vboot_wants_oprom(void)
return (vbnv_data(BOOT_OFFSET) & BOOT_OPROM_NEEDED) ? 1 : 0;
}
+/* Read the USB Device Controller(UDC) enable flag from VBNV. */
+int vbnv_udc_enable_flag(void)
+{
+ vbnv_setup();
+ return (vbnv_data(DEV_FLAGS_OFFSET) & DEV_ENABLE_UDC) ? 1 : 0;
+}
+
void vbnv_init(uint8_t *vbnv_copy)
{
if (IS_ENABLED(CONFIG_VBOOT_VBNV_CMOS))
diff --git a/src/security/vboot/vbnv.h b/src/security/vboot/vbnv.h
index 0288d0df4d..c8e689fa04 100644
--- a/src/security/vboot/vbnv.h
+++ b/src/security/vboot/vbnv.h
@@ -26,6 +26,10 @@ void regen_vbnv_crc(uint8_t *vbnv_copy);
int get_recovery_mode_from_vbnv(void);
void set_recovery_mode_into_vbnv(int recovery_reason);
int vboot_wants_oprom(void);
+
+/* Read the USB Device Controller(UDC) enable flag from VBNV. */
+int vbnv_udc_enable_flag(void);
+
/* Initialize and read vbnv. This is used in the main vboot logic path. */
void vbnv_init(uint8_t *vbnv_copy);
/* Reset vbnv snapshot to a known state. */
diff --git a/src/security/vboot/vbnv_layout.h b/src/security/vboot/vbnv_layout.h
index 1dc01c909a..a9326e4ff4 100644
--- a/src/security/vboot/vbnv_layout.h
+++ b/src/security/vboot/vbnv_layout.h
@@ -40,6 +40,7 @@
#define DEV_FLAGS_OFFSET 4
#define DEV_BOOT_USB_MASK 0x01
#define DEV_BOOT_SIGNED_ONLY_MASK 0x02
+#define DEV_ENABLE_UDC 0x40
#define MISC_FLAGS_OFFSET 8
#define MISC_FLAGS_BATTERY_CUTOFF_MASK 0x08