# Copyright (c) 2022 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
# Description:
# Adding support for Cyclone V SoC DevKit

if BOARD_CVSXDEVKIT

config BOARD
	default "cyclonev_socdk"
depends on BOARD_CVSXDEVKIT

if I2C
config I2C_DW
	default y
config I2C_DW_CLOCK_SPEED
	default 200
endif # I2C

if EEPROM
config EEPROM_AT24
	default y
endif # EEPROM

if USB_DEVICE_STACK
config USB_DW
	default y
config USB_DW_USB_2_0
	default y
config USB_DEVICE_DRIVER
	default y
endif # USB_DEVICE_STACK

if SPI
config SPI_DW
	default y
config SPI_DW_FIFO_DEPTH
	default 256
endif # SPI

endif # BOARD_CVSXDEVKIT
