risc-v/esp32c3: 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:29:50 -03:00 committed by saramonteiro
parent b33ccd01cf
commit 52cea558af
2 changed files with 20 additions and 2 deletions

View File

@ -375,6 +375,14 @@ config ESP32C3_I2C0_SDAPIN
endif # ESP32C3_I2C0
config ESP32C3_I2CTIMEOSEC
int "Timeout seconds"
default 0
config ESP32C3_I2CTIMEOMS
int "Timeout milliseconds"
default 500
endmenu # I2C configuration
menu "SPI configuration"

View File

@ -799,8 +799,18 @@ static int esp32c3_i2c_sem_waitdone(struct esp32c3_i2c_priv_s *priv)
clock_gettime(CLOCK_REALTIME, &abstime);
abstime.tv_sec += 10;
abstime.tv_nsec += 0;
#if CONFIG_ESP32C3_I2CTIMEOSEC > 0
abstime.tv_sec += CONFIG_ESP32C3_I2CTIMEOSEC;
#endif
#if CONFIG_ESP32C3_I2CTIMEOMS > 0
abstime.tv_nsec += CONFIG_ESP32C3_I2CTIMEOMS * NSEC_PER_MSEC;
if (abstime.tv_nsec >= 1000 * NSEC_PER_MSEC)
{
abstime.tv_sec++;
abstime.tv_nsec -= 1000 * NSEC_PER_MSEC;
}
#endif
ret = nxsem_timedwait_uninterruptible(&priv->sem_isr, &abstime);