# Kconfig.k64 - K64 PINMUX 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.
#

menuconfig PINMUX_K64
	bool "Freescale K64-based Pin multiplexer driver"
	depends on PINMUX && SOC_MK64F12
	default n
	help
	Enable driver for Freescale K64-based Pin multiplexer.

if PINMUX_K64

config PINMUX_K64_GPIO_A_NAME
	string "Name of the Port A GPIO"
	depends on PINMUX_K64 && GPIO_K64
	default "GPIO_A"
	help
	The name of the Port A GPIO referred to as PTA0..PTA31.

config PINMUX_K64_GPIO_B_NAME
	string "Name of the Port B GPIO"
	depends on PINMUX_K64 && GPIO_K64
	default "GPIO_B"
	help
	The name of the Port B GPIO referred to as PTB0..PTB31.

config PINMUX_K64_GPIO_C_NAME
	string "Name of the Port C GPIO"
	depends on PINMUX_K64 && GPIO_K64
	default "GPIO_C"
	help
	The name of the Port C GPIO referred to as PTC0..PTC31.

config PINMUX_K64_GPIO_D_NAME
	string "Name of the Port D GPIO"
	depends on PINMUX_K64 && GPIO_K64
	default "GPIO_D"
	help
	The name of the Port D GPIO referred to as PTD0..PTD31.

config PINMUX_K64_GPIO_E_NAME
	string "Name of the Port E GPIO"
	depends on PINMUX_K64 && GPIO_K64
	default "GPIO_E"
	help
	The name of the Port E GPIO referred to as PTE0..PTE31.

endif # PINMUX_K64
