29#include "syna_device.h"
30#include "i2s_registers.h"
38#define I2S_DMA_CHANNEL_INVALID (0xFFFFFFFFU)
40#ifndef I2S_TX_POOL_MAX_BLOCKS
41#define I2S_TX_POOL_MAX_BLOCKS 4U
44#ifndef I2S_TX_POOL_BLOCK_BYTES
45#define I2S_TX_POOL_BLOCK_BYTES 8000U
606 I2S_SAMPLE_RATE_8000 = 8000U,
607 I2S_SAMPLE_RATE_11025 = 11025U,
608 I2S_SAMPLE_RATE_12000 = 12000U,
609 I2S_SAMPLE_RATE_16000 = 16000U,
610 I2S_SAMPLE_RATE_22050 = 22050U,
611 I2S_SAMPLE_RATE_24000 = 24000U,
612 I2S_SAMPLE_RATE_32000 = 32000U,
613 I2S_SAMPLE_RATE_44100 = 44100U,
614 I2S_SAMPLE_RATE_48000 = 48000U,
615 I2S_SAMPLE_RATE_64000 = 64000U,
616 I2S_SAMPLE_RATE_88200 = 88200U,
617 I2S_SAMPLE_RATE_96000 = 96000U,
618 I2S_SAMPLE_RATE_176400 = 176400U,
619 I2S_SAMPLE_RATE_192000 = 192000U,
620 I2S_SAMPLE_RATE_384000 = 384000U
724 i2s_status_en (*submit)(
void *backend,
int channel, uint32_t addr, uint32_t size);
725 i2s_status_en (*wait_complete)(
void *backend,
int channel,
int timeout_ms);
727 int (*get_channel)(
void *backend,
bool is_tx);
728 int (*intr_status)(
void *backend,
int channel);
770 void *buffer,
size_t size,
void *user_data);
886 uint32_t depth_words);
1319#if CONFIG_MODULE_DMA_ENABLED
dma_instance
Definition sl2610_cm52.h:423
i2s_instance_en
I2S instances for CM52.
Definition sl2610_cm52.h:523
i2s_word_size_caps_en
I2S word size capability flags.
Definition i2s.h:595
i2s_event_en
I2S event types.
Definition i2s.h:568
i2s_trigger_cmd_en
I2S trigger commands.
Definition i2s.h:554
i2s_word_size_en
I2S word size (bits per sample).
Definition i2s.h:582
i2s_state_en
I2S operational state.
Definition i2s.h:540
i2s_data_format_en
I2S Data Format selection.
Definition i2s.h:489
i2s_status_en
I2S return status codes.
Definition i2s.h:467
i2s_clock_mode_en
I2S Clock Mode selection.
Definition i2s.h:515
i2s_sample_rate_en
Supported sample Rates.
Definition i2s.h:605
i2s_direction_en
I2S transfer direction.
Definition i2s.h:527
i2s_data_format_caps_en
I2S data format capability flags.
Definition i2s.h:502
@ I2S_WORD_SIZE_CAP_32BIT
Definition i2s.h:599
@ I2S_WORD_SIZE_CAP_24BIT
Definition i2s.h:598
@ I2S_WORD_SIZE_CAP_16BIT
Definition i2s.h:597
@ I2S_WORD_SIZE_CAP_8BIT
Definition i2s.h:596
@ I2S_EVENT_TX_COMPLETE
Definition i2s.h:569
@ I2S_EVENT_ERROR
Definition i2s.h:574
@ I2S_EVENT_TX_UNDERRUN
Definition i2s.h:571
@ I2S_EVENT_RX_COMPLETE
Definition i2s.h:570
@ I2S_EVENT_RX_OVERRUN
Definition i2s.h:572
@ I2S_EVENT_FRAME_ERROR
Definition i2s.h:573
@ I2S_TRIGGER_PAUSE
Definition i2s.h:558
@ I2S_TRIGGER_STOP
Definition i2s.h:556
@ I2S_TRIGGER_RESUME
Definition i2s.h:559
@ I2S_TRIGGER_PREPARE
Definition i2s.h:557
@ I2S_TRIGGER_START
Definition i2s.h:555
@ I2S_WORD_SIZE_16BIT
Definition i2s.h:584
@ I2S_WORD_SIZE_8BIT
Definition i2s.h:583
@ I2S_WORD_SIZE_24BIT
Definition i2s.h:585
@ I2S_WORD_SIZE_32BIT
Definition i2s.h:586
@ I2S_STATE_ERROR
Definition i2s.h:545
@ I2S_STATE_NOT_READY
Definition i2s.h:541
@ I2S_STATE_STOPPING
Definition i2s.h:544
@ I2S_STATE_RUNNING
Definition i2s.h:543
@ I2S_STATE_READY
Definition i2s.h:542
@ I2S_FMT_LEFT_JUSTIFIED
Definition i2s.h:491
@ I2S_FMT_TDM
Definition i2s.h:493
@ I2S_FMT_STANDARD_I2S
Definition i2s.h:490
@ I2S_FMT_RIGHT_JUSTIFIED
Definition i2s.h:492
@ I2S_ERROR_HW_FAULT
Definition i2s.h:479
@ I2S_ERROR
Definition i2s.h:469
@ I2S_ERROR_NOT_SUPPORTED
Definition i2s.h:478
@ I2S_ERROR_INVALID_PARAM
Definition i2s.h:470
@ I2S_ERROR_NOT_READY
Definition i2s.h:471
@ I2S_ERROR_TIMEOUT
Definition i2s.h:473
@ I2S_ERROR_OVERRUN
Definition i2s.h:477
@ I2S_ERROR_INVALID_STATE
Definition i2s.h:475
@ I2S_ERROR_UNDERRUN
Definition i2s.h:476
@ I2S_OK
Definition i2s.h:468
@ I2S_ERROR_BUSY
Definition i2s.h:472
@ I2S_ERROR_NO_MEMORY
Definition i2s.h:474
@ I2S_MODE_MASTER
Definition i2s.h:516
@ I2S_MODE_SLAVE
Definition i2s.h:517
@ I2S_DIR_TX
Definition i2s.h:528
@ I2S_DIR_RX
Definition i2s.h:529
@ I2S_FMT_CAP_STANDARD_I2S
Definition i2s.h:503
@ I2S_FMT_CAP_TDM
Definition i2s.h:506
@ I2S_FMT_CAP_LEFT_JUSTIFIED
Definition i2s.h:504
@ I2S_FMT_CAP_RIGHT_JUSTIFIED
Definition i2s.h:505
i2s_status_en i2s_get_fifo_depth(i2s_instance_en instance, i2s_direction_en direction, uint32_t *depth)
i2s_status_en i2s_intr_enable(i2s_instance_en id, int enable)
i2s_status_en i2s_register_callback(i2s_instance_en instance, i2s_event_cb_t callback, void *user_data)
i2s_status_en i2s_write_async(i2s_instance_en instance, const void *buffer, size_t size)
i2s_state_en i2s_get_state(i2s_instance_en instance, i2s_direction_en direction)
i2s_status_en i2s_trigger(i2s_instance_en instance, i2s_direction_en direction, i2s_trigger_cmd_en cmd)
i2s_status_en i2s_configure(i2s_instance_en id, i2s_direction_en direction, const i2s_config_t *cfg)
Configure I2S (clock + bit clock + mode + format).
i2s_status_en i2s_flush(i2s_instance_en instance, i2s_direction_en direction)
i2s_status_en i2s_register_buffer_callback(i2s_instance_en instance, i2s_buffer_cb_t callback, void *user_data)
void(* i2s_buffer_cb_t)(i2s_instance_en instance, i2s_direction_en direction, void *buffer, size_t size, void *user_data)
I2S buffer completion callback function type.
Definition i2s.h:769
void(* i2s_event_cb_t)(i2s_instance_en instance, i2s_direction_en direction, i2s_event_en event, void *user_data)
I2S event callback function type.
Definition i2s.h:754
i2s_status_en i2s_deinit(i2s_instance_en instance)
i2s_status_en i2s_set_fifo_depth(i2s_instance_en instance, i2s_direction_en direction, uint32_t depth_words)
i2s_status_en i2s_get_config(i2s_instance_en instance, i2s_direction_en direction, i2s_config_t *config)
i2s_status_en i2s_read_async(i2s_instance_en instance, void *buffer, size_t size)
INIT_CODE i2s_status_en i2s_init(i2s_instance_en instance)
i2s_status_en i2s_get_capabilities(i2s_instance_en instance, i2s_capabilities_t *caps)
I2S capabilities structure.
Definition i2s.h:698
bool master_mode
Definition i2s.h:700
uint8_t max_channels
Definition i2s.h:702
uint32_t min_sample_rate
Definition i2s.h:703
i2s_word_size_caps_en word_sizes
Definition i2s.h:705
uint32_t max_sample_rate
Definition i2s.h:704
bool slave_mode
Definition i2s.h:701
uint32_t formats
Definition i2s.h:699
I2S clock configuration structure.
Definition i2s.h:642
bool bit_clk_inv
Definition i2s.h:644
bool bit_clk_gated
Definition i2s.h:643
bool frame_clk_inv
Definition i2s.h:645
I2S configuration structure.
Definition i2s.h:677
i2s_data_format_en data_format
Definition i2s.h:678
i2s_clock_mode_en clock_mode
Definition i2s.h:679
i2s_clock_mode_t clock_config
Definition i2s.h:683
uint8_t num_blocks
Definition i2s.h:688
uint32_t sample_rate
Definition i2s.h:682
size_t block_size
Definition i2s.h:687
uint8_t channels
Definition i2s.h:681
uint16_t mclk_ratio
Definition i2s.h:686
i2s_word_size_en word_size
Definition i2s.h:680
bool enable_dma
Definition i2s.h:689
bool mclk_present
Definition i2s.h:684
bool mclk_required
Definition i2s.h:685
I2S memory interface operations.
Definition i2s.h:722