# NPCX Clock controller driver configuration options

# Copyright (c) 2020 Nuvoton Technology Corporation.
# SPDX-License-Identifier: Apache-2.0

config CLOCK_CONTROL_NPCX
	bool "NPCX clock controller driver"
	default y
	depends on DT_HAS_NUVOTON_NPCX_PCC_ENABLED
	help
	  Enable support for NPCX clock controller driver.

if CLOCK_CONTROL_NPCX

config CLOCK_CONTROL_NPCX_EXTERNAL_SRC
	bool "Generate LFCLK by on-chip Crystal Oscillator"
	help
	  When this option is enabled, the internal 32.768 KHz clock (LFCLK)
	  is generated by the on-chip Crystal Oscillator (XTOSC).
	  This includes an on-chip oscillator, to which an external crystal
	  and the related passive components are connected.

config CLOCK_CONTROL_NPCX_SUPP_APB4
	bool "Indicates that the clock controller supports APB4 bus"
	default y if !SOC_SERIES_NPCX7
	help
	  Selected if NPCX series supports APB4 bus.

config CLOCK_CONTROL_NPCX_SUPP_FIU1
	bool "Indicates that the clock controller supports FIU1 bus"
	default y if SOC_SERIES_NPCX4
	help
	  Selected if NPCX series supports FIU1 bus.

endif # CLOCK_CONTROL_NPCX
