]> granicus.if.org Git - esp-idf/commitdiff
bootloader_random: Restore all SARADC/I2S registers to reset values
authorAngus Gratton <angus@espressif.com>
Thu, 12 Jan 2017 23:26:58 +0000 (10:26 +1100)
committerAngus Gratton <angus@espressif.com>
Fri, 13 Jan 2017 01:19:13 +0000 (12:19 +1100)
Fix for issue with I2S0 not being usable after bootloader_random_enable()

components/bootloader_support/src/bootloader_random.c

index c8b6c24b1fed784d00341eff3d67b5e55ec866c9..b58ebe941da70c56701e5b48793de703dac18337 100644 (file)
@@ -124,10 +124,13 @@ void bootloader_random_disable(void)
     /* Restore SYSCON mode registers */
     CLEAR_PERI_REG_MASK(SENS_SAR_READ_CTRL_REG, SENS_SAR1_DIG_FORCE);
     CLEAR_PERI_REG_MASK(SENS_SAR_READ_CTRL2_REG, SENS_SAR2_DIG_FORCE);
-    CLEAR_PERI_REG_MASK(SYSCON_SARADC_CTRL_REG, SYSCON_SARADC_SAR2_MUX | SYSCON_SARADC_SAR_SEL);
 
     /* Restore SAR ADC mode */
     CLEAR_PERI_REG_MASK(SENS_SAR_START_FORCE_REG, SENS_SAR2_EN_TEST);
+    CLEAR_PERI_REG_MASK(SYSCON_SARADC_CTRL_REG, SYSCON_SARADC_SAR2_MUX
+                        | SYSCON_SARADC_SAR_SEL | SYSCON_SARADC_DATA_TO_I2S);
+    SET_PERI_REG_BITS(SENS_SAR_MEAS_WAIT2_REG, SENS_FORCE_XPD_SAR, 0, SENS_FORCE_XPD_SAR_S);
+    SET_PERI_REG_BITS(SYSCON_SARADC_FSM_REG, SYSCON_SARADC_START_WAIT, 8, SYSCON_SARADC_START_WAIT_S);
 
     /* Reset i2s peripheral */
     SET_PERI_REG_MASK(DPORT_PERIP_RST_EN_REG, DPORT_I2S0_RST);