# Kconfig.qmsi - QMSI GPIO configuration options
#
#
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig GPIO_QMSI
	bool "QMSI GPIO driver"
	depends on GPIO && QMSI
	default n
	help
	  Enable the GPIO driver found on Intel Microcontroller
	  boards, using the QMSI library.

menuconfig GPIO_QMSI_SS
	bool "QMSI GPIO SS driver"
	depends on GPIO && QMSI && ARC
	default n
	help
	  Enable the GPIO driver found on Intel Microcontroller
	  boards, on the sensor subsystem, using the QMSI library.

if GPIO_QMSI || GPIO_QMSI_SS

config GPIO_QMSI_INIT_PRIORITY
	int
	default 60
	depends on GPIO_QMSI
	prompt "Init priority"
	help
	  Device driver initialization priority.

config GPIO_QMSI_API_REENTRANCY
	bool
	prompt "GPIO driver API reentrancy"
	depends on GPIO_QMSI
	default n
	help
	  Enable support for QMSI GPIO driver API reentrancy.

if GPIO_QMSI

config GPIO_QMSI_0
	bool "QMSI GPIO block 0"
	default n
	help
	  Include support for the GPIO port 0 using QMSI.

config GPIO_QMSI_0_NAME
	string "Driver name"
	depends on GPIO_QMSI_0
	default "GPIO_0"

config GPIO_QMSI_0_IRQ_PRI
	int "Controller interrupt priority"
	depends on GPIO_QMSI_0
	help
	  IRQ priority

config GPIO_QMSI_1
	bool "QMSI GPIO block 1"
	default n
	help
	  Include support for the GPIO port 1 using QMSI.

config GPIO_QMSI_1_NAME
	string "Driver name"
	depends on GPIO_QMSI_1
	default "GPIO_1"

config GPIO_QMSI_1_IRQ_PRI
	int "Controller interrupt priority"
	depends on GPIO_QMSI_1
	help
	  IRQ priority

endif # GPIO_QMSI

if GPIO_QMSI_SS

config GPIO_QMSI_SS_0
	bool "QMSI GPIO SS block 0"
	default n
	help
	  Include support for the GPIO SS port 0 using QMSI.

config GPIO_QMSI_SS_0_NAME
	string "Driver name"
	depends on GPIO_QMSI_SS_0
	default "GPIO_SS_0"

config GPIO_QMSI_SS_0_IRQ_PRI
	int "Controller interrupt priority"
	depends on GPIO_QMSI_SS_0
	help
	  IRQ priority

config GPIO_QMSI_SS_1
	bool "QMSI GPIO SS block 1"
	default n
	help
	  Include support for the GPIO SS port 1 using QMSI.

config GPIO_QMSI_SS_1_NAME
	string "Driver name"
	depends on GPIO_QMSI_SS_1
	default "GPIO_SS_1"

config GPIO_QMSI_SS_1_IRQ_PRI
	int "Controller interrupt priority"
	depends on GPIO_QMSI_SS_1
	help
	  IRQ priority

endif # GPIO_QMSI_SS

endif # GPIO_QMSI || GPIO_QMSI_SS
