Skip to content

Commit a68e9a8

Browse files
committed
[nrf fromlist] treewide: Replace clock api with clock api v2
Replaced old clock_control.h api with nrf_clock_control.h api. Old api is still available when CONFIG_CLOCK_CONTROL_NRF is set. Upstream PR #: 99290 Signed-off-by: Michal Frankiewicz <michal.frankiewicz@nordicsemi.no>
1 parent 8e9b57f commit a68e9a8

62 files changed

Lines changed: 1181 additions & 355 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Copyright (c) 2025 Nordic Semiconductor
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
# Suppress "unique_unit_address_if_enabled" to handle the following overlaps:
5+
# - clock@X010e000 & xo@X010e000 & lfclk@X010e000 & xo24m@X010e000
6+
list(APPEND EXTRA_DTC_FLAGS "-Wno-unique_unit_address_if_enabled")

drivers/audio/dmic_nrfx_pdm.c

Lines changed: 71 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,25 +19,55 @@
1919
LOG_MODULE_REGISTER(dmic_nrfx_pdm, CONFIG_AUDIO_DMIC_LOG_LEVEL);
2020

2121
#define NODE_AUDIO_AUXPLL DT_NODELABEL(audio_auxpll)
22-
#define NODE_AUDIOPLL DT_NODELABEL(audiopll)
2322

2423
#if CONFIG_SOC_SERIES_NRF54HX
25-
#define DMIC_NRFX_CLOCK_FREQ MHZ(16)
26-
#define DMIC_NRFX_AUDIO_CLOCK_FREQ DT_PROP_OR(NODE_AUDIOPLL, frequency, 0)
24+
#define DMIC_NRFX_CLOCK_FREQ MHZ(16)
25+
#define DMIC_NRFX_AUDIO_CLOCK_FREQ DT_PROP_OR(DT_NODELABEL(audiopll), frequency, 0)
26+
#define AUDIO_NODE_DESC "frequency property to be set in the audiopll node."
27+
#define AUDIO_FREQUENCY_DEFINED DT_NODE_HAS_PROP(DT_NODELABEL(audiopll), frequency)
28+
2729
#elif DT_NODE_HAS_STATUS_OKAY(NODE_AUDIO_AUXPLL)
2830
#define AUXPLL_FREQUENCY_SETTING DT_PROP(NODE_AUDIO_AUXPLL, nordic_frequency)
2931
BUILD_ASSERT((AUXPLL_FREQUENCY_SETTING == NRF_AUXPLL_FREQ_DIV_AUDIO_48K) ||
30-
(AUXPLL_FREQUENCY_SETTING == NRF_AUXPLL_FREQ_DIV_AUDIO_44K1),
31-
"Unsupported Audio AUXPLL frequency selection for PDM");
32+
(AUXPLL_FREQUENCY_SETTING == NRF_AUXPLL_FREQ_DIV_AUDIO_44K1),
33+
"Unsupported Audio AUXPLL frequency selection for PDM");
3234

3335
#define DMIC_NRFX_AUDIO_CLOCK_FREQ CLOCK_CONTROL_NRF_AUXPLL_GET_FREQ(NODE_AUDIO_AUXPLL)
36+
#define DMIC_NRFX_CLOCK_FREQ MHZ(32)
37+
#define AUDIO_NODE_DESC "nordic_frequency property to be set in the audio_auxpll node."
38+
#define AUDIO_FREQUENCY_DEFINED DT_NODE_HAS_PROP(DT_NODELABEL(audio_auxpll), nordic_frequency)
3439

40+
#elif CONFIG_CLOCK_CONTROL_NRF
3541
#define DMIC_NRFX_CLOCK_FREQ MHZ(32)
42+
#define DMIC_NRFX_AUDIO_CLOCK_FREQ \
43+
DT_PROP_OR(DT_NODELABEL(aclk), clock_frequency, \
44+
DT_PROP_OR(DT_NODELABEL(clock), hfclkaudio_frequency, 0))
45+
#define AUDIO_NODE_DESC "hfclkaudio_frequency property to be set in the clock node."
46+
#define AUDIO_FREQUENCY_DEFINED DT_NODE_HAS_PROP(DT_NODELABEL(clock), hfclkaudio_frequency)
3647

