# 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"
	depends on GPIO_K64
	default 0xA0

config GPIO_K64_A
	bool "Freescale K64-based GPIO Port A"
	depends on GPIO_K64
	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"
	depends on GPIO_K64
	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"
	depends on GPIO_K64
	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"
	depends on GPIO_K64
	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"
	depends on GPIO_K64
	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
