# Copyright (c) 2021 Telink Semiconductor
# SPDX-License-Identifier: Apache-2.0

if BOARD_TLSR9518ADK80D

config BOARD
	default "tlsr9518adk80d"

config GPIO_TELINK_B91
	default y if GPIO

config UART_TELINK_B91
	default y if SERIAL

config PWM_TELINK_B91
	default y if PWM

config ENTROPY_TELINK_B91_TRNG
	default y if ENTROPY_GENERATOR

config SOC_FLASH_TELINK_B91
	default y if FLASH

config SPI_TELINK_B91
	default y if SPI

config IEEE802154_TELINK_B91
	default y if IEEE802154

config NET_CONFIG_IEEE802154_DEV_NAME
	default "IEEE802154_b91"

config I2C_TELINK_B91
	default y if I2C

if BT

# BLE Controller SDK from hal_telink requires
# Telink's toolchain with FPU support
config FPU
	default y if "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "zephyr"

config BT_HCI_ACL_FLOW_CONTROL
	default n

choice BT_HCI_BUS_TYPE
	default BT_B91
endchoice

endif # BT

endif