37-
#else
48+
#elif defined(CONFIG_CLOCK_CONTROL_NRFX_HFCLKAUDIO)
3849
#define DMIC_NRFX_CLOCK_FREQ MHZ(32)
39-
#define DMIC_NRFX_AUDIO_CLOCK_FREQ DT_PROP_OR(DT_NODELABEL(aclk), clock_frequency, \
40-
DT_PROP_OR(DT_NODELABEL(clock), hfclkaudio_frequency, 0))
50+
#define DMIC_NRFX_AUDIO_CLOCK_FREQ \
51+
DT_PROP_OR(DT_NODELABEL(aclk), clock_frequency, \
52+
DT_PROP_OR(DT_NODELABEL(hfclkaudio), hfclkaudio_frequency, 0))
53+
#define AUDIO_NODE_DESC "hfclkaudio_frequency property to be set in the hfclkaudio node."
54+
#define AUDIO_FREQUENCY_DEFINED DT_NODE_HAS_PROP(DT_NODELABEL(hfclkaudio), hfclkaudio_frequency)
55+
56+
#elif defined(CONFIG_CLOCK_CONTROL_NRFX_XO24M)
57+
#define DMIC_NRFX_CLOCK_FREQ MHZ(32)
58+
#define DMIC_NRFX_AUDIO_CLOCK_FREQ \
59+
DT_PROP_OR(DT_NODELABEL(aclk), clock_frequency, \
60+
DT_PROP_OR(DT_NODELABEL(xo24m), clock_frequency, 0))
61+
#define AUDIO_NODE_DESC "clock_frequency property to be set in the xo24m node."
62+
#define AUDIO_FREQUENCY_DEFINED DT_NODE_HAS_PROP(DT_NODELABEL(xo24m), clock_frequency)
63+
64+
#elif defined(CONFIG_CLOCK_CONTROL_NRFX_XO)
65+
#define DMIC_NRFX_CLOCK_FREQ MHZ(32)
66+
#define DMIC_NRFX_AUDIO_CLOCK_FREQ \
67+
DT_PROP_OR(DT_NODELABEL(aclk), clock_frequency, \
68+
DT_PROP_OR(DT_NODELABEL(xo), clock_frequency, 0))
69+
#define AUDIO_NODE_DESC "clock_frequency property to be set in the xo node."
70+
#define AUDIO_FREQUENCY_DEFINED DT_NODE_HAS_PROP(DT_NODELABEL(xo), clock_frequency)
4171
#endif
4272

