# SYSCON configuration options

# Copyright (c) 2021 Carlo Caione <ccaione@baylibre.com>
# SPDX-License-Identifier: Apache-2.0

#
# SYSCON options
#
menuconfig SYSCON
	bool "SYSCON (System Controller) drivers"
	help
	  SYSCON (System Controller) drivers. System controller node represents
	  a register region containing a set of miscellaneous registers. The
	  registers are not cohesive enough to represent as any specific type
	  of device. The typical use-case is for some other node's driver, or
	  platform-specific code, to acquire a reference to the syscon node and
	  extract information from there.

if SYSCON

module = SYSCON
module-str = syscon
source "subsys/logging/Kconfig.template.log_config"

DT_COMPAT_SYSCON := syscon

config SYSCON_GENERIC
	bool "Generic SYSCON (System Controller) driver"
	default $(dt_compat_enabled,$(DT_COMPAT_SYSCON))
	help
	  Enable generic SYSCON (System Controller) driver

config SYSCON_GENERIC_INIT_PRIORITY_DEVICE
	int "SYSCON (System Controller) generic init device priority"
	default 50
	depends on SYSCON_GENERIC
	help
	  This option controls the priority of the syscon device
	  initialization. Higher priority ensures that the device is
	  initialized earlier in the startup cycle. If unsure, leave at default
	  value

endif # SYSCON
