# ST Microelectronics STM32 all MCU lines

# Copyright (c) 2017, I-SENSE group of ICCS
# SPDX-License-Identifier: Apache-2.0

# Here are set all the Kconfig symbols common to the whole STM32 family

if SOC_FAMILY_STM32

# SYSTICK is the default tick source on STM32 Socs
config CORTEX_M_SYSTICK
	default y

if CLOCK_CONTROL

config CLOCK_CONTROL_STM32_CUBE
	default y

endif # CLOCK_CONTROL

if SERIAL

config UART_STM32
	default y

endif # SERIAL

if GPIO

config GPIO_STM32
	default y

config GPIO_STM32_PORTA
	default y

config GPIO_STM32_PORTB
	default y

config GPIO_STM32_PORTC
	default y

endif # GPIO

if PINMUX

config PINMUX_STM32
	default y

endif # PINMUX

if WATCHDOG

config IWDG_STM32
	default y

config WWDG_STM32
	default n

endif # WATCHDOG

if PWM

config PWM_STM32
	default y

endif # PWM

if SPI

config SPI_STM32
	default y

endif # SPI

if I2C

config I2C_STM32
	default y

endif

if USB

config USB_DC_STM32
	default y

endif # USB

if COUNTER

config COUNTER_RTC_STM32
	default y

endif # COUNTER

if CAN

config CAN_STM32
	default y

endif

if ADC

config ADC_STM32
	default y

endif # ADC

endif # SOC_FAMILY_STM32
