Currently the config CLOCK_CONTROL_NRF2 is used as a GLOB style config which includes all "NRF2" drivers and related configs. With NRF2, clocks are treated as individidual devices with individual device drivers. This commit split the CLOCK_CONTROL_NRF2 config into device specific configs and ifdefs. With this, drivers are selected individually based on devicetree state as is common for most devices drivers, and dependencies like NRFS and specific NRFS services are selected by the specific driver which nees it. Checks for CLOCK_CONTROL_NRF2 are updated to check for existance of the clocks instead. Signed-off-by: Bjarki Arge Andreasen <bjarki.andreasen@nordicsemi.no>
304 lines
9.1 KiB
Plaintext
304 lines
9.1 KiB
Plaintext
# 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 "NRF2 clock control common framework"
|
|
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
|