# Kconfig.k64 - K64_FTM PWM configuration options
#
#
# Copyright (c) 2016 Intel Corporation
# Copyright (c) 2016 Wind River Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

################################################
# K64 Flex Timer Module (FTM)
################################################

menuconfig PWM_K64_FTM
	bool "PWM with Freescale K64 Flex Timer Module (FTM)"
	depends on PWM && SOC_MK64F12
	default n
	help
	Enable Pulse Width Modulation driver for Freescale
	K64 Flex Timer Module (FTM).

if PWM_K64_FTM

config PWM_K64_FTM_DEBUG
	bool "Enable Debugging for pwm_ftm driver"
	depends on PWM_K64_FTM
	default n
	help
	Enable debugging for pwm_ftm driver.

#### FTM0 #####

config PWM_K64_FTM_0
	bool "K64 FTM PWM Module 0"
	depends on PWM_K64_FTM
	default n
	help
	Enable config PWM options for FTM0 source module.

config PWM_K64_FTM_0_DEV_NAME
	string "K64 FTM PWM Module 0 Device Name"
	depends on PWM_K64_FTM_0
	default "PWM_0"
	help
	Specify the device name for the FTM0 source module.

config PWM_K64_FTM_0_PRESCALE
	int "K64 FTM0 prescale value"
	default 1
	depends on PWM_K64_FTM_0
	help
	Specify the FTM timer prescale value.  The valid values are
	1, 2, 4, 8, 16, 32, 64, or 128.

config PWM_K64_FTM_0_PERIOD
	int "K64 FTM0 period value"
	default 65535
	depends on PWM_K64_FTM_0
	help
	Specify the FTM0 PWM period in ticks

menu "K64 FTM0 Clock Source"
depends on PWM_K64_FTM_0

choice PWM_K64_FTM_0_CLOCK_SOURCE_CHOICE
	prompt "Choose the K64 FTM0 clock source"
	default PWM_K64_FTM_0_CLOCK_SOURCE_SYSTEM

config PWM_K64_FTM_0_CLOCK_SOURCE_NONE
	bool "No clock selected (FTM counter disable)"

config PWM_K64_FTM_0_CLOCK_SOURCE_SYSTEM
	bool "System clock"

config PWM_K64_FTM_0_CLOCK_SOURCE_FIXED
	bool "Fixed Frequency Clock"

config PWM_K64_FTM_0_CLOCK_SOURCE_EXTERNAL
	bool "External Clock"

config PWM_K64_FTM_0_CLOCK_SOURCE_QUAD
	bool "Quadrature Decoder"

endchoice

endmenu

config PWM_K64_FTM_0_CLOCK_SOURCE
	int
	# Omit prompt to signify "hidden" option
	depends on PWM_K64_FTM_0
	default 0 if PWM_K64_FTM_0_CLOCK_SOURCE_NONE
	default 1 if PWM_K64_FTM_0_CLOCK_SOURCE_SYSTEM
	default 2 if PWM_K64_FTM_0_CLOCK_SOURCE_FIXED
	default 3 if PWM_K64_FTM_0_CLOCK_SOURCE_EXTERNAL
	default 4 if PWM_K64_FTM_0_CLOCK_SOURCE_QUAD
	help
	Specify K64 FTM0 clock source

config PWM_K64_FTM_0_PHASE_ENABLE_0
	bool "FTM0 Enable Phase for channel 0"
	depends on PWM_K64_FTM_0
	default n
	help
	Allow a phase offset on FTM0 channel 0.  This configures
	channels 0 and 1 to be in combine mode therefore
	channel 1 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_K64_FTM_0_PHASE_ENABLE_2
	bool "FTM0 Enable Phase for channel 2"
	depends on PWM_K64_FTM_0
	default n
	help
	Allow a phase offset on FTM0 channel 2.  This configures
	channels 2 and 3 to be in combine mode therefore
	channel 3 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_K64_FTM_0_PHASE_ENABLE_4
	bool "FTM0 Enable Phase for channel 4"
	depends on PWM_K64_FTM_0
	default n
	help
	Allow a phase offset on FTM0 channel 4.  This configures
	channels 4 and 5 to be in combine mode therefore
	channel 5 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_K64_FTM_0_PHASE_ENABLE_6
	bool "FTM0 Enable Phase for channel 6"
	depends on PWM_K64_FTM_0
	default n
	help
	Allow a phase offset on FTM0 channel 6.  This configures
	channels 6 and 7 to be in combine mode therefore
	channel 7 is not valid as an output signal.
	Note: phase is an unsupported feature.

