# 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
	def_bool y

config GPIO_CMSDK_AHB_PORT0
	def_bool y

config GPIO_CMSDK_AHB_PORT1
	def_bool y

config GPIO_CMSDK_AHB_PORT2
	def_bool y

config GPIO_CMSDK_AHB_PORT3
	def_bool y

endif # GPIO

if PINMUX

config PINMUX_BEETLE
	def_bool y

if PINMUX_DEV

config PINMUX_DEV_ARM_V2M_BEETLE
	def_bool y

endif # PINMUX_DEV

endif # PINMUX

if SERIAL

config UART_CMSDK_APB
	def_bool y

config UART_CMSDK_APB_PORT0
	def_bool y

config UART_CMSDK_APB_PORT1
	def_bool y

config UART_INTERRUPT_DRIVEN
	def_bool y

endif # SERIAL

if WATCHDOG

config WDOG_CMSDK_APB
	def_bool y

endif # WATCHDOG

if COUNTER

if COUNTER_TMR_CMSDK_APB

config COUNTER_TMR_CMSDK_APB_0
	def_bool y

config COUNTER_TMR_CMSDK_APB_1
	def_bool y

endif # COUNTER_TMR_CMSDK_APB

if TIMER_TMR_CMSDK_APB

config TIMER_TMR_CMSDK_APB_0
	def_bool y

config TIMER_TMR_CMSDK_APB_1
	def_bool y

endif # TIMER_TMR_CMSDK_APB

if COUNTER_DTMR_CMSDK_APB

config COUNTER_DTMR_CMSDK_APB_0
	def_bool y

endif # COUNTER_DTMR_CMSDK_APB

if TIMER_DTMR_CMSDK_APB

config TIMER_DTMR_CMSDK_APB_0
	def_bool y

endif # TIMER_DTMR_CMSDK_APB

endif # COUNTER

endif # BOARD_V2M_BEETLE
