Skip to content

Commit 1582e38

Browse files
[nrf fromlist] drivers: i2s: nrf_tdm: Allow using 8 channels
TDM should have clock divider bypass enabled when calculated clock divider exceeds maximum allowed value which is `CKDIV2`. Upstream PR #: 95166 Signed-off-by: Adam Kondraciuk <[email protected]>
1 parent 20d89eb commit 1582e38

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

drivers/i2s/i2s_nrf_tdm.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ LOG_MODULE_REGISTER(tdm_nrf, CONFIG_I2S_LOG_LEVEL);
3030
*/
3131
#define NRFX_TDM_STATUS_TRANSFER_STOPPED BIT(1)
3232

33+
/* Maximum clock divider value. Corresponds to CKDIV2. */
34+
#define NRFX_TDM_MAX_DIV_VALUE 0x80000000
35+
3336
#define NRFX_TDM_NUM_OF_CHANNELS (TDM_CONFIG_CHANNEL_NUM_NUM_Max + 1)
3437

3538
#define NRFX_TDM_TX_CHANNELS_MASK \
@@ -814,11 +817,11 @@ static int trigger_start(const struct device *dev)
814817

815818
nrf_tdm_sck_configure(drv_cfg->p_reg,
816819
drv_cfg->sck_src == ACLK ? NRF_TDM_SRC_ACLK : NRF_TDM_SRC_PCLK32M,
817-
false);
820+
nrfx_cfg->sck_setup > NRFX_TDM_MAX_DIV_VALUE);
818821

819822
nrf_tdm_mck_configure(drv_cfg->p_reg,
820823
drv_cfg->mck_src == ACLK ? NRF_TDM_SRC_ACLK : NRF_TDM_SRC_PCLK32M,
821-
false);
824+
nrfx_cfg->mck_setup > NRFX_TDM_MAX_DIV_VALUE);
822825
/* If it is required to use certain HF clock, request it to be running
823826
* first. If not, start the transfer directly.
824827
*/

0 commit comments

Comments
 (0)