#### FTM1 #####

config PWM_K64_FTM_1
	bool "K64 FTM PWM Module 1"
	depends on PWM_K64_FTM
	default n
	help
	Enable config PWM options for FTM1 source module.

config PWM_K64_FTM_1_DEV_NAME
	string "K64 FTM PWM Module 1 Device Name"
	depends on PWM_K64_FTM_1
	default "PWM_1"
	help
	Specify the device name for the FTM1 source module.

config PWM_K64_FTM_1_PRESCALE
	int "FTM1 prescale value"
	default 1
	depends on PWM_K64_FTM_1
	help
	Specify the FTM1 timer prescale value.  The valid values are
	1, 2, 4, 8, 16, 32, 64, or 128

config PWM_K64_FTM_1_PERIOD
	int "FTM1 period value"
	default 65535
	depends on PWM_K64_FTM_1
	help
	Specify the FTM1 PWM period in ticks

menu "K64 FTM1 Clock Source"
depends on PWM_K64_FTM_1

choice PWM_K64_FTM_1_CLOCK_SOURCE_CHOICE
	prompt "Choose the FTM1 clock source"
	default PWM_K64_FTM_1_CLOCK_SOURCE_SYSTEM

config PWM_K64_FTM_1_CLOCK_SOURCE_NONE
	bool "No clock selected (FTM counter disable)"

config PWM_K64_FTM_1_CLOCK_SOURCE_SYSTEM
	bool "System clock"

config PWM_K64_FTM_1_CLOCK_SOURCE_FIXED
	bool "Fixed Frequency Clock"

config PWM_K64_FTM_1_CLOCK_SOURCE_EXTERNAL
	bool "External Clock"

config PWM_K64_FTM_1_CLOCK_SOURCE_QUAD
	bool "Quadrature Decoder"

endchoice

endmenu

config PWM_K64_FTM_1_CLOCK_SOURCE
	int
	# Omit prompt to signify "hidden" option
	depends on PWM_K64_FTM_1
	default 0 if PWM_K64_FTM_1_CLOCK_SOURCE_NONE
	default 1 if PWM_K64_FTM_1_CLOCK_SOURCE_SYSTEM
	default 2 if PWM_K64_FTM_1_CLOCK_SOURCE_FIXED
	default 3 if PWM_K64_FTM_1_CLOCK_SOURCE_EXTERNAL
	default 4 if PWM_K64_FTM_1_CLOCK_SOURCE_QUAD
	help
	Specify K64 FTM1 clock source

config PWM_K64_FTM_1_PHASE_ENABLE_0
	bool "FTM1 Enable Phase for channel 0"
	depends on PWM_K64_FTM_1
	default n
	help
	Allow a phase offset on FTM1 channel 0.  This configures
	channels 0 and 1 to be in combine mode therefore
	channel 1 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_FTM_1_PHASE_ENABLE_2
	bool "FTM1 Enable Phase for channel 2"
	depends on PWM_K64_FTM_1
	default n
	help
	Allow a phase offset on FTM1 channel 2.  This configures
	channels 2 and 3 to be in combine mode therefore
	channel 3 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_FTM_1_PHASE_ENABLE_4
	bool "FTM1 Enable Phase for channel 4"
	depends on PWM_K64_FTM_1
	default n
	help
	Allow a phase offset on FTM1 channel 4.  This configures
	channels 4 and 5 to be in combine mode therefore
	channel 5 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_FTM_1_PHASE_ENABLE_6
	bool "FTM1 Enable Phase for channel 6"
	depends on PWM_K64_FTM_1
	default n
	help
	Allow a phase offset on FTM1 channel 6.  This configures
	channels 6 and 7 to be in combine mode therefore
	channel 7 is not valid as an output signal.
	Note: phase is an unsupported feature.

