summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chip/npcx/cec.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/chip/npcx/cec.c b/chip/npcx/cec.c
index c58bef1ae9..7e89c60d6b 100644
--- a/chip/npcx/cec.c
+++ b/chip/npcx/cec.c
@@ -1023,6 +1023,10 @@ static int cec_set_enable(uint8_t enable)
return EC_RES_SUCCESS;
if (enable) {
+ /* Configure GPIO40/TA1 as capture timer input (TA1) */
+ CLEAR_BIT(NPCX_DEVALT(0xC), NPCX_DEVALTC_TA1_SL2);
+ SET_BIT(NPCX_DEVALT(3), NPCX_DEVALT3_TA1_SL1);
+
enter_state(CEC_STATE_IDLE);
/*
@@ -1049,6 +1053,10 @@ static int cec_set_enable(uint8_t enable)
task_disable_irq(NPCX_IRQ_MFT_1);
+ /* Configure GPIO40/TA1 back to GPIO */
+ CLEAR_BIT(NPCX_DEVALT(3), NPCX_DEVALT3_TA1_SL1);
+ SET_BIT(NPCX_DEVALT(0xC), NPCX_DEVALTC_TA1_SL2);
+
enter_state(CEC_STATE_DISABLED);
CPRINTF("CEC disabled\n");
@@ -1140,10 +1148,6 @@ static void cec_init(void)
/* APB1 is the clock we base the timers on */
apb1_freq_div_10k = clock_get_apb1_freq()/10000;
- /* Configure TA1 as capture timer input instead of GPIO */
- CLEAR_BIT(NPCX_DEVALT(0xC), NPCX_DEVALTC_TA1_SL2);
- SET_BIT(NPCX_DEVALT(3), NPCX_DEVALT3_TA1_SL1);
-
/* Ensure Multi-Function timer is powered up. */
CLEAR_BIT(NPCX_PWDWN_CTL(mdl), NPCX_PWDWN_CTL1_MFT1_PD);