# ST Microelectronics STM32F7 MCU line

# Copyright (c) 2018 Yurii Hamann
# SPDX-License-Identifier: Apache-2.0

# Kconfig symbols common to STM32F7 series

if SOC_SERIES_STM32F7X

source "soc/arm/st_stm32/stm32f7/Kconfig.defconfig.stm32f7*"

config SOC_SERIES
	default "stm32f7"

if GPIO_STM32

# GPIO ports A, B and C are set in ../common/Kconfig.defconfig.series

config GPIO_STM32_PORTD
	default y

config GPIO_STM32_PORTE
	default y

config GPIO_STM32_PORTF
	default y

config GPIO_STM32_PORTG
	default y

config GPIO_STM32_PORTH
	default y

config GPIO_STM32_PORTI
	default y

endif # GPIO_STM32

if I2C_STM32

config I2C_STM32_V2
	default y

endif # I2C_STM32

if ENTROPY_GENERATOR

config ENTROPY_STM32_RNG
	default y

endif # ENTROPY_GENERATOR

endif # SOC_SERIES_STM32F7X
