# 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

if DMA_CAVS

config HEAP_MEM_POOL_SIZE
	default 1024

endif # DMA_CAVS

if BOOTLOADER_MCUBOOT
config TEXT_SECTION_OFFSET
	default 0x100
endif

if USB
config USB_DW
	default y

config USB_DW_IRQ_PRI
	default 3

config USB_DW_USB_2_0
	default y

if USB_DEVICE_HID
config USB_REQUEST_BUFFER_SIZE
	default 128
endif

if USB_DFU_CLASS
config USB_REQUEST_BUFFER_SIZE
	default 4096
endif

config USB_DEVICE_STACK
	default y

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

if UART_NS16550

config UART_NS16550_PORT_0
	default y

if UART_NS16550_PORT_0

config UART_NS16550_PORT_0_OPTIONS
	default 0
config UART_INTERRUPT_DRIVEN
	default y

endif # UART_NS16550_PORT_0

endif # UART_NS16550

if I2C

config I2C_DW
	default y
config I2C_0
	default y

endif

if DMA

config DMA_CAVS
	default y

endif

if I2S
config I2S_CAVS
	default y
endif

if AUDIO
config AUDIO_CODEC
	default y

config AUDIO_TLV320DAC
	default y

config AUDIO_DMIC
	default y

config AUDIO_INTEL_DMIC
	default y

endif


if NEURAL_NET_ACCEL

config INTEL_GNA
	default y
endif

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

config SPI_0
	default y

endif

if PINMUX

config PINMUX_INTEL_S1000
	default y

endif

endif # BOARD_INTEL_S1000_CRB
