pm: introduce HAS_PM

Add a new Kconfig option that has to be selected by SoCs providing PM
hooks. This option will be now required to enable CONFIG_PM. Before this
change, CONFIG_PM could always be enabled, regardless of SoC providing
any kind of low-power support.

Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
This commit is contained in:
Gerard Marull-Paretas 2023-07-18 10:40:27 +02:00 committed by Fabio Baltieri
commit 3d2194f11e
44 changed files with 51 additions and 3 deletions

View file

@ -9,5 +9,6 @@ config SOC_SERIES_MEC1501X
select CPU_CORTEX_M4 select CPU_CORTEX_M4
select CPU_CORTEX_M_HAS_DWT select CPU_CORTEX_M_HAS_DWT
select SOC_FAMILY_MEC select SOC_FAMILY_MEC
select HAS_PM
help help
Enable support for Microchip MEC Cortex-M4 MCU series Enable support for Microchip MEC Cortex-M4 MCU series

View file

@ -12,5 +12,6 @@ config SOC_SERIES_MEC172X
select CPU_HAS_ARM_MPU select CPU_HAS_ARM_MPU
select SOC_FAMILY_MEC select SOC_FAMILY_MEC
select HAS_SWO select HAS_SWO
select HAS_PM
help help
Enable support for Microchip MEC Cortex-M4F MCU series Enable support for Microchip MEC Cortex-M4F MCU series

View file

@ -29,7 +29,7 @@ config ARCH_HAS_CUSTOM_BUSY_WAIT
default y if !QEMU_TARGET default y if !QEMU_TARGET
config PM config PM
default y if SYS_CLOCK_EXISTS && MULTITHREADING default y if SYS_CLOCK_EXISTS && MULTITHREADING && HAS_PM
config BUILD_OUTPUT_HEX config BUILD_OUTPUT_HEX
default y default y

View file

@ -12,5 +12,6 @@ config SOC_SERIES_NRF51X
select XIP select XIP
select HAS_NRFX select HAS_NRFX
select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE
select HAS_PM
help help
Enable support for NRF51 MCU series Enable support for NRF51 MCU series

View file

@ -15,5 +15,6 @@ config SOC_SERIES_NRF52X
select HAS_NORDIC_DRIVERS select HAS_NORDIC_DRIVERS
select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE
select HAS_SWO select HAS_SWO
select HAS_PM
help help
Enable support for NRF52 MCU series Enable support for NRF52 MCU series

View file

@ -9,6 +9,7 @@ config SOC_NRF5340_CPUAPP
select CPU_HAS_NRF_IDAU select CPU_HAS_NRF_IDAU
select CPU_HAS_FPU select CPU_HAS_FPU
select ARMV8_M_DSP select ARMV8_M_DSP
select HAS_PM
config SOC_NRF5340_CPUNET config SOC_NRF5340_CPUNET
bool bool

View file

@ -16,5 +16,6 @@ config SOC_SERIES_NRF91X
select XIP select XIP
select HAS_NRFX select HAS_NRFX
select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE
select HAS_PM
help help
Enable support for NRF91 MCU series Enable support for NRF91 MCU series

View file

@ -12,5 +12,6 @@ config SOC_SERIES_NPCX7
select CPU_HAS_ARM_MPU select CPU_HAS_ARM_MPU
select SOC_FAMILY_NPCX select SOC_FAMILY_NPCX
select CPU_HAS_CUSTOM_FIXED_SOC_MPU_REGIONS select CPU_HAS_CUSTOM_FIXED_SOC_MPU_REGIONS
select HAS_PM
help help
Enable support for Nuvoton NPCX7 series Enable support for Nuvoton NPCX7 series

View file

@ -11,5 +11,6 @@ config SOC_SERIES_NPCX9
select CPU_HAS_FPU select CPU_HAS_FPU
select CPU_HAS_ARM_MPU select CPU_HAS_ARM_MPU
select SOC_FAMILY_NPCX select SOC_FAMILY_NPCX
select HAS_PM
help help
Enable support for Nuvoton NPCX9 series Enable support for Nuvoton NPCX9 series

