# 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
