Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

310 lines
9.3 KiB

# Clock controller driver configuration options
# Copyright (c) 2016 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
config CLOCK_CONTROL_NRF_FORCE_ALT
bool
depends on SOC_COMPATIBLE_NRF
help
This option can be enabled to force an alternative implementation
of the clock control driver.
menuconfig CLOCK_CONTROL_NRF
bool "NRF Clock controller support"
default y
depends on DT_HAS_NORDIC_NRF_CLOCK_ENABLED
select NRFX_CLOCK if !CLOCK_CONTROL_NRF_FORCE_ALT
select ONOFF
help
Enable support for the Nordic Semiconductor nRFxx series SoC clock
driver.
if CLOCK_CONTROL_NRF
config CLOCK_CONTROL_NRF_K32SRC_FREQUENCY
int "32k source clock frequency"
default 32768
config CLOCK_CONTROL_NRF_SHELL
bool "Shell commands"
depends on SHELL
choice CLOCK_CONTROL_NRF_SOURCE
prompt "32KHz clock source"
default CLOCK_CONTROL_NRF_K32SRC_XTAL
config CLOCK_CONTROL_NRF_K32SRC_RC
bool "RC Oscillator"
select NRFX_CLOCK_LF_SRC_RC if !CLOCK_CONTROL_NRF_FORCE_ALT
config CLOCK_CONTROL_NRF_K32SRC_XTAL
bool "Crystal Oscillator"
select NRFX_CLOCK_LF_SRC_XTAL if !CLOCK_CONTROL_NRF_FORCE_ALT
select NRFX_CLOCK_LFXO_TWO_STAGE_ENABLED if (!SOC_SERIES_BSIM_NRFXX && \
!CLOCK_CONTROL_NRF_FORCE_ALT)
config CLOCK_CONTROL_NRF_K32SRC_SYNTH
bool "Synthesized from HFCLK"
depends on !SOC_SERIES_NRF91X
select NRFX_CLOCK_LF_SRC_SYNTH if !CLOCK_CONTROL_NRF_FORCE_ALT
config CLOCK_CONTROL_NRF_K32SRC_EXT_LOW_SWING
bool "External low swing"
depends on SOC_SERIES_NRF52X
select NRFX_CLOCK_LFXO_TWO_STAGE_ENABLED if !CLOCK_CONTROL_NRF_FORCE_ALT
select NRFX_CLOCK_LF_SRC_LOW_SWING if !CLOCK_CONTROL_NRF_FORCE_ALT
config CLOCK_CONTROL_NRF_K32SRC_EXT_FULL_SWING
bool "External full swing"
depends on SOC_SERIES_NRF52X
select NRFX_CLOCK_LFXO_TWO_STAGE_ENABLED if !CLOCK_CONTROL_NRF_FORCE_ALT
select NRFX_CLOCK_LF_SRC_FULL_SWING if !CLOCK_CONTROL_NRF_FORCE_ALT
endchoice
config CLOCK_CONTROL_NRF_K32SRC_RC_CALIBRATION
bool "LF clock calibration"
depends on !SOC_SERIES_NRF91X && CLOCK_CONTROL_NRF_K32SRC_RC
default y if !SOC_NRF53_CPUNET_ENABLE
select NRFX_CLOCK_LF_CAL_ENABLED if !CLOCK_CONTROL_NRF_FORCE_ALT
help
If calibration is disabled when RC is used for low frequency clock then
accuracy of the low frequency clock will degrade. Disable on your own
risk.
if CLOCK_CONTROL_NRF_K32SRC_RC_CALIBRATION
config CLOCK_CONTROL_NRF_DRIVER_CALIBRATION
bool
depends on !CLOCK_CONTROL_NRF_FORCE_ALT
depends on MULTITHREADING
default y
help
Enabling indicates that calibration is performed by the clock control driver.
config CLOCK_CONTROL_NRF_CALIBRATION_LF_ALWAYS_ON
bool "LF clock is always on"
default y if NRF_RTC_TIMER || NRF_GRTC_TIMER
help
If RTC or GRTC is used as system timer then LF clock is always on and handling
can be simplified.
config CLOCK_CONTROL_NRF_CALIBRATION_PERIOD
int "Calibration opportunity period in milliseconds"
default 4000
help
Periodically, calibration action is performed. Action includes
temperature measurement followed by clock calibration. Calibration may
be skipped if temperature change (compared to measurement of previous
calibration) did not exceeded CLOCK_CONTROL_NRF_CALIBRATION_TEMP_DIFF
and number of consecutive skips did not exceeded
CLOCK_CONTROL_NRF_CALIBRATION_MAX_SKIP.
config CLOCK_CONTROL_NRF_CALIBRATION_MAX_SKIP
int "Maximum number of calibration skips"
default 1
range 0 $(UINT8_MAX)
help
Calibration is skipped when temperature change since last calibration
was less than configured threshold. If number of consecutive skips
reaches configured value then calibration is performed
unconditionally. Set to 0 to perform calibration periodically
regardless of temperature change.
config CLOCK_CONTROL_NRF_CALIBRATION_TEMP_DIFF
int "Temperature change triggering calibration (in 0.25 degree units)"
default 2
help
Calibration is triggered if the temperature has changed by at least
this amount since the last calibration.
if CLOCK_CONTROL_NRF_DRIVER_CALIBRATION
config CLOCK_CONTROL_NRF_CALIBRATION_DEBUG
bool "Calibration instrumentation"
help
Enables retrieving debug information like number of performed or
skipped calibrations.
config CLOCK_CONTROL_NRF_USES_TEMP_SENSOR
bool
depends on HAS_HW_NRF_TEMP
default y if CLOCK_CONTROL_NRF_CALIBRATION_MAX_SKIP > 0 && \
CLOCK_CONTROL_NRF_CALIBRATION_TEMP_DIFF > 0
select TEMP_NRF5
select SENSOR
endif # CLOCK_CONTROL_NRF_DRIVER_CALIBRATION
endif # CLOCK_CONTROL_NRF_K32SRC_RC_CALIBRATION
config CLOCK_CONTROL_NRF_HFINT_CALIBRATION
bool "HFINT clock calibration"
depends on DT_HAS_NORDIC_NRF54L_HFXO_ENABLED
depends on !TRUSTED_EXECUTION_NONSECURE
select EXPERIMENTAL
help
Enables calibration of HFINT clock on every start of HFXO clock.
if CLOCK_CONTROL_NRF_HFINT_CALIBRATION
config CLOCK_CONTROL_NRF_HFINT_CALIBRATION_PERIOD
int "HFINT clock calibration period in milliseconds"
default 60000
help
Periodically, HFINT clock calibration is performed.
This includes requesting HFXO clock and starting actual calibration.
Once the calibration is finished, the HFXO clock is released.
Set to 0 to disable periodic calibration - in such case calibration
will be done only when HFXO is started by the application itself.
endif # CLOCK_CONTROL_NRF_HFINT_CALIBRATION
choice CLOCK_CONTROL_NRF_ACCURACY_PPM
prompt "32KHz clock accuracy"
default CLOCK_CONTROL_NRF_K32SRC_500PPM if CLOCK_CONTROL_NRF_K32SRC_RC && SOC_COMPATIBLE_NRF52X
default CLOCK_CONTROL_NRF_K32SRC_250PPM if CLOCK_CONTROL_NRF_K32SRC_RC
default CLOCK_CONTROL_NRF_K32SRC_50PPM
config CLOCK_CONTROL_NRF_K32SRC_500PPM
bool "251 ppm to 500 ppm"
config CLOCK_CONTROL_NRF_K32SRC_250PPM
bool "151 ppm to 250 ppm"
config CLOCK_CONTROL_NRF_K32SRC_150PPM
bool "101 ppm to 150 ppm"
config CLOCK_CONTROL_NRF_K32SRC_100PPM
bool "76 ppm to 100 ppm"
config CLOCK_CONTROL_NRF_K32SRC_75PPM
bool "51 ppm to 75 ppm"
config CLOCK_CONTROL_NRF_K32SRC_50PPM
bool "31 ppm to 50 ppm"
config CLOCK_CONTROL_NRF_K32SRC_30PPM
bool "21 ppm to 30 ppm"
config CLOCK_CONTROL_NRF_K32SRC_20PPM
bool "0 ppm to 20 ppm"
endchoice
config CLOCK_CONTROL_NRF_ACCURACY
int
default 500 if CLOCK_CONTROL_NRF_K32SRC_500PPM
default 250 if CLOCK_CONTROL_NRF_K32SRC_250PPM
default 150 if CLOCK_CONTROL_NRF_K32SRC_150PPM
default 100 if CLOCK_CONTROL_NRF_K32SRC_100PPM
default 75 if CLOCK_CONTROL_NRF_K32SRC_75PPM
default 50 if CLOCK_CONTROL_NRF_K32SRC_50PPM
default 30 if CLOCK_CONTROL_NRF_K32SRC_30PPM
default 20 if CLOCK_CONTROL_NRF_K32SRC_20PPM
endif # CLOCK_CONTROL_NRF
config CLOCK_CONTROL_NRF2_COMMON
bool
depends on HAS_NORDIC_DRIVERS
select ONOFF
config CLOCK_CONTROL_NRF_HSFLL_GLOBAL
bool "Clock control for global HSFLL"
depends on DT_HAS_NORDIC_NRF_HSFLL_GLOBAL_ENABLED
select NRFS
select NRFS_GDFS_SERVICE_ENABLED
select CLOCK_CONTROL_NRF2_COMMON
default y
if CLOCK_CONTROL_NRF_HSFLL_GLOBAL
config CLOCK_CONTROL_NRF_HSFLL_GLOBAL_TIMEOUT_MS
int "Frequency request timeout in milliseconds"
default 10000
config CLOCK_CONTROL_NRF_HSFLL_GLOBAL_REQ_LOW_FREQ
bool "Request LOW frequency on init"
default y
help
The GDFS service will default to HIGH frequency until it receives
a lower frequency request. The NRF2 clock controller drivers
expect the clock to be initialized to their lowest frequency, so
we need to send a request on init to align GDFS with the NRF2
clock controller driver.
This initial request can be disabled to prevent a potentially
unnecessary HIGH -> LOW -> HIGH cycle given some module will
request a HIGH frequency on init anyway.
config CLOCK_CONTROL_NRF_HSFLL_GLOBAL_INIT_PRIORITY
int "Init priority of global HSFLL device driver"
default 52
help
Must be higher than NRFS backend
endif # CLOCK_CONTROL_NRF_HSFLL_GLOBAL
config CLOCK_CONTROL_NRFS_AUDIOPLL
bool "NRFS AudioPLL driver support"
depends on DT_HAS_NORDIC_NRFS_AUDIOPLL_ENABLED
select NRFS
select NRFS_AUDIOPLL_SERVICE_ENABLED
select CLOCK_CONTROL_NRF2_COMMON
default y
config CLOCK_CONTROL_NRF_FLL16M
bool "NRF FLL16M driver support"
depends on DT_HAS_NORDIC_NRF_FLL16M_ENABLED
select CLOCK_CONTROL_NRF2_COMMON
default y
config CLOCK_CONTROL_NRF54H_HFXO
bool "NRF54H HFXO driver support"
depends on DT_HAS_NORDIC_NRF54H_HFXO_ENABLED
select CLOCK_CONTROL_NRF2_COMMON
default y
config CLOCK_CONTROL_NRF_HSFLL_LOCAL
bool "NRF HSFLL LOCAL driver support"
depends on DT_HAS_NORDIC_NRF_HSFLL_LOCAL_ENABLED
select NRFS
select NRFS_DVFS_LOCAL_DOMAIN
select CLOCK_CONTROL_NRF2_COMMON
default y
if CLOCK_CONTROL_NRF_HSFLL_LOCAL
config CLOCK_CONTROL_NRF_HSFLL_LOCAL_REQ_LOW_FREQ
bool "Local domain scale down after init"
help
Request the lowest operating point after DVFS initialization.
config CLOCK_CONTROL_NRF_HSFLL_LOCAL_NRFS_DVFS_TIMEOUT_MS
int "Timeout waiting for nrfs dvfs service callback in milliseconds"
default 2000
endif # CLOCK_CONTROL_NRF_HSFLL_LOCAL
config CLOCK_CONTROL_NRF_LFCLK
bool "NRF LFCLK driver support"
depends on DT_HAS_NORDIC_NRF_LFCLK_ENABLED
select NRFS
select NRFS_CLOCK_SERVICE_ENABLED
select CLOCK_CONTROL_NRF2_COMMON
default y
if CLOCK_CONTROL_NRF_LFCLK
config CLOCK_CONTROL_NRF_LFCLK_CLOCK_TIMEOUT_MS
int "Timeout waiting for nrfs clock service callback in milliseconds"
default 1000
endif # CLOCK_CONTROL_NRF_LFCLK
config CLOCK_CONTROL_NRF_AUXPLL
bool "nRF Auxiliary PLL driver"
default y
depends on DT_HAS_NORDIC_NRF_AUXPLL_ENABLED
select CLOCK_CONTROL_NRF2_COMMON