This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit f8e78c10751e8a6a2810883e9dc74035f4e91c27
Author: Alan Carvalho de Assis <[email protected]>
AuthorDate: Sat Apr 25 16:45:09 2026 -0300

    drivers/qe: Don't compile stm32_qencoder.c if STM32 QE is not enabled
    
    NuttX uses Quadrature Encoder lower half driver to internal QE from
    MCUs and also with Magnetic Rotary Encoder sensors. But when the
    STM32 QE is not enabled, the board code will try to compile the
    stm32_qencoder.c because Magnetic Rotary Encoders enables the
    CONFIG_SENSORS_QENCODER. This patch fixes this issue.
    
    Signed-off-by: Alan C. Assis <[email protected]>
---
 arch/arm/src/stm32/CMakeLists.txt                     |  4 +++-
 arch/arm/src/stm32/Kconfig                            | 10 ++++++++++
 arch/arm/src/stm32/Make.defs                          |  4 +++-
 boards/arm/stm32/common/src/CMakeLists.txt            |  4 +++-
 boards/arm/stm32/common/src/Make.defs                 |  4 +++-
 boards/arm/stm32/stm32f4discovery/src/stm32_bringup.c |  2 +-
 6 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/arch/arm/src/stm32/CMakeLists.txt 
b/arch/arm/src/stm32/CMakeLists.txt
index e193c424b57..9727b096e3b 100644
--- a/arch/arm/src/stm32/CMakeLists.txt
+++ b/arch/arm/src/stm32/CMakeLists.txt
@@ -205,7 +205,9 @@ if(CONFIG_STM32_CAP)
 endif()
 
 if(CONFIG_SENSORS_QENCODER)
-  list(APPEND SRCS stm32_qencoder.c)
+  if(CONFIG_STM32_QE)
+    list(APPEND SRCS stm32_qencoder.c)
+  endif()
 endif()
 
 if(CONFIG_SENSORS_HALL3PHASE)
diff --git a/arch/arm/src/stm32/Kconfig b/arch/arm/src/stm32/Kconfig
index 67ec8612c9d..d811530b5b4 100644
--- a/arch/arm/src/stm32/Kconfig
+++ b/arch/arm/src/stm32/Kconfig
@@ -12004,6 +12004,10 @@ config STM32_DMA2D_REGDEBUG
 endmenu
 endif # STM32_DMA2D
 
+config STM32_QE
+       bool
+       default n
+
 menu "STM32 QEncoder Driver"
        depends on SENSORS_QENCODER
        depends on STM32_TIM1 || STM32_TIM2 || STM32_TIM3 || STM32_TIM4 || 
STM32_TIM5 || STM32_TIM8
@@ -12020,6 +12024,7 @@ config STM32_TIM1_QE
        bool "TIM1 QE"
        default n
        depends on STM32_TIM1
+       select STM32_QE
        ---help---
                Reserve TIM1 for use by QEncoder.
 
@@ -12038,6 +12043,7 @@ config STM32_TIM2_QE
        bool "TIM2 QE"
        default n
        depends on STM32_TIM2
+       select STM32_QE
        ---help---
                Reserve TIM2 for use by QEncoder.
 
@@ -12056,6 +12062,7 @@ config STM32_TIM3_QE
        bool "TIM3 QE"
        default n
        depends on STM32_TIM3
+       select STM32_QE
        ---help---
                Reserve TIM3 for use by QEncoder.
 
@@ -12074,6 +12081,7 @@ config STM32_TIM4_QE
        bool "TIM4 QE"
        default n
        depends on STM32_TIM4
+       select STM32_QE
        ---help---
                Reserve TIM4 for use by QEncoder.
 
@@ -12092,6 +12100,7 @@ config STM32_TIM5_QE
        bool "TIM5 QE"
        default n
        depends on STM32_TIM5
+       select STM32_QE
        ---help---
                Reserve TIM5 for use by QEncoder.
 
@@ -12110,6 +12119,7 @@ config STM32_TIM8_QE
        bool "TIM8 QE"
        default n
        depends on STM32_TIM8
+       select STM32_QE
        ---help---
                Reserve TIM8 for use by QEncoder.
 
diff --git a/arch/arm/src/stm32/Make.defs b/arch/arm/src/stm32/Make.defs
index fe8e29dfe33..09f2cf8f3bd 100644
--- a/arch/arm/src/stm32/Make.defs
+++ b/arch/arm/src/stm32/Make.defs
@@ -189,7 +189,9 @@ CHIP_CSRCS += stm32_capture_lowerhalf.c
 endif
 
 ifeq ($(CONFIG_SENSORS_QENCODER),y)
-CHIP_CSRCS += stm32_qencoder.c
+  ifeq ($(CONFIG_STM32_QE),y)
+    CHIP_CSRCS += stm32_qencoder.c
+  endif
 endif
 
 ifeq ($(CONFIG_SENSORS_HALL3PHASE),y)
diff --git a/boards/arm/stm32/common/src/CMakeLists.txt 
b/boards/arm/stm32/common/src/CMakeLists.txt
index 6883bfaea51..754fe81ce6e 100644
--- a/boards/arm/stm32/common/src/CMakeLists.txt
+++ b/boards/arm/stm32/common/src/CMakeLists.txt
@@ -87,7 +87,9 @@ if(CONFIG_SENSORS_ZEROCROSS)
 endif()
 
 if(CONFIG_SENSORS_QENCODER)
-  list(APPEND SRCS stm32_qencoder.c)
+  if(CONFIG_STM32_QE)
+    list(APPEND SRCS stm32_qencoder.c)
+  endif()
 endif()
 
 if(CONFIG_SENSORS_INA219)
diff --git a/boards/arm/stm32/common/src/Make.defs 
b/boards/arm/stm32/common/src/Make.defs
index bacc31b1dcf..2839c86bf71 100644
--- a/boards/arm/stm32/common/src/Make.defs
+++ b/boards/arm/stm32/common/src/Make.defs
@@ -95,7 +95,9 @@ ifeq ($(CONFIG_SENSORS_ZEROCROSS),y)
 endif
 
 ifeq ($(CONFIG_SENSORS_QENCODER),y)
-  CSRCS += stm32_qencoder.c
+  ifeq ($(CONFIG_STM32_QE),y)
+    CSRCS += stm32_qencoder.c
+  endif
 endif
 
 ifeq ($(CONFIG_SENSORS_HALL3PHASE),y)
diff --git a/boards/arm/stm32/stm32f4discovery/src/stm32_bringup.c 
b/boards/arm/stm32/stm32f4discovery/src/stm32_bringup.c
index a49ce53519d..714945164bd 100644
--- a/boards/arm/stm32/stm32f4discovery/src/stm32_bringup.c
+++ b/boards/arm/stm32/stm32f4discovery/src/stm32_bringup.c
@@ -476,7 +476,7 @@ int stm32_bringup(void)
     }
 #endif
 
-#ifdef CONFIG_SENSORS_QENCODER
+#if defined(CONFIG_STM32_QE) && defined(CONFIG_SENSORS_QENCODER)
   /* Initialize and register the qencoder driver */
 
   ret = board_qencoder_initialize(0, CONFIG_STM32F4DISCO_QETIMER);

Reply via email to