# 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 DW_ICTL_OFFSET
	default 7

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 DW_ICTL_OFFSET

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_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
