# ST Microelectronics Common Kconfig

# Copyright (c) 2019 Linaro Ltd.
# SPDX-License-Identifier: Apache-2.0

# Workaround for not being able to have commas in macro arguments
DT_CHOSEN_Z_CCM := zephyr,ccm

config STM32_CCM
	def_bool $(dt_chosen_enabled,$(DT_CHOSEN_Z_CCM))

config STM32_BACKUP_SRAM
	bool "STM32 Backup SRAM"
	depends on DT_HAS_ST_STM32_BACKUP_SRAM_ENABLED
	help
	  Enable support for STM32 backup SRAM.

config USE_STM32_ASSERT
	depends on ASSERT
	bool "STM32Cube HAL and LL drivers asserts"
	help
	  Enable asserts in STM32Cube HAL and LL drivers.

config SWJ_ANALOG_PRIORITY
	int "SWJ DP port to analog routine initialization priority"
	default 49
	help
	  Initialization priority of the routine within the PRE_KERNEL1 level.
	  This priority must be greater than GPIO_INIT_PRIORITY and lower than
	  UART_INIT_PRIORITY.

choice POWER_SUPPLY_CHOICE
	prompt "STM32 power supply configuration"
	default POWER_SUPPLY_LDO
	depends on SOC_SERIES_STM32H7X || SOC_SERIES_STM32U5X || \
			SOC_STM32WBA55XX

config POWER_SUPPLY_LDO
	bool "LDO supply"

config POWER_SUPPLY_DIRECT_SMPS
	bool "Direct SMPS supply"

config POWER_SUPPLY_SMPS_1V8_SUPPLIES_LDO
	bool "SMPS 1.8V supplies LDO (no external supply)"
	depends on !SOC_SERIES_STM32U5X && !SOC_SERIES_STM32WBAX

config POWER_SUPPLY_SMPS_2V5_SUPPLIES_LDO
	bool "SMPS 2.5V supplies LDO (no external supply)"
	depends on !SOC_SERIES_STM32U5X && !SOC_SERIES_STM32WBAX

config POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXT_AND_LDO
	bool "External SMPS 1.8V supply, supplies LDO"
	depends on !SOC_SERIES_STM32U5X && !SOC_SERIES_STM32WBAX

config POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXT_AND_LDO
	bool "External SMPS 2.5V supply, supplies LDO"
	depends on !SOC_SERIES_STM32U5X && !SOC_SERIES_STM32WBAX

config POWER_SUPPLY_SMPS_1V8_SUPPLIES_EXT
	bool "External SMPS 1.8V supply and bypass"
	depends on !SOC_SERIES_STM32U5X && !SOC_SERIES_STM32WBAX

config POWER_SUPPLY_SMPS_2V5_SUPPLIES_EXT
	bool "External SMPS 2.5V supply and bypass"
	depends on !SOC_SERIES_STM32U5X && !SOC_SERIES_STM32WBAX

config POWER_SUPPLY_EXTERNAL_SOURCE
	bool "Bypass"
	depends on !SOC_SERIES_STM32U5X && !SOC_SERIES_STM32WBAX

endchoice
