# 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"
	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 1 if SOC_SERIES_NRF51X
	range 0 5 if SOC_SERIES_NRF52X
	default 1
	help
	  nRF5X Port P0 IRQ priority.

endif # GPIO_NRF5
