xtensa/esp32: Make the semaphore timeout on I2C configurable

Signed-off-by: Gustavo Henrique Nihei <gustavo.nihei@espressif.com>
This commit is contained in:
Gustavo Henrique Nihei 2021-09-15 16:28:11 -03:00 committed by saramonteiro
parent 3b2aea204c
commit b33ccd01cf
2 changed files with 20 additions and 2 deletions

View File

@ -728,6 +728,14 @@ config ESP32_I2C1_SDAPIN
endif # ESP32_I2C1
config ESP32_I2CTIMEOSEC
int "Timeout seconds"
default 0
config ESP32_I2CTIMEOMS
int "Timeout milliseconds"
default 500
endmenu # I2C configuration
menu "SPI configuration"

View File

@ -727,8 +727,18 @@ static int esp32_i2c_sem_waitdone(FAR struct esp32_i2c_priv_s *priv)
clock_gettime(CLOCK_REALTIME, &abstime);
abstime.tv_sec += 10;
abstime.tv_nsec += 0;
#if CONFIG_ESP32_I2CTIMEOSEC > 0
abstime.tv_sec += CONFIG_ESP32_I2CTIMEOSEC;
#endif
#if CONFIG_ESP32_I2CTIMEOMS > 0
abstime.tv_nsec += CONFIG_ESP32_I2CTIMEOMS * NSEC_PER_MSEC;
if (abstime.tv_nsec >= 1000 * NSEC_PER_MSEC)
{
abstime.tv_sec++;
abstime.tv_nsec -= 1000 * NSEC_PER_MSEC;
}
#endif
/* Wait on ISR semaphore */