Skip to content

Commit 63ebb75

Browse files
imran-sajjaddanieldegrasse
authored andcommitted
soc: imxrt: mimxrt1011 i2s clock fix
Fix for compiling i2s drivers on the NXP mimxrt1010_evk board. For mimxrt1011, the defines kCLOCK_Sai2... are not defined as the sai2 peripheral does not exist. Trying to compile gives error. Fixed by adding check for device tree node around code that uses the defines. Also added same for sai1 and sai3. Thanks @lucien-nxp, @ZhaoxiangJin from NXP. Signed-off-by: Imran Sajjad <imran.sajjad@iconfitness.com>
1 parent f70adf7 commit 63ebb75

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

drivers/clock_control/clock_control_mcux_ccm.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -449,22 +449,28 @@ static int mcux_ccm_get_subsys_rate(const struct device *dev,
449449
#endif
450450

451451
#ifdef CONFIG_I2S_MCUX_SAI
452+
#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(sai1))
452453
case IMX_CCM_SAI1_CLK:
453454
*rate = CLOCK_GetFreq(kCLOCK_AudioPllClk)
454455
/ (CLOCK_GetDiv(kCLOCK_Sai1PreDiv) + 1)
455456
/ (CLOCK_GetDiv(kCLOCK_Sai1Div) + 1);
456457
break;
458+
#endif
459+
#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(sai2))
457460
case IMX_CCM_SAI2_CLK:
458461
*rate = CLOCK_GetFreq(kCLOCK_AudioPllClk)
459462
/ (CLOCK_GetDiv(kCLOCK_Sai2PreDiv) + 1)
460463
/ (CLOCK_GetDiv(kCLOCK_Sai2Div) + 1);
461464
break;
465+
#endif
466+
#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(sai3))
462467
case IMX_CCM_SAI3_CLK:
463468
*rate = CLOCK_GetFreq(kCLOCK_AudioPllClk)
464469
/ (CLOCK_GetDiv(kCLOCK_Sai3PreDiv) + 1)
465470
/ (CLOCK_GetDiv(kCLOCK_Sai3Div) + 1);
466471
break;
467472
#endif
473+
#endif
468474
#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(flexspi))
469475
case IMX_CCM_FLEXSPI_CLK:
470476
*rate = CLOCK_GetClockRootFreq(kCLOCK_FlexspiClkRoot);

soc/nxp/imxrt/imxrt10xx/soc.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,21 +305,27 @@ void imxrt_audio_codec_pll_init(uint32_t clock_name, uint32_t clk_src,
305305
uint32_t clk_pre_div, uint32_t clk_src_div)
306306
{
307307
switch (clock_name) {
308+
#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(sai1))
308309
case IMX_CCM_SAI1_CLK:
309310
CLOCK_SetMux(kCLOCK_Sai1Mux, clk_src);
310311
CLOCK_SetDiv(kCLOCK_Sai1PreDiv, clk_pre_div);
311312
CLOCK_SetDiv(kCLOCK_Sai1Div, clk_src_div);
312313
break;
314+
#endif
315+
#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(sai2))
313316
case IMX_CCM_SAI2_CLK:
314317
CLOCK_SetMux(kCLOCK_Sai2Mux, clk_src);
315318
CLOCK_SetDiv(kCLOCK_Sai2PreDiv, clk_pre_div);
316319
CLOCK_SetDiv(kCLOCK_Sai2Div, clk_src_div);
317320
break;
321+
#endif
322+
#if DT_NODE_HAS_STATUS_OKAY(DT_NODELABEL(sai3))
318323
case IMX_CCM_SAI3_CLK:
319324
CLOCK_SetMux(kCLOCK_Sai3Mux, clk_src);
320325
CLOCK_SetDiv(kCLOCK_Sai3PreDiv, clk_pre_div);
321326
CLOCK_SetDiv(kCLOCK_Sai3Div, clk_src_div);
322327
break;
328+
#endif
323329
default:
324330
return;
325331
}

0 commit comments

Comments
 (0)