#### FTM2 #####

config PWM_K64_FTM_2
	bool "K64 FTM PWM Module 2"
	depends on PWM_K64_FTM
	default n
	help
	Enable config PWM options for FTM2 source module.

config PWM_K64_FTM_2_DEV_NAME
	string "K64 FTM PWM Module 2 Device Name"
	depends on PWM_K64_FTM_2
	default "PWM_2"
	help
	Specify the device name for the FTM2 source module.

config PWM_K64_FTM_2_PRESCALE
	int "FTM2 prescale value"
	default 1
	depends on PWM_K64_FTM_2
	help
	Specify the FTM2 timer prescale value.  The valid values are
	1, 2, 4, 8, 16, 32, 64, or 128

config PWM_K64_FTM_2_PERIOD
	int "FTM2 period value"
	default 65535
	depends on PWM_K64_FTM_2
	help
	Specify the FTM2 PWM period in ticks

menu "K64 FTM2 Clock Source"
depends on PWM_K64_FTM_2

choice PWM_K64_FTM_2_CLOCK_SOURCE_CHOICE
	prompt "Choose the FTM2 clock source"
	default PWM_K64_FTM_2_CLOCK_SOURCE_SYSTEM

config PWM_K64_FTM_2_CLOCK_SOURCE_NONE
	bool "No clock selected (FTM counter disable)"

config PWM_K64_FTM_2_CLOCK_SOURCE_SYSTEM
	bool "System clock"

config PWM_K64_FTM_2_CLOCK_SOURCE_FIXED
	bool "Fixed Frequency Clock"

config PWM_K64_FTM_2_CLOCK_SOURCE_EXTERNAL
	bool "External Clock"

config PWM_K64_FTM_2_CLOCK_SOURCE_QUAD
	bool "Quadrature Decoder"

endchoice

endmenu

config PWM_K64_FTM_2_CLOCK_SOURCE
	int
	# Omit prompt to signify "hidden" option
	depends on PWM_K64_FTM_2
	default 0 if PWM_K64_FTM_2_CLOCK_SOURCE_NONE
	default 1 if PWM_K64_FTM_2_CLOCK_SOURCE_SYSTEM
	default 2 if PWM_K64_FTM_2_CLOCK_SOURCE_FIXED
	default 3 if PWM_K64_FTM_2_CLOCK_SOURCE_EXTERNAL
	default 4 if PWM_K64_FTM_2_CLOCK_SOURCE_QUAD
	help
	Specify K64 FTM2 clock source

config PWM_K64_FTM_2_PHASE_ENABLE_0
	bool "FTM2 Enable Phase for channel 0"
	depends on PWM_K64_FTM_2
	default n
	help
	Allow a phase offset on FTM2 channel 0.  This configures
	channels 0 and 1 to be in combine mode therefore
	channel 1 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_K64_FTM_2_PHASE_ENABLE_2
	bool "FTM2 Enable Phase for channel 2"
	depends on PWM_K64_FTM_2
	default n
	help
	Allow a phase offset on FTM2 channel 2.  This configures
	channels 2 and 3 to be in combine mode therefore
	channel 3 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_K64_FTM_2_PHASE_ENABLE_4
	bool "FTM2 Enable Phase for channel 4"
	depends on PWM_K64_FTM_2
	default n
	help
	Allow a phase offset on FTM2 channel 4.  This configures
	channels 4 and 5 to be in combine mode therefore
	channel 5 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_K64_FTM_2_PHASE_ENABLE_6
	bool "FTM2 Enable Phase for channel 6"
	depends on PWM_K64_FTM_2
	default n
	help
	Allow a phase offset on FTM2 channel 6.  This configures
	channels 6 and 7 to be in combine mode therefore
	channel 7 is not valid as an output signal.
	Note: phase is an unsupported feature.

