xtensa/esp32: allows the rtc wdt to be configured in bootloader and used later
This commit is contained in:
parent
b599823f3b
commit
2a9dab2e5d
@ -71,7 +71,6 @@ static int esp32_wtd_start(FAR struct esp32_wtd_dev_s *dev);
|
||||
static int esp32_wtd_stop(FAR struct esp32_wtd_dev_s *dev);
|
||||
static int esp32_wtd_enablewp(FAR struct esp32_wtd_dev_s *dev);
|
||||
static int esp32_wtd_disablewp(FAR struct esp32_wtd_dev_s *dev);
|
||||
static int esp32_wtd_initconf(FAR struct esp32_wtd_dev_s *dev);
|
||||
static int esp32_wtd_pre(FAR struct esp32_wtd_dev_s *dev, uint16_t value);
|
||||
static int esp32_wtd_settimeout(FAR struct esp32_wtd_dev_s *dev,
|
||||
uint32_t value, uint8_t stage);
|
||||
@ -95,7 +94,6 @@ struct esp32_wtd_ops_s esp32_mwtd_ops =
|
||||
{
|
||||
.start = esp32_wtd_start,
|
||||
.stop = esp32_wtd_stop,
|
||||
.initconf = esp32_wtd_initconf,
|
||||
.enablewp = esp32_wtd_enablewp,
|
||||
.disablewp = esp32_wtd_disablewp,
|
||||
.pre = esp32_wtd_pre,
|
||||
@ -113,7 +111,6 @@ struct esp32_wtd_ops_s esp32_rwtd_ops =
|
||||
{
|
||||
.start = esp32_wtd_start,
|
||||
.stop = esp32_wtd_stop,
|
||||
.initconf = esp32_wtd_initconf,
|
||||
.enablewp = esp32_wtd_enablewp,
|
||||
.disablewp = esp32_wtd_disablewp,
|
||||
.pre = NULL,
|
||||
@ -474,45 +471,6 @@ static int esp32_wtd_disablewp(FAR struct esp32_wtd_dev_s *dev)
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp32_wtd_initconf
|
||||
*
|
||||
* Description:
|
||||
* It turn off all the stages and ensure Flash Boot Protection is disabled.
|
||||
* In case of RWDT, it also turns off the WDT, in case it was already
|
||||
* turned on before. NOTE: The main system reset does not reset RTC, so
|
||||
* all the registers values are kept.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
static int esp32_wtd_initconf(FAR struct esp32_wtd_dev_s *dev)
|
||||
{
|
||||
uint32_t mask = 0;
|
||||
|
||||
DEBUGASSERT(dev);
|
||||
|
||||
/* If it is a RWDT */
|
||||
|
||||
if (((struct esp32_wtd_priv_s *)dev)->base == RTC_CNTL_WDTCONFIG0_REG)
|
||||
{
|
||||
mask = RTC_CNTL_WDT_INT_ENA_M | RTC_CNTL_WDT_STG0_M
|
||||
| RTC_CNTL_WDT_STG1_M | RTC_CNTL_WDT_STG2_M | RTC_CNTL_WDT_STG3_M
|
||||
| RTC_CNTL_WDT_FLASHBOOT_MOD_EN_M;
|
||||
esp32_wtd_modifyreg32(dev, RWDT_CONFIG0_OFFSET, mask, 0);
|
||||
}
|
||||
|
||||
/* If it is a MWDT */
|
||||
|
||||
else
|
||||
{
|
||||
mask = TIMG_WDT_STG0_M | TIMG_WDT_STG1_M | TIMG_WDT_STG2_M
|
||||
| TIMG_WDT_STG3_M | TIMG_WDT_FLASHBOOT_MOD_EN_M;
|
||||
esp32_wtd_modifyreg32(dev, MWDT_CONFIG0_OFFSET, mask, 0);
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: esp32_wtd_pre
|
||||
*
|
||||
|
@ -41,7 +41,6 @@
|
||||
#define ESP32_WTD_STOP(d) ((d)->ops->stop(d))
|
||||
#define ESP32_WTD_LOCK(d) ((d)->ops->enablewp(d))
|
||||
#define ESP32_WTD_UNLOCK(d) ((d)->ops->disablewp(d))
|
||||
#define ESP32_WTD_INITCONF(d) ((d)->ops->initconf(d))
|
||||
#define ESP32_WTD_PRE(d, v) ((d)->ops->pre(d, v))
|
||||
#define ESP32_WTD_STO(d, v, s) ((d)->ops->settimeout(d, v, s))
|
||||
#define ESP32_WTD_FEED(d) ((d)->ops->feed(d))
|
||||
|
@ -679,10 +679,6 @@ int esp32_wtd_initialize(FAR const char *devpath, uint8_t wdt)
|
||||
|
||||
ESP32_WTD_UNLOCK(lower->wtd);
|
||||
|
||||
/* Ensure stages are disabled and Flash boot protection was disabled */
|
||||
|
||||
ESP32_WTD_INITCONF(lower->wtd);
|
||||
|
||||
/* If it is a Main System Watchdog Timer configure the Prescale to
|
||||
* have a 500us period.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user