# Discovery IoT L475 board configuration

# Copyright (c) 2017 Linaro Limited
# SPDX-License-Identifier: Apache-2.0

if BOARD_DISCO_L475_IOT1

config BOARD
	default "disco_l475_iot1"

choice STM32_LPTIM_CLOCK
	default STM32_LPTIM_CLOCK_LSE
	depends on STM32_LPTIM_TIMER
endchoice

config SPI_STM32_INTERRUPT
	default y
	depends on SPI

choice LIS3MDL_TRIGGER_MODE
	default LIS3MDL_TRIGGER_NONE
endchoice

choice HTS221_TRIGGER_MODE
	default HTS221_TRIGGER_NONE
endchoice

choice LSM6DSL_TRIGGER_MODE
	default LSM6DSL_TRIGGER_GLOBAL_THREAD
	depends on LSM6DSL
endchoice

config I2C
	default y if SENSOR

if BT

config SPI
	default y

choice BT_HCI_BUS_TYPE
	default BT_SPI
endchoice

config BT_SPI_BLUENRG
	default y

config BT_BLUENRG_ACI
	default y
# Disable Flow control
config BT_HCI_ACL_FLOW_CONTROL
	default n
config BT_HCI_VS_EXT
	default n

endif # BT

if WIFI

config SPI
	default y

config WIFI_ESWIFI
	default y

endif # WIFI

endif # BOARD_DISCO_L475_IOT1