View file

@ -8,5 +8,6 @@ config SOC_SERIES_IMX_RT
select ARM select ARM
select SOC_FAMILY_IMX select SOC_FAMILY_IMX
select CLOCK_CONTROL select CLOCK_CONTROL
select HAS_PM
help help
Enable support for i.MX RT MCU series Enable support for i.MX RT MCU series

View file

@ -10,5 +10,6 @@ config SOC_SERIES_IMX_RT5XX
select CPU_CORTEX_M_HAS_DWT select CPU_CORTEX_M_HAS_DWT
select SOC_FAMILY_IMX select SOC_FAMILY_IMX
select CLOCK_CONTROL select CLOCK_CONTROL
select HAS_PM
help help
Enable support for i.MX RT5XX Series MCU series Enable support for i.MX RT5XX Series MCU series

View file

@ -12,5 +12,6 @@ config SOC_SERIES_IMX_RT6XX
select CLOCK_CONTROL select CLOCK_CONTROL
select CODE_DATA_RELOCATION_SRAM if FLASH_MCUX_FLEXSPI_XIP select CODE_DATA_RELOCATION_SRAM if FLASH_MCUX_FLEXSPI_XIP
select PLATFORM_SPECIFIC_INIT select PLATFORM_SPECIFIC_INIT
select HAS_PM
help help
Enable support for i.MX RT6XX Series MCU series Enable support for i.MX RT6XX Series MCU series

View file

@ -32,5 +32,6 @@ config SOC_SERIES_KINETIS_KE1XF
select HAS_MCUX_PWT select HAS_MCUX_PWT
select HAS_MCUX_RCM select HAS_MCUX_RCM
select PLATFORM_SPECIFIC_INIT select PLATFORM_SPECIFIC_INIT
select HAS_PM
help help
Enable support for Kinetis KE1xF MCU series Enable support for Kinetis KE1xF MCU series

View file

@ -12,5 +12,6 @@ config SOC_SERIES_EFM32HG
select HAS_SILABS_GECKO select HAS_SILABS_GECKO
select SOC_GECKO_CMU select SOC_GECKO_CMU
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select HAS_PM
help help
Enable support for EFM32 Happy Gecko MCU series Enable support for EFM32 Happy Gecko MCU series

View file

@ -17,5 +17,6 @@ config SOC_SERIES_EFM32JG12B
select SOC_GECKO_EMU select SOC_GECKO_EMU
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select SOC_GECKO_TRNG select SOC_GECKO_TRNG
select HAS_PM
help help
Enable support for EFM32 JadeGecko MCU series Enable support for EFM32 JadeGecko MCU series

View file

@ -20,5 +20,6 @@ config SOC_SERIES_EFM32PG12B
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select SOC_GECKO_TRNG select SOC_GECKO_TRNG
select SOC_GECKO_ADC select SOC_GECKO_ADC
select HAS_PM
help help
Enable support for EFM32 PearlGecko MCU series Enable support for EFM32 PearlGecko MCU series

View file

@ -18,5 +18,6 @@ config SOC_SERIES_EFM32PG1B
select SOC_GECKO_CMU select SOC_GECKO_CMU
select SOC_GECKO_EMU select SOC_GECKO_EMU
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select HAS_PM
help help
Enable support for EFM32 PearlGecko MCU series Enable support for EFM32 PearlGecko MCU series

View file

@ -14,5 +14,6 @@ config SOC_SERIES_EFM32WG
select HAS_SILABS_GECKO select HAS_SILABS_GECKO
select SOC_GECKO_CMU select SOC_GECKO_CMU
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select HAS_PM
help help
Enable support for EFM32 WonderGecko MCU series Enable support for EFM32 WonderGecko MCU series

View file