#### FTM3 #####

config PWM_K64_FTM_3
	bool "K64 FTM PWM Module 3"
	depends on PWM_K64_FTM
	default n
	help
	Enable config PWM options for K64 FTM3 source module.

config PWM_K64_FTM_3_DEV_NAME
	string "K64 FTM PWM Module 3 Device Name"
	depends on PWM_K64_FTM_3
	default "PWM_3"
	help
	Specify the device name for the FTM3 source module.

config PWM_K64_FTM_3_PRESCALE
	int "FTM3 prescale value"
	default 3
	depends on PWM_K64_FTM_3
	help
	Specify the FTM timer prescale value.  The valid values are
	1, 2, 4, 8, 16, 32, 64, or 128

config PWM_K64_FTM_3_PERIOD
	int "FTM3 period value"
	default 65535
	depends on PWM_K64_FTM_3
	help
	Specify the FTM3 PWM period in ticks

menu "K64 FTM3 Clock Source"
depends on PWM_K64_FTM_3

choice PWM_K64_FTM_3_CLOCK_SOURCE_CHOICE
	prompt "Choose the FTM3 clock source"
	default PWM_K64_FTM_3_CLOCK_SOURCE_SYSTEM

config PWM_K64_FTM_3_CLOCK_SOURCE_NONE
	bool "No clock selected (FTM counter disable)"

config PWM_K64_FTM_3_CLOCK_SOURCE_SYSTEM
	bool "System clock"

config PWM_K64_FTM_3_CLOCK_SOURCE_FIXED
	bool "Fixed Frequency Clock"

config PWM_K64_FTM_3_CLOCK_SOURCE_EXTERNAL
	bool "External Clock"

config PWM_K64_FTM_3_CLOCK_SOURCE_QUAD
	bool "Quadrature Decoder"

endchoice

endmenu

config PWM_K64_FTM_3_CLOCK_SOURCE
	int
	# Omit prompt to signify "hidden" option
	depends on PWM_K64_FTM_3
	default 0 if PWM_K64_FTM_3_CLOCK_SOURCE_NONE
	default 1 if PWM_K64_FTM_3_CLOCK_SOURCE_SYSTEM
	default 2 if PWM_K64_FTM_3_CLOCK_SOURCE_FIXED
	default 3 if PWM_K64_FTM_3_CLOCK_SOURCE_EXTERNAL
	default 4 if PWM_K64_FTM_3_CLOCK_SOURCE_QUAD
	help
	Specify K64 FTM3 clock source

config PWM_K64_FTM_3_PHASE_ENABLE_0
	bool "FTM3 Enable Phase for channel 0"
	depends on PWM_K64_FTM_3
	default n
	help
	Allow a phase offset on FTM3 channel 0.  This configures
	channels 0 and 1 to be in combine mode therefore
	channel 1 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_K64_FTM_3_PHASE_ENABLE_2
	bool "FTM3 Enable Phase for channel 2"
	depends on PWM_K64_FTM_3
	default n
	help
	Allow a phase offset on FTM3 channel 2.  This configures
	channels 2 and 3 to be in combine mode therefore
	channel 3 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_K64_FTM_3_PHASE_ENABLE_4
	bool "FTM3 Enable Phase for channel 4"
	depends on PWM_K64_FTM_3
	default n
	help
	Allow a phase offset on FTM3 channel 4.  This configures
	channels 4 and 5 to be in combine mode therefore
	channel 5 is not valid as an output signal.
	Note: phase is an unsupported feature.

config PWM_K64_FTM_3_PHASE_ENABLE_6
	bool "FTM3 Enable Phase for channel 6"
	depends on PWM_K64_FTM_3
	default n
	help
	Allow a phase offset on FTM3 channel 6.  This configures
	channels 6 and 7 to be in combine mode therefore
	channel 7 is not valid as an output signal.
	Note: phase is an unsupported feature.

endif # PWM_K64_FTM
