Skip to content

Commit 7d95804

Browse files
samples: usb: uac2_implicit: Allow using 8 channels
Signed-off-by: Adam Kondraciuk <[email protected]>
1 parent 294b5a7 commit 7d95804

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

samples/subsys/usb/uac2_implicit_feedback/boards/nrf54h20dk_nrf54h20_cpuapp.overlay

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ i2s_rxtx: &tdm130 {
4141
reserved-memory {
4242
cpuflpr_dma_region: memory@2fc12e00 {
4343
compatible = "nordic,owned-memory", "zephyr,memory-region";
44-
reg = <0x2fc12e00 512>;
44+
reg = <0x2fc12e00 1024>;
4545
status = "okay";
4646
#memory-region-cells = <0>;
4747
nordic,access = <NRF_OWNER_ID_APPLICATION NRF_PERM_RW>;

samples/subsys/usb/uac2_implicit_feedback/flpr/boards/nrf54h20dk_nrf54h20_cpuflpr.overlay

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
reserved-memory {
99
cpuflpr_dma_region: memory@2fc12e00 {
1010
compatible = "nordic,owned-memory", "zephyr,memory-region";
11-
reg = <0x2fc12e00 512>;
11+
reg = <0x2fc12e00 1024>;
1212
status = "okay";
1313
#memory-region-cells = <0>;
1414
nordic,access = <NRF_OWNER_ID_APPLICATION NRF_PERM_RW>;

samples/subsys/usb/uac2_implicit_feedback/flpr/src/main.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,14 @@
1010
LOG_MODULE_REGISTER(main, 1);
1111
/* === BUFFERS === */
1212
/* buffers configuration */
13-
#define ISO_IN_CH_CNT 4
14-
#define ISO_OUT_CH_CNT 2
13+
#define ISO_IN_CH_CNT 8
14+
#define ISO_OUT_CH_CNT 8
1515
#define TDM_WORD_SIZE 32
1616

17+
#if ISO_IN_CH_CNT != ISO_OUT_CH_CNT
18+
#error "Assymetric configuration is not supported."
19+
#endif
20+
1721
#if ISO_IN_CH_CNT > ISO_OUT_CH_CNT
1822
#define TDM_CH_CNT ISO_IN_CH_CNT
1923
#else
@@ -363,7 +367,7 @@ static void tdm_set_rx_ptr(bool first)
363367
}
364368

365369
context.tdm_rx.len[context.tdm_rx.idx] = tdm_get_len(&context.tdm_rx, NULL, tdm_rx);
366-
nrf_tdm_rx_count_set(NRF_TDM130, TDM_GET_MAX_LEN(context.tdm_rx.len[context.tdm_rx.idx], TDM_RX_CH_CNT));
370+
nrf_tdm_rx_count_set(NRF_TDM130, context.tdm_rx.len[context.tdm_rx.idx]);
367371
nrf_tdm_rx_buffer_set(NRF_TDM130, (uint32_t *)buf);
368372

369373
context.tdm_rx.idx = (context.tdm_rx.idx + 1) & 0x1;
@@ -384,15 +388,17 @@ static void tdm_set_tx_ptr(void)
384388
}
385389

386390
context.tdm_tx.idx = (context.tdm_tx.idx + 1) & 0x1;
387-
nrf_tdm_tx_count_set(NRF_TDM130, TDM_GET_MAX_LEN(len, TDM_TX_CH_CNT));
391+
nrf_tdm_tx_count_set(NRF_TDM130, len);
388392
nrf_tdm_tx_buffer_set(NRF_TDM130, (uint32_t *)tx_buf);
389393
}
390394

391395
static void tdm_start(void)
392396
{
397+
bool sck_bypass = (SCK_DIV_VALUE > 0x80000000) ? (true) : (false);
398+
393399
nrf_tdm_enable(NRF_TDM130);
394400
nrf_tdm_configure(NRF_TDM130, &m_cfg);
395-
nrf_tdm_sck_configure(NRF_TDM130, NRF_TDM_SRC_ACLK, false);
401+
nrf_tdm_sck_configure(NRF_TDM130, NRF_TDM_SRC_ACLK, sck_bypass);
396402
nrf_tdm_mck_configure(NRF_TDM130, NRF_TDM_SRC_ACLK, false);
397403
nrf_tdm_event_clear(NRF_TDM130, NRF_TDM_EVENT_RXPTRUPD);
398404
nrf_tdm_event_clear(NRF_TDM130, NRF_TDM_EVENT_TXPTRUPD);

0 commit comments

Comments
 (0)