@ -17,5 +17,6 @@ config SOC_SERIES_EFR32BG13P
select SOC_GECKO_CMU select SOC_GECKO_CMU
select SOC_GECKO_EMU select SOC_GECKO_EMU
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select HAS_PM
help help
Enable support for EFR32BG13P Blue Gecko MCU series Enable support for EFR32BG13P Blue Gecko MCU series

View file

@ -20,5 +20,6 @@ config SOC_SERIES_EFR32BG22
select SOC_GECKO_CORE select SOC_GECKO_CORE
select SOC_GECKO_DEV_INIT select SOC_GECKO_DEV_INIT
select SOC_GECKO_SE select SOC_GECKO_SE
select HAS_PM
help help
Enable support for EFR32BG22 Blue Gecko MCU series Enable support for EFR32BG22 Blue Gecko MCU series

View file

@ -20,5 +20,6 @@ config SOC_SERIES_EFR32BG27
select SOC_GECKO_CORE select SOC_GECKO_CORE
select SOC_GECKO_DEV_INIT select SOC_GECKO_DEV_INIT
select SOC_GECKO_SE select SOC_GECKO_SE
select HAS_PM
help help
Enable support for EFR32BG27 Blue Gecko MCU series Enable support for EFR32BG27 Blue Gecko MCU series

View file

@ -18,5 +18,6 @@ config SOC_SERIES_EFR32FG13P
select SOC_GECKO_CMU select SOC_GECKO_CMU
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select SOC_GECKO_HAS_ERRATA_RTCC_E201 select SOC_GECKO_HAS_ERRATA_RTCC_E201
select HAS_PM
help help
Enable support for EFR32 FlexGecko MCU series Enable support for EFR32 FlexGecko MCU series

View file

@ -18,5 +18,6 @@ config SOC_SERIES_EFR32FG1P
select SOC_GECKO_CMU select SOC_GECKO_CMU
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select SOC_GECKO_HAS_ERRATA_RTCC_E201 select SOC_GECKO_HAS_ERRATA_RTCC_E201
select HAS_PM
help help
Enable support for EFR32 FlexGecko MCU series Enable support for EFR32 FlexGecko MCU series

View file

@ -19,5 +19,6 @@ config SOC_SERIES_EFR32MG12P
select SOC_GECKO_EMU select SOC_GECKO_EMU
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select SOC_GECKO_TRNG select SOC_GECKO_TRNG
select HAS_PM
help help
Enable support for EFR32 Mighty Gecko MCU series Enable support for EFR32 Mighty Gecko MCU series

View file

@ -19,5 +19,6 @@ config SOC_SERIES_EFR32MG21
select SOC_GECKO_EMU select SOC_GECKO_EMU
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select SOC_GECKO_SE select SOC_GECKO_SE
select HAS_PM
help help
Enable support for EFR32MG21 Mighty Gecko MCU series Enable support for EFR32MG21 Mighty Gecko MCU series

View file

@ -22,5 +22,6 @@ config SOC_SERIES_EFR32MG24
select SOC_GECKO_GPIO select SOC_GECKO_GPIO
select SOC_GECKO_DEV_INIT select SOC_GECKO_DEV_INIT
select SOC_GECKO_SE select SOC_GECKO_SE
select HAS_PM
help help
Enable support for EFR32MG24 Mighty Gecko MCU series Enable support for EFR32MG24 Mighty Gecko MCU series

View file

@ -13,5 +13,6 @@ config SOC_SERIES_STM32G0X
select SOC_FAMILY_STM32 select SOC_FAMILY_STM32
select HAS_STM32CUBE select HAS_STM32CUBE
select CPU_CORTEX_M_HAS_SYSTICK select CPU_CORTEX_M_HAS_SYSTICK
select HAS_PM
help help
Enable support for STM32G0 MCU series Enable support for STM32G0 MCU series

View file

