| # 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 |