# Kconfig.stm32 - STM32 PWM configuration options
#
#
# Copyright (c) 2016 Linaro Limited.
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig PWM_STM32
	bool "STM32 MCU PWM driver"
	depends on SOC_FAMILY_STM32
	select USE_STM32_HAL_TIM
	help
	  This option enables the PWM driver for STM32 family of
	  processors. Say y if you wish to use PWM port on STM32
	  MCU.

if PWM_STM32

config PWM_STM32_1
	bool "STM32 PWM 1 Output"
	help
	  Enable output for PWM1 in the driver. Say y here
	  if you want to use PWM1 output.

config PWM_STM32_2
	bool "STM32 PWM 2 Output"
	help
	  Enable output for PWM2 in the driver. Say y here
	  if you want to use PWM2 output.

config PWM_STM32_3
	bool "STM32 PWM 3 Output"
	help
	  Enable output for PWM3 in the driver. Say y here
	  if you want to use PWM3 output.

config PWM_STM32_4
	bool "STM32 PWM 4 Output"
	help
	  Enable output for PWM4 in the driver. Say y here
	  if you want to use PWM4 output.

config PWM_STM32_5
	bool "STM32 PWM 5 Output"
	help
	  Enable output for PWM5 in the driver. Say y here
	  if you want to use PWM5 output.

config PWM_STM32_6
	bool "STM32 PWM 6 Output"
	help
	  Enable output for PWM6 in the driver. Say y here
	  if you want to use PWM6 output.

config PWM_STM32_7
	bool "STM32 PWM 7 Output"
	help
	  Enable output for PWM7 in the driver. Say y here
	  if you want to use PWM7 output.

config PWM_STM32_8
	bool "STM32 PWM 8 Output"
	help
	  Enable output for PWM8 in the driver. Say y here
	  if you want to use PWM8 output.

config PWM_STM32_9
	bool "STM32 PWM 9 Output"
	help
	  Enable output for PWM9 in the driver. Say y here
	  if you want to use PWM9 output.

config PWM_STM32_10
	bool "STM32 PWM 10 Output"
	help
	  Enable output for PWM10 in the driver. Say y here
	  if you want to use PWM10 output.

config PWM_STM32_11
	bool "STM32 PWM 11 Output"
	help
	  Enable output for PWM11 in the driver. Say y here
	  if you want to use PWM11 output.

config PWM_STM32_12
	bool "STM32 PWM 12 Output"
	help
	  Enable output for PWM12 in the driver. Say y here
	  if you want to use PWM12 output.

config PWM_STM32_13
	bool "STM32 PWM 13 Output"
	help
	  Enable output for PWM13 in the driver. Say y here
	  if you want to use PWM13 output.

config PWM_STM32_14
	bool "STM32 PWM 14 Output"
	help
	  Enable output for PWM14 in the driver. Say y here
	  if you want to use PWM14 output.

config PWM_STM32_15
	bool "STM32 PWM 15 Output"
	help
	  Enable output for PWM15 in the driver. Say y here
	  if you want to use PWM15 output.

config PWM_STM32_16
	bool "STM32 PWM 16 Output"
	help
	  Enable output for PWM16 in the driver. Say y here
	  if you want to use PWM16 output.

config PWM_STM32_17
	bool "STM32 PWM 17 Output"
	help
	  Enable output for PWM17 in the driver. Say y here
	  if you want to use PWM17 output.

config PWM_STM32_18
	bool "STM32 PWM 18 Output"
	help
	  Enable output for PWM18 in the driver. Say y here
	  if you want to use PWM18 output.

config PWM_STM32_19
	bool "STM32 PWM 19 Output"
	help
	  Enable output for PWM19 in the driver. Say y here
	  if you want to use PWM19 output.

config PWM_STM32_20
	bool "STM32 PWM 20 Output"
	help
	  Enable output for PWM20 in the driver. Say y here
	  if you want to use PWM20 output.

endif # PWM_STM32
