19#define SDRV_PDM_XFER_NUM_TRANSFERS (4U)
21#define SDRV_PDM_CHANNELS_COUNT 1
22#define SDRV_PDM_CHANNELS_BYTES (SDRV_PDM_SAMPLE_WIDTH_16BITS / 8)
23#define SDRV_PDM_DMA_PERIOD_FRAME_SIZE 1024 * 4
24#define SDRV_PDM_DMA_PERIOD_SIZE \
25 SDRV_PDM_DMA_PERIOD_FRAME_SIZE *SDRV_PDM_CHANNELS_COUNT \
26 *SDRV_PDM_CHANNELS_BYTES
27#define SDRV_PDM_DMA_PERIOD_COUNT 2
28#define SDRV_PDM_DMA_BUF_TOTAL_SIZE \
29 SDRV_PDM_DMA_PERIOD_SIZE *SDRV_PDM_DMA_PERIOD_COUNT
SemiDrive clock generator driver header file.
SemiDrive driver common header file.
@ SDRV_STATUS_GROUP_PDM
Definition: sdrv_common.h:40
@ SDRV_STATUS_GROUP_COMMON
Definition: sdrv_common.h:22
#define SDRV_ERROR_STATUS(group, code)
Construct a status code value from a group and code number. All the error statuses are negetive numbe...
Definition: sdrv_common.h:17
SemiDrive DMA driver header file.
sdrv_dma_bus_width_e
DMA channel data width for each transaction.
Definition: sdrv_dma.h:127
sdrv_dma_channel_id_e
DMA Channel ID.
Definition: sdrv_dma.h:47
enum sdrv_pdm_sample_rate sdrv_pdm_sample_rate_t
pdm sample rate
sdrv_pdm_status_t sdrv_pdm_create_transfer(sdrv_pdm_t *pdm, sdrv_pdm_callback callback, void *context)
sdrv_pdm_create_transfer
void(* sdrv_pdm_callback)(sdrv_pdm_transfer_t *transfer, void *context, sdrv_pdm_status_t state)
Definition: sdrv_pdm.h:159
struct sdrv_pdm_transfer sdrv_pdm_transfer_t
pdm transfer
sdrv_pdm_sample_width
pdm sample width
Definition: sdrv_pdm.h:81
@ SDRV_PDM_SAMPLE_WIDTH_16BITS
Definition: sdrv_pdm.h:83
@ SDRV_PDM_SAMPLE_WIDTH_24BITS
Definition: sdrv_pdm.h:84
@ SDRV_PDM_SAMPLE_WIDTH_8BITS
Definition: sdrv_pdm.h:82
@ SDRV_PDM_SAMPLE_WIDTH_32BITS
Definition: sdrv_pdm.h:85
sdrv_pdm_status
pdm status
Definition: sdrv_pdm.h:92
@ SDRV_PDM_STATUS_INVALID_PARAMS
Definition: sdrv_pdm.h:98
@ SDRV_PDM_STATUS_FAIL
Definition: sdrv_pdm.h:96
@ SDRV_PDM_STATUS_OVERRUN
Definition: sdrv_pdm.h:101
@ SDRV_PDM_STATUS_SUCCESS
Definition: sdrv_pdm.h:94
@ SDRV_PDM_STATUS_UNDERRUN
Definition: sdrv_pdm.h:103
struct sdrv_pdm_dma_buf sdrv_pdm_dma_buf_t
pdm dma buff descriptions
struct sdrv_pdm_stream sdrv_pdm_stream_t
pdm capture stream descriptions
struct sdrv_pdm_params sdrv_pdm_params_t
pdm config params
sdrv_pdm_status_t sdrv_pdm_submit_transfer(sdrv_pdm_t *pdm, sdrv_pdm_transfer_t *transfer)
sdrv_pdm_submit_transfer
sdrv_pdm_sample_rate
pdm sample rate
Definition: sdrv_pdm.h:61
@ SDRV_PDM_SR_192000
Definition: sdrv_pdm.h:74
@ SDRV_PDM_SR_176400
Definition: sdrv_pdm.h:73
@ SDRV_PDM_SR_5512
Definition: sdrv_pdm.h:62
@ SDRV_PDM_SR_8000
Definition: sdrv_pdm.h:63
@ SDRV_PDM_SR_64000
Definition: sdrv_pdm.h:70
@ SDRV_PDM_SR_22050
Definition: sdrv_pdm.h:66
@ SDRV_PDM_SR_88200
Definition: sdrv_pdm.h:71
@ SDRV_PDM_SR_11025
Definition: sdrv_pdm.h:64
@ SDRV_PDM_SR_44100
Definition: sdrv_pdm.h:68
@ SDRV_PDM_SR_16000
Definition: sdrv_pdm.h:65
@ SDRV_PDM_SR_48000
Definition: sdrv_pdm.h:69
@ SDRV_PDM_SR_96000
Definition: sdrv_pdm.h:72
@ SDRV_PDM_SR_32000
Definition: sdrv_pdm.h:67
sdrv_pdm_channel
pdm channel
Definition: sdrv_pdm.h:35
@ SDRV_PDM_CHANNEL_STEREO
Definition: sdrv_pdm.h:38
@ SDRV_PDM_CHANNEL_RIGHT
Definition: sdrv_pdm.h:37
@ SDRV_PDM_CHANNEL_LEFT
Definition: sdrv_pdm.h:36
sdrv_pdm_status_t sdrv_pdm_stop(sdrv_pdm_t *pdm)
sdrv_pdm_stop
struct sdrv_pdm_config sdrv_pdm_config_t
pdm board config
struct sdrv_pdm_dma_data sdrv_pdm_dma_data_t
pdm dma fifo descriptions
enum sdrv_pdm_sample_width sdrv_pdm_sample_width_t
pdm sample width
#define SDRV_PDM_XFER_NUM_TRANSFERS
Definition: sdrv_pdm.h:19
sdrv_pdm_status_t sdrv_pdm_start(sdrv_pdm_t *pdm)
sdrv_pdm_start
enum sdrv_pdm_gain sdrv_pdm_gain_t
pdm gain
sdrv_pdm_status_t sdrv_pdm_get_default_params(sdrv_pdm_t *pdm, sdrv_pdm_params_t *params)
sdrv_pdm_get_default_params
sdrv_pdm_gain
pdm gain
Definition: sdrv_pdm.h:45
@ SDRV_PDM_GAIN_P24DB
Definition: sdrv_pdm.h:54
@ SDRV_PDM_GAIN_P12DB
Definition: sdrv_pdm.h:52
@ SDRV_PDM_GAIN_N18DB
Definition: sdrv_pdm.h:48
@ SDRV_PDM_GAIN_P18DB
Definition: sdrv_pdm.h:53
@ SDRV_PDM_GAIN_N24DB
Definition: sdrv_pdm.h:49
@ SDRV_PDM_GAIN_N12DB
Definition: sdrv_pdm.h:47
@ SDRV_PDM_GAIN_N6DB
Definition: sdrv_pdm.h:46
@ SDRV_PDM_GAIN_P6DB
Definition: sdrv_pdm.h:51
@ SDRV_PDM_GAIN_P0DB
Definition: sdrv_pdm.h:50
enum sdrv_pdm_channel sdrv_pdm_channel_t
pdm channel
struct sdrv_pdm sdrv_pdm_t
pdm module descriptions
sdrv_pdm_status_t sdrv_pdm_init(sdrv_pdm_t *pdm, sdrv_pdm_config_t *cfg)
sdrv pdm controller initialization.
sdrv_pdm_status_t sdrv_pdm_set_params(sdrv_pdm_t *pdm, sdrv_pdm_params_t *params)
sdrv_pdm_set_params
enum sdrv_pdm_status sdrv_pdm_status_t
pdm status
Abstract clock common node for driver operate.
Definition: sdrv_ckgen.h:175
DMA channel structure.
Definition: sdrv_dma.h:554
DMA controller structure.
Definition: sdrv_dma.h:472
pdm board config
Definition: sdrv_pdm.h:227
paddr_t dma_base
Definition: sdrv_pdm.h:237
uint32_t irq
Definition: sdrv_pdm.h:233
sdrv_dma_channel_id_e dma_channel
Definition: sdrv_pdm.h:239
int id
Definition: sdrv_pdm.h:231
sdrv_ckgen_node_t * clk
Definition: sdrv_pdm.h:235
paddr_t base
Definition: sdrv_pdm.h:229
pdm dma buff descriptions
Definition: sdrv_pdm.h:126
uint32_t boundary
Definition: sdrv_pdm.h:142
int32_t periods
Definition: sdrv_pdm.h:134
uint32_t appl_ptr
Definition: sdrv_pdm.h:137
uint8_t * addr
Definition: sdrv_pdm.h:128
uint32_t hw_ptr
Definition: sdrv_pdm.h:140
int32_t period_bytes
Definition: sdrv_pdm.h:132
int32_t buffer_bytes
Definition: sdrv_pdm.h:130
pdm dma fifo descriptions
Definition: sdrv_pdm.h:110
paddr_t addr
Definition: sdrv_pdm.h:112
sdrv_dma_bus_width_e addr_width
Definition: sdrv_pdm.h:114
unsigned int max_burst
Definition: sdrv_pdm.h:116
unsigned int fifo_size
Definition: sdrv_pdm.h:118
pdm config params
Definition: sdrv_pdm.h:165
sdrv_pdm_sample_rate_t sample_rate
Definition: sdrv_pdm.h:171
sdrv_pdm_sample_width_t sample_width
Definition: sdrv_pdm.h:169
bool usedma
Definition: sdrv_pdm.h:183
uint8_t * dma_buff
Definition: sdrv_pdm.h:181
unsigned int period_bytes
Definition: sdrv_pdm.h:176
unsigned int periods
Definition: sdrv_pdm.h:179
sdrv_pdm_gain_t gain
Definition: sdrv_pdm.h:173
sdrv_pdm_channel_t channels
Definition: sdrv_pdm.h:167
pdm capture stream descriptions
Definition: sdrv_pdm.h:191
bool active
Definition: sdrv_pdm.h:197
bool pack_mode
Definition: sdrv_pdm.h:207
uint8_t queue_hw
Definition: sdrv_pdm.h:201
sdrv_pdm_transfer_t queue[SDRV_PDM_XFER_NUM_TRANSFERS]
Definition: sdrv_pdm.h:195
sdrv_pdm_dma_buf_t dma_buf
Definition: sdrv_pdm.h:219
sdrv_dma_channel_t dma_channel
Definition: sdrv_pdm.h:215
unsigned threshold
Definition: sdrv_pdm.h:211
bool dma_abort
Definition: sdrv_pdm.h:220
uint8_t queue_appl
Definition: sdrv_pdm.h:199
sdrv_pdm_callback callback
Definition: sdrv_pdm.h:203
sdrv_pdm_params_t params
Definition: sdrv_pdm.h:193
sdrv_pdm_dma_data_t dma_data
Definition: sdrv_pdm.h:217
sdrv_dma_t dma_instance
Definition: sdrv_pdm.h:213
bool data_lsb
Definition: sdrv_pdm.h:209
void * context
Definition: sdrv_pdm.h:205
pdm transfer
Definition: sdrv_pdm.h:149
uint8_t id
Definition: sdrv_pdm.h:155
uint8_t * data
Definition: sdrv_pdm.h:151
uint32_t length
Definition: sdrv_pdm.h:153
pdm module descriptions
Definition: sdrv_pdm.h:246
uint32_t clk_rate
Definition: sdrv_pdm.h:250
sdrv_pdm_stream_t stream
Definition: sdrv_pdm.h:252
sdrv_pdm_config_t * config
Definition: sdrv_pdm.h:248