From 05a49f8be01e2e1c1211b7dcd09f0751cd15ec4f Mon Sep 17 00:00:00 2001 From: morris Date: Tue, 18 Nov 2025 18:56:46 +0800 Subject: [PATCH] fix(mspi): constant overflow issue reported by coverity --- .../test_apps/master/sdkconfig.defaults.esp32c5 | 2 ++ .../esp_driver_spi/test_apps/slave/sdkconfig.defaults.esp32c5 | 2 ++ components/esp_hal_mspi/esp32c2/include/hal/spimem_flash_ll.h | 4 +++- components/esp_hal_mspi/esp32c3/include/hal/spimem_flash_ll.h | 4 +++- components/esp_hal_mspi/esp32c6/include/hal/spimem_flash_ll.h | 4 +++- components/esp_hal_mspi/esp32h2/include/hal/spimem_flash_ll.h | 4 +++- components/esp_hal_mspi/esp32s2/include/hal/spimem_flash_ll.h | 4 +++- components/esp_hal_mspi/esp32s3/include/hal/spimem_flash_ll.h | 4 +++- 8 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 components/esp_driver_spi/test_apps/master/sdkconfig.defaults.esp32c5 create mode 100644 components/esp_driver_spi/test_apps/slave/sdkconfig.defaults.esp32c5 diff --git a/components/esp_driver_spi/test_apps/master/sdkconfig.defaults.esp32c5 b/components/esp_driver_spi/test_apps/master/sdkconfig.defaults.esp32c5 new file mode 100644 index 00000000000..db575808cf9 --- /dev/null +++ b/components/esp_driver_spi/test_apps/master/sdkconfig.defaults.esp32c5 @@ -0,0 +1,2 @@ +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0 diff --git a/components/esp_driver_spi/test_apps/slave/sdkconfig.defaults.esp32c5 b/components/esp_driver_spi/test_apps/slave/sdkconfig.defaults.esp32c5 new file mode 100644 index 00000000000..db575808cf9 --- /dev/null +++ b/components/esp_driver_spi/test_apps/slave/sdkconfig.defaults.esp32c5 @@ -0,0 +1,2 @@ +CONFIG_SPIRAM=y +CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0 diff --git a/components/esp_hal_mspi/esp32c2/include/hal/spimem_flash_ll.h b/components/esp_hal_mspi/esp32c2/include/hal/spimem_flash_ll.h index f6ce50040fa..63c17dcd97f 100644 --- a/components/esp_hal_mspi/esp32c2/include/hal/spimem_flash_ll.h +++ b/components/esp_hal_mspi/esp32c2/include/hal/spimem_flash_ll.h @@ -634,7 +634,9 @@ static inline void spimem_flash_ll_set_hold(spi_mem_dev_t *dev, uint32_t hold_n) static inline void spimem_flash_ll_set_cs_setup(spi_mem_dev_t *dev, uint32_t cs_setup_time) { dev->user.cs_setup = (cs_setup_time > 0 ? 1 : 0); - dev->ctrl2.cs_setup_time = cs_setup_time - 1; + if (cs_setup_time > 0) { + dev->ctrl2.cs_setup_time = cs_setup_time - 1; + } } /** diff --git a/components/esp_hal_mspi/esp32c3/include/hal/spimem_flash_ll.h b/components/esp_hal_mspi/esp32c3/include/hal/spimem_flash_ll.h index feec57a0073..85536ec8e8b 100644 --- a/components/esp_hal_mspi/esp32c3/include/hal/spimem_flash_ll.h +++ b/components/esp_hal_mspi/esp32c3/include/hal/spimem_flash_ll.h @@ -634,7 +634,9 @@ static inline void spimem_flash_ll_set_hold(spi_mem_dev_t *dev, uint32_t hold_n) static inline void spimem_flash_ll_set_cs_setup(spi_mem_dev_t *dev, uint32_t cs_setup_time) { dev->user.cs_setup = (cs_setup_time > 0 ? 1 : 0); - dev->ctrl2.cs_setup_time = cs_setup_time - 1; + if (cs_setup_time > 0) { + dev->ctrl2.cs_setup_time = cs_setup_time - 1; + } } /** diff --git a/components/esp_hal_mspi/esp32c6/include/hal/spimem_flash_ll.h b/components/esp_hal_mspi/esp32c6/include/hal/spimem_flash_ll.h index 68eeea49673..22e76f0847d 100644 --- a/components/esp_hal_mspi/esp32c6/include/hal/spimem_flash_ll.h +++ b/components/esp_hal_mspi/esp32c6/include/hal/spimem_flash_ll.h @@ -633,7 +633,9 @@ static inline void spimem_flash_ll_set_hold(spi_mem_dev_t *dev, uint32_t hold_n) static inline void spimem_flash_ll_set_cs_setup(spi_mem_dev_t *dev, uint32_t cs_setup_time) { dev->user.cs_setup = (cs_setup_time > 0 ? 1 : 0); - dev->ctrl2.cs_setup_time = cs_setup_time - 1; + if (cs_setup_time > 0) { + dev->ctrl2.cs_setup_time = cs_setup_time - 1; + } } /** diff --git a/components/esp_hal_mspi/esp32h2/include/hal/spimem_flash_ll.h b/components/esp_hal_mspi/esp32h2/include/hal/spimem_flash_ll.h index 2ae767c3ed1..b305c17338d 100644 --- a/components/esp_hal_mspi/esp32h2/include/hal/spimem_flash_ll.h +++ b/components/esp_hal_mspi/esp32h2/include/hal/spimem_flash_ll.h @@ -633,7 +633,9 @@ static inline void spimem_flash_ll_set_hold(spi_mem_dev_t *dev, uint32_t hold_n) static inline void spimem_flash_ll_set_cs_setup(spi_mem_dev_t *dev, uint32_t cs_setup_time) { dev->user.cs_setup = (cs_setup_time > 0 ? 1 : 0); - dev->ctrl2.cs_setup_time = cs_setup_time - 1; + if (cs_setup_time > 0) { + dev->ctrl2.cs_setup_time = cs_setup_time - 1; + } } /** diff --git a/components/esp_hal_mspi/esp32s2/include/hal/spimem_flash_ll.h b/components/esp_hal_mspi/esp32s2/include/hal/spimem_flash_ll.h index 961d4688203..219791eb1d3 100644 --- a/components/esp_hal_mspi/esp32s2/include/hal/spimem_flash_ll.h +++ b/components/esp_hal_mspi/esp32s2/include/hal/spimem_flash_ll.h @@ -567,7 +567,9 @@ static inline void spimem_flash_ll_set_hold(spi_mem_dev_t *dev, uint32_t hold_n) static inline void spimem_flash_ll_set_cs_setup(spi_mem_dev_t *dev, uint32_t cs_setup_time) { dev->user.cs_setup = (cs_setup_time > 0 ? 1 : 0); - dev->ctrl2.cs_setup_time = cs_setup_time - 1; + if (cs_setup_time > 0) { + dev->ctrl2.cs_setup_time = cs_setup_time - 1; + } } /** diff --git a/components/esp_hal_mspi/esp32s3/include/hal/spimem_flash_ll.h b/components/esp_hal_mspi/esp32s3/include/hal/spimem_flash_ll.h index 8dff3cf7137..adff2321031 100644 --- a/components/esp_hal_mspi/esp32s3/include/hal/spimem_flash_ll.h +++ b/components/esp_hal_mspi/esp32s3/include/hal/spimem_flash_ll.h @@ -649,7 +649,9 @@ static inline void spimem_flash_ll_set_hold(spi_mem_dev_t *dev, uint32_t hold_n) static inline void spimem_flash_ll_set_cs_setup(spi_mem_dev_t *dev, uint32_t cs_setup_time) { dev->user.cs_setup = (cs_setup_time > 0 ? 1 : 0); - dev->ctrl2.cs_setup_time = cs_setup_time - 1; + if (cs_setup_time > 0) { + dev->ctrl2.cs_setup_time = cs_setup_time - 1; + } } static inline void spimem_flash_ll_set_extra_dummy(spi_mem_dev_t *dev, uint32_t extra_dummy)