# Silicon Labs EFM32WG-STK3800 platform configuration options

# Copyright (c) 2017 Christian Taedcke
# SPDX-License-Identifier: Apache-2.0

if GPIO

config GPIO_GECKO
	default y

endif # GPIO

if SERIAL

config UART_GECKO
	default y

endif # SERIAL

if I2C

config I2C_GECKO
	default y

endif # I2C

if FLASH

config SOC_FLASH_GECKO
	default y

endif # FLASH
