# 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_DW
config I2C_DW_CLOCK_SPEED
	default 200
endif # I2C_DW

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

if SPI_DW
config SPI_DW_FIFO_DEPTH
	default 256
endif # SPI_DW

if NETWORKING

config NET_L2_ETHERNET
	default y
config TEST_RANDOM_GENERATOR
	default y

endif # NETWORKING

endif # BOARD_CVSXDEVKIT
