#
# Copyright (c) 2019 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
if BOARD_MEC15XXEVB_ASSY6853

config BOARD
	default "mec15xxevb_assy6853"

if UART_NS16550

config UART_NS16550_PORT_2
	default y if UART_CONSOLE

endif

if PINMUX_XEC

config PINMUX_XEC_GPIO000_036
	default y

config PINMUX_XEC_GPIO040_076
	default y

config PINMUX_XEC_GPIO100_136
	default y

config PINMUX_XEC_GPIO140_176
	default y

config PINMUX_XEC_GPIO200_236
	default y if ADC_XEC || SPI_XEC_QMSPI
	default n

config PINMUX_XEC_GPIO240_276
	default n

endif # PINMUX_XEC

if GPIO_XEC

config GPIO_XEC_GPIO000_036
	default y

config GPIO_XEC_GPIO040_076
	default y

config GPIO_XEC_GPIO100_136
	default y

config GPIO_XEC_GPIO140_176
	default y

config GPIO_XEC_GPIO200_236
	default y

config GPIO_XEC_GPIO240_276
	default y

endif # GPIO_XEC

if I2C_XEC

config I2C_XEC_0
	default y

config I2C_XEC_1
	default y

config I2C_XEC_2
	default y

endif # I2C

if ESPI

config ESPI_XEC
	default y

endif # ESPI

if RTOS_TIMER

# XEC RTOS timer HW frequency is fixed at 32768
# The driver requires tickless mode and ticks per
# second to be 32768 for accurate operation.

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 32768

config SYS_CLOCK_TICKS_PER_SEC
	default 32768

endif # RTOS_TIMER

if !RTOS_TIMER

# If RTOS timer is not enabled we use ARM Cortex-M
# SYSTICK. SYSTICK frequency is 48MHz divided by
# SOC_MEC1501_PROC_CLK_DIV.
#

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 48000000

config SYS_CLOCK_TICKS_PER_SEC
	default 1000

endif # RTOS_TIMER

if PS2

config PS2_XEC_0
	default y

config PS2_XEC_1
	default y

endif # PS2

if SPI

config SPI_XEC_QMSPI
	default y

if SPI_XEC_QMSPI

config SPI_0
	default y

config SPI_0_OP_MODES
	default 1

endif # SPI_XEC_QMSPI

endif # SPI

endif # BOARD_MEC15XXEVB_ASSY6853
