# Copyright (c) 2019 Synopsys, Inc. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

if BOARD_HSDK

config BOARD
	default "hsdk"

if GPIO

config GPIO_DW
	default y

config GPIO_DW_0
	default y
	depends on GPIO_DW

config I2C
	default y

config GPIO_CY8C95XX
	default y

endif # GPIO

if SPI

config SPI_DW
	default y

if SPI_DW

config SPI_DW_FIFO_DEPTH
	default 32

config SPI_DW_ARC_AUX_REGS
	default n

config SPI_DW_ACCESS_WORD_ONLY
	default y

endif # SPI_DW

endif # SPI

if I2C

config I2C_DW
	default y

if I2C_DW

config I2C_DW_CLOCK_SPEED
	default 200

endif #I2C_DW

endif #I2C

endif # BOARD_HSDK
