From fe37db3271e0040d8b4bacc06a477e7ae7a37ff1 Mon Sep 17 00:00:00 2001 From: "Michael (XIAO Xufeng)" Date: Mon, 21 Sep 2020 10:59:07 +0800 Subject: [PATCH] esp_flash: fix the incorrect check_idle logic in LL and chip_driver --- components/hal/esp32/include/hal/spi_flash_ll.h | 4 ++-- components/hal/esp32s2/include/hal/gpspi_flash_ll.h | 2 +- components/hal/esp32s2/include/hal/spimem_flash_ll.h | 2 +- components/hal/esp32s3/include/hal/spimem_flash_ll.h | 2 +- components/spi_flash/spi_flash_chip_generic.c | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/components/hal/esp32/include/hal/spi_flash_ll.h b/components/hal/esp32/include/hal/spi_flash_ll.h index 0b4db15943..656425e80c 100644 --- a/components/hal/esp32/include/hal/spi_flash_ll.h +++ b/components/hal/esp32/include/hal/spi_flash_ll.h @@ -224,7 +224,7 @@ static inline void spi_flash_ll_user_start(spi_dev_t *dev) */ static inline bool spi_flash_ll_host_idle(const spi_dev_t *dev) { - return dev->ext2.st != 0; + return dev->ext2.st == 0; } /*------------------------------------------------------------------------------ @@ -390,4 +390,4 @@ static inline void spi_flash_ll_set_dummy(spi_dev_t *dev, uint32_t dummy_n) #ifdef __cplusplus } -#endif \ No newline at end of file +#endif diff --git a/components/hal/esp32s2/include/hal/gpspi_flash_ll.h b/components/hal/esp32s2/include/hal/gpspi_flash_ll.h index f9cf4e2633..aa9482251a 100644 --- a/components/hal/esp32s2/include/hal/gpspi_flash_ll.h +++ b/components/hal/esp32s2/include/hal/gpspi_flash_ll.h @@ -156,7 +156,7 @@ static inline void gpspi_flash_ll_user_start(spi_dev_t *dev) */ static inline bool gpspi_flash_ll_host_idle(const spi_dev_t *dev) { - return dev->fsm.st != 0; + return dev->fsm.st == 0; } /** diff --git a/components/hal/esp32s2/include/hal/spimem_flash_ll.h b/components/hal/esp32s2/include/hal/spimem_flash_ll.h index ced88ab2e5..90f808aa62 100644 --- a/components/hal/esp32s2/include/hal/spimem_flash_ll.h +++ b/components/hal/esp32s2/include/hal/spimem_flash_ll.h @@ -202,7 +202,7 @@ static inline void spimem_flash_ll_user_start(spi_mem_dev_t *dev) */ static inline bool spimem_flash_ll_host_idle(const spi_mem_dev_t *dev) { - return dev->fsm.st != 0; + return dev->fsm.st == 0; } /** diff --git a/components/hal/esp32s3/include/hal/spimem_flash_ll.h b/components/hal/esp32s3/include/hal/spimem_flash_ll.h index d5a27a54f2..e361eaa364 100644 --- a/components/hal/esp32s3/include/hal/spimem_flash_ll.h +++ b/components/hal/esp32s3/include/hal/spimem_flash_ll.h @@ -202,7 +202,7 @@ static inline void spimem_flash_ll_user_start(spi_mem_dev_t *dev) */ static inline bool spimem_flash_ll_host_idle(const spi_mem_dev_t *dev) { - return dev->fsm.st != 0; + return dev->fsm.st == 0; } /** diff --git a/components/spi_flash/spi_flash_chip_generic.c b/components/spi_flash/spi_flash_chip_generic.c index 6db7144773..d9cc41e5e5 100644 --- a/components/spi_flash/spi_flash_chip_generic.c +++ b/components/spi_flash/spi_flash_chip_generic.c @@ -287,7 +287,7 @@ esp_err_t spi_flash_chip_generic_get_write_protect(esp_flash_t *chip, bool *out_ esp_err_t spi_flash_generic_wait_host_idle(esp_flash_t *chip, uint32_t *timeout_us) { - while (chip->host->driver->host_idle(chip->host) && *timeout_us > 0) { + while (!chip->host->driver->host_idle(chip->host) && *timeout_us > 0) { #if HOST_DELAY_INTERVAL_US > 0 if (*timeout_us > 1) { int delay = MIN(HOST_DELAY_INTERVAL_US, *timeout_us);