# Kconfig.defconfig.series - 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

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

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 RTC

config RTC_STM32
	default y

endif # RTC

if COUNTER

config COUNTER_RTC_STM32
	default y

endif # COUNTER

if CAN

config CAN_STM32
	default y

endif

endif # SOC_FAMILY_STM32
