# Kconfig - STM32F746G DISCOVERY board configuration
#
# Copyright (c) 2018 Yurii Hamann
#
# SPDX-License-Identifier: Apache-2.0
#

if BOARD_STM32F746G_DISCO

config BOARD
	default "stm32f746g_disco"

if UART_CONSOLE

config UART_1
	default y

endif # UART_CONSOLE

if NETWORKING

config NET_L2_ETHERNET
	default y

config ETH_STM32_HAL
	default y

endif # NETWORKING

if SERIAL

config UART_6
	default y

endif # SERIAL

if I2C

config I2C_1
	default y

endif # I2C

if SPI

config SPI_2
	default y

endif # SPI

if PWM

config PWM_STM32_1
	default y

endif # PWM

endif # BOARD_STM32F746G_DISCO
