# Kconfig - 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

if CLOCK_STM32_SYSCLK_SRC_PLL

if CLOCK_STM32_PLL_SRC_HSI
# produce 80MHz clock at PLL output

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 80000000
config CLOCK_STM32_PLL_M_DIVISOR
	default 1
config CLOCK_STM32_PLL_N_MULTIPLIER
	default 20
config CLOCK_STM32_PLL_P_DIVISOR
	default 7
config CLOCK_STM32_PLL_Q_DIVISOR
	default 2
config CLOCK_STM32_PLL_R_DIVISOR
	default 4

endif # CLOCK_STM32_PLL_SRC_HSI

endif # CLOCK_STM32_SYSCLK_SRC_PLL

if CLOCK_STM32_SYSCLK_SRC_MSI

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 16000000

endif # CLOCK_STM32_SYSCLK_SRC_MSI

if UART_CONSOLE

config UART_STM32_PORT_1
	default y

endif # UART_CONSOLE

if I2C

config I2C_1
	default y

config I2C_2
	default y

endif # I2C

if SPI

config SPI_STM32_INTERRUPT
	default y

config SPI_3
	default y

endif # SPI

if PWM

config PWM_STM32_1
	default n

config PWM_STM32_2
	default y

endif # PWM

if VL53L0X

config VL53L0X_XSHUT_CONTROL_ENABLE
	default y

config VL53L0X_XSHUT_GPIO_DEV_NAME
	default "GPIOC"

config VL53L0X_XSHUT_GPIO_PIN_NUM
	default 6

endif #VL53L0X

endif # BOARD_DISCO_L475_IOT1
