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 0000000000..db575808cf --- /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 0000000000..db575808cf --- /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 f6ce50040f..63c17dcd97 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 feec57a007..85536ec8e8 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 68eeea4967..22e76f0847 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 2ae767c3ed..b305c17338 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 961d468820..219791eb1d 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 8dff3cf713..adff232103 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)