Merge branch 'bugfix/spi_concurrency' into 'master'

spi: fix a possible concurrency issue (port to master)

See merge request idf/esp-idf!5191
This commit is contained in:
Angus Gratton
2019-06-20 15:32:02 +08:00

View File

@@ -361,12 +361,14 @@ static void SPI_SLAVE_ISR_ATTR spi_intr(void *arg)
} }
} }
//Disable interrupt before checking to avoid concurrency issue.
esp_intr_disable(host->intr);
//Grab next transaction //Grab next transaction
r = xQueueReceiveFromISR(host->trans_queue, &trans, &do_yield); r = xQueueReceiveFromISR(host->trans_queue, &trans, &do_yield);
if (!r) { if (r) {
//No packet waiting. Disable interrupt. //enable the interrupt again if there is packet to send
esp_intr_disable(host->intr); esp_intr_enable(host->intr);
} else {
//We have a transaction. Send it. //We have a transaction. Send it.
host->cur_trans = trans; host->cur_trans = trans;