diff options
Diffstat (limited to 'board/cr50/board.c')
-rw-r--r-- | board/cr50/board.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/board/cr50/board.c b/board/cr50/board.c index 3c73181cc5..e20810cd42 100644 --- a/board/cr50/board.c +++ b/board/cr50/board.c @@ -763,6 +763,15 @@ static void maybe_trigger_ite_sync(void) generate_ite_sync(); } +static void process_board_cfg(void) +{ + uint32_t tpm_board_cfg = board_cfg_reg_read(); + + if (tpm_board_cfg & BOARD_CFG_LONG_INT_AP_BIT) + int_ap_extension_enable(); +} +DECLARE_DEFERRED(process_board_cfg); + /* Initialize board. */ static void board_init(void) { @@ -856,6 +865,8 @@ static void board_init(void) * machines run in HOOK_SECOND, which first triggers right after * HOOK_INIT, not at +1.0 seconds. */ + + process_board_cfg(); } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_INIT_CR50_BOARD); @@ -1803,6 +1814,9 @@ void board_cfg_reg_write(uint32_t value) /* Store the tpm_board_cfg in power-down scratch. */ GREG32(PMU, PWRDN_SCRATCH21) = value|BOARD_CFG_LOCKED_BIT; + + /* Process board_configuration change in a deferred function */ + hook_call_deferred(&process_board_cfg_data, 0); } uint32_t board_cfg_reg_read(void) |