# Kconfig - ARM V2M Beetle Board configuration options

#
# Copyright (c) 2016 Linaro Limited
#
# SPDX-License-Identifier: Apache-2.0
#

if BOARD_V2M_BEETLE

config BOARD
	default "v2m_beetle"

if GPIO

config GPIO_CMSDK_AHB
	default y

config GPIO_CMSDK_AHB_PORT0
	default y

config GPIO_CMSDK_AHB_PORT1
	default y

config GPIO_CMSDK_AHB_PORT2
	default y

config GPIO_CMSDK_AHB_PORT3
	default y

endif # GPIO

if PINMUX

config PINMUX_BEETLE
	default y

endif # PINMUX

if SERIAL

config UART_CMSDK_APB
	default y

config UART_INTERRUPT_DRIVEN
	default y

endif # SERIAL

if WATCHDOG

config WDOG_CMSDK_APB
	default y

endif # WATCHDOG

if COUNTER

config TIMER_TMR_CMSDK_APB
	default y

config TIMER_DTMR_CMSDK_APB
	default y

endif # COUNTER

endif # BOARD_V2M_BEETLE
