Explorar o código

dreiver/i2c: delete i2c cmd_mux semaphore more cleanly

Merges https://github.com/espressif/esp-idf/pull/6847
Melissa LeBlanc-Williams %!s(int64=4) %!d(string=hai) anos
pai
achega
59d08d4467
Modificáronse 1 ficheiros con 2 adicións e 0 borrados
  1. 2 0
      components/driver/i2c.c

+ 2 - 0
components/driver/i2c.c

@@ -367,7 +367,9 @@ esp_err_t i2c_driver_delete(i2c_port_t i2c_num)
     p_i2c->intr_handle = NULL;
     p_i2c->intr_handle = NULL;
 
 
     if (p_i2c->cmd_mux) {
     if (p_i2c->cmd_mux) {
+        // Let any command in progress finish.
         xSemaphoreTake(p_i2c->cmd_mux, portMAX_DELAY);
         xSemaphoreTake(p_i2c->cmd_mux, portMAX_DELAY);
+        xSemaphoreGive(p_i2c->cmd_mux);
         vSemaphoreDelete(p_i2c->cmd_mux);
         vSemaphoreDelete(p_i2c->cmd_mux);
     }
     }
     if (p_i2c_obj[i2c_num]->cmd_evt_queue) {
     if (p_i2c_obj[i2c_num]->cmd_evt_queue) {