4373
struct dmic_nrfx_pdm_drv_data {
@@ -46,6 +76,9 @@ struct dmic_nrfx_pdm_drv_data {
4676
const struct device *audiopll_dev;
4777
#elif CONFIG_CLOCK_CONTROL_NRF
4878
struct onoff_manager *clk_mgr;
79+
#elif defined(CONFIG_CLOCK_CONTROL_NRFX_HFCLKAUDIO) || defined(CONFIG_CLOCK_CONTROL_NRFX_HFCLK) || \
80+
defined(CONFIG_CLOCK_CONTROL_NRFX_XO)
81+
const struct device *clk_dev;
4982
#endif
5083
struct onoff_client clk_cli;
5184
struct k_mem_slab *mem_slab;
@@ -91,6 +124,9 @@ static int request_clock(struct dmic_nrfx_pdm_drv_data *drv_data)
91124
return nrf_clock_control_request(drv_data->audiopll_dev, NULL, &drv_data->clk_cli);
92125
#elif CONFIG_CLOCK_CONTROL_NRF
93126
return onoff_request(drv_data->clk_mgr, &drv_data->clk_cli);
127+
#elif defined(CONFIG_CLOCK_CONTROL_NRFX_HFCLKAUDIO) || defined(CONFIG_CLOCK_CONTROL_NRFX_HFCLK) || \
128+
defined(CONFIG_CLOCK_CONTROL_NRFX_XO)
129+
return nrf_clock_control_request(drv_data->clk_dev, NULL, &drv_data->clk_cli);
94130
#else
95131
return -ENOTSUP;
96132
#endif
@@ -105,6 +141,9 @@ static int release_clock(struct dmic_nrfx_pdm_drv_data *drv_data)
105141
return nrf_clock_control_release(drv_data->audiopll_dev, NULL);
106142
#elif CONFIG_CLOCK_CONTROL_NRF
107143
return onoff_release(drv_data->clk_mgr);
144+
#elif defined(CONFIG_CLOCK_CONTROL_NRFX_HFCLKAUDIO) || defined(CONFIG_CLOCK_CONTROL_NRFX_HFCLK) || \
145+
defined(CONFIG_CLOCK_CONTROL_NRFX_XO)
146+
return nrf_clock_control_release(drv_data->clk_dev, NULL);
108147
#else
109148
return -ENOTSUP;
110149
#endif
@@ -478,18 +517,37 @@ static void init_clock_manager(const struct device *dev)
478517

479518
if (drv_cfg->clk_src == ACLK) {
480519
subsys = CLOCK_CONTROL_NRF_SUBSYS_HFAUDIO;
481-
} else
520+
} else {
482521
#endif
483-
{
484522
subsys = CLOCK_CONTROL_NRF_SUBSYS_HF;
523+
#if NRF_CLOCK_HAS_HFCLKAUDIO
485524
}
525+
#endif
486526

487527
drv_data->clk_mgr = z_nrf_clock_control_get_onoff(subsys);
488528
__ASSERT_NO_MSG(drv_data->clk_mgr != NULL);
529+
#elif defined(CONFIG_CLOCK_CONTROL_NRFX_HFCLKAUDIO) || defined(CONFIG_CLOCK_CONTROL_NRFX_HFCLK) || \
530+
defined(CONFIG_CLOCK_CONTROL_NRFX_XO)
531+
struct dmic_nrfx_pdm_drv_data *drv_data = dev->data;
532+
#if NRF_CLOCK_HAS_HFCLKAUDIO
533+
const struct dmic_nrfx_pdm_drv_cfg *drv_cfg = dev->config;
534+
535+
if (drv_cfg->clk_src == ACLK) {
536+
drv_data->clk_dev = DEVICE_DT_GET_ONE(nordic_nrf_clock_hfclkaudio);
537+
} else {
538+
#endif
539+
drv_data->clk_dev = DEVICE_DT_GET_ONE(COND_CODE_1(NRF_CLOCK_HAS_HFCLK,
540+
(nordic_nrf_clock_hfclk),
541+
(nordic_nrf_clock_xo)));
542+
#if NRF_CLOCK_HAS_HFCLKAUDIO
543+
}
544+
#endif
545+
546+
__ASSERT_NO_MSG(drv_data->clk_dev != NULL);
489547
#elif CONFIG_CLOCK_CONTROL_NRFS_AUDIOPLL
490548
struct dmic_nrfx_pdm_drv_data *drv_data = dev->data;
491549

492-
drv_data->audiopll_dev = DEVICE_DT_GET(NODE_AUDIOPLL);
550+
drv_data->audiopll_dev = DEVICE_DT_GET(DT_NODELABEL(audiopll));
493551
#endif
494552
}
495553

@@ -540,17 +598,8 @@ static const struct _dmic_ops dmic_ops = {
540598
NRF_DT_CHECK_NODE_HAS_REQUIRED_MEMORY_REGIONS(DT_DRV_INST(inst)); \
541599
BUILD_ASSERT(PDM_CLK_SRC(inst) != ACLK || NRF_PDM_HAS_SELECTABLE_CLOCK, \
542600
"Clock source ACLK is not available."); \
543-
BUILD_ASSERT(PDM_CLK_SRC(inst) != ACLK || \
544-
DT_NODE_HAS_PROP(DT_NODELABEL(clock), hfclkaudio_frequency) || \
545-
DT_NODE_HAS_PROP(DT_NODELABEL(aclk), clock_frequency) || \
546-
DT_NODE_HAS_PROP(NODE_AUDIOPLL, frequency) || \
547-
DT_NODE_HAS_PROP(NODE_AUDIO_AUXPLL, nordic_frequency), \
548-
"Clock source ACLK requires one following defined frequency " \
549-
"properties: " \
550-
"hfclkaudio-frequency in the nordic,nrf-clock node, " \
551-
"clock-frequency in the aclk node, " \
552-
"frequency in the audiopll node, " \
553-
"nordic-frequency in the audio_auxpll node"); \
601+
BUILD_ASSERT(PDM_CLK_SRC(inst) != ACLK || AUDIO_FREQUENCY_DEFINED, \
602+
"Clock source ACLK requires " AUDIO_NODE_DESC); \
554603
DEVICE_DT_INST_DEFINE(inst, pdm_nrfx_init##inst, NULL, &dmic_nrfx_pdm_data##inst, \
555604
&dmic_nrfx_pdm_cfg##inst, POST_KERNEL, \
556605
CONFIG_AUDIO_DMIC_INIT_PRIORITY, &dmic_ops);

drivers/clock_control/CMakeLists.txt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_MSPM0 cl
2424
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NPCM clock_control_npcm.c)
2525
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NPCX clock_control_npcx.c)
2626
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF clock_control_nrf.c)
27+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFX_DRIVER_CALIBRATION nrf_clock_calibration.c)
2728
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_DRIVER_CALIBRATION nrf_clock_calibration.c)
2829
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_RV32M1_PCC clock_control_rv32m1_pcc.c)
2930
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_INFINEON_CAT1 clock_control_ifx_cat1.c)
@@ -53,20 +54,20 @@ zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_HSFLL_GLOBAL cl
5354
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_RTS5912_SCCON clock_control_rts5912_sccon.c)
5455
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFS_AUDIOPLL clock_control_nrfs_audiopll.c)
5556
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_IT51XXX clock_control_it51xxx.c)
56-
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF2_COMMON clock_control_nrf2_common.c)
57+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFS clock_control_nrfs_common.c)
5758
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_FLL16M clock_control_nrf_fll16m.c)
5859
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF54H_HFXO clock_control_nrf54h_hfxo.c)
5960
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_HSFLL_LOCAL clock_control_nrf_hsfll_local.c)
6061
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_IRON_HSFLL_LOCAL clock_control_nrf_iron_hsfll_local.c)
6162
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFS_LFCLK clock_control_nrfs_lfclk.c)
6263
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_AUXPLL clock_control_nrf_auxpll.c)
63-
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_COMMON clock_control_nrf_common.c)
64-
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_HFCLK clock_control_nrf_hfclk.c)
65-
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_HFCLK192M clock_control_nrf_hfclk192m.c)
66-
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_HFCLKAUDIO clock_control_nrf_hfclkaudio.c)
67-
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_LFCLK clock_control_nrf_lfclk.c)
68-
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_XO clock_control_nrf_xo.c)
69-
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRF_XO24M clock_control_nrf_xo24m.c)
64+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFX clock_control_nrf_common.c)
65+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFX_HFCLK clock_control_nrf_hfclk.c)
66+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFX_HFCLK192M clock_control_nrf_hfclk192m.c)
67+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFX_HFCLKAUDIO clock_control_nrf_hfclkaudio.c)
68+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFX_LFCLK clock_control_nrf_lfclk.c)
69+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFX_XO clock_control_nrf_xo.c)
70+
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_NRFX_XO24M clock_control_nrf_xo24m.c)
7071
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_BOUFFALOLAB_BL60X clock_control_bl60x.c)
7172
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_BOUFFALOLAB_BL61X clock_control_bl61x.c)
7273
zephyr_library_sources_ifdef(CONFIG_CLOCK_CONTROL_BOUFFALOLAB_BL70X clock_control_bl70x.c)

0 commit comments

Comments
 (0)