# 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
