# Copyright (c) 2017 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

if BOARD_INTEL_S1000_CRB

config BOARD
	default "intel_s1000_crb"

config CAVS_ICTL_0_OFFSET
	default 6
config CAVS_ICTL_1_OFFSET
	default 10
config CAVS_ICTL_2_OFFSET
	default 13
config CAVS_ICTL_3_OFFSET
	default 16

config 2ND_LVL_INTR_00_OFFSET
	default CAVS_ICTL_0_OFFSET
config 2ND_LVL_INTR_01_OFFSET
	default CAVS_ICTL_1_OFFSET
config 2ND_LVL_INTR_02_OFFSET
	default CAVS_ICTL_2_OFFSET
config 2ND_LVL_INTR_03_OFFSET
	default CAVS_ICTL_3_OFFSET
config 3RD_LVL_INTR_00_OFFSET
	default 7

config MAX_IRQ_PER_AGGREGATOR
	default 32
config NUM_2ND_LEVEL_AGGREGATORS
	default 4
config NUM_3RD_LEVEL_AGGREGATORS
	default 1
config 2ND_LVL_ISR_TBL_OFFSET
	default 21
config 3RD_LVL_ISR_TBL_OFFSET
	default 149

config CAVS_ISR_TBL_OFFSET
	default 2ND_LVL_ISR_TBL_OFFSET
config DW_ISR_TBL_OFFSET
	default 3RD_LVL_ISR_TBL_OFFSET

config ROM_START_OFFSET
	default 0x100
	depends on BOOTLOADER_MCUBOOT

if USB_DEVICE_STACK

config USB_DW
	default y

config USB_DW_USB_2_0
	default y

config USB_REQUEST_BUFFER_SIZE
	default 128
	depends on USB_DEVICE_HID

config USB_REQUEST_BUFFER_SIZE
	default 4096
	depends on USB_DFU_CLASS

config USB_DEVICE_VID
	default "0x8087"

config USB_DEVICE_PID
	default "0x0B1A"

config USB_DEVICE_MANUFACTURER
	default "Intel(R) Corporation"

config USB_DEVICE_PRODUCT
	default "Sue Creek (S1000) ASIC"

endif # USB_DEVICE_STACK

if SERIAL

config UART_INTERRUPT_DRIVEN
	default y

endif # SERIAL

if I2C

config I2C_DW
	default y

endif

config DMA_DW
	default y
	depends on DMA

config I2S_CAVS
	default y
	depends on I2S

if AUDIO
config AUDIO_CODEC
	default y

config AUDIO_TLV320DAC
	default y

config AUDIO_DMIC
	default y

config AUDIO_INTEL_DMIC
	default y

endif

config INTEL_GNA
	default y
	depends on NEURAL_NET_ACCEL

if GPIO

config GPIO_INIT_PRIORITY
	default 70

config GPIO_DW
	default y

config GPIO_DW_0
	default y

endif

if FLASH

config SPI
	default y

config SPI_NOR
	default y

config FLASH_HAS_PAGE_LAYOUT
	default y

config FLASH_PAGE_LAYOUT
	default y

endif

if SPI

config SPI_DW
	default y

endif

config PINMUX_INTEL_S1000
	default y
	depends on PINMUX

endif # BOARD_INTEL_S1000_CRB
