# 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
	select HAS_DTS_GPIO
	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
	select HAS_DTS_GPIO
	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 "Init priority"
	default 60
	depends on GPIO_QMSI
	help
	  Device driver initialization priority.

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

if GPIO_QMSI

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

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

endif # GPIO_QMSI

if GPIO_QMSI_SS

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

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

endif # GPIO_QMSI_SS

endif # GPIO_QMSI || GPIO_QMSI_SS