@ -13,5 +13,6 @@ config SOC_SERIES_STM32G4X
select HAS_STM32CUBE select HAS_STM32CUBE
select CPU_HAS_ARM_MPU select CPU_HAS_ARM_MPU
select CLOCK_CONTROL_STM32_CUBE if CLOCK_CONTROL select CLOCK_CONTROL_STM32_CUBE if CLOCK_CONTROL
select HAS_PM
help help
Enable support for STM32G4 MCU series Enable support for STM32G4 MCU series

View file

@ -11,5 +11,6 @@ config SOC_SERIES_STM32L0X
select SOC_FAMILY_STM32 select SOC_FAMILY_STM32
select HAS_STM32CUBE select HAS_STM32CUBE
select CPU_CORTEX_M_HAS_SYSTICK select CPU_CORTEX_M_HAS_SYSTICK
select HAS_PM
help help
Enable support for STM32L0 MCU series Enable support for STM32L0 MCU series

View file

@ -14,5 +14,6 @@ config SOC_SERIES_STM32L4X
select HAS_STM32CUBE select HAS_STM32CUBE
select CPU_HAS_ARM_MPU select CPU_HAS_ARM_MPU
select HAS_SWO select HAS_SWO
select HAS_PM
help help
Enable support for STM32L4 MCU series Enable support for STM32L4 MCU series

View file

@ -15,5 +15,6 @@ config SOC_SERIES_STM32L5X
select ARMV8_M_DSP select ARMV8_M_DSP
select CPU_CORTEX_M_HAS_DWT select CPU_CORTEX_M_HAS_DWT
select HAS_STM32CUBE select HAS_STM32CUBE
select HAS_PM
help help
Enable support for STM32L5 MCU series Enable support for STM32L5 MCU series

View file

@ -15,5 +15,6 @@ config SOC_SERIES_STM32U5X
select ARMV8_M_DSP select ARMV8_M_DSP
select CPU_CORTEX_M_HAS_DWT select CPU_CORTEX_M_HAS_DWT
select HAS_STM32CUBE select HAS_STM32CUBE
select HAS_PM
help help
Enable support for STM32U5 MCU series Enable support for STM32U5 MCU series

View file

@ -13,5 +13,6 @@ config SOC_SERIES_STM32WBX
select HAS_STM32CUBE select HAS_STM32CUBE
select CPU_HAS_ARM_MPU select CPU_HAS_ARM_MPU
select HAS_SWO select HAS_SWO
select HAS_PM
help help
Enable support for STM32WB MCU series Enable support for STM32WB MCU series

View file

@ -15,5 +15,6 @@ config SOC_SERIES_STM32WBAX
select ARMV8_M_DSP select ARMV8_M_DSP
select CPU_CORTEX_M_HAS_DWT select CPU_CORTEX_M_HAS_DWT
select HAS_STM32CUBE select HAS_STM32CUBE
select HAS_PM
help help
Enable support for STM32WBA MCU series Enable support for STM32WBA MCU series

View file

@ -12,5 +12,6 @@ config SOC_SERIES_STM32WLX
select HAS_STM32CUBE select HAS_STM32CUBE
select CPU_HAS_ARM_MPU select CPU_HAS_ARM_MPU
select CLOCK_CONTROL_STM32_CUBE if CLOCK_CONTROL select CLOCK_CONTROL_STM32_CUBE if CLOCK_CONTROL
select HAS_PM
help help
Enable support for STM32WL MCU series Enable support for STM32WL MCU series

View file

@ -15,5 +15,6 @@ config SOC_SERIES_CC13X2_CC26X2
select HAS_CC13X2_CC26X2_SDK select HAS_CC13X2_CC26X2_SDK
select HAS_TI_CCFG select HAS_TI_CCFG
select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE
select HAS_PM
help help
Enable support for TI SimpleLink CC13x2 / CC26x2 SoCs Enable support for TI SimpleLink CC13x2 / CC26x2 SoCs

View file

