# 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
