# Kconfig - QMSI drivers configuration options

#
# Copyright (c) 2015 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

config HAS_QMSI
	bool

menuconfig QMSI
	bool "QMSI driver support"
	default n
	depends on HAS_QMSI
	help
	automatically set when either of QMSI_LIBRARY or QMSI_BUILTIN
	is selected.

if HAS_QMSI

config QMSI_BUILTIN
	bool "Enable QMSI drivers through integrated sources"
	default n
	select QMSI
	help
	Link with local QMSI sources instead of external library.

config QMSI_LIBRARY
	bool "Enable QMSI drivers using external library"
	default n
	select QMSI
	help
	This option enables QMSI device drivers. These drivers are actually shim
	drivers based on drivers provided by QMSI BSP. The BSP provides a static
	library (libqmsi) which implements several drivers for peripherals from
	Intel MCUs (e.g. Quark SE and Quark D2000).

config QMSI_INSTALL_PATH
	depends on QMSI_LIBRARY
	string "QMSI install path"
	help
	This option holds the path where the QMSI library and headers are
	installed. Make sure this option is properly set when QMSI_LIBRARY
	is enabled otherwise the build will fail.

config SOC_WATCH
	bool "Enable SoCWatch drivers and related instrumentation"
	default n
	depends on KERNEL_EVENT_LOGGER
	help
	This option enables the SoCWatch driver and related instrumentation.

endif