@ -15,5 +15,6 @@ config SOC_SERIES_CC13X2X7_CC26X2X7
select HAS_CC13X2X7_CC26X2X7_SDK select HAS_CC13X2X7_CC26X2X7_SDK
select HAS_TI_CCFG if !BOOTLOADER_MCUBOOT select HAS_TI_CCFG if !BOOTLOADER_MCUBOOT
select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE select HAS_SEGGER_RTT if ZEPHYR_SEGGER_MODULE
select HAS_PM
help help
Enable support for TI SimpleLink CC13x2x7 / CC26x2x7 SoCs Enable support for TI SimpleLink CC13x2x7 / CC26x2x7 SoCs

View file

@ -14,6 +14,7 @@ config SOC_ESP32C3
select RISCV_ISA_EXT_M select RISCV_ISA_EXT_M
select RISCV_ISA_EXT_C select RISCV_ISA_EXT_C
select RISCV_ISA_EXT_ZICSR select RISCV_ISA_EXT_ZICSR
select HAS_PM
if SOC_ESP32C3 if SOC_ESP32C3

View file

@ -8,5 +8,6 @@ config SOC_SERIES_RISCV32_IT8XXX2
# default in most toolchains, causing link-time errors. # default in most toolchains, causing link-time errors.
select CPU_HAS_FPU if "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "zephyr" || RISCV_ISA_EXT_M select CPU_HAS_FPU if "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "zephyr" || RISCV_ISA_EXT_M
select SOC_FAMILY_RISCV_ITE select SOC_FAMILY_RISCV_ITE
select HAS_PM
help help
Enable support for ITE IT8XXX2 Enable support for ITE IT8XXX2

View file

@ -12,6 +12,7 @@ config SOC_ESP32
select XIP if !MCUBOOT select XIP if !MCUBOOT
select HAS_ESPRESSIF_HAL select HAS_ESPRESSIF_HAL
select CPU_HAS_FPU select CPU_HAS_FPU
select HAS_PM
if SOC_ESP32 if SOC_ESP32

View file

@ -11,6 +11,7 @@ config SOC_ESP32S2
select XIP if !MCUBOOT select XIP if !MCUBOOT
select HAS_ESPRESSIF_HAL select HAS_ESPRESSIF_HAL
select ARCH_SUPPORTS_COREDUMP select ARCH_SUPPORTS_COREDUMP
select HAS_PM
if SOC_ESP32S2 if SOC_ESP32S2

View file

@ -11,5 +11,6 @@ config SOC_SERIES_INTEL_ACE
select SCHED_IPI_SUPPORTED select SCHED_IPI_SUPPORTED
select DW_ICTL_ACE select DW_ICTL_ACE
select SOC_HAS_RUNTIME_NUM_CPUS select SOC_HAS_RUNTIME_NUM_CPUS
select HAS_PM
help help
Intel ADSP ACE Intel ADSP ACE

View file

@ -10,5 +10,6 @@ config SOC_SERIES_INTEL_ADSP_CAVS
select XTENSA_USE_CORE_CRT1 select XTENSA_USE_CORE_CRT1
select ATOMIC_OPERATIONS_BUILTIN if "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "xcc" select ATOMIC_OPERATIONS_BUILTIN if "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "xcc"
select ARCH_HAS_COHERENCE select ARCH_HAS_COHERENCE
select HAS_PM
help help
Intel ADSP CAVS Intel ADSP CAVS

View file

@ -4,9 +4,15 @@
menu "Power Management" menu "Power Management"
menuconfig PM config HAS_PM
bool
help
This option must be selected by SoCs that provide PM hooks, that is,
calls to configure low-power states.
config PM
bool "System Power Management" bool "System Power Management"
depends on SYS_CLOCK_EXISTS depends on SYS_CLOCK_EXISTS && HAS_PM
help help
This option enables the board to implement extra power management This option enables the board to implement extra power management
policies whenever the kernel becomes idle. The kernel informs the policies whenever the kernel becomes idle. The kernel informs the