# Kconfig.nrf5 - Nordic Semiconductor nRF5X GPIO configuration options
#
# Copyright (c) 2016 Nordic Semiconductor ASA
#
# 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_NRF5
	bool "Nordic Semiconductor nRF5X-based GPIO driver"
	depends on GPIO && SOC_FAMILY_NRF5
	default n
	help
	  Enable GPIO driver for nRF5 line of MCUs.

if GPIO_NRF5

config GPIO_NRF5_P0
	bool "nRF5x GPIO Port P0 options"
	depends on GPIO_NRF5
	default n
	help
	  Enable nRF5
	  GPIO port
	  P0 config
	  options.

config GPIO_NRF5_P0_DEV_NAME
	string "GPIO Port P0 Device Name"
	depends on GPIO_NRF5_P0
	default "GPIO_0"
	help
	  Specify the device name to be used for the GPIO port.

config GPIO_NRF5_PORT_P0_PRI
	int "GPIOTE P0 interrupt priority"
	depends on GPIO_NRF5_P0
	range 0 7
	default 2
	help
	  nRF5X Port P0 IRQ priority.

endif # GPIO_NRF5
