# Kconfig.k64 - K64 GPIO 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 GPIO_K64
	bool "Freescale K64-based GPIO driver"
	depends on GPIO && SOC_MK64F12
	default n
	help
	  Enable driver for Freescale K64-based GPIOs.

if GPIO_K64

config PORT_K64_INT_STATUS_OFFSET
	hex "Freescale K64-based Port Control interrupt status register offset"
	default 0xA0

config GPIO_K64_A
	bool "Freescale K64-based GPIO Port A"
	default n
	help
	  Enable config options for Freescale K64-based GPIO port A.

config GPIO_K64_A_DEV_NAME
	string "Freescale K64-based GPIO Port A Device Name"
	depends on GPIO_K64_A
	default "GPIO_0"
	help
	  Specify the device name.

config GPIO_K64_PORTA_PRI
	int "Freescale K64-based Port A interrupt priority"
	depends on GPIO_K64_A
	default 2
	help
	  K64 Port A IRQ priority

config GPIO_K64_B
	bool "Freescale K64-based GPIO Port B"
	default n
	help
	  Enable config options for Freescale K64-based GPIO port B.

config GPIO_K64_B_DEV_NAME
	string "Freescale K64-based GPIO Port B Device Name"
	depends on GPIO_K64_B
	default "GPIO_1"
	help
	  Specify the device name.

config GPIO_K64_PORTB_PRI
	int "Freescale K64-based Port B interrupt priority"
	depends on GPIO_K64_B
	default 2
	help
	  K64 Port B IRQ priority

config GPIO_K64_C
	bool "Freescale K64-based GPIO Port B"
	default n
	help
	  Enable config options for Freescale K64-based GPIO port C.

config GPIO_K64_C_DEV_NAME
	string "Freescale K64-based GPIO Port C Device Name"
	depends on GPIO_K64_C
	default "GPIO_2"
	help
	  Specify the device name.

config GPIO_K64_PORTC_PRI
	int "Freescale K64-based Port C interrupt priority"
	depends on GPIO_K64_C
	default 2
	help
	  K64 Port C IRQ priority

config GPIO_K64_D
	bool "Freescale K64-based GPIO Port D"
	default n
	help
	  Enable config options for Freescale K64-based GPIO port D.

config GPIO_K64_D_DEV_NAME
	string "Freescale K64-based GPIO Port D Device Name"
	depends on GPIO_K64_D
	default "GPIO_3"
	help
	  Specify the device name.

config GPIO_K64_PORTD_PRI
	int "Freescale K64-based Port D interrupt priority"
	depends on GPIO_K64_D
	default 2
	help
	  K64 Port D IRQ priority

config GPIO_K64_E
	bool "Freescale K64-based GPIO Port E"
	default n
	help
	  Enable config options for Freescale K64-based GPIO port E.

config GPIO_K64_E_DEV_NAME
	string "Freescale K64-based GPIO Port E Device Name"
	depends on GPIO_K64_E
	default "GPIO_4"
	help
	  Specify the device name.

config GPIO_K64_PORTE_PRI
	int "Freescale K64-based Port E interrupt priority"
	depends on GPIO_K64_E
	default 2
	help
	  K64 Port E IRQ priority

endif # GPIO_K64
